From 91e4ba507f9806c975a4273154d79f1a43b836c4 Mon Sep 17 00:00:00 2001
From: ZengTao <2773468879@qq.com>
Date: 星期一, 29 四月 2024 13:42:29 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/HangZhouMes

---
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java                                  |   12 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/logback-spring.xml                                                 |  170 +
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/AppRunnerConfig.java                                                    |   22 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml                                                        |   21 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/LoginFailureHandler.java                                          |   31 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java                        |   16 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-prod.yml                                                      |   25 
 UI-Project/src/views/LoginView.vue                                                                                                             |    8 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java                                           |   55 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserService.java                                             |   96 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCage.java                           |    4 
 UI-Project/src/assets/lp.png                                                                                                                   |    0 
 hangzhoumesParent/gateway/pom.xml                                                                                                              |    8 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationTaskServiceImpl.java       |   33 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java                    |   10 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-prod.yml                                                   |   20 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java                                            |    5 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java          |    3 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageServiceImpl.java              |   98 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application-prod.yml                                                       |   27 
 UI-Project/src/assets/d2.png                                                                                                                   |    0 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java               |  308 +
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserRoleMapper.java                                           |    4 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/com/mes/UnLoadGlassApplicationTest.java                                        |   42 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java              |   24 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Swagger2Config.java                                                   |   53 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstionAndDownGlassinfo.java              |   89 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/common/PLCAutoMes.java                                                  |   47 
 hangzhoumesParent/moduleService/pom.xml                                                                                                        |   10 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-prod.yml                                               |   25 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/entity/request/GeneralRequest.java                                                  |   17 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/SysUserRole.java                                                 |    4 
 UI-Project/src/views/Identify/identify.vue                                                                                                     |  288 -
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/common/PlcHomeEdg.java                                                  |   61 
 UI-Project/src/views/Caching/cachingbefore.vue                                                                                                 |  249 +
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/JwtUtil.java                                                        |  121 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/Plchome.java                                                    |   50 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml                                                             |   32 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/LoginSuccessHandler.java                                          |   38 
 UI-Project/src/views/UnLoadGlass/loadmachinerack.vue                                                                                           |    7 
 hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java                                    |   27 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/logback-spring.xml                                                         |  170 +
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java           |  137 
 UI-Project/src/assets/lpla.jpg                                                                                                                 |    0 
 UI-Project/src/views/Visualization/screen.vue                                                                                                  |   49 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-loc.yml                                                         |   25 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java               |   13 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationTaskService.java                |    4 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/logback-spring.xml                                                          |  170 +
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/config/TokenWebSecurityConfig.java                                        |   64 
 UI-Project/config.js                                                                                                                           |    4 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-loc.yml                                                    |   22 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml                                                    |   26 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-dev.yml                                                    |   22 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtLogoutSuccessHandler.java                                      |   40 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-prod.yml                                                        |   25 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java               |   38 
 UI-Project/src/views/Slicecage/slicecage.vue                                                                                                   | 1062 +++++--
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/DownStorageCage.java                                |    4 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/pom.xml                                                                               |   10 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/vo/SysUserVO.java                                                |   63 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/controller/SysUserController.java                                       |   69 
 hangzhoumesParent/moduleService/LoadGlassModule/src/test/java/com/mes/ApplicationTest.java                                                     |   16 
 UI-Project/src/views/Visualization/screenone.vue                                                                                               |  393 ++
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java                                    |  204 +
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java                 |    9 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java                       |    6 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java                                        |  103 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java                                                            |   11 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-dev.yml                                                         |   25 
 UI-Project/src/views/PurchaseReturn/purchaseReturn.vue                                                                                         |   50 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/glassinfo/controller/GlassInfoController.java                           |    4 
 UI-Project/src/views/Returns/returns.vue                                                                                                       |  490 ++-
 hangzhoumesParent/gateway/src/main/resources/application.yml                                                                                   |    2 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java                                      |   68 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageOutTaskController.java  |    4 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageMapper.java                          |    2 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/SysMenuService.java                                                 |   49 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/SysRoleService.java                                                 |   35 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/mapper/GlassInfoMapper.java                                  |    5 
 UI-Project/src/views/Caching/caching.vue                                                                                                       |  213 -
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/entity/GlassInfo.java                                        |   10 
 UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue                                                                                      |  113 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java                                     |  122 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java                   |   51 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/RedisUtil.java                                                      |   15 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstationTask.java                        |    2 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml                                                            |   40 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/DownStorageCageDetails.java                         |    2 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml                                                           |   26 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassInfoMapper.java                          |    5 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java                    |    5 
 UI-Project/src/assets/lpa.png                                                                                                                  |    0 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/controller/SysMenuController.java                                           |   68 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java      |    5 
 UI-Project/src/views/Visualization/screenthree.vue                                                                                             |  160 +
 UI-Project/src/views/Visualization/screentwo.vue                                                                                               |  160 +
 UI-Project/src/assets/d1.png                                                                                                                   |    0 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageFeedTaskController.java |    4 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/logback-spring.xml                                                     |  170 +
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/mapper/SysMenuMapper.java                                                   |    4 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMapper.java                                                   |    4 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/Plcdownglass.java                                               |   81 
 UI-Project/src/router/index.js                                                                                                                 |   70 
 hangzhoumesParent/moduleService/UnLoadGlassModule/pom.xml                                                                                      |    6 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtAccessDeniedHandler.java                                       |   35 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java                       |   11 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/entity/vo/SysRoleVO.java                                                    |   44 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application-loc.yml                                                        |   27 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java        |  121 
 UI-Project/src/layout/MainErpView.vue                                                                                                          |    2 
 hangzhoumesParent/moduleService/CacheGlassModule/pom.xml                                                                                       |   20 
 .gitignore                                                                                                                                     |    2 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-dev.yml                                                       |   25 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/entity/SysRoleMenu.java                                                     |    2 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java                                        |   91 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java                |    4 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationMapper.java                      |   49 
 UI-Project/src/views/Caching/cachingun.vue                                                                                                     |  196 +
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationTaskMapper.java                  |    2 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtAuthenticationEntryPoint.java                                  |   33 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageController.java             |    4 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/common/WebSocketServer.java                                             |   18 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java       |   67 
 UI-Project/src/assets/d3.png                                                                                                                   |    0 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserMapper.java                                               |    4 
 hangzhoumesParent/common/pom.xml                                                                                                               |   12 
 UI-Project/src/views/UnLoadGlass/Landingindication.vue                                                                                         |  113 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java                        |   10 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-dev.yml                                                |   25 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-loc.yml                                                |   25 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserRoleService.java                                         |    5 
 /dev/null                                                                                                                                      |  122 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/entity/SysMenu.java                                                         |    9 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java                        |   19 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application-dev.yml                                                        |   27 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/UserInfoUtils.java                                                  |   26 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassTaskService.java                        |   12 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-loc.yml                                                       |   25 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/controller/DownStorageCageDetailsController.java           |    4 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/logback-spring.xml                                                        |  170 +
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java                           |    7 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/CacheGlassModuleApplication.java                                        |    7 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/CacheVerticalClassModuleApplication.java                        |    2 
 UI-Project/vite.config.js                                                                                                                      |    2 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java                 |   33 
 146 files changed, 6,489 insertions(+), 1,912 deletions(-)

diff --git a/.gitignore b/.gitignore
index 9d2adc7..12255a3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,4 +22,6 @@
 .idea/
 #蹇界暐鎵�鏈�.iml鏂囦欢
 *.iml
+#蹇界暐鎵�鏈夋棩蹇楁枃浠�
+*.log
 
diff --git a/UI-Project/config.js b/UI-Project/config.js
index 6d62cdd..bf51358 100644
--- a/UI-Project/config.js
+++ b/UI-Project/config.js
@@ -1,6 +1,6 @@
 export default {
-  serverUrl: "10.153.19.150:88/api",
+  serverUrl: "127.0.0.1:88/api",
   //serverUrl: "localhost:88/api/",
-  serverUrl2: "10.153.19.150:8085"
+  serverUrl2: "10.153.19.150:88"
   //serverUrl:"res.abeim.cn"
 }
\ No newline at end of file
diff --git a/UI-Project/src/assets/d1.png b/UI-Project/src/assets/d1.png
new file mode 100644
index 0000000..c903c4b
--- /dev/null
+++ b/UI-Project/src/assets/d1.png
Binary files differ
diff --git a/UI-Project/src/assets/d2.png b/UI-Project/src/assets/d2.png
new file mode 100644
index 0000000..de73a96
--- /dev/null
+++ b/UI-Project/src/assets/d2.png
Binary files differ
diff --git a/UI-Project/src/assets/d3.png b/UI-Project/src/assets/d3.png
new file mode 100644
index 0000000..1651775
--- /dev/null
+++ b/UI-Project/src/assets/d3.png
Binary files differ
diff --git a/UI-Project/src/assets/lp.png b/UI-Project/src/assets/lp.png
new file mode 100644
index 0000000..fac27df
--- /dev/null
+++ b/UI-Project/src/assets/lp.png
Binary files differ
diff --git a/UI-Project/src/assets/lpa.png b/UI-Project/src/assets/lpa.png
new file mode 100644
index 0000000..fac27df
--- /dev/null
+++ b/UI-Project/src/assets/lpa.png
Binary files differ
diff --git a/UI-Project/src/assets/lpla.jpg b/UI-Project/src/assets/lpla.jpg
new file mode 100644
index 0000000..d66b84d
--- /dev/null
+++ b/UI-Project/src/assets/lpla.jpg
Binary files differ
diff --git a/UI-Project/src/layout/MainErpView.vue b/UI-Project/src/layout/MainErpView.vue
index d2e3ed7..dc3f4f9 100644
--- a/UI-Project/src/layout/MainErpView.vue
+++ b/UI-Project/src/layout/MainErpView.vue
@@ -23,7 +23,7 @@
 
 //鎻愬彇鑿滃崟妯″潡鍒楄〃
 let menuList = $ref([])
-request.get('/loadGlass/menu/sysMenu/list').then((res) => {
+request.get('/loadGlass/sys/menu/getMenuTree').then((res) => {
   if (res.code == 200) {
     menuList = deepClone(res.data)
   } else {
diff --git a/UI-Project/src/router/index.js b/UI-Project/src/router/index.js
index 8ca7249..ceeccbb 100644
--- a/UI-Project/src/router/index.js
+++ b/UI-Project/src/router/index.js
@@ -1,8 +1,11 @@
-import { createRouter, createWebHistory } from 'vue-router'
-import HomeView from '../views/HomeView.vue'
+import {createRouter, createWebHashHistory} from 'vue-router'
+
+import User from '../views/sys/User.vue'
+import Role from '../views/sys/Role.vue'
+import Menu from '../views/sys/Menu.vue'
 
 const router = createRouter({
-  history: createWebHistory(import.meta.env.BASE_URL),
+  history: createWebHashHistory(),
   routes: [
     {
       path: '/',
@@ -95,9 +98,14 @@
     component: () => import('../views/Caching/caching.vue'),
     children:[
       {
-        path: '/Caching/caching',
-        name: 'caching',
-        component: () => import('../views/Caching/caching.vue')
+        path: '/Caching/cachingbefore',
+        name: 'cachingbefore',
+        component: () => import('../views/Caching/cachingbefore.vue')
+      },
+      {
+        path: '/Caching/cachingun',
+        name: 'cachingun',
+        component: () => import('../views/Caching/cachingun.vue')
       },
     ]
   },
@@ -173,9 +181,57 @@
             }
           ]
         },
+
+         /*----------- 鍙鍖栫郴缁� ----------------*/
+         {
+          path: 'Visualization',
+          name: 'screen',
+          component: () => import('../views/Visualization/screen.vue'),
+          children:[
+            {
+              path: '/Visualization/screenone',
+              name: 'screenone',
+              component: () => import('../views/Visualization/screenone.vue')
+            },
+            {
+              path: '/Visualization/screentwo',
+              name: 'screentwo',
+              component: () => import('../views/Visualization/screentwo.vue')
+            },
+            {
+              path: '/Visualization/screenthree',
+              name: 'screenthree',
+              component: () => import('../views/Visualization/screenthree.vue')
+            }
+          ]
+         },
+
+        /*----------- 绠$悊绯荤粺 ----------------*/
+        {
+          path: 'sys',
+          name: 'screen',
+          component: () => import('../views/Visualization/screen.vue'),
+          children: [
+            {
+              path: '/sys/users',
+              name: 'SysUser',
+              component: User
+            },
+            {
+              path: '/sys/roles',
+              name: 'SysRole',
+              component: Role
+            },
+            {
+              path: '/sys/menus',
+              name: 'SysMenu',
+              component: Menu
+            },
+          ]
+        },
         {
           path: '',
-          redirect:'/Slicecage/slicecage'
+          redirect: '/Slicecage/slicecage'
         }
       ]
     },
diff --git a/UI-Project/src/views/Caching/caching.vue b/UI-Project/src/views/Caching/caching.vue
index 1734d49..d0567d3 100644
--- a/UI-Project/src/views/Caching/caching.vue
+++ b/UI-Project/src/views/Caching/caching.vue
@@ -1,194 +1,49 @@
 <script setup>
-import {Search} from "@element-plus/icons-vue";
-import {reactive} from "vue";
-import {useRouter} from "vue-router"
-const router = useRouter()
-
-import request from "@/utils/request"
-import { ref, onMounted } from "vue";
-// import { ref } from 'vue'
-import { ElMessage, ElMessageBox } from 'element-plus'
-//  import LanguageMixin from './lang/LanguageMixin'
-
-const tableData = ref([])
-
-// 鍙戦�佽幏鍙栬〃鏍兼暟鎹殑璇锋眰
-// const fetchTableData = async () => {
-//   try {
-//     // 鍙戦�佽幏鍙栬〃鏍兼暟鎹殑璇锋眰锛屽苟绛夊緟鍝嶅簲
-//     // const response = await request.post("/loadGlass/optimizeProject/listByState", requestData);
-//     const response = await request.get("unLoadGlass/downStorage/selectStorageCage");
-
-//     // 妫�鏌ュ搷搴旂姸鎬�
-//     if (response.code === 200) {
-//       // 鏇存柊琛ㄦ牸鏁版嵁
-//       console.log('鎴愬姛鑾峰彇琛ㄦ牸鏁版嵁:', response.data);
-//       tableData.splice(0, tableData.length, ...response.data);
-//     } else {
-//       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
-//       ElMessage.error(response.msg);
-//     }
-//   } catch (error) {
-//     // 澶勭悊璇锋眰澶辫触鐨勬儏鍐�
-//    ElMessage.error('鑾峰彇琛ㄦ牸鏁版嵁澶辫触锛岃閲嶈瘯');
-//   }
-// };
-// onMounted(fetchTableData);
-
-
-
-request.get("unLoadGlass/downStorage/selectStorageCage").then((res) => {
-          if (res.code == 200) {
-          console.log(res.data);
-          tableData.value = res.data
-          } else {
-          ElMessage.warning(res.msg)
-        
-          }
-          });
-
-const dialogForm = () => {
-  ElMessageBox.confirm(
-    '鏄惁鎶ョ己?',
-    '鎻愮ず',
-    {
-      confirmButtonText: '鏄�',
-      cancelButtonText: '鍙栨秷',
-      type: 'warning',
-    }
-  )
-  .then(() => {
-    // this.boxa = true
-    // this.box = false
-      
-    })
+import {ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue"
+import {useRouter} from "vue-router";
+let indexFlag=$ref(1)
+function changeRouter(index){
+  indexFlag=index
 }
-const open = () => {
-  ElMessageBox.confirm(
-    '鏄惁鍒犻櫎璇ユ潯淇℃伅?',
-    '鎻愮ず',
-    {
-      confirmButtonText: '鏄�',
-      cancelButtonText: '鍙栨秷',
-      type: 'warning',
-    }
-  )
-    .then(() => {
-      ElMessage({
-        type: 'success',
-        message: '鍒犻櫎鎴愬姛锛�',
-      })
-    })
-    .catch(() => {
-      ElMessage({
-        type: 'info',
-        message: '鍒犻櫎澶辫触',
-      })
-    })
-}
-const getTableRow = (row,type) =>{
-  switch (type) {
-    case 'edit' :{
-      //alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑缂栬緫淇℃伅')
-      router.push({path: '/main/returns/createReturns', query: { ReturnID: 'TH24010101' }})
-      break
-    }
-    case 'delete':{
-      alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑鍒犻櫎淇℃伅')
-      break
-    }
-  }
-}
-
-const gridOptions = reactive({
-  border:  "full",//琛ㄦ牸鍔犺竟妗�
-  keepSource: true,//淇濇寔婧愭暟鎹�
-  align: 'center',//鏂囧瓧灞呬腑
-  stripe:true,//鏂戦┈绾�
-  rowConfig: {isCurrent: true, isHover: true,height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'OrderList',
-  showFooter: true,//鏄剧ず鑴�
-  printConfig: {},
-  importConfig: {},
-  exportConfig: {},
-  scrollY:{ enabled: true },//寮�鍚櫄鎷熸粴鍔�
-  showOverflow:true,
-  columnConfig: {
-    resizable: true,
-    useKey: true
-  },
-  filterConfig: {   //绛涢�夐厤缃」
-    remote: true
-  },
-  customConfig: {
-    storage: true
-  },
-  editConfig: {
-    trigger: 'click',
-    mode: 'row',
-    showStatus: true
-  },
-  data:  [
-    {
-      'id': '1',
-      'long': '5',
-      'wide': '1005',
-      'thick': '183.6',
-    }
-  ]
- 
-})
-
-
 
 </script>
 
 <template>
-  <div>
-    <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading">
-      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
-        <el-table height="240" ref="table" 
-        @selection-change="handleSelectionChange"
-        :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
-          <el-table-column prop="id" align="center" label="鐜荤拑ID" min-width="80" />
-          <el-table-column prop="sequence" align="center" label="浣嶇疆" min-width="120" />
-          <el-table-column prop="width" align="center" label="瀹�" min-width="120" />
-          <el-table-column prop="height" align="center" label="闀�" min-width="120" />
-          <el-table-column fixed="right" label="鎿嶄綔" align="center" width="200">
-            <template #default>
-              <el-button size="mini" type="text" plain  @click="dialogForm">鎶ョ己</el-button>
-            </template>
-        </el-table-column>
-        </el-table>
-      </div>
-    </el-card>
+  <!-- <div id="main-div"> -->
    
-  </div>
-  <div id="awatch">
-    <img src="../../assets/woshihuancun.png" alt="" style="width: 60%;height: 90%;margin-left: 260px;margin-top: 20px;">
 
-</div>
+    <div id="main-body">
+      <router-view  />
+    </div>
+  <!-- </div> -->
 </template>
 
 <style scoped>
-
-#dt { display:block; float:left;line-height: 20px;margin-left: 100px;}
-#dta { display:block; float:left;line-height: 20px;margin-left: 80%;}
-#dialog-footer{
-  text-align: center;
-  margin-top: -15px;
+#main-div{
+  width: 100%;
+  height: 100%;
 }
-#message{
-  text-align: center;
-  align-items: center;
-  color: black;
-   width: 200px;
-   height: 100px;
-   background-color: #337ecc;
-   margin-left: 28%;
+#div-title{
+  height: 2%;
+  width: 100%;
 }
-#awatch{
-  height: 460px;
-  /* margin-top: -60px; */
+#searchButton{
+  margin-top: -5px;
+  margin-left: 1rem;
+}
+/* #searchButton1{
+//margin-left: 10rem;
+} */
+/*main-body鏍峰紡*/
+#main-body{
+  width: 100%;
+  height: 95%;
+  /* margin-top: 1%; */
+}
+#select{
+  margin-left:0.5rem;
+}
+:deep(.indexTag .el-breadcrumb__inner){
+  color: #5CADFE !important;
 }
 </style>
\ No newline at end of file
diff --git a/UI-Project/src/views/Caching/cachingbefore.vue b/UI-Project/src/views/Caching/cachingbefore.vue
new file mode 100644
index 0000000..5cf4a38
--- /dev/null
+++ b/UI-Project/src/views/Caching/cachingbefore.vue
@@ -0,0 +1,249 @@
+<script setup>
+import {Search} from "@element-plus/icons-vue";
+import {reactive} from "vue";
+import {useRouter} from "vue-router"
+const router = useRouter()
+const adda = ref(false)
+
+import request from "@/utils/request"
+import { ref, onMounted } from "vue";
+// import { ref } from 'vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+//  import LanguageMixin from './lang/LanguageMixin'
+
+const tableData = ref([])
+const slot = ref('')
+  
+
+request.post("/cacheGlass/edgStorageCage/selectEdgStorageCage").then((res) => {
+          if (res.code == 200) {
+            
+          console.log(res.data);
+          tableData.value = res.data
+          console.log(res.data[0].slot);
+          } else {
+          ElMessage.warning(res.msg)
+        
+          }
+          });
+
+//   const getTableRow = (row,type) =>{
+//   switch (type) {
+//     case 'delete':{
+//       let flowData = ref({
+//         id:0,
+//         slot:row.slot
+//       })
+//       request.post("/cacheGlass/edgStorageCage/edgStorageCageGlass",flowData.value).then((res) => {
+//         if(res.code==200){
+//           ElMessage.success(t('searchOrder.msgDeleteSuccess'))
+//           router.push({path:'/main/delivery/selectDelivery',query:{random:Math.random()}})
+//         }else{
+//           ElMessage.warning(res.msg)
+//           router.push("/login")
+//         }
+//       })
+
+//       return
+//     }
+//   }
+// }
+// let slots = ref({
+//   id:0,
+//    slot: slot.value
+// })
+const open = async(row) => {  
+  try {  
+    const confirmResult = await ElMessageBox.confirm(  
+      '鏄惁鍒犻櫎璇ユ潯淇℃伅?',  
+      '鎻愮ず',  
+      {  
+        confirmButtonText: '鏄�',  
+        cancelButtonText: '鍙栨秷',  
+        type: 'warning',  
+      }  
+    );  
+    if (confirmResult === 'confirm') {  
+      // 鐢ㄦ埛鐐瑰嚮浜嗏�滄槸鈥濓紝鐜板湪璋冪敤鍒犻櫎鎺ュ彛  
+      const deleteResponse = await request.post("/cacheGlass/edgStorageCage/edgStorageCageGlass", {
+        id:0,
+        slot: row.slot
+    })
+      if (response.code == 200) {  
+        // 鍒犻櫎鎴愬姛锛屾偍鍙互鏍规嵁闇�瑕佸鐞嗘垚鍔熺殑鎯呭喌  
+        alert('鍒犻櫎鎴愬姛锛�');  
+      } else {  
+        // 鍒犻櫎澶辫触锛屾偍鍙互澶勭悊閿欒鎴栨樉绀洪敊璇俊鎭粰鐢ㄦ埛  
+        alert('鍒犻櫎澶辫触锛�' + deleteResponse.message);  
+      }  
+    }  
+  } catch (error) {  
+    // 澶勭悊鍙兘鍑虹幇鐨勯敊璇紝姣斿 ElMessageBox 鎶涘嚭鐨勫紓甯哥瓑  
+    console.error('鍙戠敓閿欒:', error);  
+  }  
+};  
+// const open = () => {
+//   ElMessageBox.confirm(
+//     '鏄惁鍒犻櫎璇ユ潯淇℃伅?',
+//     '鎻愮ず',
+//     {
+//       confirmButtonText: '鏄�',
+//       cancelButtonText: '鍙栨秷',
+//       type: 'warning',
+//     }
+//   )
+//     .then(() => {
+//       ElMessage({
+//         type: 'success',
+//         message: '鍒犻櫎鎴愬姛锛�',
+//       })
+//     })
+//     .catch(() => {
+//       ElMessage({
+//         type: 'info',
+//         message: '鍒犻櫎澶辫触',
+//       })
+//     })
+// }
+// 鍒犻櫎
+// const handleBindRacka = (row) => {
+//   adda.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗�
+// };
+// // 鍒犻櫎
+// const handleConfirma = async () => {
+//   try {
+//       window.localStorage.setItem('slot', res.data.slot)
+//     let slot = window.localStorage.getItem('slot')
+//     const response = await request.post('/cacheGlass/edgStorageCage/edgStorageCageGlass', {
+//       slot: slot.value,
+//       id: 0
+//     }); 
+ 
+//     if (response.code == 200) {
+//       // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
+//       ElMessage.success(response.message);
+//       adda.value = false;
+//     } else {
+//       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+//       ElMessage.error(response.msg);
+//     }
+//   } catch (error) {
+//     // 澶勭悊閿欒
+//     console.error(error);
+//   }
+// };
+
+const gridOptions = reactive({
+  border:  "full",//琛ㄦ牸鍔犺竟妗�
+  keepSource: true,//淇濇寔婧愭暟鎹�
+  align: 'center',//鏂囧瓧灞呬腑
+  stripe:true,//鏂戦┈绾�
+  rowConfig: {isCurrent: true, isHover: true,height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
+  id: 'OrderList',
+  showFooter: true,//鏄剧ず鑴�
+  printConfig: {},
+  importConfig: {},
+  exportConfig: {},
+  scrollY:{ enabled: true },//寮�鍚櫄鎷熸粴鍔�
+  showOverflow:true,
+  columnConfig: {
+    resizable: true,
+    useKey: true
+  },
+  filterConfig: {   //绛涢�夐厤缃」
+    remote: true
+  },
+  customConfig: {
+    storage: true
+  },
+  editConfig: {
+    trigger: 'click',
+    mode: 'row',
+    showStatus: true
+  },
+  data:  [
+    {
+      'id': '1',
+      'long': '5',
+      'wide': '1005',
+      'thick': '183.6',
+    }
+  ]
+ 
+})
+
+
+
+</script>
+
+<template>
+  <div>
+    <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading">
+      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
+        <el-table height="240" ref="table" 
+        @selection-change="handleSelectionChange"
+        :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
+          <el-table-column prop="slot" align="center" label="鏍呮牸鍙�" min-width="80" />
+          <el-table-column prop="glass_id" align="center" label="鐜荤拑缂栧彿" min-width="80" />
+          <el-table-column prop="width" align="center" label="瀹�" min-width="120" />
+          <el-table-column prop="height" align="center" label="楂�" min-width="120" />
+          <el-table-column
+            align="center"
+            label="鍚敤鐘舵��"
+            min-width="80"
+            prop="enable_state"
+          >
+          <template #default="scope">
+            <el-tag type="success" >{{ scope.row.enable_state==1?"鍚敤":"鏈惎鐢�"  }}</el-tag>
+          </template>
+          </el-table-column>
+          <el-table-column fixed="right" label="鎿嶄綔" align="center" width="200">
+            <template #default="scope">
+              <!-- <el-button size="mini" type="text" plain @click="handleBindRacka(scope.row)">鎶ョ己</el-button> -->
+              <el-button size="mini" type="text" plain  @click="open(scope.row)">鎶ョ己</el-button>
+            </template>
+        </el-table-column>
+        </el-table>
+      </div>
+    </el-card>
+    <!-- <el-dialog v-model="adda" top="30vh" width="25%" title="鏄惁鍒犻櫎璇ユ潯淇℃伅?" >
+    <template #footer>
+      <div id="dialog-footer">
+        <el-button type="primary" @click="handleConfirma">
+          纭
+        </el-button>
+        <el-button @click="adda = false">鍙栨秷</el-button>
+      </div>
+    </template>
+  </el-dialog> -->
+  </div>
+  <div id="awatch">
+    <img src="../../assets/woshihuancun.png" alt="" style="width: 60%;height: 90%;margin-left: 260px;margin-top: 20px;">
+<div style="width: 100px;height: 10px;background-color: #409EFF;margin-top: -124px;margin-left: 480px;"></div>
+<div style="width: 100px;height: 10px;background-color: #409EFF;margin-top: -30px;margin-left: 850px;"></div>
+<div style="width: 100px;height: 10px;background-color: #409EFF;margin-top: 30px;margin-left: 695px;"></div>
+</div>
+</template>
+
+<style scoped>
+
+#dt { display:block; float:left;line-height: 20px;margin-left: 100px;}
+#dta { display:block; float:left;line-height: 20px;margin-left: 80%;}
+#dialog-footer{
+  text-align: center;
+  margin-top: -15px;
+}
+#message{
+  text-align: center;
+  align-items: center;
+  color: black;
+   width: 200px;
+   height: 100px;
+   background-color: #337ecc;
+   margin-left: 28%;
+}
+#awatch{
+  height: 460px;
+  /* margin-top: -60px; */
+}
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/Caching/cachingun.vue b/UI-Project/src/views/Caching/cachingun.vue
new file mode 100644
index 0000000..7ed5e6a
--- /dev/null
+++ b/UI-Project/src/views/Caching/cachingun.vue
@@ -0,0 +1,196 @@
+<script setup>
+import {Search} from "@element-plus/icons-vue";
+import {reactive} from "vue";
+import {useRouter} from "vue-router"
+const router = useRouter()
+
+import request from "@/utils/request"
+import { ref, onMounted } from "vue";
+// import { ref } from 'vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+//  import LanguageMixin from './lang/LanguageMixin'
+
+const tableData = ref([])
+
+// 鍙戦�佽幏鍙栬〃鏍兼暟鎹殑璇锋眰
+// const fetchTableData = async () => {
+//   try {
+//     // 鍙戦�佽幏鍙栬〃鏍兼暟鎹殑璇锋眰锛屽苟绛夊緟鍝嶅簲
+//     // const response = await request.post("/loadGlass/optimizeProject/listByState", requestData);
+//     const response = await request.get("unLoadGlass/downStorage/selectStorageCage");
+
+//     // 妫�鏌ュ搷搴旂姸鎬�
+//     if (response.code === 200) {
+//       // 鏇存柊琛ㄦ牸鏁版嵁
+//       console.log('鎴愬姛鑾峰彇琛ㄦ牸鏁版嵁:', response.data);
+//       tableData.splice(0, tableData.length, ...response.data);
+//     } else {
+//       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+//       ElMessage.error(response.msg);
+//     }
+//   } catch (error) {
+//     // 澶勭悊璇锋眰澶辫触鐨勬儏鍐�
+//    ElMessage.error('鑾峰彇琛ㄦ牸鏁版嵁澶辫触锛岃閲嶈瘯');
+//   }
+// };
+// onMounted(fetchTableData);
+
+
+
+request.get("unLoadGlass/downStorage/selectStorageCage").then((res) => {
+          if (res.code == 200) {
+          console.log(res.data);
+          tableData.value = res.data
+          } else {
+          ElMessage.warning(res.msg)
+        
+          }
+          });
+
+const dialogForm = () => {
+  ElMessageBox.confirm(
+    '鏄惁鎶ョ己?',
+    '鎻愮ず',
+    {
+      confirmButtonText: '鏄�',
+      cancelButtonText: '鍙栨秷',
+      type: 'warning',
+    }
+  )
+  .then(() => {
+    // this.boxa = true
+    // this.box = false
+      
+    })
+}
+const open = () => {
+  ElMessageBox.confirm(
+    '鏄惁鍒犻櫎璇ユ潯淇℃伅?',
+    '鎻愮ず',
+    {
+      confirmButtonText: '鏄�',
+      cancelButtonText: '鍙栨秷',
+      type: 'warning',
+    }
+  )
+    .then(() => {
+      ElMessage({
+        type: 'success',
+        message: '鍒犻櫎鎴愬姛锛�',
+      })
+    })
+    .catch(() => {
+      ElMessage({
+        type: 'info',
+        message: '鍒犻櫎澶辫触',
+      })
+    })
+}
+const getTableRow = (row,type) =>{
+  switch (type) {
+    case 'edit' :{
+      //alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑缂栬緫淇℃伅')
+      router.push({path: '/main/returns/createReturns', query: { ReturnID: 'TH24010101' }})
+      break
+    }
+    case 'delete':{
+      alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑鍒犻櫎淇℃伅')
+      break
+    }
+  }
+}
+
+const gridOptions = reactive({
+  border:  "full",//琛ㄦ牸鍔犺竟妗�
+  keepSource: true,//淇濇寔婧愭暟鎹�
+  align: 'center',//鏂囧瓧灞呬腑
+  stripe:true,//鏂戦┈绾�
+  rowConfig: {isCurrent: true, isHover: true,height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
+  id: 'OrderList',
+  showFooter: true,//鏄剧ず鑴�
+  printConfig: {},
+  importConfig: {},
+  exportConfig: {},
+  scrollY:{ enabled: true },//寮�鍚櫄鎷熸粴鍔�
+  showOverflow:true,
+  columnConfig: {
+    resizable: true,
+    useKey: true
+  },
+  filterConfig: {   //绛涢�夐厤缃」
+    remote: true
+  },
+  customConfig: {
+    storage: true
+  },
+  editConfig: {
+    trigger: 'click',
+    mode: 'row',
+    showStatus: true
+  },
+  data:  [
+    {
+      'id': '1',
+      'long': '5',
+      'wide': '1005',
+      'thick': '183.6',
+    }
+  ]
+ 
+})
+
+
+
+</script>
+
+<template>
+  <div>
+    <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading">
+      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
+        <el-table height="240" ref="table" 
+        @selection-change="handleSelectionChange"
+        :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
+          <el-table-column prop="id" align="center" label="鐜荤拑ID" min-width="80" />
+          <el-table-column prop="sequence" align="center" label="浣嶇疆" min-width="120" />
+          <el-table-column prop="width" align="center" label="瀹�" min-width="120" />
+          <el-table-column prop="height" align="center" label="闀�" min-width="120" />
+          <el-table-column fixed="right" label="鎿嶄綔" align="center" width="200">
+            <template #default>
+              <el-button size="mini" type="text" plain  @click="dialogForm">鎶ョ己</el-button>
+            </template>
+        </el-table-column>
+        </el-table>
+      </div>
+    </el-card>
+   
+  </div>
+  <div id="awatch">
+    <img src="../../assets/woshihuancun.png" alt="" style="width: 60%;height: 90%;margin-left: 260px;margin-top: 20px;">
+<div style="width: 100px;height: 10px;background-color: #409EFF;margin-top: -124px;margin-left: 480px;"></div>
+<div style="width: 100px;height: 10px;background-color: #409EFF;margin-top: -30px;margin-left: 850px;"></div>
+<div style="width: 100px;height: 10px;background-color: #409EFF;margin-top: 30px;margin-left: 695px;"></div>
+</div>
+</template>
+
+<style scoped>
+
+#dt { display:block; float:left;line-height: 20px;margin-left: 100px;}
+#dta { display:block; float:left;line-height: 20px;margin-left: 80%;}
+#dialog-footer{
+  text-align: center;
+  margin-top: -15px;
+}
+#message{
+  text-align: center;
+  align-items: center;
+  color: black;
+   width: 200px;
+   height: 100px;
+   background-color: #337ecc;
+   margin-left: 28%;
+}
+#awatch{
+  height: 460px;
+  /* margin-top: -60px; */
+}
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/Identify/identify.vue b/UI-Project/src/views/Identify/identify.vue
index d8d5d79..e9ddd51 100644
--- a/UI-Project/src/views/Identify/identify.vue
+++ b/UI-Project/src/views/Identify/identify.vue
@@ -1,193 +1,103 @@
-<template>
-  <el-card style="margin-left: 10px; margin-top: 10px; margin-right: 10px;" v-loading="loading">
-    <div style="display: flex;margin-bottom: 30px;">
-      <div style="margin-left: 400px; font-size: 20px;">宸ョ▼鍙凤細P20240305001 </div>
-      <div style="margin-left: 150px; font-size: 20px;">鐗堝浘缂栧彿锛�1</div>
-    </div>
-    <el-scrollbar height="650px">
-      <div id="home-card">
-      <div id="home-item" v-for="n in 20" :key="n">
-    <svg width="100%" height="400" xmlns="http://www.w3.org/2000/svg" style="margin-top: -100px;margin-left: -80px;">
-      <defs>
-            <marker id="arrow" markerUnits="strokeWidth" markerWidth="12" markerHeight="12" viewBox="0 0 12 12" refX="6"
-                refY="6" orient="auto">
-                <path d="M2,2 L10,6 L2,10 L2,2" style="fill: #911005;" />
-            </marker>
-        </defs>
-      <g v-for="(rack, index) in racks" :key="index">
-        <rect 
-          :x="rack.x" 
-          :y="rack.y" 
-          :width="rack.width" 
-          :height="rack.height" 
-          :fill="rack.fillColor" 
-          :data-index="index" 
-          class="rack-rect" 
-          style="stroke:#c8c9cc;stroke-width:3;"
-          @click="showRectInfo(rack)"
-        />
-        <line x1='510' y1='309' x2='260' y2='310' stroke='#911005' stroke-width='2' marker-end='url(#arrow)'>
-        </line>
-        <text x="370" y="240" dominant-baseline="middle" text-anchor="middle">NG2024030501A-01</text> 
-        <text x="370" y="260" dominant-baseline="middle" text-anchor="middle">500*300</text> 
-
-        <g v-for="(item, itemIndex) in rack.items" :key="itemIndex">
-          <rect 
-            :x="calculateItemXPosition(rack, item, itemIndex)" 
-            :y="calculateItemYPosition(rack, item, itemIndex)" 
-            :width="item.width" 
-            :height="item.height" 
-            :fill="item.fillColor"
-          />
-        </g>
-      </g>
-    </svg>
-    </div>
-    </div>
-    </el-scrollbar>
-  </el-card>
-</template>
-
-<script>
-import Swal from 'sweetalert2'
-import request from "@/utils/request";
-
-
-request.get("/TidyUpGlassModule/CurrentCutTerritory").then((res) => {
-          if (res.code == 200) {
-          console.log(res.data);
-          } else {
-          ElMessage.warning(res.msg)
-          router.push("/login")
-          }
-          });
-
-export default {
-  data() {
-    return {
-      loading: false,
-      racks: [
-        { 
-          x: 70, y: 126, width: 600, height: 240, fillColor: '#93d2f3', 
-          items: [
-            { position: 'top-left', width: 40, height: 30, fillColor: '#ffffff', content: 'NG123456',y: '20'},
-            { position: 'bottom-left', width: 40, height: 30, fillColor: '#ffffff', content: 'NG1234567' },
-            { position: 'bottom-right', width: 40, height: 30, fillColor: '#ffffff', content: 'NG12345678' }
-          ]
-        },
-        
-        // Add more racks and items here as needed
-      ],
-    };
-  },
+<template>  
+<!-- <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading"> -->
+  <div id="app" style="margin-top: 20px;">  
+    <div  
+      :style="{ width: `${olWidth}px`, height: `${olHeight}px`,position: 'relative' }"  
+    > 
+    <div  
+      v-for="(rect, index) in adjustedRects"  
+      :key="index"  
+      class="rect"  
+      :style="{ position: 'absolute', top: `${rect.y_axis}px`, left: `${rect.x_axis}px`, width: `${rect.width}px`, height: `${rect.height}px` }"  
+    >
+     <!-- 绠ご -->  
+     <div id="arrow"></div>  
+     <div id="line"></div>  
+     <div  class="centered-text" >NG24030401B01</div>
+    <!-- <div v-if="process_id" class="centered-text">{{ process_id }}</div>   -->
+  </div> 
+   </div>
+  </div>  
+</template>  
   
-  methods: {
-    calculateItemXPosition(rack, item, index) {
-      if (item.position === 'top-right' || item.position === 'bottom-right') {
-        return Math.min(rack.x + rack.width - item.width, rack.x + rack.width);
-      } else {
-        return rack.x;
-      }
-    },
-    
-    calculateItemYPosition(rack, item, index) {
-      if (item.position === 'bottom-left' || item.position === 'bottom-right') {
-        return Math.min(rack.y + rack.height - item.height, rack.y + rack.height);
-      } else {
-        return rack.y;
-      }
-    },
-    
-    showCustomAlert(content) {
-      Swal.fire({
-    // type: 'warning', // 寮规绫诲瀷
-    title: '璇ョ墖鐜荤拑鐘舵��', //鏍囬
-    // text: "娉ㄩ攢鍚庡皢鏃犳硶鎭㈠锛岃璋ㄦ厧鎿嶄綔锛�", //鏄剧ず鍐呭            
+<script setup>  
+import { ref, onMounted } from 'vue';  
+import request from "@/utils/request"
+const olWidth = ref(); 
+const olHeight = ref();
+const process_id = ref(); // 鐢ㄤ簬瀛樺偍process_id鐨勫搷搴斿紡寮曠敤 
+// const rects = ref([]); // 鐢ㄤ簬瀛樺偍鐭╁舰鏁版嵁鐨勫搷搴斿紡寮曠敤  
+const adjustedRects = ref([]);
+onMounted(async () => {  
+  try {  
+    const response = await request.post('/cacheGlass/taskCache/currentCutTerritory'); // 鏇挎崲涓轰綘鐨凙PI绔偣  
+    if (response.code === 200) {  
+      // const process_id = response.data[0].process_id
+      const rawRects = response.data; // 璁剧疆鐭╁舰鏁版嵁  
+      console.log(response.data);
+      const { olWidth: newolWidth, olHeight: newolHeight, process_id: newprocess_id  } = response.data; // 鑾峰彇灏哄  
+      olWidth.value = newolWidth; // 璁剧疆瀹瑰櫒瀹藉害  
+      olHeight.value = newolHeight; // 璁剧疆瀹瑰櫒楂樺害  
+      process_id.value = newprocess_id;  
 
-    confirmButtonColor: '#3085d6',// 纭畾鎸夐挳鐨� 棰滆壊
-    confirmButtonText: '浜哄伐鎷胯蛋',// 纭畾鎸夐挳鐨� 鏂囧瓧
-    showCancelButton: true, // 鏄惁鏄剧ず鍙栨秷鎸夐挳
-    cancelButtonColor: '#d33', // 鍙栨秷鎸夐挳鐨� 棰滆壊
-    cancelButtonText: "鐮存崯", // 鍙栨秷鎸夐挳鐨� 鏂囧瓧
+      adjustedRects.value = rawRects.map(rect => ({  
+        ...rect, // 澶嶅埗鍘熷瀵硅薄鐨勫叾浠栧睘鎬�  
+        x_axis: (rect.x_axis*100) * 0.005, // 灏唜鍊奸櫎浠�3  
+        y_axis: (rect.y_axis*100) * 0.005,
+        width: (rect.width*100) * 0.004 ,
+        height:( rect.height*100) * 0.004 ,
+      }));  
+        console.log(rect);
 
-    // focusCancel: true, // 鏄惁鑱氱劍 鍙栨秷鎸夐挳
-    reverseButtons: true  // 鏄惁 鍙嶈浆 涓や釜鎸夐挳鐨勪綅缃� 榛樿鏄�  宸﹁竟 纭畾  鍙宠竟 鍙栨秷
-}).then((isConfirm) => {
-    try {
-        //鍒ゆ柇 鏄惁 鐐瑰嚮鐨� 纭畾鎸夐挳
-        if (isConfirm.value) {
-            Swal.fire("浜哄伐鎷胯蛋", "鐐瑰嚮浜嗕汉宸ユ嬁璧�", "success");
-        }
-        else {
-            Swal.fire("鐮存崯", "鐐瑰嚮浜嗙牬鎹�", "error");
-        }
-    } catch (e) {
-        alert(e);
-    }
-});
-    },
-    
-    showRectInfo(rectInfo) {
-      const contents = rectInfo.items.map(item => item.content).join(', ');
-      this.$nextTick(() => {
-        this.showCustomAlert(contents);
-      });
-    },
-  }
-};
-</script>
+      //   console.log( (rect.width*100) / 300 );
+    } else {  
+      // console.error('Failed to fetch rectangles from API.');  
+      console.error('Failed to fetch rects from API.'); 
+    }  
+  } catch (error) {  
+    // console.error('Error fetching rectangles :', error);
+    console.error('Error fetching rects :', error);  
+  }  
+});  
+</script>  
+  
+<style scoped>  
+.rect {  
+  border: 1px solid black; /* 璁剧疆鐭╁舰鐨勮竟妗� */  
+  background-color: lightblue; /* 璁剧疆鐭╁舰鐨勮儗鏅壊 */  
+}  
+.centered-text {  
+  /* 璁剧疆鏂囧瓧灞呬腑鏍峰紡 */  
+  display: flex;  
+  justify-content: center;  
+  align-items: center;  
+  height: 100%; /* 纭繚div鍗犳嵁鏁翠釜鐭╁舰鐨勯珮搴� */  
+} 
+#rect {  
+  position: relative; /* 纭繚绠ご鍙互鐩稿浜庣煩褰㈠畾浣� */  
+  /* 鍏朵粬鏍峰紡 */  
+}  
 
-<style scoped>
-.glass-rack {
-  width: 100%;
-  height: 80vh;
-}
-.rack-rect:hover {
-  cursor: pointer;
-}
-.custom-popover-class {
-  background-color: lightgrey;
-  color: black;
-  border: 1px solid black;
-}
-
-#home-card {
-    width: 100%;
-    overflow: hidden;
-    padding: 10px 0px;
-    display: flex;
-    flex-wrap: wrap;
-    #home-item {
-      border-style: solid;
-      border-width: 1px;
-      border-color: #E4E4E4;
-      width: calc(34% - 20px);
-      padding: 20px 0px 20px 20px;
-      margin-right: 20px;
-      margin-bottom: 10px;
-      display: flex;
-      justify-content: center;
-      /* align-items: center; */
-      background: #fff;
-      width: 700px;
-      #home-img {
-        display: inline-block;
-        width: 160px;
-        height: 60px;
-        margin: 0;
-        padding: 0;
-      }
-      #home-right {
-        display: flex;
-        flex-direction: column;
-        justify-content: center;
-        align-items: flex-start;
-        margin-left: 10px;
-        #home-num {
-          font-size: 40px;
-          margin: 5px 0;
-        }
-      }
-    }
-  }
-</style>
+#arrow {  
+  position: absolute;  
+  top: 70%; /* 绠ご浣嶄簬鐭╁舰涓棿 */  
+  left: 200px; /* 绠ご鍦ㄧ煩褰㈠乏渚т竴浜涜窛绂� */  
+  transform: translateY(-50%); /* 鍨傜洿灞呬腑 */  
+  width: 0;  
+  height: 0;  
+  border-top: 10px solid transparent; /* 涓婅竟妗� */  
+  border-bottom: 10px solid transparent; /* 涓嬭竟妗� */  
+  border-right: 20px solid #911005; /* 鍙宠竟妗嗭紝褰㈡垚绠ご */  
+  /* 鏍规嵁闇�瑕佽皟鏁磋竟妗嗗ぇ灏忓拰棰滆壊 */  
+}  
+  
+#line {  
+  position: absolute;  
+  top: 70%; /* 鐩寸嚎浣嶄簬鐭╁舰涓棿 */  
+  left: 210px; /* 鐩寸嚎鍦ㄧ澶村彸渚т竴浜涜窛绂� */  
+  transform: translateY(-50%); /* 鍨傜洿灞呬腑 */  
+  height: 2px; /* 鐩寸嚎鐨勯珮搴� */  
+  width: 240px; /* 鐩寸嚎鐨勯暱搴︼紝鏍规嵁闇�瑕佽皟鏁� */  
+  background-color: #911005; /* 鐩寸嚎鐨勯鑹� */  
+}  
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/LoginView.vue b/UI-Project/src/views/LoginView.vue
index 70fd9e6..7206227 100644
--- a/UI-Project/src/views/LoginView.vue
+++ b/UI-Project/src/views/LoginView.vue
@@ -48,7 +48,7 @@
     if (valid) {
       loginLoadings.value = true
       request
-          .post('/loadGlass/userinfo/login', userForm)
+          .post('/loadGlass/sys/user/login', userForm)
           .then((res) => {
             if (res['code'] == 200) {
               store.$patch({user: res.data})
@@ -58,12 +58,18 @@
               ElMessage.success(`鐧诲綍鎴愬姛`)
             } else {
               ElMessage.error(res['msg'])
+              store.$patch({
+              user: null,
+              })
               loginLoadings.value = false
               return false
             }
           })
           .catch((error) => {
             ElMessage.error('鏈嶅姟鍣ㄨ繛鎺ュけ璐�')
+            store.$patch({
+              user: null,
+              })
             loginLoadings.value = false
             return false
           })
diff --git a/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue b/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
index 38963a3..63dbe54 100644
--- a/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
+++ b/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
@@ -64,27 +64,59 @@
 <div v-if="dialogFormVisible" >
     <el-card style="margin-left: 10px;margin-top: 10px;margin-right: 10px;" v-loading="loading">
       <div style="display: flex;margin-bottom: 20px;">
-      <div style="margin-left: 400px;font-size: 20px;">宸ョ▼鍙凤細P20240305001 </div>
+      <div style="margin-left: 450px;font-size: 20px;">宸ョ▼鍙凤細P20240305001 </div>
       <div style="margin-left: 150px;font-size: 20px;">鐗堝浘缂栧彿锛�1</div>
     </div>
     <div>
-            <div id="boxa" style="width: 400px;height: 120px;margin-left: 260px;">
+            <div id="boxa" style="width: 200px;height: 300px;margin-left: 70px;">
               <div style="margin-top: 35px;"> NG202405060798A01-1</div> 
-            <div> 500脳1500</div>
+            <div> 500脳1000</div>
           </div>
-            <div id="boxa" style="width: 400px;height: 120px;">
+            <div id="boxa" style="width: 200px;height: 300px;">
               <div style="margin-top: 35px;"> NG202405060798A01-1</div> 
-            <div> 500脳1500</div>
+            <div> 500脳1000</div>
+          </div>
+          <div id="boxa" style="width: 200px;height: 300px;">
+              <div style="margin-top: 35px;"> NG202405060798A01-1</div> 
+            <div> 500脳1000</div>
+          </div>
+          <div id="boxa" style="width: 200px;height: 300px;">
+              <div style="margin-top: 35px;"> NG202405060798A01-1</div> 
+            <div> 500脳1000</div>
+          </div>
+          <div id="boxa" style="width: 200px;height: 300px;">
+              <div style="margin-top: 35px;"> NG202405060798A01-1</div> 
+            <div> 500脳1000</div>
+          </div>
+          <div id="boxa" style="width: 200px;height: 300px;">
+              <div style="margin-top: 35px;"> NG202405060798A01-1</div> 
+            <div> 500脳1000</div>
           </div>
     </div>
     <div style="margin-top: 20px;">
-            <div id="boxa" style="width: 400px;height: 120px;margin-left: 260px;">
+            <div id="boxa" style="width: 200px;height: 300px;margin-left: 70px;">
               <div style="margin-top: 35px;"> NG202405060798A01-1</div> 
-            <div> 500脳1500</div>
+            <div> 500脳1000</div>
           </div>
-            <div id="boxb" style="width: 400px;height: 120px;">
+          <div id="boxa" style="width: 200px;height: 300px;">
               <div style="margin-top: 35px;"> NG202405060798A01-1</div> 
-            <div> 500脳1500</div>
+            <div> 500脳1000</div>
+          </div>
+          <div id="boxa" style="width: 200px;height: 300px;">
+              <div style="margin-top: 35px;"> NG202405060798A01-1</div> 
+            <div> 500脳1000</div>
+          </div>
+          <div id="boxa" style="width: 200px;height: 300px;">
+              <div style="margin-top: 35px;"> NG202405060798A01-1</div> 
+            <div> 500脳1000</div>
+          </div>
+          <div id="boxa" style="width: 200px;height: 300px;">
+              <div style="margin-top: 35px;"> NG202405060798A01-1</div> 
+            <div> 500脳1000</div>
+          </div>
+            <div id="boxb" style="width: 200px;height: 300px;">
+              <div style="margin-top: 35px;"> NG202405060798A01-1</div> 
+            <div> 500脳1000</div>
           </div>
     </div>
     </el-card>
diff --git a/UI-Project/src/views/Returns/returns.vue b/UI-Project/src/views/Returns/returns.vue
index 12cd2dd..49db7d7 100644
--- a/UI-Project/src/views/Returns/returns.vue
+++ b/UI-Project/src/views/Returns/returns.vue
@@ -4,53 +4,54 @@
 import {useRouter} from "vue-router"
 const router = useRouter()
 import type { TableColumnCtx } from 'element-plus'
-
+ 
 // import { ref } from 'vue'
 import { ElMessage, ElMessageBox } from 'element-plus'
 const dialogFormVisible = ref(false)
+const blind = ref(false)
+const blinda = ref(false)
+const blindb = ref(false)
 const add = ref(false)
 const adda = ref(false)
+const flake = ref(false)
+const flakea = ref(false)
 // const value = ref('')
 import request from "@/utils/request"
-
+ 
 import { ref, onMounted } from "vue";
 // import http from "@/http/index";
-
+ 
 let ruleForm = ref({
+  // engineeringId: '',
   workstationId: '',
   patternHeigth: '',
   patternWidth: '',
   filmsId: '',
   patternThickness: '',
   number: '',
-
+ 
 })
 const tableDataa = ref([])
   
- const requestData = {
-    // projectNo:"P24030805",
-    state:100
-  };
-  
+
   const tableData = reactive([]);
 //   let filterData = ref({
 //   damageDetails: {
 //     state: '',
 //   },
-
+ 
 // })
 // 鍙戦�佽幏鍙栬〃鏍兼暟鎹殑璇锋眰
 const fetchTableData = async () => {
   try {
-    // 鍙戦�佽幏鍙栬〃鏍兼暟鎹殑璇锋眰锛屽苟绛夊緟鍝嶅簲
-    // const response = await request.post("/loadGlass/optimizeProject/listByState", requestData);
     const response = await request.get("/loadGlass/up-patten-usage/prioritylist");
-
+ 
     // 妫�鏌ュ搷搴旂姸鎬�
     if (response.code === 200) {
       // 鏇存柊琛ㄦ牸鏁版嵁
       console.log('鎴愬姛鑾峰彇琛ㄦ牸鏁版嵁:', response.data);
       tableData.splice(0, tableData.length, ...response.data);
+      window.localStorage.setItem('engineeringId', response.data[0].engineeringId)
     } else {
       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
       ElMessage.error(response.msg);
@@ -64,32 +65,93 @@
           if (res.code == 200) {
           console.log(res.data);
           tableDataa.value = res.data
-          // workstationId.value = res.data[0].workstationId
+      window.localStorage.setItem('patternWidth', res.data.patternWidth)
+      window.localStorage.setItem('workstationId', res.data.workstationId)
+      let workstationIda = window.localStorage.getItem('workstationId')
+      let patternWidth = window.localStorage.getItem('patternWidth')
+      if (patternWidth !== '' || workstationIda == '1') {
+      flake.value = true
+    } else if (patternWidth !== '' || workstationIda == '2') {
+      flakea.value = true
+    }
           } else {
           ElMessage.warning(res.msg)
-          router.push("/login")
+          // router.push("/login")
           }
           });
 //瀹氫箟鎺ユ敹鍔犺浇琛ㄥご涓嬫媺鏁版嵁
 const titleSelectJson = ref({
   processType: [],
+ 
+})
+// const getBasicData = ref({
+//   id: '',
+//   projectNo: '',
+// })
+// const requestData = {
+//     // projectNo:"P24030805",
+//     state:100
+//   };
+// request.post("/loadGlass/optimizeProject/listByState", requestData)
+// .then((res) => {
+//           if (res.code == 200) {
+//     titleSelectJson.value.processType = res.data;
+//           console.log(res.data);
+//           } else {
+//           ElMessage.warning(res.msg)
+//           // router.push("/login")
+//           }
+//           });
+          // 鍒濆璇锋眰鍙傛暟  
+const requestData = {  
+  state: 100  
+};  
+// 鍝嶅簲寮忔暟鎹�  
+const selectedProjectNo = ref(''); // 褰撳墠閫変腑鐨勫伐绋嬪彿  
+const options = ref<any[]>([]); // 涓嬫媺閫夐」鍒楄〃  
+  
+// 璋冪敤鎺ュ彛鑾峰彇閫夐」鏁版嵁鐨勫嚱鏁�  
+const fetchOptions = async (queryString: string) => {  
+  try {  
+    // 鍙戦�佽姹傚埌鍚庣鎺ュ彛  
+    const response = await request.post('/loadGlass/optimizeProject/listByState', {  
+      ...requestData,  
+      query: queryString // 灏嗘煡璇㈠瓧绗︿覆浣滀负鍙傛暟浼犻��  
+    });  
+    
+    if (response.code == 200) {  
+    titleSelectJson.value.processType = response.data;
 
-})
-const getBasicData = ref({
-  id: '',
-  projectNo: '',
-})
-request.post("/loadGlass/optimizeProject/listByState", requestData)
-.then((res) => {
-          if (res.code == 200) {
-    titleSelectJson.value.processType = res.data;
-          console.log(res.data);
-          } else {
-          ElMessage.warning(res.msg)
-          router.push("/login")
-          }
-          });
-          
+    //   titleSelectJson.value.processType = response.data(item => ({  
+    //   // options.value = response.data.data.map(item => ({  
+    //     value: item.projectNo,  
+    //     // label: item.id // 鍋囪鍚庣杩斿洖鐨勬暟鎹腑鏈�  瀛楁浣滀负鏄剧ず鏍囩  
+    //   }));  
+    console.log(response.data);
+
+    } else {  
+      ElMessage.warning(response.data);  
+    }  
+  } catch (error) {  
+    console.error('Error fetching options:', error);  
+  }  
+};  
+  
+// 澶勭悊鐢ㄦ埛杈撳叆鍙樺寲鐨勬柟娉�  
+const handleInputChange = async (value: string) => {  
+  if (value) {  
+    await fetchOptions(value);  
+  } else {  
+    options.value = []; // 娓呯┖閫夐」鍒楄〃  
+  }  
+};  
+  
+// 鍒濆鍖栧姞杞芥暟鎹紙濡傛灉闇�瑕侊級  
+onMounted(() => {  
+  // 鍦ㄧ粍浠舵寕杞藉悗璋冪敤 fetchOptions('') 鏉ュ姞杞藉垵濮嬫暟鎹紙濡傛灉闇�瑕侊級  
+  fetchOptions('');  
+});  
+  
 // const billall  = () => {
 //   request.post("/loadGlass/optimizeProject/listByState", requestData)
 //     .then((res: any) => {
@@ -105,26 +167,14 @@
 let titleUploadData = ref({
   projectNo:'',
 })
-// const billall = {
-//   data () {
-//     return {
-//       form: {
-//         projectNo: '',
-//       },
-//       billall:[],
-//     }
-//   },
-//   methods:{
-
-//   }
-// }
+// const engineeringId = ref('');
 const workstationId = ref('');
 const patternHeigth = ref('');
 const patternWidth = ref('');
 const filmsId = ref('');
 const patternThickness = ref('');
 const number = ref('');
-
+ 
 // 娣诲姞
     const handleConfirm = async () => {
   try {
@@ -136,11 +186,18 @@
       patternThickness: patternThickness.value,
       number: number.value
     }); 
-
+ 
     if (response.code == 200) {
       // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
       ElMessage.success(response.message);
       add.value = false;
+      window.localStorage.setItem('workstationId', response.data.workstationId)
+      let workstationId = window.localStorage.getItem('workstationId')
+      if (workstationId == '1') {
+      flake.value = true
+    } else if (workstationId == '2'){
+      flakea.value = true
+    }
     } else {
       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
       ElMessage.error(response.msg);
@@ -161,11 +218,18 @@
       patternThickness: 0,
       number: 0
     }); 
-
+ 
     if (response.code == 200) {
       // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
       ElMessage.success(response.message);
       adda.value = false;
+      window.localStorage.setItem('workstationId', response.data.workstationId)
+      let workstationId = window.localStorage.getItem('workstationId')
+      if (workstationId == '1') {
+      flake.value = false
+    } else if (workstationId == '2'){
+      flakea.value = false
+    }
     } else {
       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
       ElMessage.error(response.msg);
@@ -175,67 +239,154 @@
     console.error(error);
   }
 };
-onMounted(fetchTableData);
-interface User {
-  id: string
-  name: string
-  amount1: string
-  amount2: string
-  amount3: number
-}
-
-interface SpanMethodProps {
-  row: User
-  column: TableColumnCtx<User>
-  rowIndex: number
-  columnIndex: number
-}
-
-const objectSpanMethod = ({
-  row,
-  column,
-  rowIndex,
-  columnIndex,
-}: SpanMethodProps) => {
-  if (columnIndex === 0) {
-    if (rowIndex % 2 === 0) {
-      return {
-        rowspan: 2,
-        colspan: 1,
-      }
+// 寮�濮嬩笂鐗�
+const handle = async () => {
+  try  {
+  let engineeringId = window.localStorage.getItem('engineeringId')
+console.log(engineeringId);
+if (engineeringId !== '') {
+  const response = await request.post('/loadGlass/engineering/engineering/changeTask', {
+      engineeringId: engineeringId,
+      state: 1,
+    })
+    if (response.code == 200) {
+      // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
+      ElMessage.success(response.message);
+      blind.value = false;
     } else {
-      return {
-        rowspan: 0,
-        colspan: 0,
-      }
+      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+      ElMessage.error(response.msg);
     }
   }
-} 
-
-const open = () => {
-  ElMessageBox.confirm(
-    '鏄惁鍒犻櫎璇ユ潯淇℃伅?',
-    '鎻愮ず',
-    {
-      confirmButtonText: '鏄�',
-      cancelButtonText: '鍙栨秷',
-      type: 'warning',
-    }
-  )
-    .then(() => {
-      ElMessage({
-        type: 'success',
-        message: '鍒犻櫎鎴愬姛锛�',
-      })
-    })
-    .catch(() => {
+    else  {
       ElMessage({
         type: 'info',
-        message: '鍒犻櫎澶辫触',
+        message: '宸ョ▼鍙蜂笉鑳戒负绌猴紒',
       })
-    })
+    }
 }
-
+catch (error) {
+    // 澶勭悊閿欒
+    console.error(error);
+  }
+}
+// 鏆傚仠
+const handlea = async () => {
+  try  {
+  let engineeringId = window.localStorage.getItem('engineeringId')
+console.log(engineeringId);
+if (engineeringId !== '') {
+  const response = await request.post('/loadGlass/engineering/engineering/changeTask', {
+      engineeringId: engineeringId,
+      state: 0,
+    })
+    if (response.code == 200) {
+      // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
+      ElMessage.success(response.message);
+      blinda.value = false;
+    } else {
+      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+      ElMessage.error(response.msg);
+    }
+  }
+    else  {
+      ElMessage({
+        type: 'info',
+        message: '宸ョ▼鍙蜂笉鑳戒负绌猴紒',
+      })
+    }
+}
+catch (error) {
+    // 澶勭悊閿欒
+    console.error(error);
+  }
+}
+// 寮�濮嬩笂鐗�
+const handleb = async () => {
+  try  {
+  let engineeringId = window.localStorage.getItem('engineeringId')
+console.log(engineeringId);
+if (engineeringId !== '') {
+  const response = await request.post('/loadGlass/engineering/engineering/changeTask', {
+      engineeringId: engineeringId,
+      state: 0,
+    })
+    if (response.code == 200) {
+      // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
+      ElMessage.success(response.message);
+      blindb.value = false;
+    } else {
+      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+      ElMessage.error(response.msg);
+    }
+  }
+    else  {
+      ElMessage({
+        type: 'info',
+        message: '宸ョ▼鍙蜂笉鑳戒负绌猴紒',
+      })
+    }
+}
+catch (error) {
+    // 澶勭悊閿欒
+    console.error(error);
+  }
+}
+onMounted(fetchTableData);
+ 
+// const open = () => {
+//   ElMessageBox.confirm(
+//     '鏄惁鍒犻櫎璇ユ潯淇℃伅?',
+//     '鎻愮ず',
+//     {
+//       confirmButtonText: '鏄�',
+//       cancelButtonText: '鍙栨秷',
+//       type: 'warning',
+//     }
+//   )
+//     .then(() => {
+//       ElMessage({
+//         type: 'success',
+//         message: '鍒犻櫎鎴愬姛锛�',
+//       })
+//     })
+//     .catch(() => {
+//       ElMessage({
+//         type: 'info',
+//         message: '鍒犻櫎澶辫触',
+//       })
+//     })
+// }
+// 寮�濮嬩笂鐗�
+const handleBind = (row) => {
+  // engineeringId.value = row.engineeringId; 
+ 
+  blind.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗�
+};
+// 鏆傚仠
+const handleBinda = (row) => {
+  // engineeringId.value = row.engineeringId; 
+ 
+  blinda.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗�
+};
+// 鍋滄浠诲姟
+const handleBindb = (row) => {
+  // engineeringId.value = row.engineeringId; 
+ 
+  blindb.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗�
+};
+// 娣诲姞
+const handleBindRack = (row) => {
+  workstationId.value = row.workstationId; // 鍋囪rackNumber鏄灦鍙峰瓧娈电殑灞炴�у悕
+ 
+  add.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗�
+};
+// 鍒犻櫎
+const handleBindRacka = (row) => {
+  workstationId.value = row.workstationId; // 鍋囪rackNumber鏄灦鍙峰瓧娈电殑灞炴�у悕
+ 
+  adda.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗�
+};
 const gridOptions = reactive({
   border:  "full",//琛ㄦ牸鍔犺竟妗�
   keepSource: true,//淇濇寔婧愭暟鎹�
@@ -274,7 +425,7 @@
   ],
 })
 </script>
-
+ 
 <template>
   <div>
     <div id="dotClass">
@@ -287,9 +438,10 @@
     <el-button style="margin-left: 30px;margin-top: -3px;" >鎵嬪姩纭</el-button>
    </div>
     <el-button style="margin-top: 5px;margin-left: 15px;"   id="searchButton" type="primary" @click="dialogFormVisible = true">閫夋嫨宸ョ▼</el-button>
-    <el-button style="margin-top: 5px;margin-left: 20px;"  id="searchButton" type="primary">寮�濮嬩笂鐗�</el-button>
-    <el-button style="margin-top: 5px;margin-left: 20px;"  id="searchButton" type="warning" >鏆傚仠</el-button>
-    <el-button style="margin-top: 5px;margin-left: 20px;"  id="searchButton" type="danger" >鍋滄浠诲姟</el-button>
+    <el-button style="margin-top: 5px;margin-left: 20px;"  id="searchButton" type="primary" @click="handleBind">寮�濮嬩笂鐗�</el-button>
+    <el-button style="margin-top: 5px;margin-left: 20px;"  id="searchButton" type="warning" @click="handleBinda">鏆傚仠</el-button>
+    <el-button style="margin-top: 5px;margin-left: 20px;"  id="searchButton" type="danger" @click="handleBindb">鍋滄浠诲姟</el-button>
+    
     <el-card style="flex: 1;margin-left: 10px;margin-top: 15px;" v-loading="loading">
       <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
     <el-table
@@ -310,14 +462,48 @@
             min-width="80"
             prop="state"
           >
-          <!-- <el-tag type="success" v-if="damageDetails.state === 1">灏辩华</el-tag> -->
-          <!-- <el-tag type="danger" v-if="row.enableState==2">鏈氨缁�</el-tag> -->
+          <template #default="scope">
+            <el-tag type="success" >{{ scope.row.state==1?"灏辩华":"鏈氨缁�"  }}</el-tag>
+          </template>
           </el-table-column>
     </el-table>
       </div>
+      
     </el-card>
+  <el-dialog v-model="blind" top="30vh" width="25%" title="鏄惁寮�濮嬩笂鐗�?" >
+    <template #footer>
+      <div id="dialog-footer">
+        <el-button type="primary" @click="handle">
+          纭
+        </el-button>
+        <el-button @click="blind = false">鍙栨秷</el-button>
+      </div>
+    </template>
+  </el-dialog>
+  <el-dialog v-model="blinda" top="30vh" width="25%" title="鏄惁鏆傚仠?" >
+    <template #footer>
+      <div id="dialog-footer">
+        <el-button type="primary" @click="handlea">
+          纭
+        </el-button>
+        <el-button @click="blinda = false">鍙栨秷</el-button>
+      </div>
+    </template>
+  </el-dialog>
+  <el-dialog v-model="blindb" top="30vh" width="25%" title="鏄惁鍋滄浠诲姟?" >
+    <template #footer>
+      <div id="dialog-footer">
+        <el-button type="primary" @click="handleb">
+          纭
+        </el-button>
+        <el-button @click="blindb = false">鍙栨秷</el-button>
+      </div>
+    </template>
+  </el-dialog>
       <div id="parent">
         <img src="../../assets/shangpianji.png" alt="" style="max-width: 20%;max-height: 20%;margin-top: 20px;margin-left: 500px;">
+        <div id="overlay" v-show="flake"></div>
+        <div id="overlaya" v-show="flakea"></div>
       </div>
       <div style="margin-top: -350px;margin-left: 650px;">
         <el-table :data="tableDataa" border style="width: 60%"
@@ -328,39 +514,14 @@
           <el-table-column prop="filmsId" align="center" label="鑶滅郴" min-width="80" />
           <el-table-column prop="number" align="center" label="鏁伴噺" min-width="80" />
           <el-table-column fixed="right" label="鎿嶄綔" align="center" width="150">
-            <template #default>
-              <el-button size="mini" type="text" plain @click="add = true">娣诲姞</el-button>
-              <el-button size="mini" type="text" plain @click="adda = true">鍒犻櫎</el-button>
+            <template #default="scope">
+              <el-button size="mini" type="text" plain @click="handleBindRack(scope.row)">娣诲姞</el-button>
+              <el-button size="mini" type="text" plain @click="handleBindRacka(scope.row)">鍒犻櫎</el-button>
             </template>
         </el-table-column>
         </el-table>
     </div>
-        </div>
-
-  
-  <el-dialog v-model="dialogFormVisible" top="24vh" width="30%" title="宸ョ▼" >
-    <div style="margin-left: 50px;margin-bottom: 10px;">
-      <el-form-item label="宸ョ▼鍙凤細" :required="true">
-        <el-select  v-model="getBasicData.projectNo" clearable placeholder="璇烽�夋嫨宸ョ▼" style="width: 220px"
-                   >
-            <el-option
-                v-for="item in titleSelectJson['processType']"
-                :key="item.id"
-                :label="item.projectNo"
-                :value="item.projectNo"
-            />
-          </el-select>
-              </el-form-item>
-          </div>
-    <template #footer>
-      <div id="dialog-footer">
-        <el-button type="primary" @click="dialogFormVisible = false">
-          纭
-        </el-button>
-        <el-button @click="dialogFormVisible = false">鍙栨秷</el-button>
-      </div>
-    </template>
-  </el-dialog>
+    
   <el-dialog v-model="add" top="23vh" width="45%" title="娣诲姞鍘熺墖" >
     <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
             <el-form  size="mini" label-width="150px">
@@ -419,7 +580,7 @@
       </div>
     </template>
   </el-dialog>
-  <el-dialog v-model="adda" top="25vh" width="25%" title="鏄惁鍒犻櫎" >
+  <el-dialog v-model="adda" top="30vh" width="25%" title="鏄惁鍒犻櫎璇ユ潯淇℃伅?" >
     <template #footer>
       <div id="dialog-footer">
         <el-button type="primary" @click="handleConfirma">
@@ -429,10 +590,51 @@
       </div>
     </template>
   </el-dialog>
+        </div>
+ 
+  
+  <el-dialog v-model="dialogFormVisible" top="24vh" width="30%" title="宸ョ▼" >
+    <div style="margin-left: 50px;margin-bottom: 10px;">
+      <el-form-item label="宸ョ▼鍙凤細" :required="true">
+        <el-select  
+           v-model="selectedProjectNo"  
+           filterable  
+           clearable  
+           placeholder="璇烽�夋嫨宸ョ▼"  
+           style="width: 220px"  
+           @input="handleInputChange"  
+         >  
+      <el-option  
+         v-for="item in titleSelectJson['processType']"  
+         :key="item.id"  
+         :label="item.projectNo"  
+         :value="item.projectNo"  
+      />  
+    </el-select>  
+        <!-- <el-select  v-model="getBasicData.projectNo" clearable placeholder="璇烽�夋嫨宸ョ▼" style="width: 220px"
+                   >
+            <el-option
+                v-for="item in titleSelectJson['processType']"
+                :key="item.id"
+                :label="item.projectNo"
+                :value="item.projectNo"
+            />
+          </el-select> -->
+              </el-form-item>
+          </div>
+    <template #footer>
+      <div id="dialog-footer">
+        <el-button type="primary" @click="dialogFormVisible = false">
+          纭
+        </el-button>
+        <el-button @click="dialogFormVisible = false">鍙栨秷</el-button>
+      </div>
+    </template>
+  </el-dialog>
 </template>
-
+ 
 <style scoped>
-
+ 
 #dt { display:block; float:left;line-height: 20px;margin-left: 100px;}
 #dta { display:block; float:left;line-height: 20px;margin-left: 80%;}
 #dialog-footer{
@@ -457,8 +659,8 @@
   width: 212px;
   height: 15px;
   background-color: #529b2e;
-  margin-top: -407px;
-  margin-left: 171px;
+  margin-top: -404px;
+  margin-left: 542px;
 }
 #overlaya{
   position: absolute;
@@ -466,8 +668,8 @@
   width: 212px;
   height: 15px;
   background-color: #529b2e;
-  margin-top: -40px;
-  margin-left: 167px;
+  margin-top: -38px;
+  margin-left: 537px;
 }
-
+ 
 </style>
\ No newline at end of file
diff --git a/UI-Project/src/views/Slicecage/slicecage.vue b/UI-Project/src/views/Slicecage/slicecage.vue
index 1136815..2538c4e 100644
--- a/UI-Project/src/views/Slicecage/slicecage.vue
+++ b/UI-Project/src/views/Slicecage/slicecage.vue
@@ -1,14 +1,26 @@
 <script lang="ts" setup>
-import {Search} from "@element-plus/icons-vue";
-import {reactive} from "vue";
-import {useRouter} from "vue-router"
+import {reactive, ref} from 'vue'
+import {useRouter} from 'vue-router'
+import {ElMessage, ElMessageBox} from 'element-plus'
+
 const router = useRouter()
 
-import { ref } from 'vue'
-import { ElMessage, ElMessageBox } from 'element-plus'
 const dialogFormVisible = ref(false)
 const dialogFormVisiblea = ref(false)
 const dialogFormVisibleb = ref(false)
+
+const carposition1 = ref(40)
+const carposition2 = ref(200)
+const timers1 = ref(true)
+const timers2 = ref(true)
+const cellshow = ref(false)
+const cellshow1 = ref(true)
+const cellshow2 = ref(true)
+const million = ref(0)
+const million1 = ref(0)
+
+const loading = null
+const handleSelectionChange = null
 
 const currentPage4 = ref(4)
 const pageSize4 = ref(100)
@@ -20,7 +32,7 @@
     c: '123456789',
     d: '1568251',
     e: '1',
-    f: '100',
+    f: '100*100',
     g: '',
   },
 ]
@@ -32,41 +44,89 @@
     c: '123456789',
     d: '1568251',
     e: '1',
-    f: '100',
+    f: '100*100',
     g: '',
-  }
+  },
 ]
 const dialogForm = () => {
-  ElMessageBox.confirm(
-    '纭畾瑕佹�ュ仠鍚�?',
-    '鎻愮ず',
-    {
-      confirmButtonText: '鏄�',
-      cancelButtonText: '鍚�',
-      type: 'warning',
-    }
-  )
-    .then(() => {
-      ElMessage({
-        type: 'success',
-        message: '鎬ュ仠鎴愬姛锛�',
+  ElMessageBox.confirm('纭畾瑕佹�ュ仠鍚�?', '鎻愮ず', {
+    confirmButtonText: '鏄�',
+    cancelButtonText: '鍚�',
+    type: 'warning',
+  })
+      .then(() => {
+        ElMessage({
+          type: 'success',
+          message: '鎬ュ仠鎴愬姛锛�',
+        })
       })
-    })
-    .catch(() => {
-      ElMessage({
-        type: 'info',
-        message: '鎬ュ仠澶辫触',
+      .catch(() => {
+        ElMessage({
+          type: 'info',
+          message: '鎬ュ仠澶辫触',
       })
     })
 }
-const getTableRow = (row,type) =>{
+
+var timer = setInterval(() => {
+  console.log(million.value, million1.value)
+  million.value += 1
+  if (million.value - million1.value !== 12) {
+    if (million.value - million1.value >= 2) {
+      if (carposition1.value == 200) {
+        timers1.value = false
+      } else if (carposition1.value == 40) {
+        timers1.value = true
+      }
+      if (timers1.value == true) {
+        carposition1.value = carposition1.value + 16
+      } else {
+        carposition1.value = carposition1.value - 16
+      }
+
+      if (carposition2.value == 200) {
+        timers2.value = false
+      } else if (carposition2.value == 40) {
+        timers2.value = true
+      }
+      if (timers2.value == true) {
+        carposition2.value += 16
+      } else {
+        carposition2.value -= 16
+      }
+    } else {
+    }
+  } else {
+    million1.value = million.value
+    if (cellshow.value == true) {
+      cellshow.value = false
+    } else {
+      cellshow.value = true
+    }
+    if (cellshow1.value == true) {
+      cellshow1.value = false
+    } else {
+      cellshow1.value = true
+    }
+    if (cellshow2.value == true) {
+      cellshow2.value = false
+    } else {
+      cellshow2.value = true
+    }
+  }
+}, 100000)
+
+const getTableRow = (row, type) => {
   switch (type) {
-    case 'edit' :{
+    case 'edit': {
       //alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑缂栬緫淇℃伅')
-      router.push({path: '/main/returns/createReturns', query: { ReturnID: 'TH24010101' }})
+      router.push({
+        path: '/main/returns/createReturns',
+        query: {ReturnID: 'TH24010101'},
+      })
       break
     }
-    case 'delete':{
+    case 'delete': {
       alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑鍒犻櫎淇℃伅')
       break
     }
@@ -74,40 +134,41 @@
 }
 
 const gridOptions = reactive({
-  border:  "full",//琛ㄦ牸鍔犺竟妗�
-  keepSource: true,//淇濇寔婧愭暟鎹�
-  align: 'center',//鏂囧瓧灞呬腑
-  stripe:true,//鏂戦┈绾�
-  rowConfig: {isCurrent: true, isHover: true,height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
+  border: 'full', //琛ㄦ牸鍔犺竟妗�
+  keepSource: true, //淇濇寔婧愭暟鎹�
+  align: 'center', //鏂囧瓧灞呬腑
+  stripe: true, //鏂戦┈绾�
+  rowConfig: {isCurrent: true, isHover: true, height: 50}, //榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
   id: 'OrderList',
-  showFooter: true,//鏄剧ず鑴�
+  showFooter: true, //鏄剧ず鑴�
   printConfig: {},
   importConfig: {},
   exportConfig: {},
-  scrollY:{ enabled: true },//寮�鍚櫄鎷熸粴鍔�
-  showOverflow:true,
+  scrollY: {enabled: true}, //寮�鍚櫄鎷熸粴鍔�
+  showOverflow: true,
   columnConfig: {
     resizable: true,
-    useKey: true
+    useKey: true,
   },
-  filterConfig: {   //绛涢�夐厤缃」
-    remote: true
+  filterConfig: {
+    //绛涢�夐厤缃」
+    remote: true,
   },
   customConfig: {
-    storage: true
+    storage: true,
   },
   editConfig: {
     trigger: 'click',
     mode: 'row',
-    showStatus: true
+    showStatus: true,
   },
-  data:  [
+  data: [
     {
-      'id': '1',
-      'long': '5',
-      'wide': '1005',
-      'thick': '183.6',
-    }
+      id: '1',
+      long: '5',
+      wide: '1005',
+      thick: '183.6',
+    },
   ],
 })
 </script>
@@ -115,322 +176,723 @@
 <template>
   <div style="height: 700px;">
     <!-- <el-button style="margin-top: 5px;margin-left: 10px;"   id="searchButton" type="primary" @click="dialogFormVisible = true">鎵嬪姩杩涚墖</el-button> -->
-    <el-button style="margin-top: 5px;margin-left: 10px;"   id="searchButton" type="primary" @click="dialogFormVisiblea = true">璁㈠崟淇℃伅</el-button>
-    <el-button style="margin-top: 5px;margin-left: 10px;"   id="searchButton" type="success" @click="dialogFormVisibleb = true">鍑虹墖闃熷垪</el-button>
-    <el-button style="margin-top: 5px;margin-left: 10px;"   id="searchButton" type="danger">缁堟杩涚墖</el-button>
-    <el-button style="margin-top: 5px;margin-left: 10px;"   id="searchButton" type="danger">缁堟鍑虹墖</el-button>
-    <el-button style="margin-top: 5px;margin-left: 10px;"   id="searchButton" type="danger"  @click="dialogForm">杞�ュ仠</el-button>
-    
-    <el-card style="flex: 1;margin-left: 10px;margin-top: 5px;" v-loading="loading">
+    <el-button style="margin-top: 5px;margin-left: 10px;"
+               id="searchButton"
+               type="primary"
+               @click="dialogFormVisiblea = true">璁㈠崟淇℃伅
+    </el-button>
+    <el-button style="margin-top: 5px;margin-left: 10px;"
+               id="searchButton"
+               type="success"
+               @click="dialogFormVisibleb = true">鍑虹墖闃熷垪
+    </el-button>
+    <el-button style="margin-top: 5px;margin-left: 10px;"
+               id="searchButton"
+               type="danger">缁堟杩涚墖
+    </el-button>
+    <el-button style="margin-top: 5px;margin-left: 10px;"
+               id="searchButton"
+               type="danger">缁堟鍑虹墖
+    </el-button>
+    <el-button style="margin-top: 5px;margin-left: 10px;"
+               id="searchButton"
+               type="danger"
+               @click="dialogForm">杞�ュ仠
+    </el-button>
+
+    <el-card style="flex: 1;margin-left: 10px;margin-top: 5px;"
+             v-loading="loading">
       <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 100px;">
-        <el-table height="100%" ref="table" 
-        @selection-change="handleSelectionChange"
-        :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
-          <el-table-column prop="id" align="center" label="鍑虹墖鐜荤拑ID" min-width="80" />
-          <el-table-column prop="a" align="center" label="绗煎瓙" min-width="120" />
-          <el-table-column prop="b" align="center" label="鏍煎瓙" min-width="120" />
-          <el-table-column prop="c" align="center" label="宸ョ▼鍙�" min-width="120" />
-          <el-table-column prop="d" align="center" label="娴佺▼鍗″彿" min-width="120" />
-          <el-table-column prop="e" align="center" label="閽㈠寲鐗堝浘鍙�" min-width="157" />
-          <el-table-column prop="f" align="center" label="灏哄" min-width="120" />
-          <el-table-column prop="g" align="center" label="缁撴潫浠诲姟" min-width="120" />
+        <el-table height="100%"
+                  ref="table"
+                  @selection-change="handleSelectionChange"
+                  :data="tableData"
+                  :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
+          <el-table-column prop="id"
+                           align="center"
+                           label="鍑虹墖鐜荤拑ID"
+                           min-width="80"/>
+          <el-table-column prop="a"
+                           align="center"
+                           label="绗煎瓙"
+                           min-width="120"/>
+          <el-table-column prop="b"
+                           align="center"
+                           label="鏍煎瓙"
+                           min-width="120"/>
+          <el-table-column prop="c"
+                           align="center"
+                           label="宸ョ▼鍙�"
+                           min-width="120"/>
+          <el-table-column prop="d"
+                           align="center"
+                           label="娴佺▼鍗″彿"
+                           min-width="120"/>
+          <el-table-column prop="e"
+                           align="center"
+                           label="閽㈠寲鐗堝浘鍙�"
+                           min-width="157"/>
+          <el-table-column prop="f"
+                           align="center"
+                           label="灏哄"
+                           min-width="120"/>
+          <el-table-column prop="g"
+                           align="center"
+                           label="缁撴潫浠诲姟"
+                           min-width="120">
+            <el-button style="margin-top: 5px;margin-left: 10px;"
+                       id="searchButton"
+                       type="text">瀹屾垚浠诲姟
+            </el-button>
+          </el-table-column>
         </el-table>
       </div>
     </el-card>
-    <el-card style="flex: 1;margin-left: 10px;margin-top: 3px;" v-loading="loading">
+    <el-card style="flex: 1;margin-left: 10px;margin-top: 3px;"
+             v-loading="loading">
       <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 100px;">
-        <el-table height="100%" ref="table" 
-        @selection-change="handleSelectionChange"
-        :data="tableDatab" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
-          <el-table-column prop="id" align="center" label="杩涚墖鐜荤拑ID" min-width="80" />
-          <el-table-column prop="a" align="center" label="绗煎瓙" min-width="120" />
-          <el-table-column prop="b" align="center" label="鏍煎瓙" min-width="120" />
-          <el-table-column prop="c" align="center" label="宸ョ▼鍙�" min-width="120" />
-          <el-table-column prop="d" align="center" label="娴佺▼鍗″彿" min-width="120" />
-          <el-table-column prop="e" align="center" label="閽㈠寲鐗堝浘鍙�" min-width="157" />
-          <el-table-column prop="f" align="center" label="灏哄" min-width="120" />
-          <el-table-column prop="g" align="center" label="缁撴潫浠诲姟" min-width="120" />
+        <el-table height="100%"
+                  ref="table"
+                  @selection-change="handleSelectionChange"
+                  :data="tableDatab"
+                  :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
+          <el-table-column prop="id"
+                           align="center"
+                           label="杩涚墖鐜荤拑ID"
+                           min-width="80"/>
+          <el-table-column prop="a"
+                           align="center"
+                           label="绗煎瓙"
+                           min-width="120"/>
+          <el-table-column prop="b"
+                           align="center"
+                           label="鏍煎瓙"
+                           min-width="120"/>
+          <el-table-column prop="c"
+                           align="center"
+                           label="宸ョ▼鍙�"
+                           min-width="120"/>
+          <el-table-column prop="d"
+                           align="center"
+                           label="娴佺▼鍗″彿"
+                           min-width="120"/>
+          <el-table-column prop="e"
+                           align="center"
+                           label="閽㈠寲鐗堝浘鍙�"
+                           min-width="157"/>
+          <el-table-column prop="f"
+                           align="center"
+                           label="灏哄"
+                           min-width="120"/>
+          <el-table-column prop="g"
+                           align="center"
+                           label="缁撴潫浠诲姟"
+                           min-width="120">
+            <el-button style="margin-top: 5px;margin-left: 10px;"
+                       id="searchButton"
+                       type="text">瀹屾垚浠诲姟
+            </el-button>
+          </el-table-column>
         </el-table>
       </div>
     </el-card>
     <div style="padding: 10px;display: flex;height:110px;">
-                <div v-for="n in 9" :key="n" id="occupy">
+      <div id="occupy">
+        <el-col style="text-align:left;font-weight: bold;">#1</el-col>
+        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
+          <span id="biao">浣跨敤鐜�</span><span id="zhi">35%</span>
+        </el-col>
+        <hr style="width:80%;margin: 0 auto;"/>
+        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
+          <span id="biao">绌洪棽锛堟牸瀛愭暟锛�</span><span id="zhi">555</span>
+        </el-col>
+      </div>
+      <div id="occupy">
+        <el-col style="text-align:left;font-weight: bold;">#2</el-col>
+        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
+          <span id="biao">浣跨敤鐜�</span><span id="zhi">35%</span>
+        </el-col>
+        <hr style="width:80%;margin: 0 auto;"/>
+        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
+          <span id="biao">绌洪棽锛堟牸瀛愭暟锛�</span><span id="zhi">555</span>
+        </el-col>
+      </div>
+      <div id="occupy">
+        <el-col style="text-align:left;font-weight: bold;">#3</el-col>
+        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
+          <span id="biao">浣跨敤鐜�</span><span id="zhi">35%</span>
+        </el-col>
+        <hr style="width:80%;margin: 0 auto;"/>
+        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
+          <span id="biao">绌洪棽锛堟牸瀛愭暟锛�</span><span id="zhi">555</span>
+        </el-col>
+      </div>
+      <div id="occupy">
+        <el-col style="text-align:left;font-weight: bold;">#4</el-col>
+        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
+          <span id="biao">浣跨敤鐜�</span><span id="zhi">35%</span>
+        </el-col>
+        <hr style="width:80%;margin: 0 auto;"/>
+        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
+          <span id="biao">绌洪棽锛堟牸瀛愭暟锛�</span><span id="zhi">555</span>
+        </el-col>
+      </div>
+      <div id="occupy">
+        <el-col style="text-align:left;font-weight: bold;">#5</el-col>
+        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
+          <span id="biao">浣跨敤鐜�</span><span id="zhi">35%</span>
+        </el-col>
+        <hr style="width:80%;margin: 0 auto;"/>
+        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
+          <span id="biao">绌洪棽锛堟牸瀛愭暟锛�</span><span id="zhi">555</span>
+        </el-col>
+      </div>
+      <div id="occupy">
+        <el-col style="text-align:left;font-weight: bold;">#6</el-col>
+        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
+          <span id="biao">浣跨敤鐜�</span><span id="zhi">35%</span>
+        </el-col>
+        <hr style="width:80%;margin: 0 auto;"/>
+        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
+          <span id="biao">绌洪棽锛堟牸瀛愭暟锛�</span><span id="zhi">555</span>
+        </el-col>
+      </div>
+      <div id="occupy">
+        <el-col style="text-align:left;font-weight: bold;">#7</el-col>
+        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
+          <span id="biao">浣跨敤鐜�</span><span id="zhi">35%</span>
+        </el-col>
+        <hr style="width:80%;margin: 0 auto;"/>
+        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
+          <span id="biao">绌洪棽锛堟牸瀛愭暟锛�</span><span id="zhi">555</span>
+        </el-col>
+      </div>
+      <div id="occupy">
+        <el-col style="text-align:left;font-weight: bold;">#8</el-col>
+        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
+          <span id="biao">浣跨敤鐜�</span><span id="zhi">35%</span>
+        </el-col>
+        <hr style="width:80%;margin: 0 auto;"/>
+        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
+          <span id="biao">绌洪棽锛堟牸瀛愭暟锛�</span><span id="zhi">555</span>
+        </el-col>
+      </div>
+      <!-- <div v-for="n in 8" :key="n" id="occupy">
                     <el-col style="text-align:left;font-weight: bold;">#1</el-col>
                     <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
-                        <span id="biao">浣跨敤鐜�</span><span id="zhi">33%</span>
+                        <span id="biao">浣跨敤鐜�</span><span id="zhi">35%</span>
                     </el-col>
                     <hr style="width:80%;margin: 0 auto;" />
                     <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
-                        <span id="biao">绌洪棿锛堢墖鏁帮級</span><span id="zhi">555</span>
+                        <span id="biao">绌洪棽锛堟牸瀛愭暟锛�</span><span id="zhi">555</span>
                     </el-col>
-                </div>
+                </div> -->
     </div>
     <!-- <div id="awatch">
-  <img src="../../assets/lpl.jpg" alt="" style="width: 10%;height: 10%;margin-left: 160px;">
+  <img src="../../assets/cp.png" alt="" style="width: 70%;height: 70%;margin-left: 160px;">
 </div> -->
-<!-- // 鐖剁骇妗� -->
-	<div class="img-list">  
-	<!-- // 娴湪涓婃柟鐨勫浘鐗�  -->
-  <img class="check-img" src="../../assets/lpl.jpg" alt="" style="width: 13%;height: 12%;margin-left: 160px;">
-  <img class="check-imga" src="../../assets/lpl.jpg" alt="" style="width: 13%;height: 12%;margin-left: 160px;">
-	<!-- // 搴曞浘 -->
-  <img class="data-img " src="../../assets/dlpl.png" alt="" style="width: 1200px;height: 400px;margin-left: 130px;margin-top: 50px;">
-	</div>
-  </div>
-<el-dialog v-model="dialogFormVisible" top="12vh" width="85%" title="璇风‘璁ょ幓鐠冧俊鎭�" >
-  <div style="margin-left: 50px;margin-bottom: 10px;">
-    <div style="display: flex;">
-    <p style="margin-top: 4px;">纭鐘舵��:</p>
-    <el-button style="margin-left: 10px;size: mini;" type="success">鍏佽</el-button>
-    <el-button style="margin-left: 10px;size: mini;" type="danger">涓嶅厑璁�</el-button>
-    <p style="margin-left: 60px;margin-top: 4px;">褰撳墠鐘舵��:</p>
-    <div style="margin-top: 4px; margin-left: 10px;">鎵嬪姩</div>
-    <el-button style="margin-left: 10px;size: mini;" type="primary">鍒囨崲</el-button>
-    <el-input  placeholder="璇疯緭鍏ョ幓鐠僫d" style="width: 180px;size: mini;margin-left: 60px;"></el-input>
-    <el-button style="margin-left: 10px;size: mini;" type="primary">娣诲姞</el-button>
-    <p style="margin-left: 60px;margin-top: 4px;">鐜荤拑id:</p>
-    <el-input  style="width: 180px;size: mini;margin-left: 30px;"></el-input>
-  </div>
-    <div style="display: flex;">
-      <p style="margin-left: 290px;margin-top: 20px;font-weight: bold;">涓婄墖浣�</p>
-      <p style="margin-left: 630px;margin-top: 20px;font-weight: bold;">鎵爜浣�</p>
-    </div>
-    <div style="display: flex;">
-    <div style="margin-top: 20px;">
-      <p style="margin-top: 10px;margin-left: 100px;margin-bottom: 20px;">褰撳墠淇℃伅</p>
-      <el-form label-position="right" label-width="90px">
-      <el-form-item style="width: 20vw" label="鐜荤拑id锛�">
-      <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ョ幓鐠僫d"></el-input>
-       </el-form-item>
-      <el-form-item style="width: 20vw" label="璁㈠崟缂栧彿锛�">
-      <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ヨ鍗曠紪鍙�"></el-input>
-       </el-form-item>
-      <el-form-item style="width: 20vw" label="鍒楄〃缂栧彿锛�">
-      <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ュ垪琛ㄧ紪鍙�"></el-input>
-       </el-form-item>
-      <el-form-item style="width: 20vw" label="绠卞瓙缂栧彿锛�">
-      <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ョ瀛愮紪鍙�"></el-input>
-       </el-form-item>
-      <el-form-item style="width: 20vw" label="闀匡細">
-      <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ラ暱"></el-input>
-       </el-form-item>
-      <el-form-item style="width: 20vw" label="瀹斤細">
-      <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ュ"></el-input>
-       </el-form-item>
-      </el-form>
+    <!-- // 鐖剁骇妗� -->
+    <div class="img-dlpl">
+      <div class="img-car1"
+           :style="'z-index:999;left:247px;top:' + carposition1 + 'px;position:absolute;'">
+        <div v-show="cellshow1"
+             style="margin-top:10px;width:200px;height:5px;background-color:red;"></div>
       </div>
-    <div style="margin-top: 20px;">
-      <p style="margin-top: 10px;margin-left: 100px;margin-bottom: 20px;">淇敼淇℃伅</p>
-      <el-form label-position="right" label-width="90px">
-      <el-form-item style="width: 20vw" label="鐜荤拑id锛�">
-      <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ョ幓鐠僫d"></el-input>
-       </el-form-item>
-      <el-form-item style="width: 20vw" label="璁㈠崟缂栧彿锛�">
-      <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ヨ鍗曠紪鍙�"></el-input>
-       </el-form-item>
-      <el-form-item style="width: 20vw" label="鍒楄〃缂栧彿锛�">
-      <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ュ垪琛ㄧ紪鍙�"></el-input>
-       </el-form-item>
-      <el-form-item style="width: 20vw" label="绠卞瓙缂栧彿锛�">
-      <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ョ瀛愮紪鍙�"></el-input>
-       </el-form-item>
-      <el-form-item style="width: 20vw" label="闀匡細">
-      <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ラ暱"></el-input>
-       </el-form-item>
-      <el-form-item style="width: 20vw" label="瀹斤細">
-      <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ュ"></el-input>
-       </el-form-item>
-      </el-form>
+
+      <div class="img-car2"
+           :style="'z-index:999;left:704px;top:' + carposition2 + 'px;position:absolute;'">
+        <div v-show="cellshow2"
+             style="margin-top:10px;width:200px;height:5px;background-color:red;"></div>
       </div>
-    <div style="margin-top: 20px;">
-      <p style="margin-top: 10px;margin-left: 100px;margin-bottom: 20px;">淇敼淇℃伅</p>
-      <el-form label-position="right" label-width="90px">
-      <el-form-item style="width: 20vw" label="鐜荤拑id锛�">
-      <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ョ幓鐠僫d"></el-input>
-       </el-form-item>
-      <el-form-item style="width: 20vw" label="璁㈠崟缂栧彿锛�">
-      <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ヨ鍗曠紪鍙�"></el-input>
-       </el-form-item>
-      <el-form-item style="width: 20vw" label="鍒楄〃缂栧彿锛�">
-      <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ュ垪琛ㄧ紪鍙�"></el-input>
-       </el-form-item>
-      <el-form-item style="width: 20vw" label="绠卞瓙缂栧彿锛�">
-      <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ョ瀛愮紪鍙�"></el-input>
-       </el-form-item>
-      <el-form-item style="width: 20vw" label="闀匡細">
-      <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ラ暱"></el-input>
-       </el-form-item>
-      <el-form-item style="width: 20vw" label="瀹斤細">
-      <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ュ"></el-input>
-       </el-form-item>
-      </el-form>
-      </div>
-    <div style="margin-top: 20px;">
-      <p style="margin-top: 10px;margin-left: 100px;margin-bottom: 20px;">褰撳墠淇℃伅</p>
-      <el-form label-position="right" label-width="90px">
-      <el-form-item style="width: 20vw" label="鐜荤拑id锛�">
-      <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ョ幓鐠僫d"></el-input>
-       </el-form-item>
-      <el-form-item style="width: 20vw" label="璁㈠崟缂栧彿锛�">
-      <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ヨ鍗曠紪鍙�"></el-input>
-       </el-form-item>
-      <el-form-item style="width: 20vw" label="鍒楄〃缂栧彿锛�">
-      <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ュ垪琛ㄧ紪鍙�"></el-input>
-       </el-form-item>
-      <el-form-item style="width: 20vw" label="绠卞瓙缂栧彿锛�">
-      <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ョ瀛愮紪鍙�"></el-input>
-       </el-form-item>
-      <el-form-item style="width: 20vw" label="闀匡細">
-      <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ラ暱"></el-input>
-       </el-form-item>
-      <el-form-item style="width: 20vw" label="瀹斤細">
-      <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ュ"></el-input>
-       </el-form-item>
-      </el-form>
+      <div v-show="cellshow"
+           style="width: 200px;height: 5px;position: absolute;top:60px;left: 490px;background-color: red;">
+
       </div>
     </div>
+
+  </div>
+  <el-dialog v-model="dialogFormVisible"
+             top="12vh"
+             width="85%"
+             title="璇风‘璁ょ幓鐠冧俊鎭�">
+    <div style="margin-left: 50px;margin-bottom: 10px;">
+      <div style="display: flex;">
+        <p style="margin-top: 4px;">纭鐘舵��:</p>
+        <el-button style="margin-left: 10px;size: mini;"
+                   type="success">鍏佽
+        </el-button>
+        <el-button style="margin-left: 10px;size: mini;"
+                   type="danger">涓嶅厑璁�
+        </el-button>
+        <p style="margin-left: 60px;margin-top: 4px;">褰撳墠鐘舵��:</p>
+        <div style="margin-top: 4px; margin-left: 10px;">鎵嬪姩</div>
+        <el-button style="margin-left: 10px;size: mini;"
+                   type="primary">鍒囨崲
+        </el-button>
+        <el-input placeholder="璇疯緭鍏ョ幓鐠僫d"
+                  style="width: 180px;size: mini;margin-left: 60px;"></el-input>
+        <el-button style="margin-left: 10px;size: mini;"
+                   type="primary">娣诲姞
+        </el-button>
+        <p style="margin-left: 60px;margin-top: 4px;">鐜荤拑id:</p>
+        <el-input style="width: 180px;size: mini;margin-left: 30px;"></el-input>
+      </div>
+      <div style="display: flex;">
+        <p style="margin-left: 290px;margin-top: 20px;font-weight: bold;">涓婄墖浣�</p>
+        <p style="margin-left: 630px;margin-top: 20px;font-weight: bold;">鎵爜浣�</p>
+      </div>
+      <div style="display: flex;">
+        <div style="margin-top: 20px;">
+          <p style="margin-top: 10px;margin-left: 100px;margin-bottom: 20px;">褰撳墠淇℃伅</p>
+          <el-form label-position="right"
+                   label-width="90px">
+            <el-form-item style="width: 20vw"
+                          label="鐜荤拑id锛�">
+              <el-input style="width: 180px"
+                        size="mini"
+                        placeholder="璇疯緭鍏ョ幓鐠僫d"></el-input>
+            </el-form-item>
+            <el-form-item style="width: 20vw"
+                          label="璁㈠崟缂栧彿锛�">
+              <el-input style="width: 180px"
+                        size="mini"
+                        placeholder="璇疯緭鍏ヨ鍗曠紪鍙�"></el-input>
+            </el-form-item>
+            <el-form-item style="width: 20vw"
+                          label="鍒楄〃缂栧彿锛�">
+              <el-input style="width: 180px"
+                        size="mini"
+                        placeholder="璇疯緭鍏ュ垪琛ㄧ紪鍙�"></el-input>
+            </el-form-item>
+            <el-form-item style="width: 20vw"
+                          label="绠卞瓙缂栧彿锛�">
+              <el-input style="width: 180px"
+                        size="mini"
+                        placeholder="璇疯緭鍏ョ瀛愮紪鍙�"></el-input>
+            </el-form-item>
+            <el-form-item style="width: 20vw"
+                          label="闀匡細">
+              <el-input style="width: 180px"
+                        size="mini"
+                        placeholder="璇疯緭鍏ラ暱"></el-input>
+            </el-form-item>
+            <el-form-item style="width: 20vw"
+                          label="瀹斤細">
+              <el-input style="width: 180px"
+                        size="mini"
+                        placeholder="璇疯緭鍏ュ"></el-input>
+            </el-form-item>
+          </el-form>
         </div>
-  <template #footer>
-    <div id="dialog-footer">
-      <el-button type="primary" @click="dialogFormVisible = false">
-        纭
-      </el-button>
-      <el-button @click="dialogFormVisible = false">鍙栨秷</el-button>
+        <div style="margin-top: 20px;">
+          <p style="margin-top: 10px;margin-left: 100px;margin-bottom: 20px;">淇敼淇℃伅</p>
+          <el-form label-position="right"
+                   label-width="90px">
+            <el-form-item style="width: 20vw"
+                          label="鐜荤拑id锛�">
+              <el-input style="width: 180px"
+                        size="mini"
+                        placeholder="璇疯緭鍏ョ幓鐠僫d"></el-input>
+            </el-form-item>
+            <el-form-item style="width: 20vw"
+                          label="璁㈠崟缂栧彿锛�">
+              <el-input style="width: 180px"
+                        size="mini"
+                        placeholder="璇疯緭鍏ヨ鍗曠紪鍙�"></el-input>
+            </el-form-item>
+            <el-form-item style="width: 20vw"
+                          label="鍒楄〃缂栧彿锛�">
+              <el-input style="width: 180px"
+                        size="mini"
+                        placeholder="璇疯緭鍏ュ垪琛ㄧ紪鍙�"></el-input>
+            </el-form-item>
+            <el-form-item style="width: 20vw"
+                          label="绠卞瓙缂栧彿锛�">
+              <el-input style="width: 180px"
+                        size="mini"
+                        placeholder="璇疯緭鍏ョ瀛愮紪鍙�"></el-input>
+            </el-form-item>
+            <el-form-item style="width: 20vw"
+                          label="闀匡細">
+              <el-input style="width: 180px"
+                        size="mini"
+                        placeholder="璇疯緭鍏ラ暱"></el-input>
+            </el-form-item>
+            <el-form-item style="width: 20vw"
+                          label="瀹斤細">
+              <el-input style="width: 180px"
+                        size="mini"
+                        placeholder="璇疯緭鍏ュ"></el-input>
+            </el-form-item>
+          </el-form>
+        </div>
+        <div style="margin-top: 20px;">
+          <p style="margin-top: 10px;margin-left: 100px;margin-bottom: 20px;">淇敼淇℃伅</p>
+          <el-form label-position="right"
+                   label-width="90px">
+            <el-form-item style="width: 20vw"
+                          label="鐜荤拑id锛�">
+              <el-input style="width: 180px"
+                        size="mini"
+                        placeholder="璇疯緭鍏ョ幓鐠僫d"></el-input>
+            </el-form-item>
+            <el-form-item style="width: 20vw"
+                          label="璁㈠崟缂栧彿锛�">
+              <el-input style="width: 180px"
+                        size="mini"
+                        placeholder="璇疯緭鍏ヨ鍗曠紪鍙�"></el-input>
+            </el-form-item>
+            <el-form-item style="width: 20vw"
+                          label="鍒楄〃缂栧彿锛�">
+              <el-input style="width: 180px"
+                        size="mini"
+                        placeholder="璇疯緭鍏ュ垪琛ㄧ紪鍙�"></el-input>
+            </el-form-item>
+            <el-form-item style="width: 20vw"
+                          label="绠卞瓙缂栧彿锛�">
+              <el-input style="width: 180px"
+                        size="mini"
+                        placeholder="璇疯緭鍏ョ瀛愮紪鍙�"></el-input>
+            </el-form-item>
+            <el-form-item style="width: 20vw"
+                          label="闀匡細">
+              <el-input style="width: 180px"
+                        size="mini"
+                        placeholder="璇疯緭鍏ラ暱"></el-input>
+            </el-form-item>
+            <el-form-item style="width: 20vw"
+                          label="瀹斤細">
+              <el-input style="width: 180px"
+                        size="mini"
+                        placeholder="璇疯緭鍏ュ"></el-input>
+            </el-form-item>
+          </el-form>
+        </div>
+        <div style="margin-top: 20px;">
+          <p style="margin-top: 10px;margin-left: 100px;margin-bottom: 20px;">褰撳墠淇℃伅</p>
+          <el-form label-position="right"
+                   label-width="90px">
+            <el-form-item style="width: 20vw"
+                          label="鐜荤拑id锛�">
+              <el-input style="width: 180px"
+                        size="mini"
+                        placeholder="璇疯緭鍏ョ幓鐠僫d"></el-input>
+            </el-form-item>
+            <el-form-item style="width: 20vw"
+                          label="璁㈠崟缂栧彿锛�">
+              <el-input style="width: 180px"
+                        size="mini"
+                        placeholder="璇疯緭鍏ヨ鍗曠紪鍙�"></el-input>
+            </el-form-item>
+            <el-form-item style="width: 20vw"
+                          label="鍒楄〃缂栧彿锛�">
+              <el-input style="width: 180px"
+                        size="mini"
+                        placeholder="璇疯緭鍏ュ垪琛ㄧ紪鍙�"></el-input>
+            </el-form-item>
+            <el-form-item style="width: 20vw"
+                          label="绠卞瓙缂栧彿锛�">
+              <el-input style="width: 180px"
+                        size="mini"
+                        placeholder="璇疯緭鍏ョ瀛愮紪鍙�"></el-input>
+            </el-form-item>
+            <el-form-item style="width: 20vw"
+                          label="闀匡細">
+              <el-input style="width: 180px"
+                        size="mini"
+                        placeholder="璇疯緭鍏ラ暱"></el-input>
+            </el-form-item>
+            <el-form-item style="width: 20vw"
+                          label="瀹斤細">
+              <el-input style="width: 180px"
+                        size="mini"
+                        placeholder="璇疯緭鍏ュ"></el-input>
+            </el-form-item>
+          </el-form>
+        </div>
+      </div>
     </div>
-  </template>
-</el-dialog>
-<el-dialog v-model="dialogFormVisiblea" top="10vh" width="85%" title="璁㈠崟淇℃伅" >
-  <el-input  placeholder="璇疯緭鍏ュ伐绋嬪彿" style="width: 180px;size: mini;"></el-input>
-    <el-button style="margin-left: 10px;size: mini;" type="primary">鏌ヨ</el-button>
-    <el-table  ref="table" style="margin-top: 20px;height: 500px;"
-        @selection-change="handleSelectionChange"
-        :data="tableDataa" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
-          <el-table-column prop="ida" align="center" label="鐜荤拑id" min-width="80" />
-          <el-table-column prop="typea" align="center" label="宸ョ▼鍙�" min-width="120" />
-          <el-table-column prop="typea" align="center" label="闀�" min-width="120" />
-          <el-table-column prop="typea" align="center" label="瀹�" min-width="120" />
-          <el-table-column prop="typea" align="center" label="鍘�" min-width="120" />
-        </el-table>
-        <div id="demo-pagination-block">
-    <el-pagination
-    style="margin-left: 850px;"
-      v-model:current-page="currentPage4"
-      v-model:page-size="pageSize4"
-      :page-sizes="[100, 200, 300, 400]"
-      :small="small"
-      :disabled="disabled"
-      :background="background"
-      layout="total, sizes, prev, pager, next, jumper"
-      :total="400"
-      @size-change="handleSizeChange"
-      @current-change="handleCurrentChange"
-    />
-  </div>
-</el-dialog>
-<el-dialog v-model="dialogFormVisibleb" top="10vh" width="85%" title="鍑虹墖闃熷垪" >
-  <div style="display: flex;">
-  <p style="margin-top: 4px;">闃熷垪鐘舵�侊細</p>
-  <p style="margin-top: 4px;">寮�濮�</p>
-    <el-button style="margin-left: 10px;size: mini;" type="danger">鍋滄</el-button>
-    <el-button style="margin-left: 10px;size: mini;" type="primary">娣诲姞</el-button>
-  </div>
-    <el-table  ref="table" style="margin-top: 20px;height: 500px;"
-        @selection-change="handleSelectionChange"
-        :data="tableDatab" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
-          <el-table-column prop="id" align="center" label="閾濇id" min-width="80" />
-          <el-table-column prop="type" align="center" label="鐜荤拑id" min-width="120" />
-          <el-table-column prop="type" align="center" label="璁㈠崟缂栧彿" min-width="120" />
-          <el-table-column prop="type" align="center" label="鍒楄〃缂栧彿" min-width="120" />
-          <el-table-column prop="type" align="center" label="绠卞瓙缂栧彿" min-width="120" />
-          <el-table-column prop="type" align="center" label="闀�" min-width="120" />
-          <el-table-column prop="type" align="center" label="瀹�" min-width="120" />
-          <el-table-column prop="type" align="center" label="鐜荤拑鐘舵��" min-width="120" />
-          <el-table-column prop="type" align="center" label="椤哄簭" min-width="120" />
-          <el-table-column prop="type" align="center" label="瀹屾垚" min-width="120" />
-          <el-table-column prop="type" align="center" label="鎿嶄綔" min-width="120" />
-        </el-table>
-</el-dialog>
+    <template #footer>
+      <div id="dialog-footer">
+        <el-button type="primary"
+                   @click="dialogFormVisible = false">
+          纭
+        </el-button>
+        <el-button @click="dialogFormVisible = false">鍙栨秷</el-button>
+      </div>
+    </template>
+  </el-dialog>
+  <el-dialog v-model="dialogFormVisiblea"
+             top="10vh"
+             width="85%"
+             title="璁㈠崟淇℃伅">
+    <el-input placeholder="璇疯緭鍏ュ伐绋嬪彿"
+              style="width: 180px;size: mini;"></el-input>
+    <el-button style="margin-left: 10px;size: mini;"
+               type="primary">鏌ヨ
+    </el-button>
+    <el-table ref="table"
+              style="margin-top: 20px;height: 500px;"
+              @selection-change="handleSelectionChange"
+              :data="tableDataa"
+              :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
+      <el-table-column prop="ida"
+                       align="center"
+                       label="鐜荤拑id"
+                       min-width="80"/>
+      <el-table-column prop="typea"
+                       align="center"
+                       label="宸ョ▼鍙�"
+                       min-width="120"/>
+      <el-table-column prop="typea"
+                       align="center"
+                       label="闀�"
+                       min-width="120"/>
+      <el-table-column prop="typea"
+                       align="center"
+                       label="瀹�"
+                       min-width="120"/>
+      <el-table-column prop="typea"
+                       align="center"
+                       label="鍘�"
+                       min-width="120"/>
+    </el-table>
+    <div id="demo-pagination-block">
+      <el-pagination style="margin-left: 850px;"
+                     v-model:current-page="currentPage4"
+                     v-model:page-size="pageSize4"
+                     :page-sizes="[100, 200, 300, 400]"
+                     :small="small"
+                     :disabled="disabled"
+                     :background="background"
+                     layout="total, sizes, prev, pager, next, jumper"
+                     :total="400"
+                     @size-change="handleSizeChange"
+                     @current-change="handleCurrentChange"/>
+    </div>
+  </el-dialog>
+  <el-dialog v-model="dialogFormVisibleb"
+             top="10vh"
+             width="85%"
+             title="鍑虹墖闃熷垪">
+    <div style="display: flex;">
+      <p style="margin-top: 4px;">闃熷垪鐘舵�侊細</p>
+      <p style="margin-top: 4px;">寮�濮�</p>
+      <el-button style="margin-left: 10px;size: mini;"
+                 type="danger">鍋滄
+      </el-button>
+      <el-button style="margin-left: 10px;size: mini;"
+                 type="primary">娣诲姞
+      </el-button>
+    </div>
+    <el-table ref="table"
+              style="margin-top: 20px;height: 500px;"
+              @selection-change="handleSelectionChange"
+              :data="tableDatab"
+              :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
+      <el-table-column prop="id"
+                       align="center"
+                       label="閾濇id"
+                       min-width="80"/>
+      <el-table-column prop="type"
+                       align="center"
+                       label="鐜荤拑id"
+                       min-width="120"/>
+      <el-table-column prop="type"
+                       align="center"
+                       label="璁㈠崟缂栧彿"
+                       min-width="120"/>
+      <el-table-column prop="type"
+                       align="center"
+                       label="鍒楄〃缂栧彿"
+                       min-width="120"/>
+      <el-table-column prop="type"
+                       align="center"
+                       label="绠卞瓙缂栧彿"
+                       min-width="120"/>
+      <el-table-column prop="type"
+                       align="center"
+                       label="闀�"
+                       min-width="120"/>
+      <el-table-column prop="type"
+                       align="center"
+                       label="瀹�"
+                       min-width="120"/>
+      <el-table-column prop="type"
+                       align="center"
+                       label="鐜荤拑鐘舵��"
+                       min-width="120"/>
+      <el-table-column prop="type"
+                       align="center"
+                       label="椤哄簭"
+                       min-width="120"/>
+      <el-table-column prop="type"
+                       align="center"
+                       label="瀹屾垚"
+                       min-width="120"/>
+      <el-table-column prop="type"
+                       align="center"
+                       label="鎿嶄綔"
+                       min-width="120"/>
+    </el-table>
+  </el-dialog>
 
 </template>
 <style scoped>
+#dt {
+  display: block;
+  float: left;
+  line-height: 20px;
+  margin-left: 100px;
+}
 
-#dt { display:block; float:left;line-height: 20px;margin-left: 100px;}
-#dta { display:block; float:left;line-height: 20px;margin-left: 80%;}
-#dialog-footer{
+#dta {
+  display: block;
+  float: left;
+  line-height: 20px;
+  margin-left: 80%;
+}
+
+#dialog-footer {
   text-align: center;
   margin-top: -15px;
 }
-#message{
+
+#message {
   text-align: center;
   align-items: center;
   color: black;
-   width: 200px;
-   height: 100px;
-   background-color: #337ecc;
-   margin-left: 28%;
+  width: 200px;
+  height: 100px;
+  background-color: #337ecc;
+  margin-left: 28%;
 }
-#awatch{
+
+#awatch {
   height: 450px;
 }
+
 #occupy {
-    height: 100%;
-    width: 10%;
-    background-color: white;
-    margin: 0px 8px 0px 8px;
-    border: 1px #EBEEF5 solid;
-    text-align: center;
-    padding: 5px;
+  height: 100%;
+  width: 15%;
+  background-color: white;
+  margin: 0px 8px 0px 8px;
+  border: 1px #ebeef5 solid;
+  text-align: center;
+  padding: 5px;
 }
 #biao {
-    font-size: 12px;
+  font-size: 12px;
 }
 #zhi {
-    font-size: 18px;
-    font-weight: bold;
+  font-size: 18px;
+  font-weight: bold;
 }
+
 #demo-pagination-block + #demo-pagination-block {
   margin-top: 10px;
 }
+
 #demo-pagination-block #demonstration {
   margin-bottom: 16px;
 }
+
 ::-webkit-scrollbar {
-     width: 0 !important;
-   }
-   ::-webkit-scrollbar {
-     width: 0 !important;height: 0;
-   }
-   .img-list{
-	
-  position:relative;
+  width: 0 !important;
 }
-.data-img{
-  @apply float-none ;
-  
-  width:100%;
-  height:16rem;
+
+::-webkit-scrollbar {
+  width: 0 !important;
+  height: 0;
+}
+
+.img-list {
+  position: relative;
+}
+
+.data-img {
+  @apply float-none;
+
+  width: 100%;
+  height: 16rem;
   background: rgba(0, 0, 0, 0);
   opacity: 1;
   border-radius: 0.5rem 0.5rem 0px 0px;
-
 }
-.check-img{
+
+.check-img {
   position: absolute;
   width: 3.3125rem;
   height: 2.9375rem;
-  top:20rem;
+  top: 20rem;
   right: 57rem;
   z-index: 10;
-  
 }
-.check-imga{
+
+.check-imga {
   position: absolute;
   width: 3.3125rem;
   height: 2.9375rem;
-  top:15rem;
-  right: 29rem;
+  top: 15rem;
+  right: 28.5rem;
   z-index: 10;
-  
 }
 
+.vertical {
+  width: 45px;
+  height: 25px;
+  background-color: #409eff;
+  top: 485px; /* 鍒濆浣嶇疆 */
+  left: 899px; /* 姘村钩灞呬腑 */
+  transform: translateX(-50%);
+  animation: move-vertical 6s infinite; /* 浠庝笂鍒颁笅鍔ㄧ敾锛屾寔缁�6绉掞紝鏃犻檺寰幆 */
+}
+
+@keyframes move-vertical {
+  0% {
+    top: 485px; /* 璧峰浣嶇疆 */
+  }
+  100% {
+    top: calc(100% - 210px); /* 浠庝笂鍒颁笅缁撴潫浣嶇疆 */
+  }
+}
+
+.img-dlpl {
+  margin-left: 200px;
+  background-image: url('../../assets/dlpl.png');
+  background-repeat: no-repeat;
+  background-attachment: local;
+  min-height: 400px;
+  width: 1200px;
+  max-width: 100%;
+  background-size: 1200px 400px;
+  overflow: hidden;
+  position: relative;
+}
+
+.img-car1 {
+  background-image: url('../../assets/lpl.jpg');
+  position: absolute;
+  background-repeat: no-repeat;
+  background-attachment: local;
+  min-height: 200px;
+  width: 200px;
+  max-width: 100%;
+  background-size: 200px 70px;
+  overflow: hidden;
+  position: relative;
+}
+
+.img-car2 {
+  background-image: url('../../assets/lpla.jpg');
+  position: absolute;
+  background-repeat: no-repeat;
+  background-attachment: local;
+  min-height: 200px;
+  width: 200px;
+  max-width: 100%;
+  background-size: 200px 70px;
+  overflow: hidden;
+  position: relative;
+}
 </style>
\ No newline at end of file
diff --git a/UI-Project/src/views/UnLoadGlass/Landingindication.vue b/UI-Project/src/views/UnLoadGlass/Landingindication.vue
index 1c572a5..72b46a9 100644
--- a/UI-Project/src/views/UnLoadGlass/Landingindication.vue
+++ b/UI-Project/src/views/UnLoadGlass/Landingindication.vue
@@ -11,9 +11,9 @@
               :width="rack.width" 
               :height="rack.height" 
               :fill="rack.fillColor"
-          :data-index="index" 
-          class="rack-rect" 
-          @click="showRectInfo(rack)"
+              :data-index="index" 
+              class="rack-rect" 
+              @click="showRectInfo(rack)"
             />
             <rect 
               :x="calculateItemXPosition(rack, rack.item, index)" 
@@ -31,66 +31,59 @@
   </div>
 </template>
 
-<script>
+<script setup>
 import Swal from 'sweetalert2'
-export default {
-  data() {
-    return {
-      racks: [
-        { x: 50, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: 'NG123456' } },
-        { x: 50, y: 270, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 20, width: 10, fillColor: 'yellow', content: 'NG1234567' } },
-        { x: 280, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 30, width: 20, fillColor: 'yellow', content: 'NG12345678' } },
-        { x: 280, y: 270, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 35, width: 23, fillColor: 'yellow', content: 'NG123456910' } },
-        { x: 140, y: 420, height: 60, width: 110, fillColor: '#6a6da9', item: { height: 30, width: 100, fillColor: 'yellow', content: 'NG1234561454' } }
-      ]
-    };
-  },
-  methods: {
-    // 璁$畻鍐呴儴鐗╁搧鐨� x 鍧愭爣浣嶇疆
-    calculateItemXPosition(rack, item, index) {
-      if (index === 0 || index === 1) {  // 濡傛灉鏄涓�鎴栫浜屼釜鐗╁搧
-        return rack.x;  // 杩斿洖宸﹁竟鐣� x 鍧愭爣
-      } else if (index === 2 || index === 3) {  // 濡傛灉鏄涓夋垨绗洓涓墿鍝�
-        return rack.x + rack.width - item.width;  // 杩斿洖鍙宠竟鐣� x 鍧愭爣
-      } else {
-        return rack.x + (rack.width - item.width) / 2;  // 杩斿洖姘村钩灞呬腑鐨� x 鍧愭爣
-      }
-    },
-    // 璁$畻鍐呴儴鐗╁搧鐨� y 鍧愭爣浣嶇疆
-    calculateItemYPosition(rack, item, index) {
-      if (index === 0 || index === 1) {  // 濡傛灉鏄涓�鎴栫浜屼釜鐗╁搧
-        return rack.y + (rack.height - item.height) / 2;  // 杩斿洖鍨傜洿灞呬腑鐨� y 鍧愭爣
-      } else if (index === 2 || index === 3) {  // 濡傛灉鏄涓夋垨绗洓涓墿鍝�
-        return rack.y + (rack.height - item.height) / 2;  // 杩斿洖鍨傜洿灞呬腑鐨� y 鍧愭爣
-      } else {
-        return rack.y + rack.height - item.height;  // 杩斿洖搴曢儴瀵归綈鐨� y 鍧愭爣
-      }
-    },
-    showCustomAlert(content) {
-      var str="鏋跺彿   :      111\n" +
-        "闀�     :      111\n" +
-        "瀹�     :      111\n" +
-        "鍘�     :      111\n"+
-        "鐜荤拑ID :      111\n"+
-        "鑶滅郴   :      111\n";
 
-Swal.fire({
-  title: '鐜荤拑淇℃伅',
-  html: '<pre>' + str + '</pre>',
-  customClass: {
-    popup: 'format-pre'
-  }
-});
+const racks = [
+  { x: 50, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: 'NG123456' } },
+  { x: 50, y: 270, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 20, width: 10, fillColor: 'yellow', content: 'NG1234567' } },
+  { x: 280, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 30, width: 20, fillColor: 'yellow', content: 'NG12345678' } },
+  { x: 280, y: 270, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 35, width: 23, fillColor: 'yellow', content: 'NG123456910' } },
+  { x: 140, y: 420, height: 60, width: 110, fillColor: '#6a6da9', item: { height: 30, width: 100, fillColor: 'yellow', content: 'NG1234561454' } }
+];
 
-  },
-    showRectInfo( rectInfo) {
-  const content = rectInfo.item.content;
-  this.$nextTick(() => {
-    this.showCustomAlert(content);
-  });
-},
+const calculateItemXPosition = (rack, item, index) => {
+  if (index === 0 || index === 1) {
+    return rack.x;
+  } else if (index === 2 || index === 3) {
+    return rack.x + rack.width - item.width;
+  } else {
+    return rack.x + (rack.width - item.width) / 2;
   }
 };
+
+const calculateItemYPosition = (rack, item, index) => {
+  if (index === 0 || index === 1) {
+    return rack.y + (rack.height - item.height) / 2;
+  } else if (index === 2 || index === 3) {
+    return rack.y + (rack.height - item.height) / 2;
+  } else {
+    return rack.y + rack.height - item.height;
+  }
+};
+
+const showCustomAlert = (content) => {
+  var str="鏋跺彿   :      111\n" +
+    "闀�     :      111\n" +
+    "瀹�     :      111\n" +
+    "鍘�     :      111\n"+
+    "鐜荤拑ID :      111\n"+
+    "鑶滅郴   :      111\n";
+
+  Swal.fire({
+    title: '鐜荤拑淇℃伅',
+    html: '<pre>' + str + '</pre>',
+    customClass: {
+      popup: 'format-pre'
+    }
+  });
+};
+
+const showRectInfo = (rectInfo) => {
+  const content = rectInfo.item.content;
+  showCustomAlert(content);
+};
+
 </script>
 
 <style scoped>
@@ -98,7 +91,6 @@
   margin-left: 20px;
   width: 500px;
   margin-top: 10px;
-  /* background-color: antiquewhite; */
 }
 .rack-rect:hover {
   cursor: pointer;
@@ -114,5 +106,4 @@
   padding: 10px;
   font-size: 14px;
 }
-
-</style>
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue b/UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue
index 1c43b71..b340c83 100644
--- a/UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue
+++ b/UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue
@@ -1,6 +1,6 @@
 <template>
   <div class="glass-rack">
-    <div>
+    <div >
       <svg width="500" height="500" xmlns="http://www.w3.org/2000/svg">
         <g stroke="null" id="Layer_1">
           <!-- 浣跨敤 v-for 寰幆娓叉煋鏁版嵁 -->
@@ -11,9 +11,9 @@
               :width="rack.width" 
               :height="rack.height" 
               :fill="rack.fillColor"
-          :data-index="index" 
-          class="rack-rect" 
-          @click="showRectInfo(rack)"
+              :data-index="index" 
+              class="rack-rect" 
+              @click="showRectInfo(rack)"
             />
             <rect 
               :x="calculateItemXPosition(rack, rack.item, index)" 
@@ -31,70 +31,66 @@
   </div>
 </template>
 
-<script>
+<script setup>
 import Swal from 'sweetalert2'
-export default {
-  data() {
-    return {
-      racks: [
-        { x: 50, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: 'NG123456' } },
-        { x: 50, y: 270, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 20, width: 10, fillColor: 'yellow', content: 'NG1234567' } },
-        { x: 280, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 30, width: 20, fillColor: 'yellow', content: 'NG12345678' } },
-        { x: 280, y: 270, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 35, width: 23, fillColor: 'yellow', content: 'NG123456910' } },
-        { x: 140, y: 420, height: 60, width: 110, fillColor: '#6a6da9', item: { height: 30, width: 100, fillColor: 'yellow', content: 'NG1234561454' } }
-      ]
-    };
-  },
-  methods: {
-    calculateItemXPosition(rack, item, index) {
-      if (index === 0 || index === 1) {
-        return rack.x;
-      } else if (index === 2 || index === 3) {
-        return rack.x + rack.width - item.width;
-      } else {
-        return rack.x + (rack.width - item.width) / 2;
-      }
-    },
-    calculateItemYPosition(rack, item, index) {
-      if (index === 0 || index === 1) {
-        return rack.y + (rack.height - item.height) / 2;
-      } else if (index === 2 || index === 3) {
-        return rack.y + (rack.height - item.height) / 2;
-      } else {
-        return rack.y + rack.height - item.height;
-      }
-    },
-    showCustomAlert(content) {
-      var str="鏋跺彿   :      111\n" +
-        "闀�     :      111\n" +
-        "瀹�     :      111\n" +
-        "鍘�     :      111\n"+
-        "鐜荤拑ID :      111\n"+
-        "鑶滅郴   :      111\n";
 
-Swal.fire({
-  title: '鐜荤拑淇℃伅',
-  html: '<pre>' + str + '</pre>',
-  customClass: {
-    popup: 'format-pre'
-  }
-});
+const racks = [
+  { x: 50, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: 'NG123456' } },
+  { x: 50, y: 270, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 20, width: 10, fillColor: 'yellow', content: 'NG1234567' } },
+  { x: 280, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 30, width: 20, fillColor: 'yellow', content: 'NG12345678' } },
+  { x: 280, y: 270, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 35, width: 23, fillColor: 'yellow', content: 'NG123456910' } },
+  { x: 140, y: 420, height: 60, width: 110, fillColor: '#6a6da9', item: { height: 30, width: 100, fillColor: 'yellow', content: 'NG1234561454' } }
+];
 
-  },
-    showRectInfo( rectInfo) {
-  const content = rectInfo.item.content;
-  this.$nextTick(() => {
-    this.showCustomAlert(content);
-  });
-},
+const calculateItemXPosition = (rack, item, index) => {
+  if (index === 0 || index === 1) {
+    return rack.x;
+  } else if (index === 2 || index === 3) {
+    return rack.x + rack.width - item.width;
+  } else {
+    return rack.x + (rack.width - item.width) / 2;
   }
 };
+
+const calculateItemYPosition = (rack, item, index) => {
+  if (index === 0 || index === 1) {
+    return rack.y + (rack.height - item.height) / 2;
+  } else if (index === 2 || index === 3) {
+    return rack.y + (rack.height - item.height) / 2;
+  } else {
+    return rack.y + rack.height - item.height;
+  }
+};
+
+const showCustomAlert = (content) => {
+  var str="鏋跺彿   :      111\n" +
+    "闀�     :      111\n" +
+    "瀹�     :      111\n" +
+    "鍘�     :      111\n"+
+    "鐜荤拑ID :      111\n"+
+    "鑶滅郴   :      111\n";
+
+  Swal.fire({
+    title: '鐜荤拑淇℃伅',
+    html: '<pre>' + str + '</pre>',
+    customClass: {
+      popup: 'format-pre'
+    }
+  });
+};
+
+const showRectInfo = (rectInfo) => {
+  const content = rectInfo.item.content;
+  showCustomAlert(content);
+};
+
 </script>
 
 <style scoped>
 .glass-rack {
   margin-left: 20px;
   width: 500px;
+  margin-top: 10px;
 }
 .rack-rect:hover {
   cursor: pointer;
@@ -110,5 +106,4 @@
   padding: 10px;
   font-size: 14px;
 }
-
-</style>
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue b/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
index 9ede3d4..0d44280 100644
--- a/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
+++ b/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
@@ -29,7 +29,7 @@
 if (typeof WebSocket === "undefined") {
   console.log("鎮ㄧ殑娴忚鍣ㄤ笉鏀寔WebSocket");
 } else {
-  let socketUrl = "ws://" + "localhost"+":88" + "/api/unLoadGlass/api/talk/" + viewname;
+  let socketUrl = "ws://" + "localhost"+":88" + "/api/talk/" + viewname;
   if (socket != null) {
     socket.close();
     socket = null;
@@ -49,8 +49,6 @@
 if (!msg.data) {
 return; // 濡傛灉鏀跺埌绌烘暟鎹紝鍒欑洿鎺ヨ繑鍥烇紝涓嶆墽琛屽悗缁�昏緫
 }
-
-
 
     let obj = JSON.parse(msg.data);
 
@@ -203,7 +201,6 @@
 initWebSocket();
 onMounted(fetchTableData);
 // setInterval(fetchTableData, 2000)
-fetchTableData
 
 const open = () => {
   ElMessageBox.confirm(
@@ -391,7 +388,7 @@
 }
 #main-body{
   margin-top: -20px;
-  margin-left: 300px;
+  margin-left: 200px;
 }
 #main-bodya{
   margin-top: -10px;
diff --git a/UI-Project/src/views/Visualization/screen.vue b/UI-Project/src/views/Visualization/screen.vue
new file mode 100644
index 0000000..d0567d3
--- /dev/null
+++ b/UI-Project/src/views/Visualization/screen.vue
@@ -0,0 +1,49 @@
+<script setup>
+import {ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue"
+import {useRouter} from "vue-router";
+let indexFlag=$ref(1)
+function changeRouter(index){
+  indexFlag=index
+}
+
+</script>
+
+<template>
+  <!-- <div id="main-div"> -->
+   
+
+    <div id="main-body">
+      <router-view  />
+    </div>
+  <!-- </div> -->
+</template>
+
+<style scoped>
+#main-div{
+  width: 100%;
+  height: 100%;
+}
+#div-title{
+  height: 2%;
+  width: 100%;
+}
+#searchButton{
+  margin-top: -5px;
+  margin-left: 1rem;
+}
+/* #searchButton1{
+//margin-left: 10rem;
+} */
+/*main-body鏍峰紡*/
+#main-body{
+  width: 100%;
+  height: 95%;
+  /* margin-top: 1%; */
+}
+#select{
+  margin-left:0.5rem;
+}
+:deep(.indexTag .el-breadcrumb__inner){
+  color: #5CADFE !important;
+}
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/Visualization/screenone.vue b/UI-Project/src/views/Visualization/screenone.vue
new file mode 100644
index 0000000..67c968b
--- /dev/null
+++ b/UI-Project/src/views/Visualization/screenone.vue
@@ -0,0 +1,393 @@
+<script setup>
+import {Search} from "@element-plus/icons-vue";
+import {reactive} from "vue";
+import {useRouter} from "vue-router"
+const router = useRouter()
+
+import request from "@/utils/request"
+import { ref, onMounted } from "vue";
+// import { ref } from 'vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+//  import LanguageMixin from './lang/LanguageMixin'
+
+const tableData = ref([])
+
+// 鍙戦�佽幏鍙栬〃鏍兼暟鎹殑璇锋眰
+// const fetchTableData = async () => {
+//   try {
+//     // 鍙戦�佽幏鍙栬〃鏍兼暟鎹殑璇锋眰锛屽苟绛夊緟鍝嶅簲
+//     // const response = await request.post("/loadGlass/optimizeProject/listByState", requestData);
+//     const response = await request.get("unLoadGlass/downStorage/selectStorageCage");
+
+//     // 妫�鏌ュ搷搴旂姸鎬�
+//     if (response.code === 200) {
+//       // 鏇存柊琛ㄦ牸鏁版嵁
+//       console.log('鎴愬姛鑾峰彇琛ㄦ牸鏁版嵁:', response.data);
+//       tableData.splice(0, tableData.length, ...response.data);
+//     } else {
+//       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+//       ElMessage.error(response.msg);
+//     }
+//   } catch (error) {
+//     // 澶勭悊璇锋眰澶辫触鐨勬儏鍐�
+//    ElMessage.error('鑾峰彇琛ㄦ牸鏁版嵁澶辫触锛岃閲嶈瘯');
+//   }
+// };
+// onMounted(fetchTableData);
+
+
+
+request.get("unLoadGlass/downStorage/selectStorageCage").then((res) => {
+          if (res.code == 200) {
+          console.log(res.data);
+          tableData.value = res.data
+          } else {
+          ElMessage.warning(res.msg)
+        
+          }
+          });
+
+const dialogForm = () => {
+  ElMessageBox.confirm(
+    '鏄惁鎶ョ己?',
+    '鎻愮ず',
+    {
+      confirmButtonText: '鏄�',
+      cancelButtonText: '鍙栨秷',
+      type: 'warning',
+    }
+  )
+  .then(() => {
+    // this.boxa = true
+    // this.box = false
+      
+    })
+}
+const open = () => {
+  ElMessageBox.confirm(
+    '鏄惁鍒犻櫎璇ユ潯淇℃伅?',
+    '鎻愮ず',
+    {
+      confirmButtonText: '鏄�',
+      cancelButtonText: '鍙栨秷',
+      type: 'warning',
+    }
+  )
+    .then(() => {
+      ElMessage({
+        type: 'success',
+        message: '鍒犻櫎鎴愬姛锛�',
+      })
+    })
+    .catch(() => {
+      ElMessage({
+        type: 'info',
+        message: '鍒犻櫎澶辫触',
+      })
+    })
+}
+const getTableRow = (row,type) =>{
+  switch (type) {
+    case 'edit' :{
+      //alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑缂栬緫淇℃伅')
+      router.push({path: '/main/returns/createReturns', query: { ReturnID: 'TH24010101' }})
+      break
+    }
+    case 'delete':{
+      alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑鍒犻櫎淇℃伅')
+      break
+    }
+  }
+}
+
+const gridOptions = reactive({
+  border:  "full",//琛ㄦ牸鍔犺竟妗�
+  keepSource: true,//淇濇寔婧愭暟鎹�
+  align: 'center',//鏂囧瓧灞呬腑
+  stripe:true,//鏂戦┈绾�
+  rowConfig: {isCurrent: true, isHover: true,height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
+  id: 'OrderList',
+  showFooter: true,//鏄剧ず鑴�
+  printConfig: {},
+  importConfig: {},
+  exportConfig: {},
+  scrollY:{ enabled: true },//寮�鍚櫄鎷熸粴鍔�
+  showOverflow:true,
+  columnConfig: {
+    resizable: true,
+    useKey: true
+  },
+  filterConfig: {   //绛涢�夐厤缃」
+    remote: true
+  },
+  customConfig: {
+    storage: true
+  },
+  editConfig: {
+    trigger: 'click',
+    mode: 'row',
+    showStatus: true
+  },
+  data:  [
+    {
+      'id': '1',
+      'long': '5',
+      'wide': '1005',
+      'thick': '183.6',
+    }
+  ]
+ 
+})
+
+
+
+</script>
+
+<template>
+<!-- 鐖剁骇妗� -->
+<div class="container">
+    <img src="../../assets/d1.png" style="width: 1500px;height: 750px;" alt="Your Image">
+    <div class="moving-rect vertical"></div>
+    <div class="moving-rect all"></div>
+    <div class="moving-rect horizontal"></div>
+    <div class="moving-rect xiao"></div>
+    <div class="moving-rect zhan"></div>
+    <div class="moving-rect tu"></div>
+    <div class="moving-rect zi"></div>
+    <div class="moving-rect xia"></div>
+    <div class="moving-rect zan"></div>
+    <div class="moving-rect fa"></div>
+    <div class="moving-rect hua"></div>
+    <div class="moving-rect shui"></div>
+</div>
+</template>
+
+<style scoped>
+.container {
+    position: relative;
+    display: inline-block; /* 浣垮鍣ㄥぇ灏忛�傚簲鍥剧墖澶у皬 */
+}
+
+img {
+    display: block; /* 璁╁浘鐗囦互鍧楃骇鍏冪礌鏄剧ず */
+    max-width: 100%; /* 纭繚鍥剧墖涓嶈秴鍑哄鍣� */
+}
+
+.moving-rect {
+    width: 100px;
+    height: 50px;
+    position: absolute;
+}
+
+.vertical {
+    width: 45px;
+    height: 25px;
+    background-color: #409EFF;
+    top: 510px; /* 鍒濆浣嶇疆 */
+    left: 899px; /* 姘村钩灞呬腑 */
+    transform: translateX(-50%);
+    animation: move-vertical 6s infinite; /* 浠庝笂鍒颁笅鍔ㄧ敾锛屾寔缁�6绉掞紝鏃犻檺寰幆 */
+}
+
+@keyframes move-vertical {
+    0% {
+        top: 510px; /* 璧峰浣嶇疆 */
+    }
+    100% {
+        top: calc(100% - 210px); /* 浠庝笂鍒颁笅缁撴潫浣嶇疆 */
+    }
+}
+.all {
+    width: 45px;
+    height: 25px;
+    background-color: #409EFF;
+    top: 490px; /* 鍨傜洿灞呬腑 */
+    right: 560px; /* 鍒濆浣嶇疆 */
+    transform: translateY(-50%);
+    animation: move-all 6s infinite; /* 浠庡彸鍒板乏鍔ㄧ敾锛屾寔缁�6绉掞紝鏃犻檺寰幆 */
+}
+@keyframes move-all {
+    0% {
+        right: 560px; /* 璧峰浣嶇疆 */
+    }
+    100% {
+        right: calc(100% - 863px); /* 浠庡彸鍒板乏缁撴潫浣嶇疆 */
+    }
+}
+.horizontal {
+    width: 45px;
+    height: 25px;
+    background-color: #409EFF;
+    top: 488px; /* 鍨傜洿灞呬腑 */
+    right: 210px; /* 鍒濆浣嶇疆 */
+    transform: translateY(-50%);
+    animation: move-horizontal 6s infinite; /* 浠庡彸鍒板乏鍔ㄧ敾锛屾寔缁�6绉掞紝鏃犻檺寰幆 */
+}
+
+@keyframes move-horizontal {
+    0% {
+        right: 210px; /* 璧峰浣嶇疆 */
+    }
+    100% {
+        right: calc(100% - 1030px); /* 浠庡彸鍒板乏缁撴潫浣嶇疆 */
+    }
+}
+
+.xiao {
+    width: 45px;
+    height: 25px;
+    background-color: #409EFF;
+    top: 569px; /* 鍨傜洿灞呬腑 */
+    right: 660px; /* 鍒濆浣嶇疆 */
+    transform: translateY(-50%);
+    animation: move-xiao 6s infinite; /* 浠庡彸鍒板乏鍔ㄧ敾锛屾寔缁�6绉掞紝鏃犻檺寰幆 */
+}
+@keyframes move-xiao {
+    0% {
+        right: 660px; /* 璧峰浣嶇疆 */
+    }
+    100% {
+        right: calc(100% - 820px); /* 浠庡彸鍒板乏缁撴潫浣嶇疆 */
+    }
+}
+.tu {
+    width: 45px;
+    height: 25px;
+    background-color: #409EFF;
+    top: 569px; /* 鍨傜洿灞呬腑 */
+    right: 778px; /* 鍒濆浣嶇疆 */
+    transform: translateY(-50%);
+    animation: move-tu 6s infinite; /* 浠庡彸鍒板乏鍔ㄧ敾锛屾寔缁�6绉掞紝鏃犻檺寰幆 */
+}
+@keyframes move-tu {
+    0% {
+        right: 778px; /* 璧峰浣嶇疆 */
+    }
+    100% {
+        right: calc(100% - 580px); /* 浠庡彸鍒板乏缁撴潫浣嶇疆 */
+    }
+}
+.zhan {
+    width: 45px;
+    height: 25px;
+    background-color: #409EFF;
+    top: 632px; /* 鍨傜洿灞呬腑 */
+    right: 572px; /* 鍒濆浣嶇疆 */
+    transform: translateY(-50%);
+    animation: move-zhan 6s infinite; /* 浠庡彸鍒板乏鍔ㄧ敾锛屾寔缁�6绉掞紝鏃犻檺寰幆 */
+}
+@keyframes move-zhan {
+    0% {
+        right: 572px; /* 璧峰浣嶇疆 */
+    }
+    100% {
+        right: calc(100% - 885px); /* 浠庡彸鍒板乏缁撴潫浣嶇疆 */
+    }
+}
+.zi {
+    width: 45px;
+    height: 25px;
+    background-color: #409EFF;
+    top: 632px; /* 鍨傜洿灞呬腑 */
+    right: 710px; /* 鍒濆浣嶇疆 */
+    transform: translateY(-50%);
+    animation: move-zi 6s infinite; /* 浠庡彸鍒板乏鍔ㄧ敾锛屾寔缁�6绉掞紝鏃犻檺寰幆 */
+}
+@keyframes move-zi {
+    0% {
+        right: 710px; /* 璧峰浣嶇疆 */
+    }
+    100% {
+        right: calc(100% - 645px); /* 浠庡彸鍒板乏缁撴潫浣嶇疆 */
+    }
+}
+.xia {
+    width: 45px;
+    height: 25px;
+    background-color: #409EFF;
+    top: 628px; /* 鍨傜洿灞呬腑 */
+    right: 1185px; /* 鍒濆浣嶇疆 */
+    transform: translateY(-50%);
+    animation: move-xia 6s infinite; /* 浠庡彸鍒板乏鍔ㄧ敾锛屾寔缁�6绉掞紝鏃犻檺寰幆 */
+}
+@keyframes move-xia {
+    0% {
+        right: 1185px; /* 璧峰浣嶇疆 */
+    }
+    100% {
+        right: calc(100% - 198px); /* 浠庡彸鍒板乏缁撴潫浣嶇疆 */
+    }
+}
+
+.zan {
+    width: 25px;
+    height: 45px;
+    background-color: #409EFF;
+    top: 570px; /* 鍒濆浣嶇疆 */
+    left: 172px; /* 姘村钩灞呬腑 */
+    transform: translateX(-50%);
+    animation: move-zan 6s infinite; /* 浠庝笂鍒颁笅鍔ㄧ敾锛屾寔缁�6绉掞紝鏃犻檺寰幆 */
+}
+
+@keyframes move-zan {
+    0% {
+        top: 570px; /* 璧峰浣嶇疆 */
+    }
+    100% {
+        top: calc(100% - 242px); /* 浠庝笅鍒颁笂缁撴潫浣嶇疆 */
+    }
+}
+.fa {
+    width: 25px;
+    height: 45px;
+    background-color: #409EFF;
+    top: 150px; /* 鍒濆浣嶇疆 */
+    left: 172px; /* 姘村钩灞呬腑 */
+    transform: translateX(-50%);
+    animation: move-fa 6s infinite; /* 浠庝笂鍒颁笅鍔ㄧ敾锛屾寔缁�6绉掞紝鏃犻檺寰幆 */
+}
+
+@keyframes move-fa {
+    0% {
+        top: 150px; /* 璧峰浣嶇疆 */
+    }
+    100% {
+        top: calc(100% - 660px); /* 浠庝笅鍒颁笂缁撴潫浣嶇疆 */
+    }
+}
+.hua {
+    width: 45px;
+    height: 25px;
+    background-color: #409EFF;
+    top: 117px; /* 鍨傜洿灞呬腑 */
+    right: 1250px; /* 鍒濆浣嶇疆 */
+    transform: translateY(-50%);
+    animation: move-hua 6s infinite; /* 浠庡乏鍒板彸鍔ㄧ敾锛屾寔缁�6绉掞紝鏃犻檺寰幆 */
+}
+@keyframes move-hua {
+    0% {
+      right: 1250px; /* 璧峰浣嶇疆 */
+    }
+    100% {
+        right: calc(100% - 360px); /* 缁撴潫浣嶇疆 */
+    }
+}
+.shui {
+    width: 45px;
+    height: 25px;
+    background-color: #409EFF;
+    top: 117px; /* 鍨傜洿灞呬腑 */
+    right: 1050px; /* 鍒濆浣嶇疆 */
+    transform: translateY(-50%);
+    animation: move-shui 6s infinite; /* 浠庡乏鍒板彸鍔ㄧ敾锛屾寔缁�6绉掞紝鏃犻檺寰幆 */
+}
+@keyframes move-shui {
+    0% {
+      right: 1050px; /* 璧峰浣嶇疆 */
+    }
+    100% {
+        right: calc(100% - 610px); /* 缁撴潫浣嶇疆 */
+    }
+}
+
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/Visualization/screenthree.vue b/UI-Project/src/views/Visualization/screenthree.vue
new file mode 100644
index 0000000..5f115a1
--- /dev/null
+++ b/UI-Project/src/views/Visualization/screenthree.vue
@@ -0,0 +1,160 @@
+<script setup>
+import {Search} from "@element-plus/icons-vue";
+import {reactive} from "vue";
+import {useRouter} from "vue-router"
+const router = useRouter()
+
+import request from "@/utils/request"
+import { ref, onMounted } from "vue";
+// import { ref } from 'vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+//  import LanguageMixin from './lang/LanguageMixin'
+
+const tableData = ref([])
+
+// 鍙戦�佽幏鍙栬〃鏍兼暟鎹殑璇锋眰
+// const fetchTableData = async () => {
+//   try {
+//     // 鍙戦�佽幏鍙栬〃鏍兼暟鎹殑璇锋眰锛屽苟绛夊緟鍝嶅簲
+//     // const response = await request.post("/loadGlass/optimizeProject/listByState", requestData);
+//     const response = await request.get("unLoadGlass/downStorage/selectStorageCage");
+
+//     // 妫�鏌ュ搷搴旂姸鎬�
+//     if (response.code === 200) {
+//       // 鏇存柊琛ㄦ牸鏁版嵁
+//       console.log('鎴愬姛鑾峰彇琛ㄦ牸鏁版嵁:', response.data);
+//       tableData.splice(0, tableData.length, ...response.data);
+//     } else {
+//       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+//       ElMessage.error(response.msg);
+//     }
+//   } catch (error) {
+//     // 澶勭悊璇锋眰澶辫触鐨勬儏鍐�
+//    ElMessage.error('鑾峰彇琛ㄦ牸鏁版嵁澶辫触锛岃閲嶈瘯');
+//   }
+// };
+// onMounted(fetchTableData);
+
+
+
+request.get("unLoadGlass/downStorage/selectStorageCage").then((res) => {
+          if (res.code == 200) {
+          console.log(res.data);
+          tableData.value = res.data
+          } else {
+          ElMessage.warning(res.msg)
+        
+          }
+          });
+
+const dialogForm = () => {
+  ElMessageBox.confirm(
+    '鏄惁鎶ョ己?',
+    '鎻愮ず',
+    {
+      confirmButtonText: '鏄�',
+      cancelButtonText: '鍙栨秷',
+      type: 'warning',
+    }
+  )
+  .then(() => {
+    // this.boxa = true
+    // this.box = false
+      
+    })
+}
+const open = () => {
+  ElMessageBox.confirm(
+    '鏄惁鍒犻櫎璇ユ潯淇℃伅?',
+    '鎻愮ず',
+    {
+      confirmButtonText: '鏄�',
+      cancelButtonText: '鍙栨秷',
+      type: 'warning',
+    }
+  )
+    .then(() => {
+      ElMessage({
+        type: 'success',
+        message: '鍒犻櫎鎴愬姛锛�',
+      })
+    })
+    .catch(() => {
+      ElMessage({
+        type: 'info',
+        message: '鍒犻櫎澶辫触',
+      })
+    })
+}
+const getTableRow = (row,type) =>{
+  switch (type) {
+    case 'edit' :{
+      //alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑缂栬緫淇℃伅')
+      router.push({path: '/main/returns/createReturns', query: { ReturnID: 'TH24010101' }})
+      break
+    }
+    case 'delete':{
+      alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑鍒犻櫎淇℃伅')
+      break
+    }
+  }
+}
+
+const gridOptions = reactive({
+  border:  "full",//琛ㄦ牸鍔犺竟妗�
+  keepSource: true,//淇濇寔婧愭暟鎹�
+  align: 'center',//鏂囧瓧灞呬腑
+  stripe:true,//鏂戦┈绾�
+  rowConfig: {isCurrent: true, isHover: true,height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
+  id: 'OrderList',
+  showFooter: true,//鏄剧ず鑴�
+  printConfig: {},
+  importConfig: {},
+  exportConfig: {},
+  scrollY:{ enabled: true },//寮�鍚櫄鎷熸粴鍔�
+  showOverflow:true,
+  columnConfig: {
+    resizable: true,
+    useKey: true
+  },
+  filterConfig: {   //绛涢�夐厤缃」
+    remote: true
+  },
+  customConfig: {
+    storage: true
+  },
+  editConfig: {
+    trigger: 'click',
+    mode: 'row',
+    showStatus: true
+  },
+  data:  [
+    {
+      'id': '1',
+      'long': '5',
+      'wide': '1005',
+      'thick': '183.6',
+    }
+  ]
+ 
+})
+
+
+
+</script>
+
+<template>
+
+  <div id="awatch">
+    <img src="../../assets/d3.png" alt="" style="width: 100%;height: 160%;margin-top: 20px;">
+
+</div>
+</template>
+
+<style scoped>
+
+#awatch{
+  height: 460px;
+  /* margin-top: -60px; */
+}
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/Visualization/screentwo.vue b/UI-Project/src/views/Visualization/screentwo.vue
new file mode 100644
index 0000000..24f0168
--- /dev/null
+++ b/UI-Project/src/views/Visualization/screentwo.vue
@@ -0,0 +1,160 @@
+<script setup>
+import {Search} from "@element-plus/icons-vue";
+import {reactive} from "vue";
+import {useRouter} from "vue-router"
+const router = useRouter()
+
+import request from "@/utils/request"
+import { ref, onMounted } from "vue";
+// import { ref } from 'vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+//  import LanguageMixin from './lang/LanguageMixin'
+
+const tableData = ref([])
+
+// 鍙戦�佽幏鍙栬〃鏍兼暟鎹殑璇锋眰
+// const fetchTableData = async () => {
+//   try {
+//     // 鍙戦�佽幏鍙栬〃鏍兼暟鎹殑璇锋眰锛屽苟绛夊緟鍝嶅簲
+//     // const response = await request.post("/loadGlass/optimizeProject/listByState", requestData);
+//     const response = await request.get("unLoadGlass/downStorage/selectStorageCage");
+
+//     // 妫�鏌ュ搷搴旂姸鎬�
+//     if (response.code === 200) {
+//       // 鏇存柊琛ㄦ牸鏁版嵁
+//       console.log('鎴愬姛鑾峰彇琛ㄦ牸鏁版嵁:', response.data);
+//       tableData.splice(0, tableData.length, ...response.data);
+//     } else {
+//       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+//       ElMessage.error(response.msg);
+//     }
+//   } catch (error) {
+//     // 澶勭悊璇锋眰澶辫触鐨勬儏鍐�
+//    ElMessage.error('鑾峰彇琛ㄦ牸鏁版嵁澶辫触锛岃閲嶈瘯');
+//   }
+// };
+// onMounted(fetchTableData);
+
+
+
+request.get("unLoadGlass/downStorage/selectStorageCage").then((res) => {
+          if (res.code == 200) {
+          console.log(res.data);
+          tableData.value = res.data
+          } else {
+          ElMessage.warning(res.msg)
+        
+          }
+          });
+
+const dialogForm = () => {
+  ElMessageBox.confirm(
+    '鏄惁鎶ョ己?',
+    '鎻愮ず',
+    {
+      confirmButtonText: '鏄�',
+      cancelButtonText: '鍙栨秷',
+      type: 'warning',
+    }
+  )
+  .then(() => {
+    // this.boxa = true
+    // this.box = false
+      
+    })
+}
+const open = () => {
+  ElMessageBox.confirm(
+    '鏄惁鍒犻櫎璇ユ潯淇℃伅?',
+    '鎻愮ず',
+    {
+      confirmButtonText: '鏄�',
+      cancelButtonText: '鍙栨秷',
+      type: 'warning',
+    }
+  )
+    .then(() => {
+      ElMessage({
+        type: 'success',
+        message: '鍒犻櫎鎴愬姛锛�',
+      })
+    })
+    .catch(() => {
+      ElMessage({
+        type: 'info',
+        message: '鍒犻櫎澶辫触',
+      })
+    })
+}
+const getTableRow = (row,type) =>{
+  switch (type) {
+    case 'edit' :{
+      //alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑缂栬緫淇℃伅')
+      router.push({path: '/main/returns/createReturns', query: { ReturnID: 'TH24010101' }})
+      break
+    }
+    case 'delete':{
+      alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑鍒犻櫎淇℃伅')
+      break
+    }
+  }
+}
+
+const gridOptions = reactive({
+  border:  "full",//琛ㄦ牸鍔犺竟妗�
+  keepSource: true,//淇濇寔婧愭暟鎹�
+  align: 'center',//鏂囧瓧灞呬腑
+  stripe:true,//鏂戦┈绾�
+  rowConfig: {isCurrent: true, isHover: true,height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
+  id: 'OrderList',
+  showFooter: true,//鏄剧ず鑴�
+  printConfig: {},
+  importConfig: {},
+  exportConfig: {},
+  scrollY:{ enabled: true },//寮�鍚櫄鎷熸粴鍔�
+  showOverflow:true,
+  columnConfig: {
+    resizable: true,
+    useKey: true
+  },
+  filterConfig: {   //绛涢�夐厤缃」
+    remote: true
+  },
+  customConfig: {
+    storage: true
+  },
+  editConfig: {
+    trigger: 'click',
+    mode: 'row',
+    showStatus: true
+  },
+  data:  [
+    {
+      'id': '1',
+      'long': '5',
+      'wide': '1005',
+      'thick': '183.6',
+    }
+  ]
+ 
+})
+
+
+
+</script>
+
+<template>
+
+  <div id="awatch">
+    <img src="../../assets/d2.png" alt="" style="width: 100%;height: 160%;margin-top: 20px;">
+
+</div>
+</template>
+
+<style scoped>
+
+#awatch{
+  height: 460px;
+  /* margin-top: -60px; */
+}
+</style>
\ No newline at end of file
diff --git a/UI-Project/vite.config.js b/UI-Project/vite.config.js
index e0a49a0..b93f5ee 100644
--- a/UI-Project/vite.config.js
+++ b/UI-Project/vite.config.js
@@ -22,7 +22,7 @@
     https: false,
     proxy: {
       '/api': {
-        target: 'http://10.153.19.150:88/',
+        target: 'http://127.0.0.1:88/',
         changeOrigin: true,
         rewrite: (path) => path.replace(/^\/api/, '/'),
       },
diff --git a/UnLoadGlassModule/MES-Module.iml b/UnLoadGlassModule/MES-Module.iml
deleted file mode 100644
index debbce9..0000000
--- a/UnLoadGlassModule/MES-Module.iml
+++ /dev/null
@@ -1,181 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
-  <component name="FacetManager">
-    <facet type="web" name="Web">
-      <configuration>
-        <webroots />
-        <sourceRoots>
-          <root url="file://$MODULE_DIR$/src/main/java" />
-          <root url="file://$MODULE_DIR$/src/main/resources" />
-        </sourceRoots>
-      </configuration>
-    </facet>
-    <facet type="Spring" name="Spring">
-      <configuration />
-    </facet>
-    <facet type="jpa" name="JPA">
-      <configuration>
-        <setting name="validation-enabled" value="true" />
-        <setting name="provider-name" value="Hibernate" />
-        <datasource-mapping>
-          <factory-entry name="entityManagerFactory" />
-        </datasource-mapping>
-        <naming-strategy-map />
-      </configuration>
-    </facet>
-  </component>
-  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
-    <output url="file://$MODULE_DIR$/target/classes" />
-    <output-test url="file://$MODULE_DIR$/target/test-classes" />
-    <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
-      <excludeFolder url="file://$MODULE_DIR$/target" />
-    </content>
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="library" name="Java EE 6-Java EE 6" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.5.9" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.5.9" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.5.9" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.5.9" level="project" />
-    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.10" level="project" />
-    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.10" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.17.1" level="project" />
-    <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.33" level="project" />
-    <orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
-    <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.28" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.5.9" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.12.6" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.6" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.12.6" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.5.9" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.56" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:9.0.56" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.56" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-web:5.3.15" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.3.15" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.3.15" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-context:5.3.15" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.3.15" level="project" />
-    <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.3.1" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.5.9" level="project" />
-    <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:4.0.3" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.3.15" level="project" />
-    <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.3.1" level="project" />
-    <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.13" level="project" />
-    <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.1.1" level="project" />
-    <orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.70" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:2.3.1.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-core:5.3.15" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.3.15" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.3.15" level="project" />
-    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.33" level="project" />
-    <orderEntry type="library" scope="RUNTIME" name="Maven: mysql:mysql-connector-java:8.0.20" level="project" />
-    <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.22" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.5.9" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:2.5.9" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.5.9" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.5.0" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.4.7" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:2.4.7" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.ow2.asm:asm:9.1" level="project" />
-    <orderEntry type="library" name="Maven: jakarta.xml.bind:jakarta.xml.bind-api:2.3.3" level="project" />
-    <orderEntry type="library" name="Maven: jakarta.activation:jakarta.activation-api:1.2.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest:2.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter:5.7.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-api:5.7.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.apiguardian:apiguardian-api:1.1.0" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.opentest4j:opentest4j:1.2.0" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-commons:1.7.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-params:5.7.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-engine:5.7.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-engine:1.7.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:3.9.0" level="project" />
-    <orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.10.22" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy-agent:1.10.22" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:3.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-junit-jupiter:3.9.0" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.5.0" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:5.3.15" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.xmlunit:xmlunit-core:2.8.4" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter-test:2.3.1" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-test-autoconfigure:2.3.1" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.3.15" level="project" />
-    <orderEntry type="library" name="Maven: com.auth0:java-jwt:3.10.3" level="project" />
-    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.15" level="project" />
-    <orderEntry type="library" name="Maven: org.assertj:assertj-core:3.19.0" level="project" />
-    <orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.4.0" level="project" />
-    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.5.1" level="project" />
-    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.5.1" level="project" />
-    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-extension:3.5.1" level="project" />
-    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:3.5.1" level="project" />
-    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.5.1" level="project" />
-    <orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:4.3" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.5.9" level="project" />
-    <orderEntry type="library" name="Maven: com.baomidou:dynamic-datasource-spring-boot-starter:3.5.1" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.5.9" level="project" />
-    <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.7" level="project" />
-    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.9.2" level="project" />
-    <orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.20" level="project" />
-    <orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.9.2" level="project" />
-    <orderEntry type="library" name="Maven: io.springfox:springfox-core:2.9.2" level="project" />
-    <orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.9.2" level="project" />
-    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-common:2.9.2" level="project" />
-    <orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:2.9.2" level="project" />
-    <orderEntry type="library" name="Maven: com.google.guava:guava:20.0" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml:classmate:1.5.1" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.2.0.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.9.2" level="project" />
-    <orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.20" level="project" />
-    <orderEntry type="library" name="Maven: com.github.xingshuangs:iot-communication:1.4.2" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-cache:2.5.9" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.3.15" level="project" />
-    <orderEntry type="library" name="Maven: com.rabbitmq:amqp-client:5.13.1" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-amqp:2.5.9" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-messaging:5.3.15" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.amqp:spring-rabbit:2.3.14" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.amqp:spring-amqp:2.3.14" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.retry:spring-retry:1.3.1" level="project" />
-    <orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.3.2" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.13.0" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.13.0" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.13.0" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-websocket:2.5.9" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-websocket:5.3.15" level="project" />
-    <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.9" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.poi:poi:5.2.4" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.4" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.commons:commons-math3:3.6.1" level="project" />
-    <orderEntry type="library" name="Maven: commons-io:commons-io:2.13.0" level="project" />
-    <orderEntry type="library" name="Maven: com.zaxxer:SparseBitSet:1.3" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.17.1" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:5.2.4" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-lite:5.2.4" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:5.1.1" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.commons:commons-compress:1.24.0" level="project" />
-    <orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.08" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-all:4.1.36.Final" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-jpa:2.5.9" level="project" />
-    <orderEntry type="library" name="Maven: jakarta.transaction:jakarta.transaction-api:1.3.3" level="project" />
-    <orderEntry type="library" name="Maven: jakarta.persistence:jakarta.persistence-api:2.2.3" level="project" />
-    <orderEntry type="library" name="Maven: org.hibernate:hibernate-core:5.4.33" level="project" />
-    <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.4.3.Final" level="project" />
-    <orderEntry type="library" name="Maven: org.javassist:javassist:3.27.0-GA" level="project" />
-    <orderEntry type="library" name="Maven: antlr:antlr:2.7.7" level="project" />
-    <orderEntry type="library" name="Maven: org.jboss:jandex:2.2.3.Final" level="project" />
-    <orderEntry type="library" name="Maven: org.dom4j:dom4j:2.1.3" level="project" />
-    <orderEntry type="library" name="Maven: org.hibernate.common:hibernate-commons-annotations:5.1.2.Final" level="project" />
-    <orderEntry type="library" name="Maven: org.glassfish.jaxb:jaxb-runtime:2.3.5" level="project" />
-    <orderEntry type="library" name="Maven: org.glassfish.jaxb:txw2:2.3.5" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.istack:istack-commons-runtime:3.0.12" level="project" />
-    <orderEntry type="library" scope="RUNTIME" name="Maven: com.sun.activation:jakarta.activation:1.2.2" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-jpa:2.5.8" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-orm:5.3.15" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-aspects:5.3.15" level="project" />
-  </component>
-</module>
\ No newline at end of file
diff --git a/UnLoadGlassModule/effective-pom.xml b/UnLoadGlassModule/effective-pom.xml
deleted file mode 100644
index 45bbca4..0000000
--- a/UnLoadGlassModule/effective-pom.xml
+++ /dev/null
@@ -1,6646 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- ====================================================================== -->
-<!--                                                                        -->
-<!-- Generated by Maven Help Plugin on 2024-02-23T16:16:53+08:00            -->
-<!-- See: http://maven.apache.org/plugins/maven-help-plugin/                -->
-<!--                                                                        -->
-<!-- ====================================================================== -->
-<!-- ====================================================================== -->
-<!--                                                                        -->
-<!-- Effective POM for project                                              -->
-<!-- 'com.MES-Module:MES-Module:jar:0.0.1-SNAPSHOT'                         -->
-<!--                                                                        -->
-<!-- ====================================================================== -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.springframework.boot</groupId>
-    <artifactId>spring-boot-starter-parent</artifactId>
-    <version>2.5.9</version>
-    <relativePath />
-  </parent>
-  <groupId>com.MES-Module</groupId>
-  <artifactId>MES-Module</artifactId>
-  <version>0.0.1-SNAPSHOT</version>
-  <name>MES-Module</name>
-  <description>project for Spring Boot</description>
-  <url>https://spring.io/projects/spring-boot/MES-Module</url>
-  <licenses>
-    <license>
-      <name>Apache License, Version 2.0</name>
-      <url>https://www.apache.org/licenses/LICENSE-2.0</url>
-    </license>
-  </licenses>
-  <developers>
-    <developer>
-      <name>Pivotal</name>
-      <email>info@pivotal.io</email>
-      <organization>Pivotal Software, Inc.</organization>
-      <organizationUrl>https://www.spring.io</organizationUrl>
-    </developer>
-  </developers>
-  <scm>
-    <url>https://github.com/spring-projects/spring-boot/MES-Module</url>
-  </scm>
-  <properties>
-    <activemq.version>5.16.3</activemq.version>
-    <antlr2.version>2.7.7</antlr2.version>
-    <appengine-sdk.version>1.9.93</appengine-sdk.version>
-    <artemis.version>2.17.0</artemis.version>
-    <aspectj.version>1.9.7</aspectj.version>
-    <assertj.version>3.19.0</assertj.version>
-    <atomikos.version>4.0.6</atomikos.version>
-    <awaitility.version>4.0.3</awaitility.version>
-    <build-helper-maven-plugin.version>3.2.0</build-helper-maven-plugin.version>
-    <byte-buddy.version>1.10.22</byte-buddy.version>
-    <caffeine.version>2.9.3</caffeine.version>
-    <cassandra-driver.version>4.11.3</cassandra-driver.version>
-    <classmate.version>1.5.1</classmate.version>
-    <commons-codec.version>1.15</commons-codec.version>
-    <commons-dbcp2.version>2.8.0</commons-dbcp2.version>
-    <commons-lang3.version>3.12.0</commons-lang3.version>
-    <commons-pool.version>1.6</commons-pool.version>
-    <commons-pool2.version>2.9.0</commons-pool2.version>
-    <couchbase-client.version>3.1.7</couchbase-client.version>
-    <db2-jdbc.version>11.5.7.0</db2-jdbc.version>
-    <dependency-management-plugin.version>1.0.11.RELEASE</dependency-management-plugin.version>
-    <derby.version>10.14.2.0</derby.version>
-    <dropwizard-metrics.version>4.1.29</dropwizard-metrics.version>
-    <ehcache.version>2.10.9.2</ehcache.version>
-    <ehcache3.version>3.9.9</ehcache3.version>
-    <elasticsearch.version>7.12.1</elasticsearch.version>
-    <embedded-mongo.version>3.0.0</embedded-mongo.version>
-    <flyway.version>7.7.3</flyway.version>
-    <freemarker.version>2.3.31</freemarker.version>
-    <git-commit-id-plugin.version>4.0.5</git-commit-id-plugin.version>
-    <glassfish-el.version>3.0.4</glassfish-el.version>
-    <glassfish-jaxb.version>2.3.5</glassfish-jaxb.version>
-    <glassfish-jstl.version>1.2.6</glassfish-jstl.version>
-    <groovy.version>3.0.9</groovy.version>
-    <gson.version>2.8.9</gson.version>
-    <h2.version>1.4.200</h2.version>
-    <hamcrest.version>2.2</hamcrest.version>
-    <hazelcast-hibernate5.version>2.2.1</hazelcast-hibernate5.version>
-    <hazelcast.version>4.1.8</hazelcast.version>
-    <hibernate-validator.version>6.2.0.Final</hibernate-validator.version>
-    <hibernate.version>5.4.33</hibernate.version>
-    <hikaricp.version>4.0.3</hikaricp.version>
-    <hsqldb.version>2.5.2</hsqldb.version>
-    <htmlunit.version>2.49.1</htmlunit.version>
-    <httpasyncclient.version>4.1.5</httpasyncclient.version>
-    <httpclient.version>4.5.13</httpclient.version>
-    <httpclient5.version>5.0.4</httpclient5.version>
-    <httpcore.version>4.4.15</httpcore.version>
-    <httpcore5.version>5.1.3</httpcore5.version>
-    <infinispan.version>12.1.11.Final</infinispan.version>
-    <influxdb-java.version>2.21</influxdb-java.version>
-    <jackson-bom.version>2.12.6</jackson-bom.version>
-    <jakarta-activation.version>1.2.2</jakarta-activation.version>
-    <jakarta-annotation.version>1.3.5</jakarta-annotation.version>
-    <jakarta-jms.version>2.0.3</jakarta-jms.version>
-    <jakarta-json-bind.version>1.0.2</jakarta-json-bind.version>
-    <jakarta-json.version>1.1.6</jakarta-json.version>
-    <jakarta-mail.version>1.6.7</jakarta-mail.version>
-    <jakarta-management.version>1.1.4</jakarta-management.version>
-    <jakarta-persistence.version>2.2.3</jakarta-persistence.version>
-    <jakarta-servlet-jsp-jstl.version>1.2.7</jakarta-servlet-jsp-jstl.version>
-    <jakarta-servlet.version>4.0.4</jakarta-servlet.version>
-    <jakarta-transaction.version>1.3.3</jakarta-transaction.version>
-    <jakarta-validation.version>2.0.2</jakarta-validation.version>
-    <jakarta-websocket.version>1.1.2</jakarta-websocket.version>
-    <jakarta-ws-rs.version>2.1.6</jakarta-ws-rs.version>
-    <jakarta-xml-bind.version>2.3.3</jakarta-xml-bind.version>
-    <jakarta-xml-soap.version>1.4.2</jakarta-xml-soap.version>
-    <jakarta-xml-ws.version>2.3.3</jakarta-xml-ws.version>
-    <janino.version>3.1.6</janino.version>
-    <java.version>1.8</java.version>
-    <javax-activation.version>1.2.0</javax-activation.version>
-    <javax-annotation.version>1.3.2</javax-annotation.version>
-    <javax-cache.version>1.1.1</javax-cache.version>
-    <javax-jaxb.version>2.3.1</javax-jaxb.version>
-    <javax-jaxws.version>2.3.1</javax-jaxws.version>
-    <javax-jms.version>2.0.1</javax-jms.version>
-    <javax-json.version>1.1.4</javax-json.version>
-    <javax-jsonb.version>1.0</javax-jsonb.version>
-    <javax-mail.version>1.6.2</javax-mail.version>
-    <javax-money.version>1.1</javax-money.version>
-    <javax-persistence.version>2.2</javax-persistence.version>
-    <javax-transaction.version>1.3</javax-transaction.version>
-    <javax-validation.version>2.0.1.Final</javax-validation.version>
-    <javax-websocket.version>1.1</javax-websocket.version>
-    <jaxen.version>1.2.0</jaxen.version>
-    <jaybird.version>4.0.5.java8</jaybird.version>
-    <jboss-logging.version>3.4.3.Final</jboss-logging.version>
-    <jboss-transaction-spi.version>7.6.1.Final</jboss-transaction-spi.version>
-    <jdom2.version>2.0.6.1</jdom2.version>
-    <jedis.version>3.6.3</jedis.version>
-    <jersey.version>2.33</jersey.version>
-    <jetty-el.version>9.0.52</jetty-el.version>
-    <jetty-jsp.version>2.2.0.v201112011158</jetty-jsp.version>
-    <jetty-reactive-httpclient.version>1.1.10</jetty-reactive-httpclient.version>
-    <jetty.version>9.4.44.v20210927</jetty.version>
-    <jmustache.version>1.15</jmustache.version>
-    <johnzon.version>1.2.15</johnzon.version>
-    <jolokia.version>1.6.2</jolokia.version>
-    <jooq.version>3.14.15</jooq.version>
-    <json-path.version>2.5.0</json-path.version>
-    <json-smart.version>2.4.7</json-smart.version>
-    <jsonassert.version>1.5.0</jsonassert.version>
-    <jstl.version>1.2</jstl.version>
-    <jtds.version>1.3.1</jtds.version>
-    <junit-jupiter.version>5.7.2</junit-jupiter.version>
-    <junit.version>4.13.2</junit.version>
-    <kafka.version>2.7.2</kafka.version>
-    <kotlin-coroutines.version>1.5.2</kotlin-coroutines.version>
-    <kotlin.version>1.5.32</kotlin.version>
-    <lettuce.version>6.1.6.RELEASE</lettuce.version>
-    <liquibase.version>4.3.5</liquibase.version>
-    <log4j2.version>2.17.1</log4j2.version>
-    <logback.version>1.2.10</logback.version>
-    <lombok.version>1.18.22</lombok.version>
-    <mariadb.version>2.7.5</mariadb.version>
-    <maven-antrun-plugin.version>1.8</maven-antrun-plugin.version>
-    <maven-assembly-plugin.version>3.3.0</maven-assembly-plugin.version>
-    <maven-clean-plugin.version>3.1.0</maven-clean-plugin.version>
-    <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
-    <maven-dependency-plugin.version>3.1.2</maven-dependency-plugin.version>
-    <maven-deploy-plugin.version>2.8.2</maven-deploy-plugin.version>
-    <maven-enforcer-plugin.version>3.0.0</maven-enforcer-plugin.version>
-    <maven-failsafe-plugin.version>2.22.2</maven-failsafe-plugin.version>
-    <maven-help-plugin.version>3.2.0</maven-help-plugin.version>
-    <maven-install-plugin.version>2.5.2</maven-install-plugin.version>
-    <maven-invoker-plugin.version>3.2.2</maven-invoker-plugin.version>
-    <maven-jar-plugin.version>3.2.2</maven-jar-plugin.version>
-    <maven-javadoc-plugin.version>3.2.0</maven-javadoc-plugin.version>
-    <maven-resources-plugin.version>3.2.0</maven-resources-plugin.version>
-    <maven-shade-plugin.version>3.2.4</maven-shade-plugin.version>
-    <maven-source-plugin.version>3.2.1</maven-source-plugin.version>
-    <maven-surefire-plugin.version>2.22.2</maven-surefire-plugin.version>
-    <maven-war-plugin.version>3.3.2</maven-war-plugin.version>
-    <maven.compiler.source>1.8</maven.compiler.source>
-    <maven.compiler.target>1.8</maven.compiler.target>
-    <micrometer.version>1.7.8</micrometer.version>
-    <mimepull.version>1.9.15</mimepull.version>
-    <mockito.version>3.9.0</mockito.version>
-    <mongodb.version>4.2.3</mongodb.version>
-    <mssql-jdbc.version>9.2.1.jre8</mssql-jdbc.version>
-    <mysql.version>8.0.28</mysql.version>
-    <nekohtml.version>1.9.22</nekohtml.version>
-    <neo4j-java-driver.version>4.2.8</neo4j-java-driver.version>
-    <netty-tcnative.version>2.0.47.Final</netty-tcnative.version>
-    <netty.version>4.1.73.Final</netty.version>
-    <nimbus-jose-jwt.version>9.10.1</nimbus-jose-jwt.version>
-    <oauth2-oidc-sdk.version>9.9.1</oauth2-oidc-sdk.version>
-    <ojdbc.version>19.3.0.0</ojdbc.version>
-    <okhttp3.version>3.14.9</okhttp3.version>
-    <oracle-database.version>21.1.0.0</oracle-database.version>
-    <pooled-jms.version>1.2.3</pooled-jms.version>
-    <postgresql.version>42.2.24</postgresql.version>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-    <prometheus-pushgateway.version>0.10.0</prometheus-pushgateway.version>
-    <quartz.version>2.3.2</quartz.version>
-    <querydsl.version>4.4.0</querydsl.version>
-    <r2dbc-bom.version>Arabba-SR12</r2dbc-bom.version>
-    <rabbit-amqp-client.version>5.12.0</rabbit-amqp-client.version>
-    <reactive-streams.version>1.0.3</reactive-streams.version>
-    <reactor-bom.version>2020.0.15</reactor-bom.version>
-    <resource.delimiter>@</resource.delimiter>
-    <rest-assured.version>4.3.3</rest-assured.version>
-    <rsocket.version>1.1.1</rsocket.version>
-    <rxjava-adapter.version>1.2.1</rxjava-adapter.version>
-    <rxjava.version>1.3.8</rxjava.version>
-    <rxjava2.version>2.2.21</rxjava2.version>
-    <saaj-impl.version>1.5.3</saaj-impl.version>
-    <selenium-htmlunit.version>2.49.1</selenium-htmlunit.version>
-    <selenium.version>3.141.59</selenium.version>
-    <sendgrid.version>4.7.6</sendgrid.version>
-    <servlet-api.version>4.0.1</servlet-api.version>
-    <slf4j.version>1.7.33</slf4j.version>
-    <snakeyaml.version>1.28</snakeyaml.version>
-    <solr.version>8.8.2</solr.version>
-    <spring-amqp.version>2.3.14</spring-amqp.version>
-    <spring-batch.version>4.3.4</spring-batch.version>
-    <spring-data-bom.version>2021.0.8</spring-data-bom.version>
-    <spring-framework.version>5.3.15</spring-framework.version>
-    <spring-hateoas.version>1.3.7</spring-hateoas.version>
-    <spring-integration.version>5.5.8</spring-integration.version>
-    <spring-kafka.version>2.7.10</spring-kafka.version>
-    <spring-ldap.version>2.3.5.RELEASE</spring-ldap.version>
-    <spring-restdocs.version>2.0.6.RELEASE</spring-restdocs.version>
-    <spring-retry.version>1.3.1</spring-retry.version>
-    <spring-security.version>5.5.4</spring-security.version>
-    <spring-session-bom.version>2021.0.4</spring-session-bom.version>
-    <spring-ws.version>3.1.2</spring-ws.version>
-    <sqlite-jdbc.version>3.34.0</sqlite-jdbc.version>
-    <sun-mail.version>1.6.7</sun-mail.version>
-    <thymeleaf-extras-data-attribute.version>2.0.1</thymeleaf-extras-data-attribute.version>
-    <thymeleaf-extras-java8time.version>3.0.4.RELEASE</thymeleaf-extras-java8time.version>
-    <thymeleaf-extras-springsecurity.version>3.0.4.RELEASE</thymeleaf-extras-springsecurity.version>
-    <thymeleaf-layout-dialect.version>2.5.3</thymeleaf-layout-dialect.version>
-    <thymeleaf.version>3.0.14.RELEASE</thymeleaf.version>
-    <tomcat.version>9.0.56</tomcat.version>
-    <unboundid-ldapsdk.version>4.0.14</unboundid-ldapsdk.version>
-    <undertow.version>2.2.14.Final</undertow.version>
-    <versions-maven-plugin.version>2.8.1</versions-maven-plugin.version>
-    <webjars-hal-browser.version>3325375</webjars-hal-browser.version>
-    <webjars-locator-core.version>0.46</webjars-locator-core.version>
-    <wsdl4j.version>1.6.3</wsdl4j.version>
-    <xml-maven-plugin.version>1.0.2</xml-maven-plugin.version>
-    <xmlunit2.version>2.8.4</xmlunit2.version>
-  </properties>
-  <dependencyManagement>
-    <dependencies>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-amqp</artifactId>
-        <version>5.16.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-blueprint</artifactId>
-        <version>5.16.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-broker</artifactId>
-        <version>5.16.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-camel</artifactId>
-        <version>5.16.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-client</artifactId>
-        <version>5.16.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-console</artifactId>
-        <version>5.16.3</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>commons-logging</artifactId>
-            <groupId>commons-logging</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-http</artifactId>
-        <version>5.16.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-jaas</artifactId>
-        <version>5.16.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-jdbc-store</artifactId>
-        <version>5.16.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-jms-pool</artifactId>
-        <version>5.16.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-kahadb-store</artifactId>
-        <version>5.16.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-karaf</artifactId>
-        <version>5.16.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-leveldb-store</artifactId>
-        <version>5.16.3</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>commons-logging</artifactId>
-            <groupId>commons-logging</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-log4j-appender</artifactId>
-        <version>5.16.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-mqtt</artifactId>
-        <version>5.16.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-openwire-generator</artifactId>
-        <version>5.16.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-openwire-legacy</artifactId>
-        <version>5.16.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-osgi</artifactId>
-        <version>5.16.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-partition</artifactId>
-        <version>5.16.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-pool</artifactId>
-        <version>5.16.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-ra</artifactId>
-        <version>5.16.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-run</artifactId>
-        <version>5.16.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-runtime-config</artifactId>
-        <version>5.16.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-shiro</artifactId>
-        <version>5.16.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-spring</artifactId>
-        <version>5.16.3</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>commons-logging</artifactId>
-            <groupId>commons-logging</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-stomp</artifactId>
-        <version>5.16.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-web</artifactId>
-        <version>5.16.3</version>
-      </dependency>
-      <dependency>
-        <groupId>antlr</groupId>
-        <artifactId>antlr</artifactId>
-        <version>2.7.7</version>
-      </dependency>
-      <dependency>
-        <groupId>com.google.appengine</groupId>
-        <artifactId>appengine-api-1.0-sdk</artifactId>
-        <version>1.9.93</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>artemis-amqp-protocol</artifactId>
-        <version>2.17.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>artemis-commons</artifactId>
-        <version>2.17.0</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>commons-logging</artifactId>
-            <groupId>commons-logging</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>artemis-core-client</artifactId>
-        <version>2.17.0</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>geronimo-json_1.0_spec</artifactId>
-            <groupId>org.apache.geronimo.specs</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>artemis-jms-client</artifactId>
-        <version>2.17.0</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>geronimo-json_1.0_spec</artifactId>
-            <groupId>org.apache.geronimo.specs</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>artemis-jms-server</artifactId>
-        <version>2.17.0</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>geronimo-json_1.0_spec</artifactId>
-            <groupId>org.apache.geronimo.specs</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>artemis-journal</artifactId>
-        <version>2.17.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>artemis-selector</artifactId>
-        <version>2.17.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>artemis-server</artifactId>
-        <version>2.17.0</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>commons-logging</artifactId>
-            <groupId>commons-logging</groupId>
-          </exclusion>
-          <exclusion>
-            <artifactId>geronimo-json_1.0_spec</artifactId>
-            <groupId>org.apache.geronimo.specs</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>artemis-service-extensions</artifactId>
-        <version>2.17.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.aspectj</groupId>
-        <artifactId>aspectjrt</artifactId>
-        <version>1.9.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.aspectj</groupId>
-        <artifactId>aspectjtools</artifactId>
-        <version>1.9.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.aspectj</groupId>
-        <artifactId>aspectjweaver</artifactId>
-        <version>1.9.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.assertj</groupId>
-        <artifactId>assertj-core</artifactId>
-        <version>3.19.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.atomikos</groupId>
-        <artifactId>transactions-jdbc</artifactId>
-        <version>4.0.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.atomikos</groupId>
-        <artifactId>transactions-jms</artifactId>
-        <version>4.0.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.atomikos</groupId>
-        <artifactId>transactions-jta</artifactId>
-        <version>4.0.6</version>
-      </dependency>
-      <dependency>
-        <groupId>org.awaitility</groupId>
-        <artifactId>awaitility</artifactId>
-        <version>4.0.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.awaitility</groupId>
-        <artifactId>awaitility-groovy</artifactId>
-        <version>4.0.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.awaitility</groupId>
-        <artifactId>awaitility-kotlin</artifactId>
-        <version>4.0.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.awaitility</groupId>
-        <artifactId>awaitility-scala</artifactId>
-        <version>4.0.3</version>
-      </dependency>
-      <dependency>
-        <groupId>net.bytebuddy</groupId>
-        <artifactId>byte-buddy</artifactId>
-        <version>1.10.22</version>
-      </dependency>
-      <dependency>
-        <groupId>net.bytebuddy</groupId>
-        <artifactId>byte-buddy-agent</artifactId>
-        <version>1.10.22</version>
-      </dependency>
-      <dependency>
-        <groupId>com.github.ben-manes.caffeine</groupId>
-        <artifactId>caffeine</artifactId>
-        <version>2.9.3</version>
-      </dependency>
-      <dependency>
-        <groupId>com.github.ben-manes.caffeine</groupId>
-        <artifactId>guava</artifactId>
-        <version>2.9.3</version>
-      </dependency>
-      <dependency>
-        <groupId>com.github.ben-manes.caffeine</groupId>
-        <artifactId>jcache</artifactId>
-        <version>2.9.3</version>
-      </dependency>
-      <dependency>
-        <groupId>com.github.ben-manes.caffeine</groupId>
-        <artifactId>simulator</artifactId>
-        <version>2.9.3</version>
-      </dependency>
-      <dependency>
-        <groupId>com.datastax.oss</groupId>
-        <artifactId>java-driver-core</artifactId>
-        <version>4.11.3</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>jcl-over-slf4j</artifactId>
-            <groupId>org.slf4j</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml</groupId>
-        <artifactId>classmate</artifactId>
-        <version>1.5.1</version>
-      </dependency>
-      <dependency>
-        <groupId>commons-codec</groupId>
-        <artifactId>commons-codec</artifactId>
-        <version>1.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.commons</groupId>
-        <artifactId>commons-dbcp2</artifactId>
-        <version>2.8.0</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>commons-logging</artifactId>
-            <groupId>commons-logging</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.commons</groupId>
-        <artifactId>commons-lang3</artifactId>
-        <version>3.12.0</version>
-      </dependency>
-      <dependency>
-        <groupId>commons-pool</groupId>
-        <artifactId>commons-pool</artifactId>
-        <version>1.6</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.commons</groupId>
-        <artifactId>commons-pool2</artifactId>
-        <version>2.9.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.couchbase.client</groupId>
-        <artifactId>java-client</artifactId>
-        <version>3.1.7</version>
-      </dependency>
-      <dependency>
-        <groupId>com.ibm.db2</groupId>
-        <artifactId>jcc</artifactId>
-        <version>11.5.7.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.spring.gradle</groupId>
-        <artifactId>dependency-management-plugin</artifactId>
-        <version>1.0.11.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.derby</groupId>
-        <artifactId>derby</artifactId>
-        <version>10.14.2.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.derby</groupId>
-        <artifactId>derbyclient</artifactId>
-        <version>10.14.2.0</version>
-      </dependency>
-      <dependency>
-        <groupId>net.sf.ehcache</groupId>
-        <artifactId>ehcache</artifactId>
-        <version>2.10.9.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.ehcache</groupId>
-        <artifactId>ehcache</artifactId>
-        <version>3.9.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.ehcache</groupId>
-        <artifactId>ehcache-clustered</artifactId>
-        <version>3.9.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.ehcache</groupId>
-        <artifactId>ehcache-transactions</artifactId>
-        <version>3.9.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.elasticsearch</groupId>
-        <artifactId>elasticsearch</artifactId>
-        <version>7.12.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.elasticsearch.client</groupId>
-        <artifactId>transport</artifactId>
-        <version>7.12.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.elasticsearch.client</groupId>
-        <artifactId>elasticsearch-rest-client</artifactId>
-        <version>7.12.1</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>commons-logging</artifactId>
-            <groupId>commons-logging</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.elasticsearch.client</groupId>
-        <artifactId>elasticsearch-rest-client-sniffer</artifactId>
-        <version>7.12.1</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>commons-logging</artifactId>
-            <groupId>commons-logging</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.elasticsearch.client</groupId>
-        <artifactId>elasticsearch-rest-high-level-client</artifactId>
-        <version>7.12.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.elasticsearch.distribution.integ-test-zip</groupId>
-        <artifactId>elasticsearch</artifactId>
-        <version>7.12.1</version>
-        <type>zip</type>
-      </dependency>
-      <dependency>
-        <groupId>org.elasticsearch.plugin</groupId>
-        <artifactId>transport-netty4-client</artifactId>
-        <version>7.12.1</version>
-      </dependency>
-      <dependency>
-        <groupId>de.flapdoodle.embed</groupId>
-        <artifactId>de.flapdoodle.embed.mongo</artifactId>
-        <version>3.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.flywaydb</groupId>
-        <artifactId>flyway-core</artifactId>
-        <version>7.7.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.freemarker</groupId>
-        <artifactId>freemarker</artifactId>
-        <version>2.3.31</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish</groupId>
-        <artifactId>jakarta.el</artifactId>
-        <version>3.0.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jaxb</groupId>
-        <artifactId>codemodel</artifactId>
-        <version>2.3.5</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jaxb</groupId>
-        <artifactId>codemodel-annotation-compiler</artifactId>
-        <version>2.3.5</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jaxb</groupId>
-        <artifactId>jaxb-jxc</artifactId>
-        <version>2.3.5</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jaxb</groupId>
-        <artifactId>jaxb-runtime</artifactId>
-        <version>2.3.5</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jaxb</groupId>
-        <artifactId>jaxb-xjc</artifactId>
-        <version>2.3.5</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jaxb</groupId>
-        <artifactId>txw2</artifactId>
-        <version>2.3.5</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jaxb</groupId>
-        <artifactId>txwc2</artifactId>
-        <version>2.3.5</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jaxb</groupId>
-        <artifactId>xsom</artifactId>
-        <version>2.3.5</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.web</groupId>
-        <artifactId>jakarta.servlet.jsp.jstl</artifactId>
-        <version>1.2.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.google.code.gson</groupId>
-        <artifactId>gson</artifactId>
-        <version>2.8.9</version>
-      </dependency>
-      <dependency>
-        <groupId>com.h2database</groupId>
-        <artifactId>h2</artifactId>
-        <version>1.4.200</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hamcrest</groupId>
-        <artifactId>hamcrest</artifactId>
-        <version>2.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hamcrest</groupId>
-        <artifactId>hamcrest-core</artifactId>
-        <version>2.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hamcrest</groupId>
-        <artifactId>hamcrest-library</artifactId>
-        <version>2.2</version>
-      </dependency>
-      <dependency>
-        <groupId>com.hazelcast</groupId>
-        <artifactId>hazelcast</artifactId>
-        <version>4.1.8</version>
-      </dependency>
-      <dependency>
-        <groupId>com.hazelcast</groupId>
-        <artifactId>hazelcast-spring</artifactId>
-        <version>4.1.8</version>
-      </dependency>
-      <dependency>
-        <groupId>com.hazelcast</groupId>
-        <artifactId>hazelcast-hibernate52</artifactId>
-        <version>2.2.1</version>
-      </dependency>
-      <dependency>
-        <groupId>com.hazelcast</groupId>
-        <artifactId>hazelcast-hibernate53</artifactId>
-        <version>2.2.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate</groupId>
-        <artifactId>hibernate-c3p0</artifactId>
-        <version>5.4.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate</groupId>
-        <artifactId>hibernate-core</artifactId>
-        <version>5.4.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate</groupId>
-        <artifactId>hibernate-ehcache</artifactId>
-        <version>5.4.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate</groupId>
-        <artifactId>hibernate-entitymanager</artifactId>
-        <version>5.4.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate</groupId>
-        <artifactId>hibernate-envers</artifactId>
-        <version>5.4.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate</groupId>
-        <artifactId>hibernate-hikaricp</artifactId>
-        <version>5.4.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate</groupId>
-        <artifactId>hibernate-java8</artifactId>
-        <version>5.4.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate</groupId>
-        <artifactId>hibernate-jcache</artifactId>
-        <version>5.4.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate</groupId>
-        <artifactId>hibernate-jpamodelgen</artifactId>
-        <version>5.4.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate</groupId>
-        <artifactId>hibernate-micrometer</artifactId>
-        <version>5.4.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate</groupId>
-        <artifactId>hibernate-proxool</artifactId>
-        <version>5.4.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate</groupId>
-        <artifactId>hibernate-spatial</artifactId>
-        <version>5.4.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate</groupId>
-        <artifactId>hibernate-testing</artifactId>
-        <version>5.4.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate</groupId>
-        <artifactId>hibernate-vibur</artifactId>
-        <version>5.4.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate.validator</groupId>
-        <artifactId>hibernate-validator</artifactId>
-        <version>6.2.0.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate.validator</groupId>
-        <artifactId>hibernate-validator-annotation-processor</artifactId>
-        <version>6.2.0.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>com.zaxxer</groupId>
-        <artifactId>HikariCP</artifactId>
-        <version>4.0.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hsqldb</groupId>
-        <artifactId>hsqldb</artifactId>
-        <version>2.5.2</version>
-      </dependency>
-      <dependency>
-        <groupId>net.sourceforge.htmlunit</groupId>
-        <artifactId>htmlunit</artifactId>
-        <version>2.49.1</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>commons-logging</artifactId>
-            <groupId>commons-logging</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents</groupId>
-        <artifactId>httpasyncclient</artifactId>
-        <version>4.1.5</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>commons-logging</artifactId>
-            <groupId>commons-logging</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents</groupId>
-        <artifactId>fluent-hc</artifactId>
-        <version>4.5.13</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents</groupId>
-        <artifactId>httpclient</artifactId>
-        <version>4.5.13</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>commons-logging</artifactId>
-            <groupId>commons-logging</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents</groupId>
-        <artifactId>httpclient-cache</artifactId>
-        <version>4.5.13</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents</groupId>
-        <artifactId>httpclient-osgi</artifactId>
-        <version>4.5.13</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents</groupId>
-        <artifactId>httpclient-win</artifactId>
-        <version>4.5.13</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents</groupId>
-        <artifactId>httpmime</artifactId>
-        <version>4.5.13</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents.client5</groupId>
-        <artifactId>httpclient5</artifactId>
-        <version>5.0.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents.client5</groupId>
-        <artifactId>httpclient5-cache</artifactId>
-        <version>5.0.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents.client5</groupId>
-        <artifactId>httpclient5-fluent</artifactId>
-        <version>5.0.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents.client5</groupId>
-        <artifactId>httpclient5-win</artifactId>
-        <version>5.0.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents</groupId>
-        <artifactId>httpcore</artifactId>
-        <version>4.4.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents</groupId>
-        <artifactId>httpcore-nio</artifactId>
-        <version>4.4.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents.core5</groupId>
-        <artifactId>httpcore5</artifactId>
-        <version>5.1.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents.core5</groupId>
-        <artifactId>httpcore5-h2</artifactId>
-        <version>5.1.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents.core5</groupId>
-        <artifactId>httpcore5-reactive</artifactId>
-        <version>5.1.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.influxdb</groupId>
-        <artifactId>influxdb-java</artifactId>
-        <version>2.21</version>
-      </dependency>
-      <dependency>
-        <groupId>com.sun.activation</groupId>
-        <artifactId>jakarta.activation</artifactId>
-        <version>1.2.2</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.activation</groupId>
-        <artifactId>jakarta.activation-api</artifactId>
-        <version>1.2.2</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.annotation</groupId>
-        <artifactId>jakarta.annotation-api</artifactId>
-        <version>1.3.5</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.jms</groupId>
-        <artifactId>jakarta.jms-api</artifactId>
-        <version>2.0.3</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.json</groupId>
-        <artifactId>jakarta.json-api</artifactId>
-        <version>1.1.6</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.json.bind</groupId>
-        <artifactId>jakarta.json.bind-api</artifactId>
-        <version>1.0.2</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.mail</groupId>
-        <artifactId>jakarta.mail-api</artifactId>
-        <version>1.6.7</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.management.j2ee</groupId>
-        <artifactId>jakarta.management.j2ee-api</artifactId>
-        <version>1.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.persistence</groupId>
-        <artifactId>jakarta.persistence-api</artifactId>
-        <version>2.2.3</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.servlet</groupId>
-        <artifactId>jakarta.servlet-api</artifactId>
-        <version>4.0.4</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.servlet.jsp.jstl</groupId>
-        <artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
-        <version>1.2.7</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.transaction</groupId>
-        <artifactId>jakarta.transaction-api</artifactId>
-        <version>1.3.3</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.validation</groupId>
-        <artifactId>jakarta.validation-api</artifactId>
-        <version>2.0.2</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.websocket</groupId>
-        <artifactId>jakarta.websocket-api</artifactId>
-        <version>1.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.ws.rs</groupId>
-        <artifactId>jakarta.ws.rs-api</artifactId>
-        <version>2.1.6</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.xml.bind</groupId>
-        <artifactId>jakarta.xml.bind-api</artifactId>
-        <version>2.3.3</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.xml.soap</groupId>
-        <artifactId>jakarta.xml.soap-api</artifactId>
-        <version>1.4.2</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.xml.ws</groupId>
-        <artifactId>jakarta.xml.ws-api</artifactId>
-        <version>2.3.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.janino</groupId>
-        <artifactId>commons-compiler</artifactId>
-        <version>3.1.6</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.janino</groupId>
-        <artifactId>commons-compiler-jdk</artifactId>
-        <version>3.1.6</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.janino</groupId>
-        <artifactId>janino</artifactId>
-        <version>3.1.6</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.activation</groupId>
-        <artifactId>javax.activation-api</artifactId>
-        <version>1.2.0</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.annotation</groupId>
-        <artifactId>javax.annotation-api</artifactId>
-        <version>1.3.2</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.cache</groupId>
-        <artifactId>cache-api</artifactId>
-        <version>1.1.1</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.xml.bind</groupId>
-        <artifactId>jaxb-api</artifactId>
-        <version>2.3.1</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.xml.ws</groupId>
-        <artifactId>jaxws-api</artifactId>
-        <version>2.3.1</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.jms</groupId>
-        <artifactId>javax.jms-api</artifactId>
-        <version>2.0.1</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.json</groupId>
-        <artifactId>javax.json-api</artifactId>
-        <version>1.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.json.bind</groupId>
-        <artifactId>javax.json.bind-api</artifactId>
-        <version>1.0</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.mail</groupId>
-        <artifactId>javax.mail-api</artifactId>
-        <version>1.6.2</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.money</groupId>
-        <artifactId>money-api</artifactId>
-        <version>1.1</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.persistence</groupId>
-        <artifactId>javax.persistence-api</artifactId>
-        <version>2.2</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.transaction</groupId>
-        <artifactId>javax.transaction-api</artifactId>
-        <version>1.3</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.validation</groupId>
-        <artifactId>validation-api</artifactId>
-        <version>2.0.1.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.websocket</groupId>
-        <artifactId>javax.websocket-api</artifactId>
-        <version>1.1</version>
-      </dependency>
-      <dependency>
-        <groupId>jaxen</groupId>
-        <artifactId>jaxen</artifactId>
-        <version>1.2.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.firebirdsql.jdbc</groupId>
-        <artifactId>jaybird</artifactId>
-        <version>4.0.5.java8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.firebirdsql.jdbc</groupId>
-        <artifactId>jaybird-jdk18</artifactId>
-        <version>4.0.5.java8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jboss.logging</groupId>
-        <artifactId>jboss-logging</artifactId>
-        <version>3.4.3.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jboss</groupId>
-        <artifactId>jboss-transaction-spi</artifactId>
-        <version>7.6.1.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jdom</groupId>
-        <artifactId>jdom2</artifactId>
-        <version>2.0.6.1</version>
-      </dependency>
-      <dependency>
-        <groupId>redis.clients</groupId>
-        <artifactId>jedis</artifactId>
-        <version>3.6.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.mortbay.jasper</groupId>
-        <artifactId>apache-el</artifactId>
-        <version>9.0.52</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.orbit</groupId>
-        <artifactId>javax.servlet.jsp</artifactId>
-        <version>2.2.0.v201112011158</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-reactive-httpclient</artifactId>
-        <version>1.1.10</version>
-      </dependency>
-      <dependency>
-        <groupId>com.samskivert</groupId>
-        <artifactId>jmustache</artifactId>
-        <version>1.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.johnzon</groupId>
-        <artifactId>johnzon-core</artifactId>
-        <version>1.2.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.johnzon</groupId>
-        <artifactId>johnzon-jaxrs</artifactId>
-        <version>1.2.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.johnzon</groupId>
-        <artifactId>johnzon-jsonb</artifactId>
-        <version>1.2.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.johnzon</groupId>
-        <artifactId>johnzon-jsonb-extras</artifactId>
-        <version>1.2.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.johnzon</groupId>
-        <artifactId>johnzon-jsonschema</artifactId>
-        <version>1.2.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.johnzon</groupId>
-        <artifactId>johnzon-mapper</artifactId>
-        <version>1.2.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.johnzon</groupId>
-        <artifactId>johnzon-websocket</artifactId>
-        <version>1.2.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jolokia</groupId>
-        <artifactId>jolokia-core</artifactId>
-        <version>1.6.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jooq</groupId>
-        <artifactId>jooq</artifactId>
-        <version>3.14.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jooq</groupId>
-        <artifactId>jooq-codegen</artifactId>
-        <version>3.14.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jooq</groupId>
-        <artifactId>jooq-kotlin</artifactId>
-        <version>3.14.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jooq</groupId>
-        <artifactId>jooq-meta</artifactId>
-        <version>3.14.15</version>
-      </dependency>
-      <dependency>
-        <groupId>com.jayway.jsonpath</groupId>
-        <artifactId>json-path</artifactId>
-        <version>2.5.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.jayway.jsonpath</groupId>
-        <artifactId>json-path-assert</artifactId>
-        <version>2.5.0</version>
-      </dependency>
-      <dependency>
-        <groupId>net.minidev</groupId>
-        <artifactId>json-smart</artifactId>
-        <version>2.4.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.skyscreamer</groupId>
-        <artifactId>jsonassert</artifactId>
-        <version>1.5.0</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.servlet</groupId>
-        <artifactId>jstl</artifactId>
-        <version>1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>net.sourceforge.jtds</groupId>
-        <artifactId>jtds</artifactId>
-        <version>1.3.1</version>
-      </dependency>
-      <dependency>
-        <groupId>junit</groupId>
-        <artifactId>junit</artifactId>
-        <version>4.13.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>connect-api</artifactId>
-        <version>2.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>connect-basic-auth-extension</artifactId>
-        <version>2.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>connect-file</artifactId>
-        <version>2.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>connect-json</artifactId>
-        <version>2.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>connect-runtime</artifactId>
-        <version>2.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>connect-transforms</artifactId>
-        <version>2.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>kafka-clients</artifactId>
-        <version>2.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>kafka-log4j-appender</artifactId>
-        <version>2.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>kafka-streams</artifactId>
-        <version>2.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>kafka-streams-scala_2.12</artifactId>
-        <version>2.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>kafka-streams-scala_2.13</artifactId>
-        <version>2.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>kafka-streams-test-utils</artifactId>
-        <version>2.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>kafka-tools</artifactId>
-        <version>2.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>kafka_2.12</artifactId>
-        <version>2.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>kafka_2.13</artifactId>
-        <version>2.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>io.lettuce</groupId>
-        <artifactId>lettuce-core</artifactId>
-        <version>6.1.6.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>org.liquibase</groupId>
-        <artifactId>liquibase-core</artifactId>
-        <version>4.3.5</version>
-      </dependency>
-      <dependency>
-        <groupId>ch.qos.logback</groupId>
-        <artifactId>logback-access</artifactId>
-        <version>1.2.10</version>
-      </dependency>
-      <dependency>
-        <groupId>ch.qos.logback</groupId>
-        <artifactId>logback-classic</artifactId>
-        <version>1.2.10</version>
-      </dependency>
-      <dependency>
-        <groupId>ch.qos.logback</groupId>
-        <artifactId>logback-core</artifactId>
-        <version>1.2.10</version>
-      </dependency>
-      <dependency>
-        <groupId>org.projectlombok</groupId>
-        <artifactId>lombok</artifactId>
-        <version>1.18.22</version>
-      </dependency>
-      <dependency>
-        <groupId>org.mariadb.jdbc</groupId>
-        <artifactId>mariadb-java-client</artifactId>
-        <version>2.7.5</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-stackdriver</artifactId>
-        <version>1.7.8</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>javax.annotation-api</artifactId>
-            <groupId>javax.annotation</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.jvnet.mimepull</groupId>
-        <artifactId>mimepull</artifactId>
-        <version>1.9.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.mockito</groupId>
-        <artifactId>mockito-core</artifactId>
-        <version>3.9.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.mockito</groupId>
-        <artifactId>mockito-inline</artifactId>
-        <version>3.9.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.mockito</groupId>
-        <artifactId>mockito-junit-jupiter</artifactId>
-        <version>3.9.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.mongodb</groupId>
-        <artifactId>bson</artifactId>
-        <version>4.2.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.mongodb</groupId>
-        <artifactId>mongodb-driver-core</artifactId>
-        <version>4.2.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.mongodb</groupId>
-        <artifactId>mongodb-driver-legacy</artifactId>
-        <version>4.2.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.mongodb</groupId>
-        <artifactId>mongodb-driver-reactivestreams</artifactId>
-        <version>4.2.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.mongodb</groupId>
-        <artifactId>mongodb-driver-sync</artifactId>
-        <version>4.2.3</version>
-      </dependency>
-      <dependency>
-        <groupId>com.microsoft.sqlserver</groupId>
-        <artifactId>mssql-jdbc</artifactId>
-        <version>9.2.1.jre8</version>
-      </dependency>
-      <dependency>
-        <groupId>mysql</groupId>
-        <artifactId>mysql-connector-java</artifactId>
-        <version>8.0.28</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>protobuf-java</artifactId>
-            <groupId>com.google.protobuf</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>net.sourceforge.nekohtml</groupId>
-        <artifactId>nekohtml</artifactId>
-        <version>1.9.22</version>
-      </dependency>
-      <dependency>
-        <groupId>org.neo4j.driver</groupId>
-        <artifactId>neo4j-java-driver</artifactId>
-        <version>4.2.8</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-tcnative</artifactId>
-        <version>2.0.47.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-tcnative-boringssl-static</artifactId>
-        <version>2.0.47.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>com.nimbusds</groupId>
-        <artifactId>oauth2-oidc-sdk</artifactId>
-        <version>9.9.1</version>
-      </dependency>
-      <dependency>
-        <groupId>com.nimbusds</groupId>
-        <artifactId>nimbus-jose-jwt</artifactId>
-        <version>9.10.1</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.ojdbc</groupId>
-        <artifactId>dms</artifactId>
-        <version>19.3.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.ojdbc</groupId>
-        <artifactId>ojdbc10</artifactId>
-        <version>19.3.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.ojdbc</groupId>
-        <artifactId>ojdbc10_g</artifactId>
-        <version>19.3.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.ojdbc</groupId>
-        <artifactId>ojdbc10dms</artifactId>
-        <version>19.3.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.ojdbc</groupId>
-        <artifactId>ojdbc10dms_g</artifactId>
-        <version>19.3.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.ojdbc</groupId>
-        <artifactId>ojdbc8</artifactId>
-        <version>19.3.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.ojdbc</groupId>
-        <artifactId>ojdbc8_g</artifactId>
-        <version>19.3.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.ojdbc</groupId>
-        <artifactId>ojdbc8dms</artifactId>
-        <version>19.3.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.ojdbc</groupId>
-        <artifactId>ojdbc8dms_g</artifactId>
-        <version>19.3.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.ojdbc</groupId>
-        <artifactId>ons</artifactId>
-        <version>19.3.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.ojdbc</groupId>
-        <artifactId>oraclepki</artifactId>
-        <version>19.3.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.ojdbc</groupId>
-        <artifactId>orai18n</artifactId>
-        <version>19.3.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.ojdbc</groupId>
-        <artifactId>osdt_cert</artifactId>
-        <version>19.3.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.ojdbc</groupId>
-        <artifactId>osdt_core</artifactId>
-        <version>19.3.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.ojdbc</groupId>
-        <artifactId>simplefan</artifactId>
-        <version>19.3.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.ojdbc</groupId>
-        <artifactId>ucp</artifactId>
-        <version>19.3.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.ojdbc</groupId>
-        <artifactId>xdb</artifactId>
-        <version>19.3.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.ojdbc</groupId>
-        <artifactId>xmlparserv2</artifactId>
-        <version>19.3.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.squareup.okhttp3</groupId>
-        <artifactId>logging-interceptor</artifactId>
-        <version>3.14.9</version>
-      </dependency>
-      <dependency>
-        <groupId>com.squareup.okhttp3</groupId>
-        <artifactId>mockwebserver</artifactId>
-        <version>3.14.9</version>
-      </dependency>
-      <dependency>
-        <groupId>com.squareup.okhttp3</groupId>
-        <artifactId>okcurl</artifactId>
-        <version>3.14.9</version>
-      </dependency>
-      <dependency>
-        <groupId>com.squareup.okhttp3</groupId>
-        <artifactId>okhttp</artifactId>
-        <version>3.14.9</version>
-      </dependency>
-      <dependency>
-        <groupId>com.squareup.okhttp3</groupId>
-        <artifactId>okhttp-dnsoverhttps</artifactId>
-        <version>3.14.9</version>
-      </dependency>
-      <dependency>
-        <groupId>com.squareup.okhttp3</groupId>
-        <artifactId>okhttp-sse</artifactId>
-        <version>3.14.9</version>
-      </dependency>
-      <dependency>
-        <groupId>com.squareup.okhttp3</groupId>
-        <artifactId>okhttp-testing-support</artifactId>
-        <version>3.14.9</version>
-      </dependency>
-      <dependency>
-        <groupId>com.squareup.okhttp3</groupId>
-        <artifactId>okhttp-tls</artifactId>
-        <version>3.14.9</version>
-      </dependency>
-      <dependency>
-        <groupId>com.squareup.okhttp3</groupId>
-        <artifactId>okhttp-urlconnection</artifactId>
-        <version>3.14.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.messaginghub</groupId>
-        <artifactId>pooled-jms</artifactId>
-        <version>1.2.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.postgresql</groupId>
-        <artifactId>postgresql</artifactId>
-        <version>42.2.24</version>
-      </dependency>
-      <dependency>
-        <groupId>org.quartz-scheduler</groupId>
-        <artifactId>quartz</artifactId>
-        <version>2.3.2</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>c3p0</artifactId>
-            <groupId>com.mchange</groupId>
-          </exclusion>
-          <exclusion>
-            <artifactId>*</artifactId>
-            <groupId>com.zaxxer</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.quartz-scheduler</groupId>
-        <artifactId>quartz-jobs</artifactId>
-        <version>2.3.2</version>
-      </dependency>
-      <dependency>
-        <groupId>com.querydsl</groupId>
-        <artifactId>querydsl-apt</artifactId>
-        <version>4.4.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.querydsl</groupId>
-        <artifactId>querydsl-collections</artifactId>
-        <version>4.4.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.querydsl</groupId>
-        <artifactId>querydsl-core</artifactId>
-        <version>4.4.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.querydsl</groupId>
-        <artifactId>querydsl-jpa</artifactId>
-        <version>4.4.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.querydsl</groupId>
-        <artifactId>querydsl-mongodb</artifactId>
-        <version>4.4.0</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>mongo-java-driver</artifactId>
-            <groupId>org.mongodb</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>com.rabbitmq</groupId>
-        <artifactId>amqp-client</artifactId>
-        <version>5.12.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.reactivestreams</groupId>
-        <artifactId>reactive-streams</artifactId>
-        <version>1.0.3</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rest-assured</groupId>
-        <artifactId>json-path</artifactId>
-        <version>4.3.3</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rest-assured</groupId>
-        <artifactId>json-schema-validator</artifactId>
-        <version>4.3.3</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rest-assured</groupId>
-        <artifactId>rest-assured</artifactId>
-        <version>4.3.3</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rest-assured</groupId>
-        <artifactId>scala-support</artifactId>
-        <version>4.3.3</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rest-assured</groupId>
-        <artifactId>spring-mock-mvc</artifactId>
-        <version>4.3.3</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rest-assured</groupId>
-        <artifactId>spring-web-test-client</artifactId>
-        <version>4.3.3</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rest-assured</groupId>
-        <artifactId>xml-path</artifactId>
-        <version>4.3.3</version>
-      </dependency>
-      <dependency>
-        <groupId>io.reactivex</groupId>
-        <artifactId>rxjava</artifactId>
-        <version>1.3.8</version>
-      </dependency>
-      <dependency>
-        <groupId>io.reactivex</groupId>
-        <artifactId>rxjava-reactive-streams</artifactId>
-        <version>1.2.1</version>
-      </dependency>
-      <dependency>
-        <groupId>io.reactivex.rxjava2</groupId>
-        <artifactId>rxjava</artifactId>
-        <version>2.2.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-test</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-test-autoconfigure</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-actuator</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-actuator-autoconfigure</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-autoconfigure</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-autoconfigure-processor</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-buildpack-platform</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-configuration-metadata</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-configuration-processor</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-devtools</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-jarmode-layertools</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-loader</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-loader-tools</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-properties-migrator</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-activemq</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-actuator</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-amqp</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-aop</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-artemis</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-batch</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-cache</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-cassandra</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-cassandra-reactive</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-couchbase</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-couchbase-reactive</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-jdbc</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-jpa</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-ldap</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-mongodb</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-mongodb-reactive</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-r2dbc</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-redis</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-redis-reactive</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-neo4j</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-rest</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-freemarker</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-groovy-templates</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-hateoas</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-integration</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-jdbc</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-jersey</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-jetty</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-jooq</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-json</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-jta-atomikos</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-log4j2</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-logging</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-mail</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-mustache</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-oauth2-client</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-quartz</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-reactor-netty</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-rsocket</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-security</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-test</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-thymeleaf</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-tomcat</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-undertow</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-validation</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-web</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-webflux</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-websocket</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-web-services</artifactId>
-        <version>2.5.9</version>
-      </dependency>
-      <dependency>
-        <groupId>com.sun.xml.messaging.saaj</groupId>
-        <artifactId>saaj-impl</artifactId>
-        <version>1.5.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-api</artifactId>
-        <version>3.141.59</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-chrome-driver</artifactId>
-        <version>3.141.59</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-edge-driver</artifactId>
-        <version>3.141.59</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-firefox-driver</artifactId>
-        <version>3.141.59</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-ie-driver</artifactId>
-        <version>3.141.59</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-java</artifactId>
-        <version>3.141.59</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-opera-driver</artifactId>
-        <version>3.141.59</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-remote-driver</artifactId>
-        <version>3.141.59</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-safari-driver</artifactId>
-        <version>3.141.59</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-support</artifactId>
-        <version>3.141.59</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>htmlunit-driver</artifactId>
-        <version>2.49.1</version>
-      </dependency>
-      <dependency>
-        <groupId>com.sendgrid</groupId>
-        <artifactId>sendgrid-java</artifactId>
-        <version>4.7.6</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.servlet</groupId>
-        <artifactId>javax.servlet-api</artifactId>
-        <version>4.0.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>jcl-over-slf4j</artifactId>
-        <version>1.7.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>jul-to-slf4j</artifactId>
-        <version>1.7.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>log4j-over-slf4j</artifactId>
-        <version>1.7.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>slf4j-api</artifactId>
-        <version>1.7.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>slf4j-ext</artifactId>
-        <version>1.7.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>slf4j-jcl</artifactId>
-        <version>1.7.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>slf4j-jdk14</artifactId>
-        <version>1.7.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>slf4j-log4j12</artifactId>
-        <version>1.7.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>slf4j-nop</artifactId>
-        <version>1.7.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>slf4j-simple</artifactId>
-        <version>1.7.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.yaml</groupId>
-        <artifactId>snakeyaml</artifactId>
-        <version>1.28</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.solr</groupId>
-        <artifactId>solr-analysis-extras</artifactId>
-        <version>8.8.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.solr</groupId>
-        <artifactId>solr-analytics</artifactId>
-        <version>8.8.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.solr</groupId>
-        <artifactId>solr-cell</artifactId>
-        <version>8.8.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.solr</groupId>
-        <artifactId>solr-core</artifactId>
-        <version>8.8.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.solr</groupId>
-        <artifactId>solr-dataimporthandler</artifactId>
-        <version>8.8.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.solr</groupId>
-        <artifactId>solr-dataimporthandler-extras</artifactId>
-        <version>8.8.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.solr</groupId>
-        <artifactId>solr-langid</artifactId>
-        <version>8.8.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.solr</groupId>
-        <artifactId>solr-ltr</artifactId>
-        <version>8.8.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.solr</groupId>
-        <artifactId>solr-solrj</artifactId>
-        <version>8.8.2</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>jcl-over-slf4j</artifactId>
-            <groupId>org.slf4j</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.solr</groupId>
-        <artifactId>solr-test-framework</artifactId>
-        <version>8.8.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.solr</groupId>
-        <artifactId>solr-velocity</artifactId>
-        <version>8.8.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.amqp</groupId>
-        <artifactId>spring-amqp</artifactId>
-        <version>2.3.14</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.amqp</groupId>
-        <artifactId>spring-rabbit</artifactId>
-        <version>2.3.14</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.amqp</groupId>
-        <artifactId>spring-rabbit-junit</artifactId>
-        <version>2.3.14</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.amqp</groupId>
-        <artifactId>spring-rabbit-test</artifactId>
-        <version>2.3.14</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.batch</groupId>
-        <artifactId>spring-batch-core</artifactId>
-        <version>4.3.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.batch</groupId>
-        <artifactId>spring-batch-infrastructure</artifactId>
-        <version>4.3.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.batch</groupId>
-        <artifactId>spring-batch-integration</artifactId>
-        <version>4.3.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.batch</groupId>
-        <artifactId>spring-batch-test</artifactId>
-        <version>4.3.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.hateoas</groupId>
-        <artifactId>spring-hateoas</artifactId>
-        <version>1.3.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.kafka</groupId>
-        <artifactId>spring-kafka</artifactId>
-        <version>2.7.10</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.kafka</groupId>
-        <artifactId>spring-kafka-test</artifactId>
-        <version>2.7.10</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.ldap</groupId>
-        <artifactId>spring-ldap-core</artifactId>
-        <version>2.3.5.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.ldap</groupId>
-        <artifactId>spring-ldap-core-tiger</artifactId>
-        <version>2.3.5.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.ldap</groupId>
-        <artifactId>spring-ldap-ldif-batch</artifactId>
-        <version>2.3.5.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.ldap</groupId>
-        <artifactId>spring-ldap-ldif-core</artifactId>
-        <version>2.3.5.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.ldap</groupId>
-        <artifactId>spring-ldap-odm</artifactId>
-        <version>2.3.5.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.ldap</groupId>
-        <artifactId>spring-ldap-test</artifactId>
-        <version>2.3.5.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.restdocs</groupId>
-        <artifactId>spring-restdocs-asciidoctor</artifactId>
-        <version>2.0.6.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.restdocs</groupId>
-        <artifactId>spring-restdocs-core</artifactId>
-        <version>2.0.6.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.restdocs</groupId>
-        <artifactId>spring-restdocs-mockmvc</artifactId>
-        <version>2.0.6.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.restdocs</groupId>
-        <artifactId>spring-restdocs-restassured</artifactId>
-        <version>2.0.6.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.restdocs</groupId>
-        <artifactId>spring-restdocs-webtestclient</artifactId>
-        <version>2.0.6.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.retry</groupId>
-        <artifactId>spring-retry</artifactId>
-        <version>1.3.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.ws</groupId>
-        <artifactId>spring-ws-core</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.ws</groupId>
-        <artifactId>spring-ws-security</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.ws</groupId>
-        <artifactId>spring-ws-support</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.ws</groupId>
-        <artifactId>spring-ws-test</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.ws</groupId>
-        <artifactId>spring-xml</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.xerial</groupId>
-        <artifactId>sqlite-jdbc</artifactId>
-        <version>3.34.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.sun.mail</groupId>
-        <artifactId>jakarta.mail</artifactId>
-        <version>1.6.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.thymeleaf</groupId>
-        <artifactId>thymeleaf</artifactId>
-        <version>3.0.14.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>org.thymeleaf</groupId>
-        <artifactId>thymeleaf-spring5</artifactId>
-        <version>3.0.14.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>com.github.mxab.thymeleaf.extras</groupId>
-        <artifactId>thymeleaf-extras-data-attribute</artifactId>
-        <version>2.0.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.thymeleaf.extras</groupId>
-        <artifactId>thymeleaf-extras-java8time</artifactId>
-        <version>3.0.4.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>org.thymeleaf.extras</groupId>
-        <artifactId>thymeleaf-extras-springsecurity5</artifactId>
-        <version>3.0.4.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>nz.net.ultraq.thymeleaf</groupId>
-        <artifactId>thymeleaf-layout-dialect</artifactId>
-        <version>2.5.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.tomcat</groupId>
-        <artifactId>tomcat-annotations-api</artifactId>
-        <version>9.0.56</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.tomcat</groupId>
-        <artifactId>tomcat-jdbc</artifactId>
-        <version>9.0.56</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.tomcat</groupId>
-        <artifactId>tomcat-jsp-api</artifactId>
-        <version>9.0.56</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.tomcat.embed</groupId>
-        <artifactId>tomcat-embed-core</artifactId>
-        <version>9.0.56</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.tomcat.embed</groupId>
-        <artifactId>tomcat-embed-el</artifactId>
-        <version>9.0.56</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.tomcat.embed</groupId>
-        <artifactId>tomcat-embed-jasper</artifactId>
-        <version>9.0.56</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.tomcat.embed</groupId>
-        <artifactId>tomcat-embed-websocket</artifactId>
-        <version>9.0.56</version>
-      </dependency>
-      <dependency>
-        <groupId>com.unboundid</groupId>
-        <artifactId>unboundid-ldapsdk</artifactId>
-        <version>4.0.14</version>
-      </dependency>
-      <dependency>
-        <groupId>io.undertow</groupId>
-        <artifactId>undertow-core</artifactId>
-        <version>2.2.14.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.undertow</groupId>
-        <artifactId>undertow-servlet</artifactId>
-        <version>2.2.14.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.undertow</groupId>
-        <artifactId>undertow-websockets-jsr</artifactId>
-        <version>2.2.14.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.webjars</groupId>
-        <artifactId>hal-browser</artifactId>
-        <version>3325375</version>
-      </dependency>
-      <dependency>
-        <groupId>org.webjars</groupId>
-        <artifactId>webjars-locator-core</artifactId>
-        <version>0.46</version>
-      </dependency>
-      <dependency>
-        <groupId>wsdl4j</groupId>
-        <artifactId>wsdl4j</artifactId>
-        <version>1.6.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.xmlunit</groupId>
-        <artifactId>xmlunit-assertj</artifactId>
-        <version>2.8.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.xmlunit</groupId>
-        <artifactId>xmlunit-core</artifactId>
-        <version>2.8.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.xmlunit</groupId>
-        <artifactId>xmlunit-legacy</artifactId>
-        <version>2.8.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.xmlunit</groupId>
-        <artifactId>xmlunit-matchers</artifactId>
-        <version>2.8.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.xmlunit</groupId>
-        <artifactId>xmlunit-placeholders</artifactId>
-        <version>2.8.4</version>
-      </dependency>
-      <dependency>
-        <groupId>com.datastax.oss</groupId>
-        <artifactId>java-driver-core-shaded</artifactId>
-        <version>4.11.3</version>
-      </dependency>
-      <dependency>
-        <groupId>com.datastax.oss</groupId>
-        <artifactId>java-driver-mapper-processor</artifactId>
-        <version>4.11.3</version>
-      </dependency>
-      <dependency>
-        <groupId>com.datastax.oss</groupId>
-        <artifactId>java-driver-mapper-runtime</artifactId>
-        <version>4.11.3</version>
-      </dependency>
-      <dependency>
-        <groupId>com.datastax.oss</groupId>
-        <artifactId>java-driver-query-builder</artifactId>
-        <version>4.11.3</version>
-      </dependency>
-      <dependency>
-        <groupId>com.datastax.oss</groupId>
-        <artifactId>java-driver-test-infra</artifactId>
-        <version>4.11.3</version>
-      </dependency>
-      <dependency>
-        <groupId>com.datastax.oss</groupId>
-        <artifactId>java-driver-metrics-micrometer</artifactId>
-        <version>4.11.3</version>
-      </dependency>
-      <dependency>
-        <groupId>com.datastax.oss</groupId>
-        <artifactId>java-driver-metrics-microprofile</artifactId>
-        <version>4.11.3</version>
-      </dependency>
-      <dependency>
-        <groupId>com.datastax.oss</groupId>
-        <artifactId>native-protocol</artifactId>
-        <version>1.5.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.datastax.oss</groupId>
-        <artifactId>java-driver-shaded-guava</artifactId>
-        <version>25.1-jre-graal-sub-1</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-annotation</artifactId>
-        <version>4.1.29</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-caffeine</artifactId>
-        <version>4.1.29</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-core</artifactId>
-        <version>4.1.29</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-collectd</artifactId>
-        <version>4.1.29</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-ehcache</artifactId>
-        <version>4.1.29</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-graphite</artifactId>
-        <version>4.1.29</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-healthchecks</artifactId>
-        <version>4.1.29</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-httpclient</artifactId>
-        <version>4.1.29</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-httpasyncclient</artifactId>
-        <version>4.1.29</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-jcache</artifactId>
-        <version>4.1.29</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-jdbi</artifactId>
-        <version>4.1.29</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-jdbi3</artifactId>
-        <version>4.1.29</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-jersey2</artifactId>
-        <version>4.1.29</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-jetty9</artifactId>
-        <version>4.1.29</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-jmx</artifactId>
-        <version>4.1.29</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-json</artifactId>
-        <version>4.1.29</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-jvm</artifactId>
-        <version>4.1.29</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-log4j2</artifactId>
-        <version>4.1.29</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-logback</artifactId>
-        <version>4.1.29</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-servlet</artifactId>
-        <version>4.1.29</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-servlets</artifactId>
-        <version>4.1.29</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy</artifactId>
-        <version>3.0.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-ant</artifactId>
-        <version>3.0.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-astbuilder</artifactId>
-        <version>3.0.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-bsf</artifactId>
-        <version>3.0.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-cli-commons</artifactId>
-        <version>3.0.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-cli-picocli</artifactId>
-        <version>3.0.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-console</artifactId>
-        <version>3.0.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-datetime</artifactId>
-        <version>3.0.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-dateutil</artifactId>
-        <version>3.0.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-docgenerator</artifactId>
-        <version>3.0.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-groovydoc</artifactId>
-        <version>3.0.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-groovysh</artifactId>
-        <version>3.0.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-jaxb</artifactId>
-        <version>3.0.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-jmx</artifactId>
-        <version>3.0.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-json</artifactId>
-        <version>3.0.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-jsr223</artifactId>
-        <version>3.0.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-macro</artifactId>
-        <version>3.0.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-nio</artifactId>
-        <version>3.0.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-servlet</artifactId>
-        <version>3.0.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-sql</artifactId>
-        <version>3.0.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-swing</artifactId>
-        <version>3.0.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-templates</artifactId>
-        <version>3.0.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-test</artifactId>
-        <version>3.0.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-test-junit5</artifactId>
-        <version>3.0.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-testng</artifactId>
-        <version>3.0.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-xml</artifactId>
-        <version>3.0.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-yaml</artifactId>
-        <version>3.0.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-api</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-cachestore-jdbc</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-cachestore-jpa</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-cachestore-remote</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-cachestore-rocksdb</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-cdi-common</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-cdi-embedded</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-cdi-remote</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-checkstyle</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-cli-client</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-client-hotrod</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-client-rest</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-key-value-store-client</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-clustered-counter</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-clustered-lock</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-commons</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-commons-test</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-component-annotations</artifactId>
-        <version>12.1.11.Final</version>
-        <scope>provided</scope>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-component-processor</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-core</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-jboss-marshalling</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-extended-statistics</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-hibernate-cache-commons</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-hibernate-cache-spi</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-hibernate-cache-v51</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-hibernate-cache-v53</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-jcache-commons</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-jcache</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-jcache-remote</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-console</artifactId>
-        <version>0.14.3.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-marshaller-kryo</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-marshaller-kryo-bundle</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-marshaller-protostuff</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-marshaller-protostuff-bundle</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-multimap</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-objectfilter</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-persistence-soft-index</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-query-core</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-query</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-query-dsl</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-remote-query-client</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-remote-query-server</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-scripting</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-server-core</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-server-hotrod</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-server-memcached</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-server-rest</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-server-router</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-server-runtime</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-server-testdriver-core</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-server-testdriver-junit4</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-server-testdriver-junit5</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-spring5-common</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-spring5-embedded</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-spring5-remote</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-spring-boot-starter-embedded</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-spring-boot-starter-remote</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-tasks</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-tasks-api</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-tools</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-anchored-keys</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan.protostream</groupId>
-        <artifactId>protostream</artifactId>
-        <version>4.4.1.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan.protostream</groupId>
-        <artifactId>protostream-types</artifactId>
-        <version>4.4.1.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan.protostream</groupId>
-        <artifactId>protostream-processor</artifactId>
-        <version>4.4.1.Final</version>
-        <scope>provided</scope>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-cloudevents-integration</artifactId>
-        <version>12.1.11.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.core</groupId>
-        <artifactId>jackson-annotations</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.core</groupId>
-        <artifactId>jackson-core</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.core</groupId>
-        <artifactId>jackson-databind</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.dataformat</groupId>
-        <artifactId>jackson-dataformat-avro</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.dataformat</groupId>
-        <artifactId>jackson-dataformat-cbor</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.dataformat</groupId>
-        <artifactId>jackson-dataformat-csv</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.dataformat</groupId>
-        <artifactId>jackson-dataformat-ion</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.dataformat</groupId>
-        <artifactId>jackson-dataformat-properties</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.dataformat</groupId>
-        <artifactId>jackson-dataformat-protobuf</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.dataformat</groupId>
-        <artifactId>jackson-dataformat-smile</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.dataformat</groupId>
-        <artifactId>jackson-dataformat-toml</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.dataformat</groupId>
-        <artifactId>jackson-dataformat-xml</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.dataformat</groupId>
-        <artifactId>jackson-dataformat-yaml</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-eclipse-collections</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-guava</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-hibernate3</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-hibernate4</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-hibernate5</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-hppc</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-jakarta-jsonp</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-jaxrs</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-jaxrs</artifactId>
-        <version>2.12.6</version>
-        <classifier>jakarta</classifier>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-joda</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-joda-money</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-jdk8</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-json-org</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-jsr310</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-jsr353</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-pcollections</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jaxrs</groupId>
-        <artifactId>jackson-jaxrs-base</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jaxrs</groupId>
-        <artifactId>jackson-jaxrs-base</artifactId>
-        <version>2.12.6</version>
-        <classifier>jakarta</classifier>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jaxrs</groupId>
-        <artifactId>jackson-jaxrs-cbor-provider</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jaxrs</groupId>
-        <artifactId>jackson-jaxrs-cbor-provider</artifactId>
-        <version>2.12.6</version>
-        <classifier>jakarta</classifier>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jaxrs</groupId>
-        <artifactId>jackson-jaxrs-json-provider</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jaxrs</groupId>
-        <artifactId>jackson-jaxrs-json-provider</artifactId>
-        <version>2.12.6</version>
-        <classifier>jakarta</classifier>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jaxrs</groupId>
-        <artifactId>jackson-jaxrs-smile-provider</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jaxrs</groupId>
-        <artifactId>jackson-jaxrs-smile-provider</artifactId>
-        <version>2.12.6</version>
-        <classifier>jakarta</classifier>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jaxrs</groupId>
-        <artifactId>jackson-jaxrs-xml-provider</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jaxrs</groupId>
-        <artifactId>jackson-jaxrs-xml-provider</artifactId>
-        <version>2.12.6</version>
-        <classifier>jakarta</classifier>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jaxrs</groupId>
-        <artifactId>jackson-jaxrs-yaml-provider</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jaxrs</groupId>
-        <artifactId>jackson-jaxrs-yaml-provider</artifactId>
-        <version>2.12.6</version>
-        <classifier>jakarta</classifier>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jr</groupId>
-        <artifactId>jackson-jr-all</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jr</groupId>
-        <artifactId>jackson-jr-annotation-support</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jr</groupId>
-        <artifactId>jackson-jr-objects</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jr</groupId>
-        <artifactId>jackson-jr-retrofit2</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jr</groupId>
-        <artifactId>jackson-jr-stree</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-afterburner</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-blackbird</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-guice</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-jaxb-annotations</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-jaxb-annotations</artifactId>
-        <version>2.12.6</version>
-        <classifier>jakarta</classifier>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-jsonSchema</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-kotlin</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-mrbean</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-osgi</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-parameter-names</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-paranamer</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-scala_2.11</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-scala_2.12</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-scala_2.13</artifactId>
-        <version>2.12.6</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.core</groupId>
-        <artifactId>jersey-common</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.core</groupId>
-        <artifactId>jersey-client</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.core</groupId>
-        <artifactId>jersey-server</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.bundles</groupId>
-        <artifactId>jaxrs-ri</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.connectors</groupId>
-        <artifactId>jersey-apache-connector</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.connectors</groupId>
-        <artifactId>jersey-helidon-connector</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.connectors</groupId>
-        <artifactId>jersey-grizzly-connector</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.connectors</groupId>
-        <artifactId>jersey-jetty-connector</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.connectors</groupId>
-        <artifactId>jersey-jdk-connector</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.connectors</groupId>
-        <artifactId>jersey-netty-connector</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.containers</groupId>
-        <artifactId>jersey-container-jetty-http</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.containers</groupId>
-        <artifactId>jersey-container-grizzly2-http</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.containers</groupId>
-        <artifactId>jersey-container-grizzly2-servlet</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.containers</groupId>
-        <artifactId>jersey-container-jetty-servlet</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.containers</groupId>
-        <artifactId>jersey-container-jdk-http</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.containers</groupId>
-        <artifactId>jersey-container-netty-http</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.containers</groupId>
-        <artifactId>jersey-container-servlet</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.containers</groupId>
-        <artifactId>jersey-container-servlet-core</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.containers</groupId>
-        <artifactId>jersey-container-simple-http</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.containers.glassfish</groupId>
-        <artifactId>jersey-gf-ejb</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext</groupId>
-        <artifactId>jersey-bean-validation</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext</groupId>
-        <artifactId>jersey-entity-filtering</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext</groupId>
-        <artifactId>jersey-metainf-services</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext.microprofile</groupId>
-        <artifactId>jersey-mp-config</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext</groupId>
-        <artifactId>jersey-mvc</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext</groupId>
-        <artifactId>jersey-mvc-bean-validation</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext</groupId>
-        <artifactId>jersey-mvc-freemarker</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext</groupId>
-        <artifactId>jersey-mvc-jsp</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext</groupId>
-        <artifactId>jersey-mvc-mustache</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext</groupId>
-        <artifactId>jersey-proxy-client</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext</groupId>
-        <artifactId>jersey-servlet-portability</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext</groupId>
-        <artifactId>jersey-spring4</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext</groupId>
-        <artifactId>jersey-spring5</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext</groupId>
-        <artifactId>jersey-declarative-linking</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext</groupId>
-        <artifactId>jersey-wadl-doclet</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext.cdi</groupId>
-        <artifactId>jersey-weld2-se</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext.cdi</groupId>
-        <artifactId>jersey-cdi1x</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext.cdi</groupId>
-        <artifactId>jersey-cdi1x-transaction</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext.cdi</groupId>
-        <artifactId>jersey-cdi1x-validation</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext.cdi</groupId>
-        <artifactId>jersey-cdi1x-servlet</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext.cdi</groupId>
-        <artifactId>jersey-cdi1x-ban-custom-hk2-binding</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext.rx</groupId>
-        <artifactId>jersey-rx-client-guava</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext.rx</groupId>
-        <artifactId>jersey-rx-client-rxjava</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext.rx</groupId>
-        <artifactId>jersey-rx-client-rxjava2</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext.microprofile</groupId>
-        <artifactId>jersey-mp-rest-client</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.media</groupId>
-        <artifactId>jersey-media-jaxb</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.media</groupId>
-        <artifactId>jersey-media-json-jackson</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.media</groupId>
-        <artifactId>jersey-media-json-jettison</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.media</groupId>
-        <artifactId>jersey-media-json-processing</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.media</groupId>
-        <artifactId>jersey-media-json-binding</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.media</groupId>
-        <artifactId>jersey-media-kryo</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.media</groupId>
-        <artifactId>jersey-media-moxy</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.media</groupId>
-        <artifactId>jersey-media-multipart</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.media</groupId>
-        <artifactId>jersey-media-sse</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.security</groupId>
-        <artifactId>oauth1-client</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.security</groupId>
-        <artifactId>oauth1-server</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.security</groupId>
-        <artifactId>oauth1-signature</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.security</groupId>
-        <artifactId>oauth2-client</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.inject</groupId>
-        <artifactId>jersey-hk2</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.inject</groupId>
-        <artifactId>jersey-cdi2-se</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.test-framework</groupId>
-        <artifactId>jersey-test-framework-core</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.test-framework.providers</groupId>
-        <artifactId>jersey-test-framework-provider-bundle</artifactId>
-        <version>2.33</version>
-        <type>pom</type>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.test-framework.providers</groupId>
-        <artifactId>jersey-test-framework-provider-external</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.test-framework.providers</groupId>
-        <artifactId>jersey-test-framework-provider-grizzly2</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.test-framework.providers</groupId>
-        <artifactId>jersey-test-framework-provider-inmemory</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.test-framework.providers</groupId>
-        <artifactId>jersey-test-framework-provider-jdk-http</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.test-framework.providers</groupId>
-        <artifactId>jersey-test-framework-provider-simple</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.test-framework.providers</groupId>
-        <artifactId>jersey-test-framework-provider-jetty</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.test-framework</groupId>
-        <artifactId>jersey-test-framework-util</artifactId>
-        <version>2.33</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>apache-jsp</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>apache-jstl</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-alpn-client</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-alpn-java-client</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-alpn-java-server</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-alpn-openjdk8-client</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-alpn-openjdk8-server</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-alpn-conscrypt-client</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-alpn-conscrypt-server</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-alpn-server</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-annotations</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-ant</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-client</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-continuation</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-deploy</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-distribution</artifactId>
-        <version>9.4.44.v20210927</version>
-        <type>zip</type>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-distribution</artifactId>
-        <version>9.4.44.v20210927</version>
-        <type>tar.gz</type>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.fcgi</groupId>
-        <artifactId>fcgi-client</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.fcgi</groupId>
-        <artifactId>fcgi-server</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.gcloud</groupId>
-        <artifactId>jetty-gcloud-session-manager</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-home</artifactId>
-        <version>9.4.44.v20210927</version>
-        <type>zip</type>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-home</artifactId>
-        <version>9.4.44.v20210927</version>
-        <type>tar.gz</type>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-http</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.http2</groupId>
-        <artifactId>http2-client</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.http2</groupId>
-        <artifactId>http2-common</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.http2</groupId>
-        <artifactId>http2-hpack</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.http2</groupId>
-        <artifactId>http2-http-client-transport</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.http2</groupId>
-        <artifactId>http2-server</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-http-spi</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>infinispan-common</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>infinispan-remote-query</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>infinispan-embedded-query</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-hazelcast</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-io</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-jaas</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-jaspi</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-jmx</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-jndi</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.memcached</groupId>
-        <artifactId>jetty-memcached-sessions</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-nosql</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.osgi</groupId>
-        <artifactId>jetty-osgi-boot</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.osgi</groupId>
-        <artifactId>jetty-osgi-boot-jsp</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.osgi</groupId>
-        <artifactId>jetty-osgi-boot-warurl</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.osgi</groupId>
-        <artifactId>jetty-httpservice</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-plus</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-proxy</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-quickstart</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-rewrite</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-security</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-openid</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-server</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-servlet</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-servlets</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-spring</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-unixsocket</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-util</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-util-ajax</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-webapp</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.websocket</groupId>
-        <artifactId>javax-websocket-client-impl</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.websocket</groupId>
-        <artifactId>javax-websocket-server-impl</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.websocket</groupId>
-        <artifactId>websocket-api</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.websocket</groupId>
-        <artifactId>websocket-client</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.websocket</groupId>
-        <artifactId>websocket-common</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.websocket</groupId>
-        <artifactId>websocket-server</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.websocket</groupId>
-        <artifactId>websocket-servlet</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-xml</artifactId>
-        <version>9.4.44.v20210927</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.jupiter</groupId>
-        <artifactId>junit-jupiter</artifactId>
-        <version>5.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.jupiter</groupId>
-        <artifactId>junit-jupiter-api</artifactId>
-        <version>5.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.jupiter</groupId>
-        <artifactId>junit-jupiter-engine</artifactId>
-        <version>5.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.jupiter</groupId>
-        <artifactId>junit-jupiter-migrationsupport</artifactId>
-        <version>5.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.jupiter</groupId>
-        <artifactId>junit-jupiter-params</artifactId>
-        <version>5.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.platform</groupId>
-        <artifactId>junit-platform-commons</artifactId>
-        <version>1.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.platform</groupId>
-        <artifactId>junit-platform-console</artifactId>
-        <version>1.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.platform</groupId>
-        <artifactId>junit-platform-engine</artifactId>
-        <version>1.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.platform</groupId>
-        <artifactId>junit-platform-jfr</artifactId>
-        <version>1.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.platform</groupId>
-        <artifactId>junit-platform-launcher</artifactId>
-        <version>1.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.platform</groupId>
-        <artifactId>junit-platform-reporting</artifactId>
-        <version>1.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.platform</groupId>
-        <artifactId>junit-platform-runner</artifactId>
-        <version>1.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.platform</groupId>
-        <artifactId>junit-platform-suite-api</artifactId>
-        <version>1.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.platform</groupId>
-        <artifactId>junit-platform-testkit</artifactId>
-        <version>1.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.vintage</groupId>
-        <artifactId>junit-vintage-engine</artifactId>
-        <version>5.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-stdlib</artifactId>
-        <version>1.5.32</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-stdlib-jdk7</artifactId>
-        <version>1.5.32</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-stdlib-jdk8</artifactId>
-        <version>1.5.32</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-stdlib-js</artifactId>
-        <version>1.5.32</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-stdlib-common</artifactId>
-        <version>1.5.32</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-reflect</artifactId>
-        <version>1.5.32</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-osgi-bundle</artifactId>
-        <version>1.5.32</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-test</artifactId>
-        <version>1.5.32</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-test-junit</artifactId>
-        <version>1.5.32</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-test-junit5</artifactId>
-        <version>1.5.32</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-test-testng</artifactId>
-        <version>1.5.32</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-test-js</artifactId>
-        <version>1.5.32</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-test-common</artifactId>
-        <version>1.5.32</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-test-annotations-common</artifactId>
-        <version>1.5.32</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-main-kts</artifactId>
-        <version>1.5.32</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-script-runtime</artifactId>
-        <version>1.5.32</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-script-util</artifactId>
-        <version>1.5.32</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-scripting-common</artifactId>
-        <version>1.5.32</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-scripting-jvm</artifactId>
-        <version>1.5.32</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-scripting-jvm-host</artifactId>
-        <version>1.5.32</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-scripting-ide-services</artifactId>
-        <version>1.5.32</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-compiler</artifactId>
-        <version>1.5.32</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-compiler-embeddable</artifactId>
-        <version>1.5.32</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-daemon-client</artifactId>
-        <version>1.5.32</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-android</artifactId>
-        <version>1.5.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-core-jvm</artifactId>
-        <version>1.5.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-core</artifactId>
-        <version>1.5.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-debug</artifactId>
-        <version>1.5.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-guava</artifactId>
-        <version>1.5.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-javafx</artifactId>
-        <version>1.5.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-jdk8</artifactId>
-        <version>1.5.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-jdk9</artifactId>
-        <version>1.5.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-play-services</artifactId>
-        <version>1.5.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-reactive</artifactId>
-        <version>1.5.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-reactor</artifactId>
-        <version>1.5.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-rx2</artifactId>
-        <version>1.5.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-rx3</artifactId>
-        <version>1.5.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-slf4j</artifactId>
-        <version>1.5.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-swing</artifactId>
-        <version>1.5.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-test</artifactId>
-        <version>1.5.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-api</artifactId>
-        <version>2.17.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-core</artifactId>
-        <version>2.17.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-layout-template-json</artifactId>
-        <version>2.17.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-1.2-api</artifactId>
-        <version>2.17.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-jcl</artifactId>
-        <version>2.17.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-flume-ng</artifactId>
-        <version>2.17.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-taglib</artifactId>
-        <version>2.17.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-jmx-gui</artifactId>
-        <version>2.17.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-slf4j-impl</artifactId>
-        <version>2.17.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-slf4j18-impl</artifactId>
-        <version>2.17.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-to-slf4j</artifactId>
-        <version>2.17.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-appserver</artifactId>
-        <version>2.17.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-web</artifactId>
-        <version>2.17.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-couchdb</artifactId>
-        <version>2.17.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-mongodb4</artifactId>
-        <version>2.17.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-mongodb3</artifactId>
-        <version>2.17.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-cassandra</artifactId>
-        <version>2.17.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-jpa</artifactId>
-        <version>2.17.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-iostreams</artifactId>
-        <version>2.17.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-jul</artifactId>
-        <version>2.17.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-jpl</artifactId>
-        <version>2.17.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-liquibase</artifactId>
-        <version>2.17.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-docker</artifactId>
-        <version>2.17.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-kubernetes</artifactId>
-        <version>2.17.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-spring-boot</artifactId>
-        <version>2.17.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-spring-cloud-config-client</artifactId>
-        <version>2.17.1</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-core</artifactId>
-        <version>1.7.8</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-jersey2</artifactId>
-        <version>1.7.8</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-appoptics</artifactId>
-        <version>1.7.8</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-atlas</artifactId>
-        <version>1.7.8</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-azure-monitor</artifactId>
-        <version>1.7.8</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-cloudwatch</artifactId>
-        <version>1.7.8</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-cloudwatch2</artifactId>
-        <version>1.7.8</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-datadog</artifactId>
-        <version>1.7.8</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-dynatrace</artifactId>
-        <version>1.7.8</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-elastic</artifactId>
-        <version>1.7.8</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-ganglia</artifactId>
-        <version>1.7.8</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-graphite</artifactId>
-        <version>1.7.8</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-health</artifactId>
-        <version>1.7.8</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-humio</artifactId>
-        <version>1.7.8</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-influx</artifactId>
-        <version>1.7.8</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-jmx</artifactId>
-        <version>1.7.8</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-kairos</artifactId>
-        <version>1.7.8</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-new-relic</artifactId>
-        <version>1.7.8</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-opentsdb</artifactId>
-        <version>1.7.8</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-prometheus</artifactId>
-        <version>1.7.8</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-signalfx</artifactId>
-        <version>1.7.8</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-statsd</artifactId>
-        <version>1.7.8</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-wavefront</artifactId>
-        <version>1.7.8</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-test</artifactId>
-        <version>1.7.8</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-buffer</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-codec</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-codec-dns</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-codec-haproxy</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-codec-http</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-codec-http2</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-codec-memcache</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-codec-mqtt</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-codec-redis</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-codec-smtp</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-codec-socks</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-codec-stomp</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-codec-xml</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-common</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-dev-tools</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-handler</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-handler-proxy</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-resolver</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-resolver-dns</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-rxtx</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-sctp</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-udt</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-example</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-all</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-resolver-dns-classes-macos</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-resolver-dns-native-macos</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-resolver-dns-native-macos</artifactId>
-        <version>4.1.73.Final</version>
-        <classifier>osx-x86_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-resolver-dns-native-macos</artifactId>
-        <version>4.1.73.Final</version>
-        <classifier>osx-aarch_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-native-unix-common</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-native-unix-common</artifactId>
-        <version>4.1.73.Final</version>
-        <classifier>linux-aarch_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-native-unix-common</artifactId>
-        <version>4.1.73.Final</version>
-        <classifier>linux-x86_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-native-unix-common</artifactId>
-        <version>4.1.73.Final</version>
-        <classifier>osx-x86_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-native-unix-common</artifactId>
-        <version>4.1.73.Final</version>
-        <classifier>osx-aarch_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-classes-epoll</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-native-epoll</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-native-epoll</artifactId>
-        <version>4.1.73.Final</version>
-        <classifier>linux-aarch_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-native-epoll</artifactId>
-        <version>4.1.73.Final</version>
-        <classifier>linux-x86_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-classes-kqueue</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-native-kqueue</artifactId>
-        <version>4.1.73.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-native-kqueue</artifactId>
-        <version>4.1.73.Final</version>
-        <classifier>osx-x86_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-native-kqueue</artifactId>
-        <version>4.1.73.Final</version>
-        <classifier>osx-aarch_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-tcnative-classes</artifactId>
-        <version>2.0.46.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-tcnative</artifactId>
-        <version>2.0.46.Final</version>
-        <classifier>linux-x86_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-tcnative</artifactId>
-        <version>2.0.46.Final</version>
-        <classifier>linux-x86_64-fedora</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-tcnative</artifactId>
-        <version>2.0.46.Final</version>
-        <classifier>linux-aarch_64-fedora</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-tcnative</artifactId>
-        <version>2.0.46.Final</version>
-        <classifier>osx-x86_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-tcnative-boringssl-static</artifactId>
-        <version>2.0.46.Final</version>
-        <classifier>linux-x86_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-tcnative-boringssl-static</artifactId>
-        <version>2.0.46.Final</version>
-        <classifier>linux-aarch_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-tcnative-boringssl-static</artifactId>
-        <version>2.0.46.Final</version>
-        <classifier>osx-x86_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-tcnative-boringssl-static</artifactId>
-        <version>2.0.46.Final</version>
-        <classifier>osx-aarch_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-tcnative-boringssl-static</artifactId>
-        <version>2.0.46.Final</version>
-        <classifier>windows-x86_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.jdbc</groupId>
-        <artifactId>ojdbc11</artifactId>
-        <version>21.1.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.jdbc</groupId>
-        <artifactId>ojdbc8</artifactId>
-        <version>21.1.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.jdbc</groupId>
-        <artifactId>ucp</artifactId>
-        <version>21.1.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.jdbc</groupId>
-        <artifactId>rsi</artifactId>
-        <version>21.1.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.security</groupId>
-        <artifactId>oraclepki</artifactId>
-        <version>21.1.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.security</groupId>
-        <artifactId>osdt_core</artifactId>
-        <version>21.1.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.security</groupId>
-        <artifactId>osdt_cert</artifactId>
-        <version>21.1.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.ha</groupId>
-        <artifactId>simplefan</artifactId>
-        <version>21.1.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.ha</groupId>
-        <artifactId>ons</artifactId>
-        <version>21.1.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.nls</groupId>
-        <artifactId>orai18n</artifactId>
-        <version>21.1.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.xml</groupId>
-        <artifactId>xdb</artifactId>
-        <version>21.1.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.xml</groupId>
-        <artifactId>xmlparserv2</artifactId>
-        <version>21.1.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.jdbc.debug</groupId>
-        <artifactId>ojdbc11_g</artifactId>
-        <version>21.1.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.jdbc.debug</groupId>
-        <artifactId>ojdbc8_g</artifactId>
-        <version>21.1.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.jdbc.debug</groupId>
-        <artifactId>ojdbc8dms_g</artifactId>
-        <version>21.1.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.jdbc.debug</groupId>
-        <artifactId>ojdbc11dms_g</artifactId>
-        <version>21.1.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.observability</groupId>
-        <artifactId>dms</artifactId>
-        <version>21.1.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.observability</groupId>
-        <artifactId>ojdbc11dms</artifactId>
-        <version>21.1.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.observability</groupId>
-        <artifactId>ojdbc8dms</artifactId>
-        <version>21.1.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.jdbc</groupId>
-        <artifactId>ojdbc11-production</artifactId>
-        <version>21.1.0.0</version>
-        <type>pom</type>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.jdbc</groupId>
-        <artifactId>ojdbc8-production</artifactId>
-        <version>21.1.0.0</version>
-        <type>pom</type>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.observability</groupId>
-        <artifactId>ojdbc8-observability</artifactId>
-        <version>21.1.0.0</version>
-        <type>pom</type>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.observability</groupId>
-        <artifactId>ojdbc11-observability</artifactId>
-        <version>21.1.0.0</version>
-        <type>pom</type>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.jdbc.debug</groupId>
-        <artifactId>ojdbc8-debug</artifactId>
-        <version>21.1.0.0</version>
-        <type>pom</type>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.jdbc.debug</groupId>
-        <artifactId>ojdbc11-debug</artifactId>
-        <version>21.1.0.0</version>
-        <type>pom</type>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.jdbc.debug</groupId>
-        <artifactId>ojdbc8-observability-debug</artifactId>
-        <version>21.1.0.0</version>
-        <type>pom</type>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.jdbc.debug</groupId>
-        <artifactId>ojdbc11-observability-debug</artifactId>
-        <version>21.1.0.0</version>
-        <type>pom</type>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient</artifactId>
-        <version>0.10.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_common</artifactId>
-        <version>0.10.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_caffeine</artifactId>
-        <version>0.10.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_dropwizard</artifactId>
-        <version>0.10.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_graphite_bridge</artifactId>
-        <version>0.10.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_hibernate</artifactId>
-        <version>0.10.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_guava</artifactId>
-        <version>0.10.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_hotspot</artifactId>
-        <version>0.10.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_httpserver</artifactId>
-        <version>0.10.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_log4j</artifactId>
-        <version>0.10.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_log4j2</artifactId>
-        <version>0.10.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_logback</artifactId>
-        <version>0.10.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_pushgateway</artifactId>
-        <version>0.10.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_servlet</artifactId>
-        <version>0.10.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_spring_web</artifactId>
-        <version>0.10.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_spring_boot</artifactId>
-        <version>0.10.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_jetty</artifactId>
-        <version>0.10.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_jetty_jdk8</artifactId>
-        <version>0.10.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_vertx</artifactId>
-        <version>0.10.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.google.cloud</groupId>
-        <artifactId>cloud-spanner-r2dbc</artifactId>
-        <version>1.1.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.r2dbc</groupId>
-        <artifactId>oracle-r2dbc</artifactId>
-        <version>0.1.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.r2dbc</groupId>
-        <artifactId>r2dbc-h2</artifactId>
-        <version>0.8.5.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>org.mariadb</groupId>
-        <artifactId>r2dbc-mariadb</artifactId>
-        <version>1.0.3</version>
-      </dependency>
-      <dependency>
-        <groupId>io.r2dbc</groupId>
-        <artifactId>r2dbc-mssql</artifactId>
-        <version>0.8.8.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>dev.miku</groupId>
-        <artifactId>r2dbc-mysql</artifactId>
-        <version>0.8.2.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>io.r2dbc</groupId>
-        <artifactId>r2dbc-postgresql</artifactId>
-        <version>0.8.11.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>io.r2dbc</groupId>
-        <artifactId>r2dbc-pool</artifactId>
-        <version>0.8.8.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>io.r2dbc</groupId>
-        <artifactId>r2dbc-proxy</artifactId>
-        <version>0.8.8.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>io.r2dbc</groupId>
-        <artifactId>r2dbc-spi</artifactId>
-        <version>0.8.6.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>io.projectreactor</groupId>
-        <artifactId>reactor-core</artifactId>
-        <version>3.4.14</version>
-      </dependency>
-      <dependency>
-        <groupId>io.projectreactor</groupId>
-        <artifactId>reactor-test</artifactId>
-        <version>3.4.14</version>
-      </dependency>
-      <dependency>
-        <groupId>io.projectreactor</groupId>
-        <artifactId>reactor-tools</artifactId>
-        <version>3.4.14</version>
-      </dependency>
-      <dependency>
-        <groupId>io.projectreactor.addons</groupId>
-        <artifactId>reactor-extra</artifactId>
-        <version>3.4.6</version>
-      </dependency>
-      <dependency>
-        <groupId>io.projectreactor.addons</groupId>
-        <artifactId>reactor-adapter</artifactId>
-        <version>3.4.6</version>
-      </dependency>
-      <dependency>
-        <groupId>io.projectreactor.netty</groupId>
-        <artifactId>reactor-netty</artifactId>
-        <version>1.0.15</version>
-      </dependency>
-      <dependency>
-        <groupId>io.projectreactor.netty</groupId>
-        <artifactId>reactor-netty-core</artifactId>
-        <version>1.0.15</version>
-      </dependency>
-      <dependency>
-        <groupId>io.projectreactor.netty</groupId>
-        <artifactId>reactor-netty-http</artifactId>
-        <version>1.0.15</version>
-      </dependency>
-      <dependency>
-        <groupId>io.projectreactor.netty</groupId>
-        <artifactId>reactor-netty-http-brave</artifactId>
-        <version>1.0.15</version>
-      </dependency>
-      <dependency>
-        <groupId>io.projectreactor.addons</groupId>
-        <artifactId>reactor-pool</artifactId>
-        <version>0.2.7</version>
-      </dependency>
-      <dependency>
-        <groupId>io.projectreactor.kafka</groupId>
-        <artifactId>reactor-kafka</artifactId>
-        <version>1.3.9</version>
-      </dependency>
-      <dependency>
-        <groupId>io.projectreactor.rabbitmq</groupId>
-        <artifactId>reactor-rabbitmq</artifactId>
-        <version>1.5.4</version>
-      </dependency>
-      <dependency>
-        <groupId>io.projectreactor.kotlin</groupId>
-        <artifactId>reactor-kotlin-extensions</artifactId>
-        <version>1.1.5</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rsocket</groupId>
-        <artifactId>rsocket-core</artifactId>
-        <version>1.1.1</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rsocket</groupId>
-        <artifactId>rsocket-load-balancer</artifactId>
-        <version>1.1.1</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rsocket</groupId>
-        <artifactId>rsocket-micrometer</artifactId>
-        <version>1.1.1</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rsocket</groupId>
-        <artifactId>rsocket-test</artifactId>
-        <version>1.1.1</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rsocket</groupId>
-        <artifactId>rsocket-transport-local</artifactId>
-        <version>1.1.1</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rsocket</groupId>
-        <artifactId>rsocket-transport-netty</artifactId>
-        <version>1.1.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-cassandra</artifactId>
-        <version>3.2.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-commons</artifactId>
-        <version>2.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-couchbase</artifactId>
-        <version>4.2.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-elasticsearch</artifactId>
-        <version>4.2.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-geode</artifactId>
-        <version>2.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-jdbc</artifactId>
-        <version>2.2.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-relational</artifactId>
-        <version>2.2.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-jpa</artifactId>
-        <version>2.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-mongodb</artifactId>
-        <version>3.2.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-neo4j</artifactId>
-        <version>6.1.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-r2dbc</artifactId>
-        <version>1.3.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-redis</artifactId>
-        <version>2.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-rest-webmvc</artifactId>
-        <version>3.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-rest-core</artifactId>
-        <version>3.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-rest-hal-explorer</artifactId>
-        <version>3.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-keyvalue</artifactId>
-        <version>2.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-envers</artifactId>
-        <version>2.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-ldap</artifactId>
-        <version>2.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-aop</artifactId>
-        <version>5.3.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-aspects</artifactId>
-        <version>5.3.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-beans</artifactId>
-        <version>5.3.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-context</artifactId>
-        <version>5.3.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-context-indexer</artifactId>
-        <version>5.3.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-context-support</artifactId>
-        <version>5.3.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-core</artifactId>
-        <version>5.3.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-expression</artifactId>
-        <version>5.3.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-instrument</artifactId>
-        <version>5.3.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-jcl</artifactId>
-        <version>5.3.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-jdbc</artifactId>
-        <version>5.3.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-jms</artifactId>
-        <version>5.3.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-messaging</artifactId>
-        <version>5.3.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-orm</artifactId>
-        <version>5.3.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-oxm</artifactId>
-        <version>5.3.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-r2dbc</artifactId>
-        <version>5.3.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-test</artifactId>
-        <version>5.3.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-tx</artifactId>
-        <version>5.3.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-web</artifactId>
-        <version>5.3.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-webflux</artifactId>
-        <version>5.3.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-webmvc</artifactId>
-        <version>5.3.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-websocket</artifactId>
-        <version>5.3.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-amqp</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-core</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-event</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-feed</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-file</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-ftp</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-gemfire</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-groovy</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-http</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-ip</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-jdbc</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-jms</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-jmx</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-jpa</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-kafka</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-mail</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-mongodb</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-mqtt</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-r2dbc</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-redis</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-rmi</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-rsocket</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-scripting</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-security</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-sftp</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-stomp</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-stream</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-syslog</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-test</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-test-support</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-webflux</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-websocket</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-ws</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-xml</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-xmpp</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-zeromq</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-zookeeper</artifactId>
-        <version>5.5.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-acl</artifactId>
-        <version>5.5.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-aspects</artifactId>
-        <version>5.5.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-cas</artifactId>
-        <version>5.5.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-config</artifactId>
-        <version>5.5.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-core</artifactId>
-        <version>5.5.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-crypto</artifactId>
-        <version>5.5.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-data</artifactId>
-        <version>5.5.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-ldap</artifactId>
-        <version>5.5.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-messaging</artifactId>
-        <version>5.5.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-oauth2-client</artifactId>
-        <version>5.5.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-oauth2-core</artifactId>
-        <version>5.5.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-oauth2-jose</artifactId>
-        <version>5.5.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-oauth2-resource-server</artifactId>
-        <version>5.5.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-openid</artifactId>
-        <version>5.5.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-remoting</artifactId>
-        <version>5.5.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-rsocket</artifactId>
-        <version>5.5.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-saml2-service-provider</artifactId>
-        <version>5.5.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-taglibs</artifactId>
-        <version>5.5.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-test</artifactId>
-        <version>5.5.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-web</artifactId>
-        <version>5.5.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.session</groupId>
-        <artifactId>spring-session-jdbc</artifactId>
-        <version>2.5.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.session</groupId>
-        <artifactId>spring-session-data-geode</artifactId>
-        <version>2.5.5</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.session</groupId>
-        <artifactId>spring-session-hazelcast</artifactId>
-        <version>2.5.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.session</groupId>
-        <artifactId>spring-session-data-mongodb</artifactId>
-        <version>2.5.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.session</groupId>
-        <artifactId>spring-session-core</artifactId>
-        <version>2.5.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.session</groupId>
-        <artifactId>spring-session-data-redis</artifactId>
-        <version>2.5.4</version>
-      </dependency>
-    </dependencies>
-  </dependencyManagement>
-  <dependencies>
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter-web</artifactId>
-      <version>2.5.9</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.mybatis.spring.boot</groupId>
-      <artifactId>mybatis-spring-boot-starter</artifactId>
-      <version>2.3.1</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.alibaba</groupId>
-      <artifactId>fastjson</artifactId>
-      <version>1.2.70</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.springframework.data</groupId>
-      <artifactId>spring-data-commons</artifactId>
-      <version>2.3.1.RELEASE</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>mysql</groupId>
-      <artifactId>mysql-connector-java</artifactId>
-      <version>8.0.20</version>
-      <scope>runtime</scope>
-      <exclusions>
-        <exclusion>
-          <artifactId>protobuf-java</artifactId>
-          <groupId>com.google.protobuf</groupId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.projectlombok</groupId>
-      <artifactId>lombok</artifactId>
-      <version>1.18.22</version>
-      <scope>compile</scope>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter-test</artifactId>
-      <version>2.5.9</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.mybatis.spring.boot</groupId>
-      <artifactId>mybatis-spring-boot-starter-test</artifactId>
-      <version>2.3.1</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.auth0</groupId>
-      <artifactId>java-jwt</artifactId>
-      <version>3.10.3</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.assertj</groupId>
-      <artifactId>assertj-core</artifactId>
-      <version>3.19.0</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>cn.hutool</groupId>
-      <artifactId>hutool-all</artifactId>
-      <version>5.4.0</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.baomidou</groupId>
-      <artifactId>mybatis-plus-boot-starter</artifactId>
-      <version>3.5.1</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.baomidou</groupId>
-      <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
-      <version>3.5.1</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>io.springfox</groupId>
-      <artifactId>springfox-swagger2</artifactId>
-      <version>2.9.2</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>io.springfox</groupId>
-      <artifactId>springfox-swagger-ui</artifactId>
-      <version>2.9.2</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>io.swagger</groupId>
-      <artifactId>swagger-annotations</artifactId>
-      <version>1.5.20</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.github.xingshuangs</groupId>
-      <artifactId>iot-communication</artifactId>
-      <version>1.4.2</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter-cache</artifactId>
-      <version>2.5.9</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>io.netty</groupId>
-      <artifactId>netty-all</artifactId>
-      <version>4.1.36.Final</version>
-      <scope>compile</scope>
-    </dependency>
-  </dependencies>
-  <repositories>
-    <repository>
-      <releases>
-        <enabled>true</enabled>
-      </releases>
-      <snapshots>
-        <enabled>false</enabled>
-      </snapshots>
-      <id>nexus-aliyun</id>
-      <name>nexus-aliyun</name>
-      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
-    </repository>
-    <repository>
-      <snapshots>
-        <enabled>false</enabled>
-      </snapshots>
-      <id>central</id>
-      <name>Central Repository</name>
-      <url>https://repo.maven.apache.org/maven2</url>
-    </repository>
-  </repositories>
-  <pluginRepositories>
-    <pluginRepository>
-      <releases>
-        <enabled>true</enabled>
-      </releases>
-      <snapshots>
-        <enabled>false</enabled>
-      </snapshots>
-      <id>public</id>
-      <name>aliyun nexus</name>
-      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
-    </pluginRepository>
-    <pluginRepository>
-      <releases>
-        <updatePolicy>never</updatePolicy>
-      </releases>
-      <snapshots>
-        <enabled>false</enabled>
-      </snapshots>
-      <id>central</id>
-      <name>Central Repository</name>
-      <url>https://repo.maven.apache.org/maven2</url>
-    </pluginRepository>
-  </pluginRepositories>
-  <build>
-    <sourceDirectory>d:\Code\HangZhouMes\UnLoadGlassModule\src\main\java</sourceDirectory>
-    <scriptSourceDirectory>d:\Code\HangZhouMes\UnLoadGlassModule\src\main\scripts</scriptSourceDirectory>
-    <testSourceDirectory>d:\Code\HangZhouMes\UnLoadGlassModule\src\test\java</testSourceDirectory>
-    <outputDirectory>d:\Code\HangZhouMes\UnLoadGlassModule\target\classes</outputDirectory>
-    <testOutputDirectory>d:\Code\HangZhouMes\UnLoadGlassModule\target\test-classes</testOutputDirectory>
-    <resources>
-      <resource>
-        <filtering>true</filtering>
-        <directory>d:\Code\HangZhouMes\UnLoadGlassModule\src\main\resources</directory>
-        <includes>
-          <include>**/application*.yml</include>
-          <include>**/application*.yaml</include>
-          <include>**/application*.properties</include>
-        </includes>
-      </resource>
-      <resource>
-        <directory>d:\Code\HangZhouMes\UnLoadGlassModule\src\main\resources</directory>
-        <excludes>
-          <exclude>**/application*.yml</exclude>
-          <exclude>**/application*.yaml</exclude>
-          <exclude>**/application*.properties</exclude>
-        </excludes>
-      </resource>
-    </resources>
-    <testResources>
-      <testResource>
-        <directory>d:\Code\HangZhouMes\UnLoadGlassModule\src\test\resources</directory>
-      </testResource>
-    </testResources>
-    <directory>d:\Code\HangZhouMes\UnLoadGlassModule\target</directory>
-    <finalName>MES-Module-0.0.1-SNAPSHOT</finalName>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.codehaus.mojo</groupId>
-          <artifactId>build-helper-maven-plugin</artifactId>
-          <version>3.2.0</version>
-        </plugin>
-        <plugin>
-          <groupId>org.flywaydb</groupId>
-          <artifactId>flyway-maven-plugin</artifactId>
-          <version>7.7.3</version>
-        </plugin>
-        <plugin>
-          <groupId>pl.project13.maven</groupId>
-          <artifactId>git-commit-id-plugin</artifactId>
-          <version>4.0.5</version>
-          <executions>
-            <execution>
-              <goals>
-                <goal>revision</goal>
-              </goals>
-              <configuration>
-                <verbose>true</verbose>
-                <dateFormat>yyyy-MM-dd'T'HH:mm:ssZ</dateFormat>
-                <generateGitPropertiesFile>true</generateGitPropertiesFile>
-                <generateGitPropertiesFilename>d:\Code\HangZhouMes\UnLoadGlassModule\target\classes/git.properties</generateGitPropertiesFilename>
-              </configuration>
-            </execution>
-          </executions>
-          <configuration>
-            <verbose>true</verbose>
-            <dateFormat>yyyy-MM-dd'T'HH:mm:ssZ</dateFormat>
-            <generateGitPropertiesFile>true</generateGitPropertiesFile>
-            <generateGitPropertiesFilename>d:\Code\HangZhouMes\UnLoadGlassModule\target\classes/git.properties</generateGitPropertiesFilename>
-          </configuration>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.johnzon</groupId>
-          <artifactId>johnzon-maven-plugin</artifactId>
-          <version>1.2.15</version>
-        </plugin>
-        <plugin>
-          <groupId>org.jooq</groupId>
-          <artifactId>jooq-codegen-maven</artifactId>
-          <version>3.14.15</version>
-        </plugin>
-        <plugin>
-          <groupId>org.jetbrains.kotlin</groupId>
-          <artifactId>kotlin-maven-plugin</artifactId>
-          <version>1.5.32</version>
-          <executions>
-            <execution>
-              <id>compile</id>
-              <phase>compile</phase>
-              <goals>
-                <goal>compile</goal>
-              </goals>
-              <configuration>
-                <jvmTarget>1.8</jvmTarget>
-                <javaParameters>true</javaParameters>
-              </configuration>
-            </execution>
-            <execution>
-              <id>test-compile</id>
-              <phase>test-compile</phase>
-              <goals>
-                <goal>test-compile</goal>
-              </goals>
-              <configuration>
-                <jvmTarget>1.8</jvmTarget>
-                <javaParameters>true</javaParameters>
-              </configuration>
-            </execution>
-          </executions>
-          <configuration>
-            <jvmTarget>1.8</jvmTarget>
-            <javaParameters>true</javaParameters>
-          </configuration>
-        </plugin>
-        <plugin>
-          <groupId>org.liquibase</groupId>
-          <artifactId>liquibase-maven-plugin</artifactId>
-          <version>4.3.5</version>
-        </plugin>
-        <plugin>
-          <artifactId>maven-antrun-plugin</artifactId>
-          <version>1.8</version>
-        </plugin>
-        <plugin>
-          <artifactId>maven-assembly-plugin</artifactId>
-          <version>3.3.0</version>
-        </plugin>
-        <plugin>
-          <artifactId>maven-clean-plugin</artifactId>
-          <version>3.1.0</version>
-        </plugin>
-        <plugin>
-          <artifactId>maven-compiler-plugin</artifactId>
-          <version>3.8.1</version>
-          <configuration>
-            <parameters>true</parameters>
-          </configuration>
-        </plugin>
-        <plugin>
-          <artifactId>maven-dependency-plugin</artifactId>
-          <version>3.1.2</version>
-        </plugin>
-        <plugin>
-          <artifactId>maven-release-plugin</artifactId>
-          <version>2.3.2</version>
-        </plugin>
-        <plugin>
-          <artifactId>maven-deploy-plugin</artifactId>
-          <version>2.8.2</version>
-        </plugin>
-        <plugin>
-          <artifactId>maven-enforcer-plugin</artifactId>
-          <version>3.0.0</version>
-        </plugin>
-        <plugin>
-          <artifactId>maven-failsafe-plugin</artifactId>
-          <version>2.22.2</version>
-          <executions>
-            <execution>
-              <goals>
-                <goal>integration-test</goal>
-                <goal>verify</goal>
-              </goals>
-              <configuration>
-                <classesDirectory>d:\Code\HangZhouMes\UnLoadGlassModule\target\classes</classesDirectory>
-              </configuration>
-            </execution>
-          </executions>
-          <configuration>
-            <classesDirectory>d:\Code\HangZhouMes\UnLoadGlassModule\target\classes</classesDirectory>
-          </configuration>
-        </plugin>
-        <plugin>
-          <artifactId>maven-help-plugin</artifactId>
-          <version>3.2.0</version>
-        </plugin>
-        <plugin>
-          <artifactId>maven-install-plugin</artifactId>
-          <version>2.5.2</version>
-        </plugin>
-        <plugin>
-          <artifactId>maven-invoker-plugin</artifactId>
-          <version>3.2.2</version>
-        </plugin>
-        <plugin>
-          <artifactId>maven-jar-plugin</artifactId>
-          <version>3.2.2</version>
-          <configuration>
-            <archive>
-              <manifest>
-                <mainClass>${start-class}</mainClass>
-                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
-              </manifest>
-            </archive>
-          </configuration>
-        </plugin>
-        <plugin>
-          <artifactId>maven-javadoc-plugin</artifactId>
-          <version>3.2.0</version>
-        </plugin>
-        <plugin>
-          <artifactId>maven-resources-plugin</artifactId>
-          <version>3.2.0</version>
-          <configuration>
-            <propertiesEncoding>UTF-8</propertiesEncoding>
-            <delimiters>
-              <delimiter>@</delimiter>
-            </delimiters>
-            <useDefaultDelimiters>false</useDefaultDelimiters>
-          </configuration>
-        </plugin>
-        <plugin>
-          <artifactId>maven-shade-plugin</artifactId>
-          <version>3.2.4</version>
-          <executions>
-            <execution>
-              <phase>package</phase>
-              <goals>
-                <goal>shade</goal>
-              </goals>
-              <configuration>
-                <transformers>
-                  <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
-                    <resource>META-INF/spring.handlers</resource>
-                  </transformer>
-                  <transformer implementation="org.springframework.boot.maven.PropertiesMergingResourceTransformer">
-                    <resource>META-INF/spring.factories</resource>
-                  </transformer>
-                  <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
-                    <resource>META-INF/spring.schemas</resource>
-                  </transformer>
-                  <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
-                  <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
-                    <mainClass>${start-class}</mainClass>
-                  </transformer>
-                </transformers>
-                <keepDependenciesWithProvidedScope>true</keepDependenciesWithProvidedScope>
-                <createDependencyReducedPom>true</createDependencyReducedPom>
-                <filters>
-                  <filter>
-                    <artifact>*:*</artifact>
-                    <excludes>
-                      <exclude>META-INF/*.SF</exclude>
-                      <exclude>META-INF/*.DSA</exclude>
-                      <exclude>META-INF/*.RSA</exclude>
-                    </excludes>
-                  </filter>
-                </filters>
-              </configuration>
-            </execution>
-          </executions>
-          <dependencies>
-            <dependency>
-              <groupId>org.springframework.boot</groupId>
-              <artifactId>spring-boot-maven-plugin</artifactId>
-              <version>2.5.9</version>
-            </dependency>
-          </dependencies>
-          <configuration>
-            <keepDependenciesWithProvidedScope>true</keepDependenciesWithProvidedScope>
-            <createDependencyReducedPom>true</createDependencyReducedPom>
-            <filters>
-              <filter>
-                <artifact>*:*</artifact>
-                <excludes>
-                  <exclude>META-INF/*.SF</exclude>
-                  <exclude>META-INF/*.DSA</exclude>
-                  <exclude>META-INF/*.RSA</exclude>
-                </excludes>
-              </filter>
-            </filters>
-          </configuration>
-        </plugin>
-        <plugin>
-          <artifactId>maven-source-plugin</artifactId>
-          <version>3.2.1</version>
-        </plugin>
-        <plugin>
-          <artifactId>maven-surefire-plugin</artifactId>
-          <version>2.22.2</version>
-        </plugin>
-        <plugin>
-          <artifactId>maven-war-plugin</artifactId>
-          <version>3.3.2</version>
-          <configuration>
-            <archive>
-              <manifest>
-                <mainClass>${start-class}</mainClass>
-                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
-              </manifest>
-            </archive>
-          </configuration>
-        </plugin>
-        <plugin>
-          <groupId>org.springframework.boot</groupId>
-          <artifactId>spring-boot-maven-plugin</artifactId>
-          <version>2.5.9</version>
-          <executions>
-            <execution>
-              <id>repackage</id>
-              <goals>
-                <goal>repackage</goal>
-              </goals>
-              <configuration>
-                <mainClass>${start-class}</mainClass>
-              </configuration>
-            </execution>
-          </executions>
-          <configuration>
-            <mainClass>${start-class}</mainClass>
-          </configuration>
-        </plugin>
-        <plugin>
-          <groupId>org.codehaus.mojo</groupId>
-          <artifactId>versions-maven-plugin</artifactId>
-          <version>2.8.1</version>
-        </plugin>
-        <plugin>
-          <groupId>org.codehaus.mojo</groupId>
-          <artifactId>xml-maven-plugin</artifactId>
-          <version>1.0.2</version>
-        </plugin>
-      </plugins>
-    </pluginManagement>
-    <plugins>
-      <plugin>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-maven-plugin</artifactId>
-        <version>2.5.9</version>
-        <executions>
-          <execution>
-            <id>repackage</id>
-            <goals>
-              <goal>repackage</goal>
-            </goals>
-            <configuration>
-              <excludes>
-                <exclude>
-                  <groupId>org.projectlombok</groupId>
-                  <artifactId>lombok</artifactId>
-                </exclude>
-              </excludes>
-              <mainClass>${start-class}</mainClass>
-            </configuration>
-          </execution>
-        </executions>
-        <configuration>
-          <excludes>
-            <exclude>
-              <groupId>org.projectlombok</groupId>
-              <artifactId>lombok</artifactId>
-            </exclude>
-          </excludes>
-          <mainClass>${start-class}</mainClass>
-        </configuration>
-      </plugin>
-      <plugin>
-        <artifactId>maven-clean-plugin</artifactId>
-        <version>3.1.0</version>
-        <executions>
-          <execution>
-            <id>default-clean</id>
-            <phase>clean</phase>
-            <goals>
-              <goal>clean</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <artifactId>maven-resources-plugin</artifactId>
-        <version>3.2.0</version>
-        <executions>
-          <execution>
-            <id>default-testResources</id>
-            <phase>process-test-resources</phase>
-            <goals>
-              <goal>testResources</goal>
-            </goals>
-            <configuration>
-              <propertiesEncoding>UTF-8</propertiesEncoding>
-              <delimiters>
-                <delimiter>@</delimiter>
-              </delimiters>
-              <useDefaultDelimiters>false</useDefaultDelimiters>
-            </configuration>
-          </execution>
-          <execution>
-            <id>default-resources</id>
-            <phase>process-resources</phase>
-            <goals>
-              <goal>resources</goal>
-            </goals>
-            <configuration>
-              <propertiesEncoding>UTF-8</propertiesEncoding>
-              <delimiters>
-                <delimiter>@</delimiter>
-              </delimiters>
-              <useDefaultDelimiters>false</useDefaultDelimiters>
-            </configuration>
-          </execution>
-        </executions>
-        <configuration>
-          <propertiesEncoding>UTF-8</propertiesEncoding>
-          <delimiters>
-            <delimiter>@</delimiter>
-          </delimiters>
-          <useDefaultDelimiters>false</useDefaultDelimiters>
-        </configuration>
-      </plugin>
-      <plugin>
-        <artifactId>maven-jar-plugin</artifactId>
-        <version>3.2.2</version>
-        <executions>
-          <execution>
-            <id>default-jar</id>
-            <phase>package</phase>
-            <goals>
-              <goal>jar</goal>
-            </goals>
-            <configuration>
-              <archive>
-                <manifest>
-                  <mainClass>${start-class}</mainClass>
-                  <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
-                </manifest>
-              </archive>
-            </configuration>
-          </execution>
-        </executions>
-        <configuration>
-          <archive>
-            <manifest>
-              <mainClass>${start-class}</mainClass>
-              <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
-            </manifest>
-          </archive>
-        </configuration>
-      </plugin>
-      <plugin>
-        <artifactId>maven-compiler-plugin</artifactId>
-        <version>3.8.1</version>
-        <executions>
-          <execution>
-            <id>default-compile</id>
-            <phase>compile</phase>
-            <goals>
-              <goal>compile</goal>
-            </goals>
-            <configuration>
-              <parameters>true</parameters>
-            </configuration>
-          </execution>
-          <execution>
-            <id>default-testCompile</id>
-            <phase>test-compile</phase>
-            <goals>
-              <goal>testCompile</goal>
-            </goals>
-            <configuration>
-              <parameters>true</parameters>
-            </configuration>
-          </execution>
-        </executions>
-        <configuration>
-          <parameters>true</parameters>
-        </configuration>
-      </plugin>
-      <plugin>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.22.2</version>
-        <executions>
-          <execution>
-            <id>default-test</id>
-            <phase>test</phase>
-            <goals>
-              <goal>test</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <artifactId>maven-install-plugin</artifactId>
-        <version>2.5.2</version>
-        <executions>
-          <execution>
-            <id>default-install</id>
-            <phase>install</phase>
-            <goals>
-              <goal>install</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <artifactId>maven-deploy-plugin</artifactId>
-        <version>2.8.2</version>
-        <executions>
-          <execution>
-            <id>default-deploy</id>
-            <phase>deploy</phase>
-            <goals>
-              <goal>deploy</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <artifactId>maven-site-plugin</artifactId>
-        <version>3.3</version>
-        <executions>
-          <execution>
-            <id>default-site</id>
-            <phase>site</phase>
-            <goals>
-              <goal>site</goal>
-            </goals>
-            <configuration>
-              <outputDirectory>d:\Code\HangZhouMes\UnLoadGlassModule\target\site</outputDirectory>
-              <reportPlugins>
-                <reportPlugin>
-                  <groupId>org.apache.maven.plugins</groupId>
-                  <artifactId>maven-project-info-reports-plugin</artifactId>
-                </reportPlugin>
-              </reportPlugins>
-            </configuration>
-          </execution>
-          <execution>
-            <id>default-deploy</id>
-            <phase>site-deploy</phase>
-            <goals>
-              <goal>deploy</goal>
-            </goals>
-            <configuration>
-              <outputDirectory>d:\Code\HangZhouMes\UnLoadGlassModule\target\site</outputDirectory>
-              <reportPlugins>
-                <reportPlugin>
-                  <groupId>org.apache.maven.plugins</groupId>
-                  <artifactId>maven-project-info-reports-plugin</artifactId>
-                </reportPlugin>
-              </reportPlugins>
-            </configuration>
-          </execution>
-        </executions>
-        <configuration>
-          <outputDirectory>d:\Code\HangZhouMes\UnLoadGlassModule\target\site</outputDirectory>
-          <reportPlugins>
-            <reportPlugin>
-              <groupId>org.apache.maven.plugins</groupId>
-              <artifactId>maven-project-info-reports-plugin</artifactId>
-            </reportPlugin>
-          </reportPlugins>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-  <reporting>
-    <outputDirectory>d:\Code\HangZhouMes\UnLoadGlassModule\target\site</outputDirectory>
-  </reporting>
-</project>
diff --git a/UnLoadGlassModule/mockPLCData.properties b/UnLoadGlassModule/mockPLCData.properties
deleted file mode 100644
index 56514ef..0000000
--- a/UnLoadGlassModule/mockPLCData.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#Mock S7 PLC Data
-#Wed Mar 27 10:21:54 CST 2024
-DB4.0.0=false
-DB4.1.1=false
-DB4.1.0=false
-DB4.0.7=false
-DB4.0.6=false
-DB4.0.5=true
-DB4.0.4=true
-DB4.0.3=true
-DB4.0.2=true
-DB4.0.1=true
-DB101.0=1
diff --git a/UnLoadGlassModule/pom.xml b/UnLoadGlassModule/pom.xml
deleted file mode 100644
index 66013a9..0000000
--- a/UnLoadGlassModule/pom.xml
+++ /dev/null
@@ -1,246 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-parent</artifactId>
-        <version>2.5.9</version>
-        <relativePath/> <!-- lookup parent from repository -->
-    </parent>
-    <groupId>com.MES-Module</groupId>
-    <artifactId>MES-UnLoadGlassModule</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
-    <name>MES-UnLoadGlassModule</name>
-    <description>project for Spring Boot</description>
-    <properties>
-        <java.version>1.8</java.version>
-    </properties>
-    <dependencies>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.mybatis.spring.boot</groupId>
-            <artifactId>mybatis-spring-boot-starter</artifactId>
-            <version>2.3.1</version>
-        </dependency>
-        <dependency>
-            <groupId>com.alibaba</groupId>
-            <artifactId>fastjson</artifactId>
-            <version>1.2.70</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.data</groupId>
-            <artifactId>spring-data-commons</artifactId>
-            <version>2.3.1.RELEASE</version>
-       </dependency>
-        <dependency>
-            <groupId>mysql</groupId>
-            <artifactId>mysql-connector-java</artifactId>
-            <version>8.0.20</version>
-            <scope>runtime</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.projectlombok</groupId>
-            <artifactId>lombok</artifactId>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-test</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.mybatis.spring.boot</groupId>
-            <artifactId>mybatis-spring-boot-starter-test</artifactId>
-            <version>2.3.1</version>
-            <scope>test</scope>
-        </dependency>
-        <!--jwt 椤圭洰鐢熸垚token-->
-        <dependency>
-            <groupId>com.auth0</groupId>
-            <artifactId>java-jwt</artifactId>
-            <version>3.10.3</version>
-        </dependency>
-        <dependency>
-            <groupId>org.assertj</groupId>
-            <artifactId>assertj-core</artifactId>
-        </dependency>
-        <!--hutool java楠岃瘉鏂规硶绫�-->
-        <dependency>
-            <groupId>cn.hutool</groupId>
-            <artifactId>hutool-all</artifactId>
-            <version>5.4.0</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.baomidou</groupId>
-            <artifactId>mybatis-plus-boot-starter</artifactId>
-            <version>3.5.1</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.baomidou</groupId>
-            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
-            <version>3.5.1</version>
-        </dependency>
-
-<!--        SwaggerUi-->
-        <dependency>
-            <groupId>io.springfox</groupId>
-            <artifactId>springfox-swagger2</artifactId>
-            <version>2.9.2</version>
-        </dependency>
-        <dependency>
-            <groupId>io.springfox</groupId>
-            <artifactId>springfox-swagger-ui</artifactId>
-            <version>2.9.2</version>
-        </dependency>
-        <dependency>
-            <groupId>io.swagger</groupId>
-            <artifactId>swagger-annotations</artifactId>
-            <version>1.5.20</version>
-        </dependency>
-
-         <dependency>
-            <groupId>com.github.xingshuangs</groupId>
-            <artifactId>iot-communication</artifactId>
-            <version>1.4.2</version>
-        </dependency>
-        <!--   spring cache 鏁版嵁缂撳瓨     -->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-cache</artifactId>
-        </dependency>
-
-        <!--  rabbitmq    -->
-        <dependency>
-            <groupId>com.rabbitmq</groupId>
-            <artifactId>amqp-client</artifactId>
-            <version>5.13.1</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-amqp</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-databind</artifactId>
-            <version>2.12.2</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-core</artifactId>
-            <version>2.13.0</version>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-databind</artifactId>
-            <version>2.13.0</version>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-annotations</artifactId>
-            <version>2.13.0</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-websocket</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.github.xingshuangs</groupId>
-            <artifactId>iot-communication</artifactId>
-            <version>1.4.2</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-websocket</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>com.google.code.gson</groupId>
-            <artifactId>gson</artifactId>
-            <version>2.8.9</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.poi</groupId>
-            <artifactId>poi</artifactId>
-            <version>5.2.4</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.poi</groupId>
-            <artifactId>poi-ooxml</artifactId>
-            <version>5.2.4</version>
-        </dependency>
-
-        <!--websocket-->
-<!--        <dependency>-->
-<!--            <groupId>org.springframework.boot</groupId>-->
-<!--            <artifactId>spring-boot-starter-websocket</artifactId>-->
-<!--        </dependency>-->
-
-        <dependency>
-            <groupId>io.netty</groupId>
-            <artifactId>netty-all</artifactId>
-            <version>4.1.36.Final</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-data-jpa</artifactId>
-        </dependency>
-
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-maven-plugin</artifactId>
-                <configuration>
-                    <excludes>
-                        <exclude>
-                            <groupId>org.projectlombok</groupId>
-                            <artifactId>lombok</artifactId>
-                        </exclude>
-                    </excludes>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-
-    <repositories>
-        <repository>
-            <id>nexus-aliyun</id>
-            <name>nexus-aliyun</name>
-            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
-            <releases>
-                <enabled>true</enabled>
-            </releases>
-            <snapshots>
-                <enabled>false</enabled>
-            </snapshots>
-        </repository>
-    </repositories>
-
-    <pluginRepositories>
-        <pluginRepository>
-            <id>public</id>
-            <name>aliyun nexus</name>
-            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
-            <releases>
-                <enabled>true</enabled>
-            </releases>
-            <snapshots>
-                <enabled>false</enabled>
-            </snapshots>
-        </pluginRepository>
-    </pluginRepositories>
-</project>
diff --git a/UnLoadGlassModule/src/main/java/com/mes/MesApplication.java b/UnLoadGlassModule/src/main/java/com/mes/MesApplication.java
deleted file mode 100644
index c438a67..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/MesApplication.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.mes;
-
-import com.mes.tools.WebSocketServer;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.cache.annotation.EnableCaching;
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.transaction.annotation.EnableTransactionManagement;
-
-@SpringBootApplication
-@EnableCaching
-@EnableTransactionManagement
-public class MesApplication {
-    public static void main(String[] args) {
-        SpringApplication springApplication = new SpringApplication(MesApplication.class);
-        ConfigurableApplicationContext applicationContext = springApplication.run(args);
-        WebSocketServer.setApplicationContext(applicationContext);
-    }
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/common/CacheUtil.java b/UnLoadGlassModule/src/main/java/com/mes/common/CacheUtil.java
deleted file mode 100644
index df5af14..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/common/CacheUtil.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.mes.common;
-
-import com.mes.controller.dto.UserDTO;
-import org.springframework.cache.annotation.CacheEvict;
-import org.springframework.cache.annotation.Cacheable;
-import org.springframework.stereotype.Component;
-
-@Component
-public class CacheUtil {
-    @Cacheable(value="users", key="#id")
-    public UserDTO getCacheData(String id){
-        return null;
-    }
-
-    @Cacheable(value="users", key="#userDTO.getUserId()")
-    public UserDTO setCacheData(UserDTO userDTO){
-
-        return userDTO;
-    }
-
-
-
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/common/Constants.java b/UnLoadGlassModule/src/main/java/com/mes/common/Constants.java
deleted file mode 100644
index 9e591db..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/common/Constants.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.mes.common;
-
-/**
- * 瀹氫箟涓�浜涘父閲忚繘琛屼娇鐢�
- */
-public interface Constants {
-    String Code_500="500";//绯荤粺閿欒
-    String Code_401="401";//鏉冮檺涓嶈冻
-    String Code_400="400";//
-    String Code_200="200";//鎴愬姛
-    String Code_600="600";//鍏朵粬闂
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/MockS7PLC.java b/UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/MockS7PLC.java
deleted file mode 100644
index 86d7a0b..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/MockS7PLC.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package com.mes.common.PlcTools;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * 妯℃嫙S7 PLC鐨勭畝鍗曞疄鐜帮紝鐢ㄤ簬娴嬭瘯鍜屽紑鍙戦樁娈�
- */
-public class MockS7PLC {
-    // 浣跨敤Map妯℃嫙PLC鐨勫唴瀛樺瓨鍌紝閿槸鍦板潃锛屽�兼槸瀛樺偍鐨勬暟鎹�
-    private Map<String, byte[]> memory = new HashMap<>();
-
-    private static volatile MockS7PLC instance; // 鍗曚緥瀹炰緥
-    public static MockS7PLC getInstance() {
-        if (instance == null) {
-            synchronized (MockS7PLC.class) {
-                if (instance == null)
-                    instance = new MockS7PLC();
-            }
-        }
-        return instance;
-    }
-    /**
-     * 妯℃嫙鍐欏叆涓�涓垨澶氫釜瀛楄妭鍒版寚瀹氬湴鍧�
-     *
-     * @param address 鍦板潃
-     * @param data    瑕佸啓鍏ョ殑鏁版嵁
-     */
-    public void writeByte(String address, byte[] data) {
-        memory.put(address, data);
-    }
-
-    /**
-     * 妯℃嫙浠庢寚瀹氬湴鍧�璇诲彇涓�瀹氭暟閲忕殑瀛楄妭
-     *
-     * @param address 鍦板潃
-     * @param count   瑕佽鍙栫殑瀛楄妭鏁�
-     * @return 璇诲彇鍒扮殑鏁版嵁
-     */
-    public byte[] readByte(String address, int count) {
-        byte[] bytes = memory.getOrDefault(address, new byte[0]);
-
-        if (count >= 0 && count <= bytes.length) {
-            byte[] result = new byte[count];
-            System.arraycopy(bytes, 0, result, 0, count);
-            return result;
-        } else {
-            // 濡傛灉璇锋眰鐨勫瓧鑺傛暟瓒呭嚭浜嗗疄闄呭彲鐢ㄧ殑瀛楄妭鏁帮紝鍒欒繑鍥炲叏閮ㄥ彲鐢ㄧ殑瀛楄妭
-            return bytes;
-        }
-    }
-
-
-    /**
-     * 妯℃嫙鍐欏叆涓�涓�16浣嶆暣鏁板埌鎸囧畾鍦板潃
-     *
-     * @param address 鍦板潃
-     * @param data    瑕佸啓鍏ョ殑鏁版嵁
-     */
-    public void writeInt16(String address, short data) {
-        memory.put(address, new byte[]{(byte) (data >> 8), (byte) data});
-    }
-
-    /**
-     * 妯℃嫙浠庢寚瀹氬湴鍧�璇诲彇涓�涓�16浣嶆暣鏁�
-     *
-     * @param address 鍦板潃
-     * @return 璇诲彇鍒扮殑鏁版嵁
-     */
-    public short readInt16(String address) {
-        byte[] data = memory.getOrDefault(address, new byte[]{0, 0});
-        return (short) ((data[0] << 8) | (data[1] & 0xFF));
-    }
-
-    /**
-     * 妯℃嫙鍐欏叆涓�涓竷灏斿�煎埌鎸囧畾鍦板潃
-     *
-     * @param address 鍦板潃
-     * @param data    瑕佸啓鍏ョ殑鏁版嵁
-     */
-    public void writeBoolean(String address, boolean data) {
-        memory.put(address, new byte[]{(byte) (data ? 1 : 0)});
-    }
-
-    /**
-     * 妯℃嫙浠庢寚瀹氬湴鍧�璇诲彇涓�涓竷灏斿��
-     *
-     * @param address 鍦板潃
-     * @return 璇诲彇鍒扮殑鏁版嵁
-     */
-    public boolean readBoolean(String address) {
-        return memory.getOrDefault(address, new byte[]{0})[0] != 0;
-    }
-
-    // 鏍规嵁闇�瑕侊紝鎮ㄥ彲浠ユ坊鍔犳洿澶氭ā鎷烶LC鎿嶄綔鐨勬柟娉�
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/MockS7PLCtwo.java b/UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/MockS7PLCtwo.java
deleted file mode 100644
index 2d0905d..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/MockS7PLCtwo.java
+++ /dev/null
@@ -1,276 +0,0 @@
-package com.mes.common.PlcTools;
-
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-public class MockS7PLCtwo {
-    private static volatile MockS7PLCtwo instance; // 鍗曚緥瀹炰緥
-    private ConcurrentHashMap<String, String> memory = new ConcurrentHashMap<>();
-    private String storageFilePath = "mockPLCData.properties";
-
-    // 绉佹湁鍖栨瀯閫犲嚱鏁�
-    private MockS7PLCtwo() {
-        // 鍦ㄦ瀯閫犲嚱鏁颁腑灏濊瘯鍔犺浇鐜版湁鐨勬ā鎷熸暟鎹�
-        try (FileInputStream fis = new FileInputStream(storageFilePath)) {
-            Properties properties = new Properties();
-            properties.load(fis);
-            properties.forEach((key, value) -> memory.put(String.valueOf(key), String.valueOf(value)));
-        } catch (IOException e) {
-            System.out.println("娌℃湁鎵惧埌鐜版湁鐨勬ā鎷熸暟鎹枃浠讹紝灏嗗垱寤轰竴涓柊鐨勩��");
-        }
-    }
-
-    // 鍏叡闈欐�佹柟娉曡幏鍙栫被鐨勫敮涓�瀹炰緥
-    public static MockS7PLCtwo getInstance() {
-        if (instance == null) {
-            synchronized (MockS7PLCtwo.class) {
-                if (instance == null)
-                    instance = new MockS7PLCtwo();
-            }
-        }
-        return instance;
-    }
-
-    // 淇敼鍐欏叆鏂规硶浠ユ寔涔呭寲鏁版嵁
-    public void writeByte(String address, byte[] data) {
-        memory.put(address, new String(data, StandardCharsets.ISO_8859_1));
-        saveMemory();
-    }
-
-    // 淇敼璇诲彇鏂规硶浠ヤ粠鎸佷箙鍖栫殑鏁版嵁涓鍙�
-    public byte[] readByte(String address,int count) {
-        String value = memory.getOrDefault(address, "");
-        byte[] bytes = value.getBytes(StandardCharsets.ISO_8859_1);
-        if (count >= 0 && count <= bytes.length) {
-            byte[] result = new byte[count];
-            System.arraycopy(bytes, 0, result, 0, count);
-            return result;
-        } else {
-            // 濡傛灉璇锋眰鐨勫瓧鑺傛暟瓒呭嚭浜嗗疄闄呭彲鐢ㄧ殑瀛楄妭鏁帮紝鍒欒繑鍥炲叏閮ㄥ彲鐢ㄧ殑瀛楄妭
-            return bytes;
-        }
-    }
-
-
-
-
-
-
-    public void writeInt16(String address, short data) {
-        memory.put(address, Short.toString(data));
-        saveMemory();
-    }
-
-    public Short readInt16(String address) {
-        String value = memory.get(address);
-        return value != null ? Short.parseShort(value) : null;
-    }
-
-    public void writeBoolean(String address, boolean data) {
-        memory.put(address, Boolean.toString(data));
-        saveMemory();
-    }
-
-    public Boolean readBoolean(String address) {
-        String value = memory.get(address);
-        return value != null ? Boolean.parseBoolean(value) : null;
-    }
-
-    public void writeString(String address, String data) {
-        memory.put(address, data);
-        saveMemory();
-    }
-
-    public String readString(String address) {
-        return memory.getOrDefault(address, "");
-    }
-
-    public void writeTime(String address, long data) {
-        memory.put(address, Long.toString(data));
-        saveMemory();
-    }
-
-    public Long readTime(String address) {
-        String value = memory.get(address);
-        return value != null ? Long.parseLong(value) : null;
-    }
-
-    // 娣诲姞涓�涓柟娉曟潵淇濆瓨鏁版嵁鍒版枃浠�
-    private void saveMemory() {
-        Properties properties = new Properties();
-        properties.putAll(memory);
-        try (FileOutputStream fos = new FileOutputStream(storageFilePath)) {
-            properties.store(fos, "Mock S7 PLC Data");
-        } catch (IOException e) {
-            System.out.println("淇濆瓨妯℃嫙鏁版嵁澶辫触锛�" + e.getMessage());
-        }
-    }
-
-    // 杩炵画鍐欏叆澶氫釜Word
-    public void writeword(String address, List<Short> data) {
-        for (int i = 0; i < data.size(); i++) {
-            String addr = calculateAddress(address, i * 2); // 鍋囪姣忎釜word鍗犱袱涓湴鍧�鍗曚綅
-            memory.put(addr, Short.toString(data.get(i)));
-
-        }
-        saveMemory();
-    }
-
-    // 涓嶈繛缁湴鍧�word鍐欏叆澶氫釜Word
-    public void WriteWords(List<String> addresses, List<Short> datas) {
-        if (addresses.size() != datas.size()) {
-            throw new IllegalArgumentException("鍦板潃鍒楄〃鍜屾暟鎹垪琛ㄧ殑澶у皬蹇呴』鐩稿悓銆�");
-        }
-
-        for (int i = 0; i < addresses.size(); i++) {
-            String addr = addresses.get(i);
-            short data = datas.get(i);
-            // 鍋囪杩欓噷浣跨敤鍐呭瓨鏄犲皠鏉ユā鎷烶LC鍐欏叆鎿嶄綔
-            memory.put(addr, Short.toString(data));
-        }
-        saveMemory(); // 鍦ㄦ墍鏈夋暟鎹啓鍏ュ悗淇濆瓨鏇存敼
-    }
-
-    // 杩炵画璇诲彇澶氫釜Word
-    public List<Short> readwords(String address, int count) {
-        List<Short> result = new ArrayList<>();
-        for (int i = 0; i < count; i++) {
-            String addr = calculateAddress(address, i * 2); // 鍚屼笂锛屾瘡涓獁ord鍗犱袱涓湴鍧�鍗曚綅
-
-            //System.out.println(addr);
-
-            String value = memory.get(addr);
-            if (value != null) {
-                result.add(Short.parseShort(value));
-            } else {
-                result.add(null); // 鎴栬�呰�冭檻鎶涘嚭寮傚父鎴栧叾浠栭敊璇鐞�
-            }
-        }
-        return result;
-    }
-
-
-    public List<Short> ReadWords(List<String> addresses) {
-        List<Short> datas = new ArrayList<>();
-
-        for (String addr : addresses) {
-            // 浠庡唴瀛樻槧灏勪腑鑾峰彇鏁版嵁
-            String dataStr = memory.get(addr);
-
-            // 灏嗗瓧绗︿覆杞崲鎴恠hort绫诲瀷锛屽苟娣诲姞鍒扮粨鏋滃垪琛ㄤ腑
-            // 杩欓噷鍋囪鏁版嵁宸茬粡浠ラ�傚綋鐨勬柟寮忓瓨鍌紙渚嬪锛屼綔涓虹煭鏁村瀷鐨勫瓧绗︿覆琛ㄧず锛�
-            // 濡傛灉璇诲彇鐨勬暟鎹负绌烘垨杞崲澶辫触锛屼綘鍙兘闇�瑕佸鐞嗚繖浜涙儏鍐�
-            try {
-                short data = Short.parseShort(dataStr);
-                datas.add(data);
-            } catch (NumberFormatException e) {
-                System.err.println("璇诲彇鍦板潃 " + addr + " 鐨勬暟鎹椂鍑洪敊: " + e.getMessage());
-
-            }
-        }
-
-        return datas;
-    }
-
-
-
-
-
-    // 杩炵画鍐欏叆澶氫釜Bit
-    public void writebits(String address, List<Boolean> data) {
-        for (int i = 0; i < data.size(); i++) {
-            String addr = calculateAddress(address, i); // 鍋囪姣忎釜bit鍗犱竴涓湴鍧�鍗曚綅
-            memory.put(addr, Boolean.toString(data.get(i)));
-        }
-        saveMemory();
-    }
-
-//bit鍒嗘暎鍦板潃璇诲彇
-    public List<Boolean> readBits(List<String> addresses) {
-        List<Boolean> results = new ArrayList<>();
-        for (String address : addresses) {
-            // 瀵逛簬姣忎釜鍦板潃锛岀洿鎺ヤ娇鐢� calculateAddress 鏉ュ鐞嗗彲鑳界殑浣嶅亸绉�
-            // 杩欓噷鍋囪 calculateAddress 宸茬粡瓒冲鏅鸿兘浠ュ鐞嗗崟涓綅鐨勫亸绉�
-            // 鐢变簬鎴戜滑鏄�愪釜璇诲彇锛屾瘡娆″亸绉婚噺閮芥槸0
-            String addr = calculateAddress(address, 0);
-            String value = memory.get(addr);
-            if (value != null) {
-                results.add(Boolean.parseBoolean(value));
-            } else {
-                // 濡傛灉鍦板潃瀵瑰簲鐨勫�间笉瀛樺湪浜庡唴瀛樹腑锛屽彲浠ラ�夋嫨娣诲姞 null 鎴栨姏鍑哄紓甯�
-                // 杩欓噷閫夋嫨娣诲姞 null锛屼絾鍦ㄥ疄闄呭簲鐢ㄤ腑搴旀牴鎹叿浣撻渶姹傚喅瀹�
-                results.add(null);
-            }
-        }
-        return results;
-    }
-
-    // 杩炵画璇诲彇澶氫釜Bit
-    public List<Boolean> readbits(String address, int count) {
-        List<Boolean> result = new ArrayList<>();
-        for (int i = 0; i < count; i++) {
-            String addr = calculateAddress(address, i); // 鍚屼笂锛屾瘡涓猙it鍗犱竴涓湴鍧�鍗曚綅
-            String value = memory.get(addr);
-            if (value != null) {
-                result.add(Boolean.parseBoolean(value));
-            } else {
-                result.add(null); // 鎴栬�呰�冭檻鎶涘嚭寮傚父鎴栧叾浠栭敊璇鐞�
-            }
-        }
-        return result;
-    }
-
-    // 璁$畻杩炵画鍦板潃
-//    private String calculateAddress(String baseAddress, int offset) {
-//        // 鏀寔甯﹀瓧姣嶇殑鍦板潃鏍煎紡
-//        Pattern pattern = Pattern.compile("(\\D*)(\\d+)");
-//        Matcher matcher = pattern.matcher(baseAddress);
-//        if (matcher.find()) {
-//            String prefix = matcher.group(1);
-//            int address = Integer.parseInt(matcher.group(2));
-//            return prefix + (address + offset);
-//        } else {
-//            throw new IllegalArgumentException("Invalid address format: " + baseAddress);
-//        }
-//    }
-
-    private String calculateAddress(String baseAddress, int offset) {
-        // 鍒嗗壊鍦板潃涓烘暟鎹潡銆佸瓧鍋忕Щ鍜屼綅鍋忕Щ锛堝鏋滄湁锛�
-        Pattern pattern = Pattern.compile("(DB\\d+)\\.(\\d+)(?:\\.(\\d+))?");
-        Matcher matcher = pattern.matcher(baseAddress);
-        if (matcher.find()) {
-            String dbNumber = matcher.group(1); // 鏁版嵁鍧楃紪鍙凤紝濡� "DB100"
-            int wordOffset = Integer.parseInt(matcher.group(2)); // 瀛楀亸绉�
-            String bitOffsetStr = matcher.group(3); // 浣嶅亸绉伙紝鍙兘涓虹┖
-
-            if (bitOffsetStr != null) {
-                // 瀛樺湪浣嶅亸绉伙紝杩涜浣嶆搷浣�
-                int bitOffset = Integer.parseInt(bitOffsetStr);
-                int totalBitOffset = bitOffset + offset;
-                // 璁$畻鏂扮殑瀛楀亸绉诲拰浣嶅亸绉�
-                int newWordOffset = wordOffset + (totalBitOffset / 8);
-                int newBitOffset = totalBitOffset % 8;
-                return String.format("%s.%d.%d", dbNumber, newWordOffset, newBitOffset);
-            } else {
-                // 浠呭瓨鍦ㄥ瓧鍋忕Щ锛岃繘琛屽瓧鎿嶄綔
-                // 娉ㄦ剰锛氬亣璁炬瘡涓瓧鍗犵敤2涓瓧鑺�
-                int newWordOffset = wordOffset + (offset );
-                return String.format("%s.%d", dbNumber, newWordOffset);
-            }
-        } else {
-            throw new IllegalArgumentException("Invalid address format: " + baseAddress);
-        }
-    }
-
-
-
-
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/S7control.java b/UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/S7control.java
deleted file mode 100644
index f3c1215..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/S7control.java
+++ /dev/null
@@ -1,469 +0,0 @@
-package com.mes.common.PlcTools;
-
-import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
-import com.github.xingshuangs.iot.protocol.s7.service.MultiAddressWrite;
-import com.github.xingshuangs.iot.protocol.s7.service.S7PLC;
-import com.google.common.primitives.Bytes;
-
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.List;
-
-public class S7control {
-
-    S7PLC s7PLC; // PLC閫氳绫诲疄渚�
-    private EPlcType plcType = EPlcType.S1500; // 瑗块棬瀛怭LC绫诲瀷
-    private String ip = "192.168.10.1"; // plc ip鍦板潃
-    private int port = 102; // plc 绔彛鍙�
-
-    private static volatile S7control instance = null;
-
-    private S7control() {
-        if (s7PLC == null)
-            s7PLC = new S7PLC(plcType, ip, port,0,0);
-    }
-
-    // 鍗曚緥妯″紡 鑾峰彇绫荤殑鍞竴瀹炰緥
-    public static S7control getinstance() {
-        if (instance == null) {
-            synchronized (S7control.class) {
-                if (instance == null)
-                    instance = new S7control();
-            }
-        }
-        return instance;
-    }
-    
-    /**
-     * 鍏抽棴瑗块棬瀛恠7閫氳杩炴帴
-     */
-    public void CloseS7client() {
-        if (s7PLC == null)
-            s7PLC.close();
-            s7PLC.checkConnected();
-    }
-
-    /**
-     * s7閫氳杩炴帴鐘舵��
-     */
-    public boolean CheckConnected() {
-        return s7PLC.checkConnected();
-    }
-
-    /**
-     * 鎸夋寚瀹氱殑鍦板潃 鍐欏叆涓�涓獁ord
-     * 
-     * @param address 鍦板潃
-     * @param data    word鐨勫��
-     */
-    public void WriteWord(String address, short data) {
-        if (s7PLC==null)
-        {
-            return;
-        }
-        s7PLC.writeInt16(address, data);
-    }
-
-    /**
-     * 浠庢煇鍦板潃杩炵画 鍐欏叆澶氫釜word
-     * 
-     * @param address 鍦板潃
-     * @param datas   word鐨勫��
-     */
-    public void WriteWord(String address, List<Short> datas) {
-        if (s7PLC==null)
-            return;
-        // s7PLC.write(address, data);
-        List<String> addresslist = GetAddressList(address, datas.size(), 16);
-        MultiAddressWrite addressWrite = new MultiAddressWrite();
-        for (int i = 0; i < datas.size(); i++) {
-            addressWrite.addInt16(addresslist.get(i), datas.get(i));
-        }
-        s7PLC.writeMultiData(addressWrite);
-    }
-
-    /**
-     * 鎸夋寚瀹氱殑鍦板潃 鍐欏叆澶氫釜word
-     * 
-     * @param address 鍦板潃
-     * @param datas   word鐨勫��
-     */
-
-
-
-
-
-
-    /**
-     * 鎸夋寚瀹氱殑鍦板潃 鍐欏叆涓�涓狟it
-     * 
-     * @param address 鍦板潃
-     * @param data    Bit鐨勫��
-     */
-    public void WriteBit(String address, Boolean data) {
-        if (s7PLC==null)
-            return;
-        s7PLC.writeBoolean(address, data);
-    }
-
-    /**
-     * 鎸夋寚瀹氱殑鍦板潃 鍐欏叆澶氫釜bit
-     * 
-     * @param address 鍦板潃
-     * @param datas   bit鐨勫��
-     */
-    public void WriteBit(List<String> address, List<Boolean> datas) {
-        if (s7PLC==null)
-            return;
-        // s7PLC.write(address, data);
-
-        MultiAddressWrite addressWrite = new MultiAddressWrite();
-        for (int i = 0; i < address.size(); i++) {
-            addressWrite.addBoolean(address.get(i), datas.get(i));
-        }
-        s7PLC.writeMultiData(addressWrite);
-    }
-
-    /**
-     * 浠庢煇鍦板潃杩炵画 鍐欏叆澶氫釜bit
-     * 
-     * @param address 鍦板潃
-     * @param datas   word鐨勫��
-     */
-    public void WriteBit(String address, List<Boolean> datas) {
-        if (s7PLC==null)
-            return;
-        // s7PLC.write(address, data);
-        List<String> addresslist = GetAddressList(address, datas.size(), 1);
-        MultiAddressWrite addressWrite = new MultiAddressWrite();
-        for (int i = 0; i < datas.size(); i++) {
-            addressWrite.addBoolean(addresslist.get(i), datas.get(i));
-        }
-        s7PLC.writeMultiData(addressWrite);
-    }
-     /**
-     * 鎸夋寚瀹氱殑鍦板潃 鍐欏叆澶氫釜byte
-     * 
-     * @param address 鍦板潃
-     * @param datas   byte鐨勫��
-     */
-    public void WriteByte(String address, byte[] datas) {
-        if (s7PLC==null)
-            return;
-        // s7PLC.write(address, data); 
-        s7PLC.writeByte(address, datas);
-    }
-
-    /**
-     * 鎸夋寚瀹氱殑鍦板潃 璇诲彇word缁撴灉闆�
-     * 
-     * @param address 鍦板潃
-     * @return 缁撴灉
-     */
-    public List<Short> ReadWord(List<String> address) {
-        if (s7PLC == null)
-            return null;
-
-        try {
-            return s7PLC.readInt16(address);
-        } catch (Exception e) {
-            System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
-            return null;
-        }
-    }
-
-
-
-
-    private int getIndexFromAddress(String address) {
-
-        // 鍙互瑙f瀽鍑哄湴鍧�涓殑鏁板瓧閮ㄥ垎锛屽苟杞崲涓烘暣鏁�
-        return 0;
-    }
-
-    private String getAddressFromIndex(int index) {
-
-        // 鏁存暟杞崲涓哄湴鍧�鏍煎紡鐨勫瓧绗︿覆
-        return "";
-    }
-
-    /**
-     * 鎸夋寚瀹氱殑鍦板潃 璇诲彇word缁撴灉闆�
-     * 
-     * @param address 鍦板潃
-     * @param count   杩炵画璇诲灏戜釜word
-     * @return 缁撴灉
-     */
-    public List<Short> ReadWord(String address, int count) {
-        if (s7PLC == null)
-            return null;
-
-        List<String> addresslist = GetAddressList(address, count, 16);
-        try {
-            return s7PLC.readInt16(addresslist);
-        } catch (Exception e) {
-            System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
-
-            return null;
-        }
-    }
-
-    /**
-     * 鎸夋寚瀹氱殑鍦板潃 璇诲彇byte缁撴灉闆�
-     * 
-     * @param address 鍦板潃
-     * @param count   杩炵画璇诲灏戜釜byte
-     * @return 缁撴灉
-     */
-    public byte[] ReadByte(String address, int count) {
-        if (s7PLC==null)
-             return null;
-       // List<String> addresslist = GetAddressList(address, count, 16);
-
-        try {
-            return s7PLC.readByte(address, count);
-        }catch (Exception e) {
-            // 澶勭悊寮傚父
-            System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
-            return null;
-        }
-
-    }
-
-    /**
-     * 鎸夋寚瀹氱殑鍦板潃 鎸塨it浣� 0 flase 1 true 璇诲彇缁撴灉
-     *
-     * @param addresslist 鍦板潃闆�
-     * @return Boolean缁撴灉
-     */
-    public List<Boolean> ReadBits(List<String> addresslist) {
-        if (s7PLC==null)
-             return null;
-        return s7PLC.readBoolean(addresslist);
-    }
-//璇诲彇涓嶈繛缁湴鍧�bit
-public List<Boolean> readBits(List<String> addressList) {
-    if (s7PLC == null || addressList.isEmpty()) {
-        return null;
-    }
-
-    List<Boolean> values = new ArrayList<>();
-    for (String address : addressList) {
-        try {
-            boolean value = s7PLC.readBoolean(address);
-            values.add(value);
-        } catch (Exception e) {
-            // 澶勭悊寮傚父
-            System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
-        }
-    }
-
-    return values;
-}
-
-
-//璇诲彇String
-public List<String> readStrings(List<String> addressList) {
-    if (s7PLC == null) {
-        return null;
-    }
-    List<String> result = new ArrayList<>();
-    for (String address : addressList) {
-        try {
-            byte[] bytes = s7PLC.readByte(address, 14);
-            if (bytes != null) {
-                String str = new String(bytes, StandardCharsets.UTF_8);
-                result.add(str);
-            }
-        } catch (Exception e) {
-            System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
-            result.add(null);
-        }
-    }
-
-    return result;
-}
-
-
-
-
-
-    public List<String> readStringsandword(List<String> addressList) {
-        if (s7PLC == null) {
-            return null;
-        }
-        List<String> result = new ArrayList<>();
-        for (String address : addressList) {
-            try {
-                if (address.contains("-")) {
-                    address = address.substring(0, address.indexOf("-"));
-
-                    byte[] bytes = s7PLC.readByte(address, 14);
-                    if (bytes != null) {
-                        String str = new String(bytes, StandardCharsets.UTF_8);
-                        result.add(str);
-                    }
-
-                } else {
-                    Short value = s7PLC.readInt16(address);
-                    result.add(value.toString());
-
-                }
-            } catch (Exception e) {
-                System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
-                result.add(null);
-            }
-        }
-
-        return result;
-    }
-
-
-
-//涓嶈繛缁湴鍧�鍐欏叆Word
-    public void WriteWord(List<String> address, List<Short> datas) {
-        if (s7PLC == null)
-            return;
-
-        for (int i = 0; i < address.size(); i++) {
-            String addr = address.get(i);
-            short data = datas.get(i);
-
-            if (addr.contains("-")) {
-                outmesid(String.valueOf(data),addr); // 鍗曠嫭澶勭悊甯︾牬鎶樺彿鐨勫湴鍧�
-            } else {
-                s7PLC.writeInt16(addr, data); // 灏嗘暟鎹啓鍏ュ崟涓湴鍧�
-            }
-        }
-    }
-    
-    
-    
-//瀛楃涓插啓鍏�
-    public void outmesid(String data, String addr) {
-//        System.out.println("outmesid: " + data);
-        List<Byte> glassidlist = new ArrayList<>();
-        String[] parts = addr.split("-");
-        if (parts.length == 2) {
-            addr = parts[0]; // 鍙繚鐣� "-" 鍓嶉潰鐨勯儴鍒�
-        }
-        for (char iditem : data.toCharArray()) {
-            glassidlist.add(Byte.valueOf(String.valueOf(iditem)));
-        }
-        byte[] bytes = Bytes.toArray(glassidlist);
-        S7control.getinstance().WriteByte(addr, bytes);
-    }
-
-//璇诲彇涓嶈繛缁瓀ord
-    public List<Short> readWords(List<String> addresses) {
-        if (s7PLC == null) {
-            return null;
-        }
-
-        List<Short> data = new ArrayList<>();
-
-        for (String address : addresses) {
-            try {
-
-                // 鍗曚釜鍦板潃
-                Short value = s7PLC.readInt16(address);
-                data.add(value);
-            } catch (Exception e) {
-                System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
-
-            }
-
-        }
-        return data;
-    }
-
-//璇诲彇鏃堕棿
-public Long readtime(String address) {
-    if (s7PLC == null)
-        return null;
-    try {
-        return s7PLC.readTime(address);
-    } catch (Exception e) {
-        System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
-        return null;
-    }
-}
-
-
-    public void writetime(String address, long datas) {
-        if (s7PLC == null)
-            return;
-
-
-        s7PLC.writeTime(address, datas); // 灏嗘暟鎹啓鍏ュ崟涓湴鍧�
-    }
-
-
-
-
-
-    private int extractAddressNumber(String address) {
-        String numberStr = address.replaceAll("\\D+", ""); // 浣跨敤姝e垯琛ㄨ揪寮忔彁鍙栨暟瀛楅儴鍒�
-        return Integer.parseInt(numberStr);
-    }
-
-
-    /**
-     * 浠庢寚瀹氱殑鍦板潃寮�濮� 杩炵画鎸塨it浣嶈鍙�
-     *
-     * @param address 鍦板潃
-     * @param count   闀垮害
-     * @return Boolean缁撴灉
-     */
-    public List<Boolean> ReadBits(String address, int count) {
-        if (s7PLC == null)
-            return null;
-        List<String> addresslist = GetAddressList(address, count, 1);
-        try {
-            return s7PLC.readBoolean(addresslist);
-        } catch (Exception e) {
-            System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
-            return null;
-        }
-
-    };
-
-
-    public void writeString(String addr,String data) {
-        s7PLC.writeString(addr,data);
-    }
-    
-    
-
-    private List<String> GetAddressList(String address, int count, int addedbit) {
-        List<String> addresslist = new ArrayList<String>();
-
-        String[] stringdatas = address.trim().split("\\.");
-        if (stringdatas.length < 2 || !address.startsWith("DB"))
-            return null;
-        int dbwindex = 0;
-        int bitindex = 0;
-        if (stringdatas.length == 2) {
-            dbwindex = Integer.parseInt(stringdatas[1]);
-        } else if (stringdatas.length == 3) {
-            dbwindex = Integer.parseInt(stringdatas[1]);
-            bitindex = Integer.parseInt(stringdatas[2]);
-        } else
-            return null;
-
-            addresslist.add(address);
-        for (int i = 0; i < count-1; i++) {
-
-            int bitcurrent = bitindex + addedbit;
-            if (bitcurrent > 7) {
-                dbwindex += bitcurrent / 8;
-                bitindex = 0;
-            } else
-                bitindex = bitcurrent;
-
-                String endstr=stringdatas.length==3?"." + bitindex:"";
-            addresslist.add(stringdatas[0] + "." + dbwindex + endstr);
-        }
-        return addresslist;
-    }
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/common/RabbitMQUtils.java b/UnLoadGlassModule/src/main/java/com/mes/common/RabbitMQUtils.java
deleted file mode 100644
index f381270..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/common/RabbitMQUtils.java
+++ /dev/null
@@ -1,278 +0,0 @@
-package com.mes.common;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.rabbitmq.client.*;
-
-import java.util.*;
-import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.BlockingQueue;
-
-public class RabbitMQUtils {
-    // ObjectMapper瀵硅薄锛岀敤浜庡簭鍒楀寲鍜屽弽搴忓垪鍖朖SON
-    private static ObjectMapper objectMapper = new ObjectMapper();
-    private static String host = "10.153.19.150"; // RabbitMQ 涓绘満鍚�
-    private static Map<String, Object> args = new HashMap<>(); // 闃熷垪鍙傛暟
-
-    static {
-        // 璁剧疆闃熷垪鍙傛暟
-        args.put("x-max-length-bytes", 1024 * 1024);
-    }
-
-    //    private static  Map<String, Object> args = new HashMap<>();
-//     args.put("x-max-length-bytes",1024 * 1024);
-    // 鍙戦�佹秷鎭埌 RabbitMQ 闃熷垪涓�
-    public String sendMessage(String message, String queueName) throws Exception {
-        // 鍒涘缓杩炴帴宸ュ巶骞惰缃富鏈哄悕
-        ConnectionFactory factory = new ConnectionFactory();
-        factory.setHost(host);
-
-        // 浣跨敤 try-with-resources 璇彞鍒涘缓杩炴帴鍜岄�氶亾锛屽苟鍙戦�佹秷鎭�
-        try (Connection connection = factory.newConnection();
-             Channel channel = connection.createChannel()) {
-            // 澹版槑闃熷垪
-            channel.queueDeclare(queueName, false, false, false, args);
-
-            // 鍙戝竷娑堟伅鍒伴槦鍒�
-            channel.basicPublish("", queueName, null, message.getBytes("UTF-8"));
-            System.out.println(" [x] Sent '" + message + "' to queue '" + queueName + "'");
-        }
-
-        return message;
-    }
-
-
-    // 浠� RabbitMQ 闃熷垪涓帴鏀舵秷鎭�
-    public String receiveMessage(String queueName) throws Exception {
-        // 鍒涘缓杩炴帴宸ュ巶骞惰缃富鏈哄悕
-        ConnectionFactory factory = new ConnectionFactory();
-        factory.setHost(host);
-
-        // 鍒涘缓闃诲闃熷垪
-        BlockingQueue<String> messageQueue = new ArrayBlockingQueue<>(1);
-
-        // 浣跨敤 try-with-resources 璇彞鍒涘缓杩炴帴鍜岄�氶亾锛屽苟鎺ユ敹娑堟伅
-        try (Connection connection = factory.newConnection();
-             Channel channel = connection.createChannel()) {
-            // 澹版槑闃熷垪
-            channel.queueDeclare(queueName, false, false, false, args);
-
-            // 璁剧疆娑堟伅鎺ユ敹鍥炶皟
-            DeliverCallback deliverCallback = (consumerTag, delivery) -> {
-                String receivedMessage = new String(delivery.getBody(), "UTF-8");
-               // System.out.println(" [x] Received '" + receivedMessage + "'");
-
-                // 灏嗘帴鏀跺埌鐨勬秷鎭斁鍏ラ樆濉為槦鍒�
-                try {
-                    messageQueue.put(receivedMessage);
-                } catch (InterruptedException e) {
-                    e.printStackTrace();
-                }
-            };
-
-            // 娑堣垂闃熷垪涓殑娑堟伅
-            channel.basicConsume(queueName, true, deliverCallback, consumerTag -> {
-
-            });
-
-            // 闃诲骞剁瓑寰呰幏鍙栨秷鎭�
-            return messageQueue.take();
-        }
-    }
-
-
-//娑堣垂娑堟伅
-    public List<String> readMessages(String queueName,boolean is) throws Exception {
-        ConnectionFactory factory = new ConnectionFactory();
-        factory.setHost(host);
-        List<String> messages = new ArrayList<>();
-        try (Connection connection = factory.newConnection();
-             Channel channel = connection.createChannel()) {
-            boolean autoAck = false;
-
-            GetResponse response = channel.basicGet(queueName, autoAck);
-            if (response != null) {
-                String message = new String(response.getBody(), "UTF-8");
-                messages.add(message);
-                // 鎵嬪姩纭娑堟伅澶勭悊瀹屾垚
-                if(is){
-                    long deliveryTag = response.getEnvelope().getDeliveryTag();
-                    channel.basicAck(deliveryTag, false);
-                }
-
-            }
-        }
-
-        return messages;
-    }
-
-
-//鎺ユ敹闃熷垪涓墍鏈夋秷鎭紝涓嶆秷璐�
-    public static List<String> browseMessages(String queueName) throws Exception {
-        ConnectionFactory factory = new ConnectionFactory();
-        factory.setHost(host);
-        List<String> messages = new ArrayList<>();
-        try (Connection connection = factory.newConnection();
-             Channel channel = connection.createChannel()) {
-            channel.queueDeclare(queueName, false, false, false, args);
-            // 鑾峰彇闃熷垪涓殑娑堟伅
-            GetResponse response;
-            while ((response = channel.basicGet(queueName, false)) != null) {
-                String message = new String(response.getBody(), "UTF-8");
-                messages.add(message);
-            }
-        }
-        return messages;
-    }
-
-
-
-    private static Set<String> sentMessageIds = new HashSet<>();
-//鏍规嵁id鍙戦�佹秷鎭�
-    public static boolean sendMessageWithId(String queueName, String message, String messageId) throws Exception {
-        if (sentMessageIds.contains(messageId)) {
-            System.err.println("Message with ID " + messageId + " has already been sent.");
-            return false; // 娑堟伅閲嶅锛屽彂閫佸け璐�
-        }
-
-        ConnectionFactory factory = new ConnectionFactory();
-        factory.setHost(host);
-
-        try (Connection connection = factory.newConnection(); Channel channel = connection.createChannel()) {
-            channel.queueDeclare(queueName, false, false, false, args);
-
-            AMQP.BasicProperties properties = new AMQP.BasicProperties.Builder()
-                    .messageId(messageId)
-                    .build();
-
-            channel.basicPublish("", queueName, properties, message.getBytes("UTF-8"));
-            System.out.println("Sent message with ID: " + messageId);
-
-            sentMessageIds.add(messageId); // 灏� messageId 娣诲姞鍒板凡鍙戦�侀泦鍚堜腑
-
-            return true; // 娑堟伅鎴愬姛鍙戦��
-        } catch (Exception e) {
-            System.err.println("Failed to send message: " + e.getMessage());
-            return false; // 娑堟伅鍙戦�佸け璐�
-        }
-    }
-//鏍规嵁id娑堣垂娑堟伅
-public static String consumeMessageById(String messageId, String queueName) throws Exception {
-    ConnectionFactory factory = new ConnectionFactory();
-    factory.setHost(host);
-
-    try (Connection connection = factory.newConnection(); Channel channel = connection.createChannel()) {
-        channel.queueDeclare(queueName, false, false, false, args);
-
-        GetResponse response;
-        boolean found = false;
-
-        while ((response = channel.basicGet(queueName, false)) != null) {
-            String receivedMessage = new String(response.getBody(), "UTF-8");
-            if (response.getProps().getMessageId().equals(messageId)) {
-                long deliveryTag = response.getEnvelope().getDeliveryTag();
-                channel.basicAck(deliveryTag, false);
-                System.out.println("Selected message: " + messageId + " " + receivedMessage);
-                return receivedMessage;
-            } else {
-                // 鏈壘鍒版寚瀹氭秷鎭紝缁х画鏌ユ壘
-                channel.basicReject(response.getEnvelope().getDeliveryTag(), false);
-            }
-        }
-
-        return "Specified message not found in the queue.";
-    }
-}
-
-//娑堣垂鎸囧畾娑堟伅
-    public static String consumeSelectedMessage(int messageToConsume, String queueName) throws Exception {
-        ConnectionFactory factory = new ConnectionFactory();
-        factory.setHost(host);
-
-        try (Connection connection = factory.newConnection(); Channel channel = connection.createChannel()) {
-            channel.queueDeclare(queueName, false, false, false, args);
-
-            for (int i = 0; i < messageToConsume; i++) {
-                GetResponse response = channel.basicGet(queueName, false);
-                if (response == null) {
-                    return "Queue does not have enough messages.";
-                }
-//                long deliveryTag = response.getEnvelope().getDeliveryTag();
-//                channel.basicAck(deliveryTag, false);
-            }
-
-            GetResponse selectedResponse = channel.basicGet(queueName, false);
-            if (selectedResponse != null) {
-                byte[] body = selectedResponse.getBody();
-                String selectedMessage = new String(body, "UTF-8");
-                long deliveryTag = selectedResponse.getEnvelope().getDeliveryTag();
-                channel.basicAck(deliveryTag, false);
-                return selectedMessage;
-            } else {
-                return "Specified message not found in the queue.";
-            }
-        }
-    }
-
-    // 鍙戦�� JSON 娑堟伅鍒伴槦鍒�
-    public static boolean sendJsonMessage(Object message, String queueName) throws Exception {
-        // 鍒涘缓杩炴帴宸ュ巶骞惰缃富鏈哄悕
-        ConnectionFactory factory = new ConnectionFactory();
-        factory.setHost(host);
-
-        // 浣跨敤 try-with-resources 璇彞鍒涘缓杩炴帴鍜岄�氶亾锛屽苟鍙戦�� JSON 娑堟伅
-        try (Connection connection = factory.newConnection();
-             Channel channel = connection.createChannel()) {
-            // 澹版槑闃熷垪
-            channel.queueDeclare(queueName, false, false, false, args);
-
-            // 灏嗗璞¤浆鎹负 JSON 瀛楃涓�
-            String jsonMessage = objectMapper.writeValueAsString(message);
-
-            // 鍙戝竷 JSON 娑堟伅鍒伴槦鍒�
-            channel.basicPublish("", queueName, null, jsonMessage.getBytes());
-            System.out.println(" [x] Sent JSON message: '" + jsonMessage + "' to queue '" + queueName + "'");
-
-            return true; // 鍙戦�佹秷鎭垚鍔�
-        } catch (Exception e) {
-            e.printStackTrace();
-            return false; // 鍙戦�佹秷鎭け璐�
-        }
-    }
-
-    // 鎺ユ敹 JSON 娑堟伅骞惰浆鎹负瀵硅薄
-    public static <T> T receiveJsonMessage(Class<T> valueType, String queueName) throws Exception {
-        // 鍒涘缓杩炴帴宸ュ巶骞惰缃富鏈哄悕
-        ConnectionFactory factory = new ConnectionFactory();
-        factory.setHost(host);
-
-        // 浣跨敤 try-with-resources 璇彞鍒涘缓杩炴帴鍜岄�氶亾锛屽苟鎺ユ敹 JSON 娑堟伅
-        try (Connection connection = factory.newConnection();
-             Channel channel = connection.createChannel()) {
-            // 澹版槑闃熷垪
-            channel.queueDeclare(queueName, false, false, false, args);
-
-            // 鑾峰彇闃熷垪涓殑娑堟伅
-            GetResponse response = channel.basicGet(queueName, true);
-            if (response != null) {
-                byte[] body = response.getBody();
-                String jsonMessage = new String(body, "UTF-8");
-                System.out.println(" [x] Received JSON message: '" + jsonMessage + "' from queue '" + queueName + "'");
-
-                // 灏� JSON 娑堟伅杞崲涓哄璞�
-                return objectMapper.readValue(jsonMessage, valueType);
-            } else {
-                return null;
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-            return null; // 鎺ユ敹娑堟伅澶辫触
-        }
-    }
-
-}
-
-//    RabbitMQUtils.sendMessage("Hello, world!", "module_queue");
-//RabbitMQUtils.receiveMessage("module_queue");
-//RabbitMQUtils.sendJsonMessage(someObject, "another_queue");
-//RabbitMQUtils.receiveJsonMessage(SomeClass.class, "another_queue");
-// 闇�瑕佸皢 someObject 鏇挎崲涓轰綘瑕佸彂閫佺殑瀵硅薄锛屽苟灏� SomeClass 鏇挎崲涓轰綘瑕佹帴鏀跺苟杞崲鐨勫璞$被鍨嬨��
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/java/com/mes/common/Result.java b/UnLoadGlassModule/src/main/java/com/mes/common/Result.java
deleted file mode 100644
index 654546b..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/common/Result.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.mes.common;
-//杩斿洖缁撴灉鍖呰绫�
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-public class Result {
-    private String code;
-    private String msg;
-    private Object data;
-
-    public static  Result seccess(){
-        return new Result(Constants.Code_200,"",null);
-    }
-    public static  Result seccess(Object data){
-        return new Result(Constants.Code_200,"",data);
-    }
-
-    public static  Result error(String code ,String msg){
-        return new Result(code,msg,null);
-    }
-    public static  Result error(){
-        return new Result(Constants.Code_500,"鏈嶅姟鍣ㄥ彂鐢熷紓甯�",null);
-    }
-
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/common/interceptor/JwtInterceptor.java b/UnLoadGlassModule/src/main/java/com/mes/common/interceptor/JwtInterceptor.java
deleted file mode 100644
index 43104f9..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/common/interceptor/JwtInterceptor.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package com.mes.common.interceptor;
-
-import cn.hutool.core.util.StrUtil;
-import com.auth0.jwt.JWT;
-import com.auth0.jwt.JWTVerifier;
-import com.auth0.jwt.algorithms.Algorithm;
-import com.auth0.jwt.exceptions.JWTVerificationException;
-import com.mes.common.CacheUtil;
-import com.mes.common.Constants;
-import com.mes.controller.dto.UserDTO;
-import com.mes.exception.ServiceException;
-import com.mes.service.userInfo.UserService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.springframework.web.method.HandlerMethod;
-import org.springframework.web.servlet.HandlerInterceptor;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-@Component
-public class JwtInterceptor implements HandlerInterceptor {
-
-    @Autowired
-    private UserService userService;
-    @Autowired
-    private CacheUtil cacheUtil;
-
-    @Override
-    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
-        //return HandlerInterceptor.super.preHandle(request, response, handler);
-        /*String token=request.getHeader("token");
-        if(!(handler instanceof HandlerMethod)){
-            return  true;
-        }
-
-        if(StrUtil.isBlank(token)){
-            throw new ServiceException(Constants.Code_401,"鏃爐oken,閲嶆柊鐧婚檰");
-        }
-        String userId;
-        try{
-            userId = JWT.decode(token).getAudience().get(0);
-        }catch (Exception e){
-            throw new ServiceException(Constants.Code_500,"token鏍煎紡閿欒");
-        }
-
-        UserDTO getUserDTO = cacheUtil.getCacheData(userId);
-
-        if(getUserDTO != null && !getUserDTO.getToken().equals(token)){
-            throw new ServiceException(Constants.Code_600,"鐢ㄦ埛鍦ㄥ叾浠栦綅缃櫥闄�");
-        }
-
-
-        String password=userService.getUserByID(userId).toLowerCase();
-        //鐢ㄦ埛瀵嗙爜鍔犵楠岃瘉
-        JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256(password)).build();
-        try {
-            jwtVerifier.verify(token);
-        } catch (JWTVerificationException e) {
-            throw new ServiceException(Constants.Code_401,"token楠岃瘉澶辫触,璇烽噸鏂扮櫥闄�");
-        }*/
-        return true;
-    }
-
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java b/UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java
deleted file mode 100644
index ab753f3..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.mes.config;
-
-import com.mes.service.PLCAutoMes;
-import com.mes.service.Plchome;
-import org.springframework.boot.ApplicationArguments;
-import org.springframework.boot.ApplicationRunner;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Component;
-
-@Component
-@Order(1)
-
-public class AppRunnerConfig implements ApplicationRunner {
-
-    @Override
-    public void run(ApplicationArguments args) throws Exception {
-        // TODO Auto-generated method stub
-        //
-        System.out.println("鍚姩瀹屾垚");
-
-
-
-
-        //  new PlcHold().start();
-       new PLCAutoMes().start();
-
-    new Plchome().start();
-        //  new PlcLayout().start();
-        //  new Plcalarm().start();
-
-        //  new Plcsign().start();
-
-        //  new Plcstate().start();
-        //  new PlcPositioning1().start();
-
-        //  new PlcParameter2().start();
-        //  new PLCAutomaticParameterSetting().start();
-
-        //  new PlcManualonePosition().start();
-        //  new PlcManualonePosition2().start();
-        //  new PlcServoManualone().start();
-        //  new PLCManualJog().start();
-        //  new Plclog().start();
-
-        //  new PlcInteractionState().start();
-        //new PlcParameter1Review().start();
-        //new PLCAutomaticParameterSettingReview2().start();
-
-    // new PLCManualJogReview().start();
-    }
-}
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/java/com/mes/config/InterceptorConfig.java b/UnLoadGlassModule/src/main/java/com/mes/config/InterceptorConfig.java
deleted file mode 100644
index 43bfcc7..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/config/InterceptorConfig.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.mes.config;
-
-import com.mes.common.interceptor.JwtInterceptor;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-
-import javax.annotation.Resource;
-
-@Configuration
-
-public class InterceptorConfig implements WebMvcConfigurer {
-    @Resource
-    private JwtInterceptor jwtInterceptor;
-    @Override
-    public void addInterceptors(InterceptorRegistry registry) {
-        registry.addInterceptor(jwtInterceptor)
-                .addPathPatterns("/**")
-                .excludePathPatterns("/user/login",
-                        "/user/register",
-                        "/swagger-resources/**"
-                        ,"/webjars/**"
-                        ,"/v2/**"
-                        ,"/swagger-ui.html/**"
-                        ,"/swagger-ui.html#/**");
-    }
-
-
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/config/MyCorsConfig.java b/UnLoadGlassModule/src/main/java/com/mes/config/MyCorsConfig.java
deleted file mode 100644
index 9cb413e..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/config/MyCorsConfig.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.mes.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.CorsRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-@Configuration(proxyBeanMethods = false)
-public class MyCorsConfig {
-    @Bean
-    public WebMvcConfigurer corsConfigurer() {
-        return new WebMvcConfigurer() {
-            @Override
-            public void addCorsMappings(CorsRegistry registry) {
-                registry.addMapping("/**");
-            }
-        };
-    }
-
-
-}
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/java/com/mes/config/MybatisPlusConfig.java b/UnLoadGlassModule/src/main/java/com/mes/config/MybatisPlusConfig.java
deleted file mode 100644
index d14faae..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/config/MybatisPlusConfig.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.mes.config;
-
-import com.baomidou.mybatisplus.annotation.DbType;
-import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
-import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
-import org.springframework.context.annotation.Bean;
-
-public class MybatisPlusConfig {
-    @Bean
-    public MybatisPlusInterceptor mybatisPlusInterceptor() {
-        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
-        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));//濡傛灉閰嶇疆澶氫釜鎻掍欢,鍒囪鍒嗛〉鏈�鍚庢坊鍔�
-        //interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); 濡傛灉鏈夊鏁版嵁婧愬彲浠ヤ笉閰嶅叿浣撶被鍨� 鍚﹀垯閮藉缓璁厤涓婂叿浣撶殑DbType
-        return interceptor;
-    }
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/config/SwaggerConfig.java b/UnLoadGlassModule/src/main/java/com/mes/config/SwaggerConfig.java
deleted file mode 100644
index 7ccbf7e..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/config/SwaggerConfig.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package com.mes.config;
-import com.google.common.collect.Lists;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.ParameterBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.schema.ModelRef;
-import springfox.documentation.service.*;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spi.service.contexts.SecurityContext;
-import springfox.documentation.spring.web.plugins.Docket;
-import springfox.documentation.swagger2.annotations.EnableSwagger2;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import static springfox.documentation.builders.PathSelectors.regex;
-
-@Configuration
-@EnableSwagger2     //寮�鍚疭wagger2
-public class SwaggerConfig {
-
-    //閰嶇疆浜哠wagger鐨凞ocket鐨刡ean瀹炰緥
-    @Bean
-    public Docket docket(){
-        return new Docket(DocumentationType.SWAGGER_2)
-                .apiInfo(apiInfo())
-                .select()
-                //鍔犱簡ApiOperation娉ㄨВ鐨勭被锛屾墠鐢熸垚鎺ュ彛鏂囨。
-                .apis(RequestHandlerSelectors.basePackage("com.mes.controller"))
-                //鍖呬笅鐨勭被锛屾墠鐢熸垚鎺ュ彛鏂囨。
-                .paths(PathSelectors.any())
-                .build()
-                .securitySchemes(securitySchemes())
-                .securityContexts(securityContexts());
-
-    }
-
-
-    /**
-     * 閰嶇疆璁よ瘉妯″紡
-     * @return
-     */
-    private List<ApiKey> securitySchemes() {
-        List<ApiKey> arrayList = new ArrayList<>();
-        arrayList.add( new ApiKey("token", "token", "header"));
-        return arrayList;
-    }
-
-    /**
-     * 閰嶇疆璁よ瘉涓婁笅鏂�
-     */
-    private List<SecurityContext> securityContexts() {
-        List<SecurityContext> securityContexts = new ArrayList<>();
-        securityContexts.add(SecurityContext.builder().securityReferences(defaultAuth())
-                //杩囨护瑕侀獙璇佺殑璺緞
-                .forPaths(PathSelectors.regex("^(?!auth).*$"))
-                .build());
-        return securityContexts;
-    }
-
-    private List<SecurityReference> defaultAuth() {
-        AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
-        AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
-        authorizationScopes[0] = authorizationScope;
-        List<SecurityReference> securityReferences = new ArrayList<>();
-        //楠岃瘉澧炲姞锛堟湁璁稿鏁欑▼璇存槑涓繖涓湴鏂规槸Authorization,瀵艰嚧涓嶈兘甯﹀叆鍏ㄥ眬token锛屽洜涓簊ecuritySchemes()鏂规硶涓環eader鍐欏叆token锛屾墍浠ヨ繖涓湴鏂规垜鏀逛负token灏卞彲浠ヤ簡锛�
-        securityReferences.add(new SecurityReference("token", authorizationScopes));
-        return securityReferences;
-    }
-    //閰嶇疆Swagger淇℃伅 = apiInfo
-    private ApiInfo apiInfo(){
-        //浣滆�呬俊鎭�
-        Contact contact = new Contact("閮瓂j", "", "");
-        return new ApiInfo(
-                "NorthGlass-ERP 鎺ュ彛鏂囨。",       //title
-                "閮瓂j",        //description
-                "1.0",                          //version
-                "urn:tos",
-                contact,
-                "Apache 2.0",
-                "http://www.apache.org/licenses/LICENSE-2.0",
-                new ArrayList());
-    }
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/config/WebSocketConfig.java b/UnLoadGlassModule/src/main/java/com/mes/config/WebSocketConfig.java
deleted file mode 100644
index 1902638..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/config/WebSocketConfig.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.mes.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-//import org.springframework.web.socket.server.standard.ServerEndpointExporter;
-
-/**
- * @author HFL
- * @date 2022/5/16 14:49
- * 閰嶇疆绫�
- */
-//@Configuration
-public class WebSocketConfig {
-
-    //@Bean
-//    public ServerEndpointExporter serverEndpointExporter(){
-//        return new ServerEndpointExporter();
-//    }
-
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/controller/DownGlassInfoController.java b/UnLoadGlassModule/src/main/java/com/mes/controller/DownGlassInfoController.java
deleted file mode 100644
index 01870af..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/controller/DownGlassInfoController.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.mes.controller;
-
-import com.mes.entity.DownGlassInfo;
-import com.mes.service.DownGlassInfoService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-@RestController
-@RequestMapping("/downGlassInfo")
-public class DownGlassInfoController {
-
-    @Autowired
-    private DownGlassInfoService downGlassInfoService;
-
-    /**
-     * @param id
-     * @return
-     * // 鑾峰彇鎸囧畾ID鐨凞ownGlassInfo淇℃伅
-     */
-
-    @GetMapping("/{id}")
-    public DownGlassInfo getDownGlassInfoById(@PathVariable Integer id) {
-        return downGlassInfoService.getDownGlassInfoById(id);
-    }
-
-
-
-//    @GetMapping("/messages")
-//    public String getMessages() throws IOException, TimeoutException {
-//        List<String> messages = new ArrayList<>();
-//        try {
-//            messages = RabbitMQUtils.browseMessages("hangzhou2");
-//        } catch (Exception e) {
-//            e.printStackTrace();
-//        }
-//        return messages.toString();  // 杩斿洖娑堟伅鍒楄〃鐨勫瓧绗︿覆琛ㄧず褰㈠紡
-//    }
-
-
-
-
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/controller/DownWorkstationController.java b/UnLoadGlassModule/src/main/java/com/mes/controller/DownWorkstationController.java
deleted file mode 100644
index 46f7085..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/controller/DownWorkstationController.java
+++ /dev/null
@@ -1,125 +0,0 @@
-package com.mes.controller;
-
-import com.mes.entity.DownWorkstation;
-import com.mes.service.DownWorkstationService;
-import com.mes.service.GlassInfoService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-@RestController
-@RequestMapping("/api/downWorkstation")
-public class DownWorkstationController {
-
-    @Autowired
-    private DownWorkstationService downWorkstationService;
-    @Autowired
-    private GlassInfoService glassInfoService;
-
-    @GetMapping("/getone")
-    public ResponseEntity<?> getOneDownWorkstations() {
-        try {
-            List<DownWorkstation> data = downWorkstationService.getoneDownWorkstations();
-            // 鏋勫缓绗﹀悎棰勬湡鏍煎紡鐨勫搷搴旀暟鎹�
-            Map<String, Object> responseData = new HashMap<>();
-            responseData.put("code", 200);
-            responseData.put("msg", "鎴愬姛");
-            responseData.put("data", data);
-            // 杩斿洖 ResponseEntity 瀵硅薄锛屽寘鍚搷搴旀暟鎹拰鐘舵�佺爜
-            return ResponseEntity.ok(responseData);
-        } catch (Exception e) {
-            e.printStackTrace();
-            // 濡傛灉鍑虹幇寮傚父锛岃繑鍥為敊璇俊鎭�
-            Map<String, Object> errorResponse = new HashMap<>();
-            errorResponse.put("code", 500);
-            errorResponse.put("msg", "鏈嶅姟鍣ㄥ唴閮ㄩ敊璇�");
-            return ResponseEntity.status(500).body(errorResponse);
-        }
-    }
-
-    @GetMapping("/gettwo")
-    public List<DownWorkstation> gettwoDownWorkstations() {
-        return downWorkstationService.gettwoDownWorkstations();
-    }
-    @GetMapping("/getflowCardId")
-    public ResponseEntity<Map<String, Object>> getflowCardId() {
-        Map<String, Object> responseData = new HashMap<>();
-        try {
-            List<Map<String, Object>> data = downWorkstationService.getflowCardId();
-            responseData.put("code", 200);
-            responseData.put("msg", "鎴愬姛");
-            responseData.put("data", data);
-            return ResponseEntity.ok(responseData);
-        } catch (Exception e) {
-            responseData.put("code", 500);
-            responseData.put("msg", "澶辫触");
-            responseData.put("data", null);
-            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(responseData);
-        }
-    }
-
-
-
-
-    @PostMapping("/updateFlowCardId")
-    public ResponseEntity<Map<String, Object>> updateFlowCardId(@RequestBody Map<String, Object> requestData) {
-        // 浠� requestData 涓幏鍙栦紶鍏ョ殑 flowCardId
-        String flowCardId = (String) requestData.get("flowCardId");
-        int workstationId = (int) requestData.get("workstationId");
-
-        // 鏌ヨ瀵瑰簲 flowCardId 鐨勭幓鐠冧俊鎭�绘暟閲�
-        int glassInfoCount = glassInfoService.getGlassInfoCountByFlowCardId(flowCardId);
-
-        // 鏇存柊 down_workstation 琛ㄤ腑鐨勬�绘暟閲�
-        glassInfoService.updateFlowCardIdAndCount(flowCardId, glassInfoCount, workstationId);
-
-        // 鏋勫缓鍝嶅簲鏁版嵁
-        Map<String, Object> responseData = new HashMap<>();
-        responseData.put("message", "updated successfully");
-        responseData.put("code", 200);
-        // 杩斿洖澶勭悊缁撴灉
-        return ResponseEntity.ok(responseData);
-    }
-
-
-    @PostMapping("/clear")
-    public ResponseEntity<Map<String, Object>> clearWorkstationInfo(@RequestBody Map<String, Object> requestData) {
-        // 璋冪敤 DownWorkstationService 涓殑鏂规硶娓呴櫎鎸囧畾宸ヤ綅ID鐨勪俊鎭�
-        int workstationId = (int) requestData.get("workstationId");
-
-        int totalWorkstations = downWorkstationService.getTotalQuantity(workstationId);
-        int downWorkstations = downWorkstationService.getRacksNumber(workstationId);
-
-
-        if (downWorkstations == totalWorkstations) {
-            downWorkstationService.clearFlowCardId(workstationId);
-            Map<String, Object> responseData = new HashMap<>();
-            responseData.put("message", "cleared successfully");
-            responseData.put("code", 200);
-            // 杩斿洖澶勭悊缁撴灉
-            return ResponseEntity.ok(responseData);
-        }
-        else {
-            // 濡傛灉鎬绘暟閲忓拰钀芥灦鏁伴噺涓嶄竴鑷达紝杩斿洖閿欒鍝嶅簲
-            Map<String, Object> errorResponse = new HashMap<>();
-            errorResponse.put("message", "Total workstations count does not match down workstations count.");
-            errorResponse.put("code", 400);
-            return ResponseEntity.badRequest().body(errorResponse);
-        }
-
-
-        // 鏋勫缓鍝嶅簲鏁版嵁
-
-    }
-
-
-
-
-
-
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/controller/dto/UserDTO.java b/UnLoadGlassModule/src/main/java/com/mes/controller/dto/UserDTO.java
deleted file mode 100644
index 05a2545..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/controller/dto/UserDTO.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.mes.controller.dto;
-
-import lombok.Data;
-@Data //鐢ㄤ簬鎺ュ彈鍓嶇鐧诲綍棰漸ser淇℃伅
-public class UserDTO {
-    private String userId;
-    private String pass;
-    private String token;
-    private String userName;
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/controller/userInfo/SysMenuController.java b/UnLoadGlassModule/src/main/java/com/mes/controller/userInfo/SysMenuController.java
deleted file mode 100644
index 6eee09a..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/controller/userInfo/SysMenuController.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.mes.controller.userInfo;
-
-import com.mes.common.CacheUtil;
-import com.mes.common.Result;
-import com.mes.service.userInfo.SysMenuService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-
-@RestController
-@RequestMapping("/menu")
-
-public class SysMenuController {
-    @Autowired
-    private CacheUtil cacheUtil;
-    @Autowired
-    private SysMenuService sysMenuService;
-    @GetMapping
-    public Result getMenu(){
-        //MyChannelHandlerPool myChannelHandlerPool = new MyChannelHandlerPool();
-        //myChannelHandlerPool.sendMsg("123");
-        //MyChannelHandlerPool.channelGroup.writeAndFlush( new TextWebSocketFrame("123123"));
-        return Result.seccess(sysMenuService.getMenu());
-
-    }
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/controller/userInfo/SysMenuItemController.java b/UnLoadGlassModule/src/main/java/com/mes/controller/userInfo/SysMenuItemController.java
deleted file mode 100644
index e7247fe..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/controller/userInfo/SysMenuItemController.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.mes.controller.userInfo;
-
-import com.mes.common.Result;
-import com.mes.service.userInfo.SysMenuItemService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-@RestController
-@RequestMapping("/menuItem")
-public class SysMenuItemController {
-    @Autowired
-    SysMenuItemService sysMenuItemService;
-    @GetMapping
-    public Result getMenuItem(){
-        return Result.seccess(sysMenuItemService.getMenuItem());
-    }
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/controller/userInfo/UserController.java b/UnLoadGlassModule/src/main/java/com/mes/controller/userInfo/UserController.java
deleted file mode 100644
index e3be9dc..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/controller/userInfo/UserController.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package com.mes.controller.userInfo;
-
-import com.mes.common.CacheUtil;
-import com.mes.common.Constants;
-import com.mes.common.Result;
-import com.mes.entity.userInfo.User;
-import com.mes.exception.ServiceException;
-import com.mes.mapper.userInfo.UserMapper;
-import com.mes.service.userInfo.UserService;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-@RestController //娉ㄨВuser鎺у埗鍣紝鎸傝浇鍒皊pringboot褰撲腑
-@RequestMapping("/user")  //娉ㄨВ鍓嶇寮傛璇锋眰濡傦細localhost锛�8080/user
-public class UserController {
-    @Autowired
-    private UserMapper userMapper;
-    @Autowired
-    private UserService userService;
-    @Autowired
-    private CacheUtil cacheUtil;
-
-
-
-
-    @GetMapping
-    public List<User> getUser(){
-        System.out.println(cacheUtil.getCacheData("admin"));
-        return userMapper.findAll();
-    }
-    //@ApiOperation("鐧诲綍")
-   // @PostMapping("/login")
-//    public Result login(@RequestBody UserDTO userDTO){
-//        //UserDTO getUserCacheDTO = cacheUtil.getCacheData(userDTO.getUserId());
-//        userService.deleteCache(userDTO.getUserId());
-//        UserDTO getUserDTO=userService.login(userDTO);
-//        if(getUserDTO!=null){
-//            return Result.seccess(userDTO);
-//        }else{
-//            throw new ServiceException(Constants.Code_600,"鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒");
-//        }
-//    }
-    @ApiOperation("娉ㄥ唽")
-    @PostMapping("/register")
-    public Result register(@RequestBody User user){
-        User getUser= userService.register(user);
-        if(getUser == null){
-            throw new ServiceException(Constants.Code_500,"娉ㄥ唽澶辫触");
-        }else {
-            return Result.seccess(getUser);
-        }
-
-        //return
-    }
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/DownGlassInfo.java b/UnLoadGlassModule/src/main/java/com/mes/entity/DownGlassInfo.java
deleted file mode 100644
index 206e72d..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/entity/DownGlassInfo.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.mes.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import lombok.Data;
-
-@Data
-public class DownGlassInfo {
-
-    @TableId(type = IdType.AUTO)
-    private Integer id; // 涓嬬墖鐜荤拑淇℃伅琛╥d
-
-    private String flowCardId; // 娴佺▼鍗″彿
-    private Integer sequence; // 椤哄簭
-    private Double width; // 瀹�
-    private Double height; // 楂�
-    private Double thickness; // 鍘氬害
-    private String filmsid;//鑶滅郴
-
-
-}
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/DownStorageCage.java b/UnLoadGlassModule/src/main/java/com/mes/entity/DownStorageCage.java
deleted file mode 100644
index d917446..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/entity/DownStorageCage.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.mes.entity;
-
-
-import com.baomidou.mybatisplus.annotation.IdType;
-        import com.baomidou.mybatisplus.annotation.TableId;
-        import lombok.Data;
-
-@Data
-public class DownStorageCage {
-
-    @TableId(type = IdType.AUTO)
-    private int id; // 涓嬬墖鍓嶇悊鐗囩琛╥d
-    private int deviceId; // 璁惧id
-    private String slot; // 鏍呮牸鍙�
-    private String enableState; // 鍚敤鐘舵��
-    private int remainWidth; // 鍓╀綑
-
-}
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/DownStorageCageDetails.java b/UnLoadGlassModule/src/main/java/com/mes/entity/DownStorageCageDetails.java
deleted file mode 100644
index 4f631dc..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/entity/DownStorageCageDetails.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package com.mes.entity;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import lombok.Data;
-/**
- * 涓嬬墖鍓嶇悊鐗囩鏄庣粏瀹炰綋绫�
- */
-/**
- * 涓嬬墖鍓嶇悊鐗囩鏄庣粏瀹炰綋绫�
- * @author SNG-012
- */
-@Data
-public class DownStorageCageDetails {
-
-    @TableId(type = IdType.AUTO)
-    /**
-     * 涓嬬墖鍓嶇悊鐗囩鏄庣粏琛╥d
-     */
-    private int id;
-
-    /**
-     * 璁惧id
-     */
-    private int deviceId;
-
-    /**
-     * 鏍呮牸鍙�
-     */
-    private int slot;
-
-    /**
-     * 鐜荤拑id
-     */
-    private int glassId;
-
-    /**
-     * 灏忕墖鍦ㄦ牸鍐呯殑椤哄簭
-     */
-    private int sequence;
-
-    /**
-     * 娴佺▼鍗″彿
-     */
-    private String flowCardId;
-
-    /**
-     * 鑶滅郴id
-     */
-    private int filmsid;
-    /**
-     * 鐜荤拑绫诲瀷
-     */
-    private int glassType;
-
-    /**
-     * 瀹�
-     */
-    private double width;
-
-    /**
-     * 楂�
-     */
-    private double height;
-
-    /**
-     * 鍘氬害
-     */
-    private double thickness;
-
-    /**
-     * 閽㈠寲鐗堝浘id
-     */
-    private int temperingFeedSequence;
-
-    /**
-     * 閽㈠寲鐗堝浘鐗囧簭
-     */
-    private int temperingLayoutId;
-
-    /**
-     * 鐘舵��
-     */
-    private int state;
-
-    /**
-     * 鐜荤拑闂撮殭
-     */
-    private int gap;
-}
-
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/DownWorkstation.java b/UnLoadGlassModule/src/main/java/com/mes/entity/DownWorkstation.java
deleted file mode 100644
index 3c15a9d..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/entity/DownWorkstation.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.mes.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import lombok.Data;
-
-@Data
-public class DownWorkstation {
-
-    /**
-     * // 涓嬬墖宸ヤ綅琛�
-     */
-    @TableId(type = IdType.AUTO)
-    private int id;
-
-    /**
-     * // 宸ヤ綅id
-     */
-    private Integer workstationId;
-
-    /**
-     *  // 娴佺▼鍗″彿
-     */
-    private String flowCardId;
-
-    /**
-     *  // 璁惧id
-     */
-    private Integer deviceId;
-
-    /**
-     *   // 鍚敤鐘舵��
-     */
-    private Integer enableState;
-
-
-
-    /**
-     *    // 宸ヤ綔鐘舵��
-     */
-    private Integer workState;
-
-    /**
-     *  // 宸茶惤鏋舵暟閲�
-     */
-    @TableField(value = "racks_number")
-    private int racksnumber;
-
-    /**
-     *     // 鎬绘暟閲�
-     */
-    @TableField(value = "total_quantity")
-    private Integer totalquantity;
-
-}
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/EdgStorageCageDetails.java b/UnLoadGlassModule/src/main/java/com/mes/entity/EdgStorageCageDetails.java
deleted file mode 100644
index 6cf60bd..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/entity/EdgStorageCageDetails.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.mes.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-@Data  //lombok 绠�鍐檍ava浠g爜 瀹炰綋绫荤殑get涓巗et
-@TableName("`edg_storage_cage_details`")
-public class EdgStorageCageDetails {
-    @TableId(type = IdType.AUTO)
-    private  Integer id;//纾ㄨ竟鍓嶇悊鐗囩璇︽儏琛╥d
-    private  Integer deviceid;//璁惧id
-    private  Integer slot;//鏍呮牸鍙�
-    private  Integer glassid;//鐜荤拑id
-    private  Integer sequence;//灏忕墖鍦ㄦ牸鍐呯殑椤哄簭
-    private  String flowcardid;//娴佺▼鍗″彿
-    private  Integer glasstype;//鐜荤拑绫诲瀷
-    private  Double width;//瀹�
-    private  Double height;//楂�
-    private  Double thickness;//鍘氬害
-    private  Double edgwidth;//纾ㄥ墠瀹�
-    private  Double edgheight;//纾ㄥ墠楂�
-    private  Integer temperinglayoutid;//閽㈠寲鐗堝浘id
-    private  Integer temperingfeedsequence;//閽㈠寲鐗堝浘鐗囧簭
-    private  Integer patternsequence;//鍘熺墖椤哄簭
-    private  Integer state;//鐘舵�� 
-    private  Integer gap;//鐜荤拑闂撮殭
-
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/GlassInfo.java b/UnLoadGlassModule/src/main/java/com/mes/entity/GlassInfo.java
deleted file mode 100644
index 4a46f60..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/entity/GlassInfo.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.mes.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-import java.math.BigInteger;
-
-@Data  //lombok 绠�鍐檍ava浠g爜 瀹炰綋绫荤殑get涓巗et
-@TableName("`glass_info`")
-public class GlassInfo {
-    @TableId(type = IdType.AUTO)
-    private  BigInteger id;//鐜荤拑淇℃伅琛╥d
-    private  String flowcardid;//娴佺▼鍗�
-    private  Integer glasstype;//娴佺▼鍗$幓鐠冪被鍨�
-    private  Double width;//瀹�
-    private  Double height;//楂�
-    private  Double thickness;//鍘氬害
-    private  Integer filmsid;//鑶滅郴
-    private  Double edgwidth;//纾ㄥ墠瀹�
-    private  Double edgheight;//纾ㄥ墠楂�
-    private  Integer ismultiple;//鏄惁閰嶇墖
-    private  Double maxwidth;//閰嶇墖鏈�澶у
-    private  Double maxheight;//閰嶇墖鏈�澶ч珮
-    private  Integer ishorizontal;//閽㈠寲鏄惁鎺ュ彈妯斁
-    private  Integer patternsequence;//鍘熺墖椤哄簭
-    private  Integer temperinglayoutid;//閽㈠寲鐗堝浘id
-    private  Integer temperingfeedsequence;//閽㈠寲鐗堝浘鐗囧簭
-    private  Integer xcoordinate;//x鍧愭爣
-    private  Integer ycoordinate;//y鍧愭爣
-    private  Integer angle;//鏃嬭浆瑙掑害锛堥�嗘椂閽堬級
-
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/TaskCache.java b/UnLoadGlassModule/src/main/java/com/mes/entity/TaskCache.java
deleted file mode 100644
index 3e02731..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/entity/TaskCache.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.mes.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import lombok.Data;
-
-@Data  //lombok 绠�鍐檍ava浠g爜 瀹炰綋绫荤殑get涓巗et
-
-public class TaskCache {
-    @TableId(type = IdType.AUTO)
-    private int id;//id
-    private String startCell;//璧峰
-    private String endCell;//缁撴潫
-    private String taskType;//绫诲瀷
-    private double width;//瀹�
-    private double height;//鎼�
-    private String filmsId;//鑶滅郴
-    private double thickness;//鍘氬害
-    private String flowCardId;//娴佺▼鍗″彿
-    private int taskStatus;//鐘舵��
-   
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcBitInfo.java b/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcBitInfo.java
deleted file mode 100644
index 686752f..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcBitInfo.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package com.mes.entity.device;
-
-public  class PlcBitInfo {
-
-        public PlcBitInfo(String startAddress) {
-            this.startAddress = startAddress;
-        }
-        private String startAddress;
-        // 鍙傛暟鏍囪瘑
-        private String codeId;
-
-        // 鍙傛暟鍚嶇О
-        private String name;
-
-        // 璇诲彇 鍙傛暟鍊�
-        private Boolean value;
-        // 鍙傛暟鍦板潃
-        private int addressIndex;
-
-        public String getCodeId() {
-            return this.codeId;
-        }
-
-        public void setCodeId(String codeId) {
-            this.codeId = codeId;
-        }
-
-        public String getName() {
-            return this.name;
-        }
-
-        public void setName(String name) {
-            this.name = name;
-        }
-
-        public Boolean getValue() {
-            return this.value;
-        }
-
-        public void setValue(Boolean value) {
-            this.value = value;
-        } 
-         
-
-        public int getAddressIndex() {
-            return this.addressIndex;
-        } 
-         /**
-     * 鑾峰彇鍦板潃
-     * 
-     * @param index 绱㈠紩鍦板潃
-     */
-        public String getAddress(int index) {
-            String[] stringdatas = this.startAddress.trim().split("\\.");
-            if (stringdatas.length < 2 )
-                return null;
-            int dbwindex = 0;
-            int bitindex = 0;
-             if (stringdatas.length == 3) {
-                dbwindex = Integer.parseInt(stringdatas[1]);
-                bitindex = Integer.parseInt(stringdatas[2]);
-            } else
-                return null; 
-              dbwindex+=index/8;
-              bitindex+=index%8;
-            return stringdatas[0]+"."+dbwindex+"."+bitindex;
-        }
-
-
-
-
-    public void setAddressIndex(int addressindex) {
-            this.addressIndex = addressindex;
-        } 
-    }
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcBitObject.java b/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcBitObject.java
deleted file mode 100644
index 977a13c..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcBitObject.java
+++ /dev/null
@@ -1,142 +0,0 @@
-package com.mes.entity.device;
-
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-public class PlcBitObject {
-
-    // 璇ユā鍧楁暟鎹被鍨嬶紝鏁版嵁璧峰浣嶇疆
-    private String plcAddressBegin;
-    // 鏁版嵁鍦板潃闀垮害锛氱涓�鍙傛暟鍒版渶鍚庝竴涓弬鏁扮殑闀垮害
-    private int plcAddressLength;
-    private ArrayList<PlcBitInfo> plcBitList;
-
-    /**
-     * @return 鏁版嵁鍖哄紑濮嬪湴鍧�
-     */
-    public String getPlcAddressBegin() {
-        return plcAddressBegin;
-    }
-
-    /**
-     * @param plcAddressBegin 璁剧疆鏁版嵁鍖哄紑濮嬪湴鍧�
-     */
-    public void setPlcAddressBegin(String plcAddressBegin) {
-        this.plcAddressBegin = plcAddressBegin;
-    }
-
-    /**
-     * @return 鏁版嵁鍖� 璇诲彇鎵�鏈夋暟鎹墍闇�鐨勯暱搴︼紙浠yte绫诲瀷涓哄熀鍑嗭級
-     */
-    public int getPlcAddressLength() {
-        return plcAddressLength;
-    }
-
-    /**
-     * @return 璁剧疆锛氭暟鎹尯 璇诲彇鎵�鏈夋暟鎹墍闇�鐨勯暱搴︼紙浠yte绫诲瀷涓哄熀鍑嗭級
-     */
-    public void setPlcAddressLength(int plcAddressLength) {
-        this.plcAddressLength = plcAddressLength;
-    }
-
-    /**
-     * @return 鑾峰彇鍙傛暟瀹炰緥闆嗗悎
-     */
-    public ArrayList<PlcBitInfo> getBitList() {
-        return plcBitList;
-    }
-
-    /**
-     * 鏍规嵁鍙傛暟鏍囪瘑 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
-     * 
-     * @param codeid 鍙傛暟鏍囪瘑
-     * @return 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
-     */
-    public PlcBitInfo getPlcBit(String codeid) {
-        if (plcBitList != null) {
-            for (PlcBitInfo plcbitInfo : plcBitList) {
-                if (plcbitInfo.getCodeId().equals(codeid))
-                    return plcbitInfo;
-            }
-            return null;
-        } else
-            return null;
-    }
-
-    /**
-     * 鏍规嵁鍙傛暟鏍囪瘑 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
-     * 
-     * @param codeid 鍙傛暟鏍囪瘑
-     * @return 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
-     */
-    public List<Boolean> getPlcBitValues(List<String> codeids) {
-        List<Boolean> arrayList = new ArrayList<>();
-        if (plcBitList != null) {
-            Map<String, Boolean> resultMap = new LinkedHashMap<>(); // 浣跨敤 LinkedHashMap 淇濈暀鎻掑叆椤哄簭
-            for (PlcBitInfo plcBitInfo : plcBitList) {
-                if (codeids.contains(plcBitInfo.getCodeId().toString())) {
-                    resultMap.put(plcBitInfo.getCodeId().toString(), plcBitInfo.getValue());
-                }
-            }
-            for (String codeId : codeids) { // 鎸夌収浼犲叆鍙傛暟鐨勯『搴忛亶鍘�
-                Boolean value = resultMap.get(codeId);
-                if (value != null) {
-                    arrayList.add(value);
-                } else {
-                    arrayList.add(null); // 濡傛灉鎵句笉鍒板搴旂殑鍊硷紝娣诲姞 null
-                }
-            }
-        }
-        return arrayList;
-    }
-
-
-    public List<String> getAddressListByCodeId(List<String> codeIdList) {
-        List<String> addressList = new ArrayList<>();
-        for (String codeId : codeIdList) {
-            for (PlcBitInfo plcBitInfo : plcBitList) {
-                if (plcBitInfo.getCodeId().equals(codeId)) {
-                    int index = plcBitInfo.getAddressIndex();
-                    String address = plcBitInfo.getAddress(index);
-                    if (address != null) {
-                        addressList.add(address);
-                    }
-                }
-            }
-        }
-        return addressList;
-    }
-
-
-    /**
-     * 娣诲姞鍙傛暟瀹炰緥
-     * 
-     * @param param 鍙傛暟瀹炰緥
-     */
-    public void addPlcBit(PlcBitInfo param) {
-        if (plcBitList != null)
-            plcBitList.add(param);
-        else {
-            plcBitList = new ArrayList<PlcBitInfo>();
-            plcBitList.add(param);
-        }
-    }
-
-    /**
-     * 鏍规嵁PLC杩斿洖鐨勬暟鎹� 缁欏弬鏁板疄渚嬭祴鍊�
-     * 
-     * @param plcValueArray PLC璇诲彇鍥炴潵鐨刡yte绫诲瀷鏁版嵁闆嗗悎
-     */
-    public void setPlcBitList(List<Boolean> plcValueArray) {
-        if (plcBitList != null) {
-            for (PlcBitInfo plcbitInfo : plcBitList) {
-                plcbitInfo.setValue(plcValueArray.get(plcbitInfo.getAddressIndex()));
-            }
-        }
-    }
-   
-
-   
-}
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterInfo.java b/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterInfo.java
deleted file mode 100644
index 4d41978..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterInfo.java
+++ /dev/null
@@ -1,128 +0,0 @@
-package com.mes.entity.device;
-public  class PlcParameterInfo {
-      public PlcParameterInfo(String startAddress) {
-        this.startAddress = startAddress;
-      } 
-        private String startAddress;
-        // 鍙傛暟鏍囪瘑
-        private String codeId;
-
-        // 鍙傛暟鍚嶇О
-        private String name;
-
-        // 璇诲彇 鍙傛暟鍊�
-        private String value;
-
-        // // 鍐欏叆 鍙傛暟鍊�
-        // private String writeValue;
-
-        // 鍙傛暟鍗曚綅
-        private String unit;
-
-        // 鍙傛暟鍊艰浆鎹㈢郴鏁�
-        private int ratio;
-
-        // 鍙傛暟鍦板潃
-        private int addressIndex;
-
-        // 鍙傛暟鍦板潃浣嶉暱搴�
-        private int addressLength;
-
-        public String getCodeId() {
-            return this.codeId;
-        }
-
-        public void setCodeId(String codeId) {
-            this.codeId = codeId;
-        }
-
-        public String getName() {
-            return this.name;
-        }
-
-        public void setName(String name) {
-            this.name = name;
-        }
-
-        public String getValue() {
-            return this.value;
-        }
-
-        public void setValue(String value) {
-            this.value = value;
-        }
-
-        // public String getWriteValue() {
-        //     return this.writeValue;
-        // }
-
-        // public void setWriteValue(String writeValue) {
-        //     this.writeValue = writeValue;
-        // }
-
-        public String getUnit() {
-            return this.unit;
-        }
-
-        public void setUnit(String unit) {
-            this.unit = unit;
-        }
-
-        public int getAddressIndex() {
-            return this.addressIndex;
-        }
-
-        public void setAddressIndex(int addressindex) {
-            this.addressIndex = addressindex;
-        }
-
-        public int getAddressLength() {
-            return this.addressLength;
-        }
-
-        public void setAddressLength(int addresslength) {
-            this.addressLength = addresslength;
-        }
-
-        public int getRatio() {
-            return this.ratio;
-        }
-
-        public void setRatio(int ratio) {
-            this.ratio = ratio;
-        }
-
-           /**
-     * 鑾峰彇鍦板潃
-     * 
-     * @param index 绱㈠紩鍦板潃
-     */
-    public String getAddress(int index) {
-        String[] stringdatas = this.startAddress.trim().split("\\.");
-        int addressLength=this.addressLength;
-        if (addressLength < 2 ){
-            return null;
-        }
-
-        if (addressLength == 2 ) {
-            int wordindex = index;
-
-            return stringdatas[0] + "." + wordindex;
-        }
-        if (addressLength == 14 ) {
-            int wordindex = index;
-            int newIndex = wordindex + 13;
-            return stringdatas[0] + "." + wordindex +"-" + newIndex;
-        }
-        return null;
-    }
-
-    public int getPlcAddress() {
-
-        return addressIndex;
-    }
-
-    public String getAddress() {
-        return getAddress(this.addressIndex);
-    }
-}
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterObject.java b/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterObject.java
deleted file mode 100644
index af3536c..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterObject.java
+++ /dev/null
@@ -1,205 +0,0 @@
-package com.mes.entity.device;
-
-import java.lang.reflect.Array;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-public class PlcParameterObject {
-
-    // 璇ユā鍧楁暟鎹被鍨嬶紝鏁版嵁璧峰浣嶇疆
-    private String plcAddressBegin;
-    // 鏁版嵁鍦板潃闀垮害锛氱涓�鍙傛暟鍒版渶鍚庝竴涓弬鏁扮殑闀垮害
-    private int plcAddressLength;
-    private ArrayList<PlcParameterInfo> plcParameterList;
-
-
-
-    /**
-     * @return 鏁版嵁鍖哄紑濮嬪湴鍧�
-     */
-    public String getPlcAddressBegin() {
-        return plcAddressBegin;
-    }
-
-    /**
-     * @param plcAddressBegin 璁剧疆鏁版嵁鍖哄紑濮嬪湴鍧�
-     */
-    public void setPlcAddressBegin(String plcAddressBegin) {
-        this.plcAddressBegin = plcAddressBegin;
-    }
-
-    /**
-     * @return 鏁版嵁鍖� 璇诲彇鎵�鏈夋暟鎹墍闇�鐨勯暱搴︼紙浠yte绫诲瀷涓哄熀鍑嗭級
-     */
-    public int getPlcAddressLength() {
-        return plcAddressLength;
-    }
-
-    /**
-     * @return 璁剧疆锛氭暟鎹尯 璇诲彇鎵�鏈夋暟鎹墍闇�鐨勯暱搴︼紙浠yte绫诲瀷涓哄熀鍑嗭級
-     */
-    public void setPlcAddressLength(int plcAddressLength) {
-        this.plcAddressLength = plcAddressLength;
-    }
-
-    /**
-     * @return 鑾峰彇鍙傛暟瀹炰緥闆嗗悎
-     */
-    public ArrayList<PlcParameterInfo> getPlcParameterList() {
-        return plcParameterList;
-    }
-
-    /**
-     * 鏍规嵁鍙傛暟鏍囪瘑 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
-     * 
-     * @param codeid 鍙傛暟鏍囪瘑
-     * @return 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
-     */
-    public PlcParameterInfo getPlcParameter(String codeid) {
-        if (plcParameterList != null) {
-            for (PlcParameterInfo plcParameterInfo : plcParameterList) {
-                if (plcParameterInfo.getCodeId().equals(codeid))
-                    return plcParameterInfo;
-            }
-            return null;
-        } else
-            return null;
-    }
-
-
-
-    /**
-     * 鏍规嵁鍙傛暟鏍囪瘑 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
-     * 
-     * @param codeids 鍙傛暟鏍囪瘑
-     * @return 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
-     */
-    public List<String> getPlcParameterValues(List<String> codeids) {
-        List<String> arrayList = new ArrayList<>();
-        if (plcParameterList != null) {
-            Map<String, PlcParameterInfo> resultMap = new LinkedHashMap<>(); // 浣跨敤 LinkedHashMap 淇濈暀鎻掑叆椤哄簭
-            for (PlcParameterInfo plcParameterInfo : plcParameterList) {
-                if (codeids.contains(plcParameterInfo.getCodeId())) {
-                    resultMap.put(plcParameterInfo.getCodeId(), plcParameterInfo);
-                }
-            }
-            for (String codeId : codeids) { // 鎸夌収浼犲叆鍙傛暟鐨勯『搴忛亶鍘�
-                PlcParameterInfo plcParameterInfo = resultMap.get(codeId);
-                if (plcParameterInfo != null) {
-                    arrayList.add(plcParameterInfo.getValue());
-                } else {
-                    arrayList.add(null); // 濡傛灉鎵句笉鍒板搴旂殑鍊硷紝娣诲姞 null
-                }
-            }
-        }
-        return arrayList;
-    }
-
-
-    public List<String> getAddressListByCodeId(List<String> codeIdList) {
-        List<String> addressList = new ArrayList<>();
-        for (String codeId : codeIdList) {
-            for (PlcParameterInfo plcParameterInfo : plcParameterList) {
-                if (plcParameterInfo.getCodeId().equals(codeId)) {
-                    int index = plcParameterInfo.getAddressIndex();
-                    String address = plcParameterInfo.getAddress(index);
-                    if (address != null) {
-                        addressList.add(address);
-                    }
-                }
-            }
-        }
-        return addressList;
-    }
-
-
-
-
-
-
-    /**
-     * 娣诲姞鍙傛暟瀹炰緥
-     * 
-     * @param param 鍙傛暟瀹炰緥
-     */
-    public void addPlcParameter(PlcParameterInfo param) {
-        if (plcParameterList != null)
-            plcParameterList.add(param);
-        else {
-            plcParameterList = new ArrayList<PlcParameterInfo>();
-            plcParameterList.add(param);
-        }
-    }
-
-    /**
-     * 鏍规嵁PLC杩斿洖鐨勬暟鎹� 缁欏弬鏁板疄渚嬭祴鍊�
-     * 
-     * @param plcValueArray PLC璇诲彇鍥炴潵鐨刡yte绫诲瀷鏁版嵁闆嗗悎
-     */
-    public void setPlcParameterList(byte[] plcValueArray) {
-        if (plcParameterList != null) {
-          
-            for (PlcParameterInfo plcParameterInfo : plcParameterList) {
-               
-                byte[] valueList = new byte[plcParameterInfo.getAddressLength()];
-
-//                System.out.println(plcParameterInfo.getAddressLength());
-
-                for (int i = 0; i < plcParameterInfo.getAddressLength(); i++) {
-                    Array.setByte(valueList, i, plcValueArray[plcParameterInfo.getAddressIndex() + i]);
-
-                }
-                if (plcParameterInfo.getAddressLength()==2) { 
-                      plcParameterInfo.setValue(String.valueOf(byte2short(valueList)));
-                }
-                else if (plcParameterInfo.getAddressLength()==14) {
-                    plcParameterInfo.setValue((byteToHexString(valueList)));
-                }
-
-                else
-                {
-                    String valuestr = new String(valueList);
-                    plcParameterInfo.setValue(valuestr);
-                }
-            }
-        }
-    }
-     /**
-     * short绫诲瀷杞琤yte[]
-     * 
-     * @param s short绫诲瀷鍊�
-     */
-    public static byte[] short2byte(short s){
-        byte[] b = new byte[2]; 
-        for(int i = 0; i < 2; i++){
-            int offset = 16 - (i+1)*8; //鍥犱负byte鍗�4涓瓧鑺傦紝鎵�浠ヨ璁$畻鍋忕Щ閲�
-            b[i] = (byte)((s >> offset)&0xff); //鎶�16浣嶅垎涓�2涓�8浣嶈繘琛屽垎鍒瓨鍌�
-        }
-        return b;
-   }
-     /**
-     * byte[]绫诲瀷杞瑂hort
-     * 
-     * @param b byte[]绫诲瀷鍊�
-     */
-   public static short byte2short(byte[] b){
-       short l = 0;
-       for (int i = 0; i < 2; i++) {
-           l<<=8; //<<=鍜屾垜浠殑 +=鏄竴鏍风殑锛屾剰鎬濆氨鏄� l = l << 8 
-           l |= (b[i] & 0xff); //鍜屼笂闈篃鏄竴鏍风殑  l = l | (b[i]&0xff)
-       }
-       return l;
-   }
-
-    public static String byteToHexString(byte[] bytes) {
-
-        String str = new String(bytes, StandardCharsets.UTF_8);
-        return str;
-    }
-
-
-
-}
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/userInfo/SysError.java b/UnLoadGlassModule/src/main/java/com/mes/entity/userInfo/SysError.java
deleted file mode 100644
index d756660..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/entity/userInfo/SysError.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.mes.entity.userInfo;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import lombok.Data;
-
-@Data
-public class SysError {
-    @TableId(type = IdType.AUTO)
-    private String id;
-    private String func;
-    private String error;
-    private String createTime;
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/userInfo/SysMenu.java b/UnLoadGlassModule/src/main/java/com/mes/entity/userInfo/SysMenu.java
deleted file mode 100644
index 5d0a881..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/entity/userInfo/SysMenu.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.mes.entity.userInfo;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import lombok.Data;
-
-@Data
-public class SysMenu {
-    @TableId(type = IdType.AUTO)
-    private String id;
-    private String menuName;
-    private String languageType;
-    private String state;
-    private String listSort;
-    private String createTime;
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/userInfo/SysMenuItem.java b/UnLoadGlassModule/src/main/java/com/mes/entity/userInfo/SysMenuItem.java
deleted file mode 100644
index 9dc4f03..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/entity/userInfo/SysMenuItem.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.mes.entity.userInfo;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import lombok.Data;
-
-@Data
-public class SysMenuItem {
-    @TableId(type = IdType.AUTO)
-    private Integer id;
-    private Integer menuID;
-    private String itemName;
-    private String url;
-    private String languageType;
-    private Integer state;
-    private Integer listSort;
-    private String createTime;
-
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/userInfo/User.java b/UnLoadGlassModule/src/main/java/com/mes/entity/userInfo/User.java
deleted file mode 100644
index 216d340..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/entity/userInfo/User.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.mes.entity.userInfo;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import lombok.Data;
-
-@Data  //get涓巗et浠g爜绠�鍐�
-public class User {
-
-    @TableId(type = IdType.AUTO)
-    private  Integer id;
-    private  String loginName;
-    private  String passWord;
-    private  String userName;
-    private  String address;
-    private  String phone;
-    private  String createTime;
-    private  String updateTime;
-    private  Integer state;
-
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/exception/GlobalExceptionHandle.java b/UnLoadGlassModule/src/main/java/com/mes/exception/GlobalExceptionHandle.java
deleted file mode 100644
index f4ee632..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/exception/GlobalExceptionHandle.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.mes.exception;
-
-import com.mes.common.Result;
-import org.springframework.web.bind.annotation.ControllerAdvice;
-import org.springframework.web.bind.annotation.ExceptionHandler;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-@ControllerAdvice
-public class GlobalExceptionHandle {
-    /**
-     * 濡傛灉鏄痵erviceExcaption锛屽垯璋冪敤璇ユ柟娉�
-     */
-    @ExceptionHandler(ServiceException.class)
-    @ResponseBody
-    public Result handle(ServiceException se){
-        return Result.error(se.getCode(),se.getMessage());
-    }
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/exception/ServiceException.java b/UnLoadGlassModule/src/main/java/com/mes/exception/ServiceException.java
deleted file mode 100644
index 92b6196..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/exception/ServiceException.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.mes.exception;
-
-import lombok.Getter;
-
-@Getter
-public class ServiceException extends RuntimeException {
-    private  String code;
-    public ServiceException(String code, String msg){
-        super(msg);
-        this.code=code;
-    }
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/mapper/DownGlassInfoMapper.java b/UnLoadGlassModule/src/main/java/com/mes/mapper/DownGlassInfoMapper.java
deleted file mode 100644
index 0d213a7..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/mapper/DownGlassInfoMapper.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.mes.mapper;
-
-import com.baomidou.dynamic.datasource.annotation.DS;
-import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.mes.entity.DownGlassInfo;
-import org.apache.ibatis.annotations.*;
-import org.springframework.stereotype.Repository;
-
-import java.util.List;
-
-@Mapper
-@Repository
-@InterceptorIgnore(tenantLine = "true")
-@DS("hangzhoumes") // 鎸囧畾浣跨敤 hangzhoumes 鏁版嵁婧�
-public interface DownGlassInfoMapper extends BaseMapper<DownGlassInfo> {
-
-    // 鏌ヨ涓嬬墖浠诲姟琛ㄤ腑鐘舵�佷负1鐨勪笅鐗囦俊鎭�
-    @Select("SELECT flow_card_id,filmsid,width,height,thickness FROM down_glass_task WHERE task_stauts = 1;")
-    List<DownGlassInfo> selectunloadingtaskstate();
-
-    @Update("UPDATE down_glass_task SET task_stauts = 0 WHERE flow_card_id = #{flowCardId}")
-    void updateTaskStateToZero(@Param("flowCardId") String flowCardId);
-
-    @Select("SELECT MAX(sequence) FROM down_glass_info WHERE flow_card_id = #{flowCardId} LIMIT 1")
-    Integer getMaxSequenceByFlowCardId(@Param("flowCardId") String flowCardId);
-
-    @Delete("delete  from down_glass_task where flow_card_id = #{flowCardId}")
-    void deletetask(@Param("flowCardId") String flowCardId);
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/mapper/DownStorageCageDetailsMapper.java b/UnLoadGlassModule/src/main/java/com/mes/mapper/DownStorageCageDetailsMapper.java
deleted file mode 100644
index e48f35c..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/mapper/DownStorageCageDetailsMapper.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.mes.mapper;
-
-import com.baomidou.dynamic.datasource.annotation.DS;
-import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.mes.entity.DownStorageCageDetails;
-import org.apache.ibatis.annotations.Mapper;
-import org.springframework.stereotype.Repository;
-
-@Mapper
-@Repository
-@InterceptorIgnore(tenantLine = "true")
-@DS("hangzhoumes") // 鎸囧畾浣跨敤 hangzhoumes 鏁版嵁婧�
-public interface DownStorageCageDetailsMapper extends BaseMapper<DownStorageCageDetails> {
-
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/mapper/DownStorageCageMapper.java b/UnLoadGlassModule/src/main/java/com/mes/mapper/DownStorageCageMapper.java
deleted file mode 100644
index 5c67a01..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/mapper/DownStorageCageMapper.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.mes.mapper;
-
-import com.baomidou.dynamic.datasource.annotation.DS;
-import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.mes.entity.DownStorageCage;
-import org.apache.ibatis.annotations.Mapper;
-import org.springframework.stereotype.Repository;
-
-@Mapper
-@Repository
-@InterceptorIgnore(tenantLine = "true")
-@DS("hangzhoumes") // 鎸囧畾浣跨敤 hangzhoumes 鏁版嵁婧�
-public interface DownStorageCageMapper extends BaseMapper<DownStorageCage> {
-
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/mapper/DownWorkstationMapper.java b/UnLoadGlassModule/src/main/java/com/mes/mapper/DownWorkstationMapper.java
deleted file mode 100644
index 3d00318..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/mapper/DownWorkstationMapper.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package com.mes.mapper;
-
-import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.mes.entity.DownGlassInfo;
-import com.mes.entity.DownWorkstation;
-import org.apache.ibatis.annotations.*;
-import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Repository;
-
-import java.util.List;
-import java.util.Map;
-
-@Mapper
-@Component
-@Repository
-@InterceptorIgnore(tenantLine = "true")
-public interface DownWorkstationMapper extends BaseMapper<DownWorkstation> {
-//鏍规嵁宸ヤ綅ID鍜岃澶嘔D鏇存柊宸ヤ綅鐘舵��
-    @Update("UPDATE down_workstation SET work_state = #{workState} " +
-            "WHERE workstation_id = #{workstationId} AND device_id = #{deviceId}")
-    void updateWorkStateByWorkstationIdAndDeviceId(@Param("workstationId") Integer workstationId,
-                                                   @Param("deviceId") Integer deviceId,
-                                                   @Param("workState") Integer workState);
-//宸ヤ綅ID鍒犻櫎淇℃伅
-    @Delete("DELETE FROM down_workstation WHERE workstation_id = #{workstationId}")
-    void deleteByWorkstationId(@Param("workstationId") Integer workstationId);
-
-//钀芥灦
-    @Insert("INSERT INTO down_workstation (workstation_id, flow_card_id, device_id, enable_state, work_state) " +
-            "VALUES (#{workstationId}, #{flowCardId}, #{deviceId}, #{enableState}, #{workState})")
-    void insertDownWorkstation(DownWorkstation downWorkstation);
-
-//鏍规嵁璁惧ID鏌ヨ宸ヤ綅淇℃伅
-    @Select("SELECT * FROM down_workstation WHERE device_id = #{deviceId}")
-    List<DownWorkstation> selectByDeviceId(@Param("deviceId") Integer deviceId);
-//浠庢満姊版墜浠诲姟琛ㄦ煡璇㈢姸鎬佷负1鐨勬祦绋嬪崱鍙�
-//    @Select("SELECT *  FROM down_workstation_task WHERE state = 1")
-//    List<DownWorkstation> selectdownWorkstationstate();
-//鏌ヨ宸ヤ綅琛ㄥ拰浠诲姟琛ㄤ腑鐘舵�佷负1鐨勬祦绋嬪崱鍙峰拰宸茶惤鏋舵暟閲�
-    @Select("SELECT dwt.flow_card_id,dw.id,dw.racks_number FROM down_workstation_task dwt JOIN down_workstation dw ON dwt.flow_card_id = dw.flow_card_id WHERE dwt.state = 1 LIMIT 1")
-    List<DownWorkstation> selectdownWorkstationstate();
-//鏇存柊钀芥灦鏁伴噺
-    @Update("UPDATE down_workstation SET racks_number = #{racksNumber} " +
-            "WHERE flow_card_id = #{flowCardId}")
-    void  update_racks_number(@Param("flowCardId") String flowCardId,
-                                   @Param("racksNumber") Integer racksNumber);
-
-//鎻掑叆鏈烘浠诲姟琛�
-    @Insert("INSERT INTO down_workstation_task (flow_card_id, width, height, thickness, filmsid,state) " +
-            "VALUES (#{flowCardId}, #{width}, #{height}, #{thickness}, #{filmsid},1)")
-    void insertdownWorkstationtask(DownGlassInfo downGlassInfo);
-
-//鏍规嵁宸ヤ綅id鏇存柊瀹炰綋绫绘帴鏀剁殑鏁版嵁
-@Update("UPDATE down_workstation SET width = #{width}, height = #{height}, flow_card_id = #{flowCardId} WHERE workstation_id = #{workstationId}")
-void updateFlowCardId(DownWorkstation downWorkstation);
-
-
-
-//婊℃灦鎷夎蛋锛屾竻绌轰俊鎭�
-    @Update("UPDATE down_workstation SET width = null, height = null, flow_card_id = null WHERE workstation_id = #{workstationId}")
-    void clearFlowCardId(DownWorkstation downWorkstation);
-
-
-
-    @Update("UPDATE down_workstation_task SET state = 0 WHERE flow_card_id = #{flowCardId}")
-    void update_task_state_to_zero(@Param("flowCardId") String flowCardId);
-
-
-@Select(" SELECT * FROM down_workstation WHERE workstation_id >= 1 AND workstation_id <= 5")
-    List<DownWorkstation> getoneDownWorkstations();
-
-
-    @Select(" SELECT * FROM down_workstation WHERE workstation_id >= 6 AND workstation_id <= 10")
-    List<DownWorkstation> gettwoDownWorkstations();
-
-
-
-    @Select("SELECT DISTINCT  flowcard_id from glass_info")
-    @ResultType(Map.class)
-    List<Map<String, Object>> getflowCardId();
-
-    @Update("UPDATE down_workstation SET flow_card_id = NULL, total_quantity = 0, racks_number = 0 WHERE workstation_id = #{workstationId}")
-    void clearFlowCardInfoByWorkstationId(@Param("workstationId") int workstationId);
-
-    // 鑾峰彇鎬绘暟閲�
-    @Select("SELECT total_quantity FROM down_workstation WHERE workstation_id = #{workstationId}")
-    int getTotalQuantity(@Param("workstationId") int workstationId);
-
-    // 鑾峰彇钀芥灦鏁伴噺
-    @Select("SELECT racks_number FROM down_workstation WHERE workstation_id = #{workstationId}")
-    int getRacksNumber(@Param("workstationId") int workstationId);
-
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/mapper/GlassInfoMapper.java b/UnLoadGlassModule/src/main/java/com/mes/mapper/GlassInfoMapper.java
deleted file mode 100644
index 9dcc0e6..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/mapper/GlassInfoMapper.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.mes.mapper;
-
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-import org.apache.ibatis.annotations.Select;
-import org.apache.ibatis.annotations.Update;
-
-@Mapper
-public interface GlassInfoMapper {
-
-    @Select("SELECT COUNT(*) FROM glass_info WHERE flowcard_id = #{flowCardId}")
-    int getGlassInfoCountByFlowCardId(@Param("flowCardId") String flowCardId);
-
-    @Update("UPDATE down_workstation SET  total_quantity = #{glassInfoCount},flow_card_id=#{flowCardId} WHERE workstation_id = #{workstationId}")
-    int updateFlowCardIdAndCount(@Param("flowCardId") String flowCardId, @Param("glassInfoCount") int glassInfoCount,@Param("workstationId")int workstationId);
-
-    // 杩欓噷鍙互娣诲姞鍏朵粬 SQL 璇彞
-}
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/java/com/mes/mapper/SelectInfo.java b/UnLoadGlassModule/src/main/java/com/mes/mapper/SelectInfo.java
deleted file mode 100644
index beee154..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/mapper/SelectInfo.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package com.mes.mapper;
-
-import com.mes.entity.DownStorageCageDetails;
-import com.mes.entity.GlassInfo;
-import com.mes.entity.TaskCache;
-import org.apache.ibatis.annotations.*;
-
-import java.util.List;
-
-@Mapper
-public interface SelectInfo {
-    // 鐜荤拑淇℃伅 鎸塈D鏌ヨ
-    @Select("select * from `glass_info` where id=#{id}")
-    GlassInfo SelectGlassId(String id);
-
-    // 閽㈠寲鎸夊伐绋嬫煡璇�
-  //  @Select("select * from `v_optimize_heat_layout` where project_no=#{projeceid} ")
-//    List<Tempered> SelectTemperedTerritory(String projeceid);
-//
-//    // 鍒囧壊鐗堝浘鎸夊伐绋嬫煡璇�
-//    @Select("select * from optimize_detail where project_no=#{projeceid} ")
-//    List<Map> SelectCutTerritory(String projeceid);
-//
-//    // 鏌ヨ纾ㄨ竟淇℃伅
-//    @Select("select * from task_cache where task_type='2' and task_stauts='2' and end_cell=#{EndCell}")
-//    List<Map> SelectEdgInfo(String EndCell);
-
-    // 鏌ヨ绗煎瓙鍐呯┖闂�
-    @Select("select escd.* from down_storage_cage as esc LEFT JOIN down_storage_cage_details as escd on esc.slot=escd.slot where escd.slot is null order by escd.slot")
-    List<DownStorageCageDetails> SelectCacheLeisure();
-
-    // 鏌ヨ绗煎瓙鍐呭嚭鐗囦换鍔�
-    @Select("select escd.* from down_storage_cage as esc LEFT JOIN down_storage_cage_details as escd on esc.slot=escd.slot WHERE escd.slot IS NOT NULL order by escd.tempering_layout_id,escd.tempering_feed_sequence")
-    List<DownStorageCageDetails> SelectCacheOut();
-
-    // 鏌ヨ绗煎瓙鍐呬俊鎭�
-    @Select("select escd.* from down_storage_cage as esc LEFT JOIN down_storage_cage_details as escd on esc.slot=escd.slot order by esc.slot")
-    List<DownStorageCageDetails> SelectCachInfo();
-
-    // 鏌ヨ鍙繘姝ょ墖鐜荤拑鐨勬爡鏍煎彿
-    @Select("select escd.* from down_storage_cage as esc LEFT JOIN down_storage_cage_details as escd on esc.slot=escd.slot where escd.slot is not null escd.tempering_layout_id=#{tempering_layout_id} and escd.tempering_feed_sequence<#{tempering_feed_sequence} and esc.remain_width-#{width}>0 order by escd.tempering_feed_sequence")
-    List<DownStorageCageDetails> SelectIsExistIntoCache(Integer tempering_layout_id, Integer tempering_feed_sequence,
-            double width);
-
-    // 鏌ヨ鍙繘姝ょ墖鐜荤拑鐨勬爡鏍煎彿
-    @Select("select escd.* from down_storage_cage as esc LEFT JOIN down_storage_cage_details as escd on esc.slot=escd.slot where escd.slot is not null escd.tempering_layout_id<#{tempering_layout_id} and esc.remain_width-#{width}>0 order by escd.tempering_layout_id desc,escd.tempering_feed_sequence")
-    List<DownStorageCageDetails> SelectIsExistIntoCache(Integer tempering_layout_id, double width);
-
-    // 鏌ヨ鍏ㄩ儴浠诲姟
-    @Select("select * from down_glass_task")
-    List<TaskCache> SelectCacheInfoAll();
-
-    // 鏌ヨ杩涚墖浠诲姟
-    @Select("select * from down_glass_task where task_type='1' and task_stauts='0'")
-    List<TaskCache> SelectInputCacheInfo();
-
-    // 鏌ヨ鍑虹墖浠诲姟
-    @Select("select * from down_glass_task where task_type='2' and task_stauts='0'")
-    List<TaskCache> SelectOutCacheInfo();
-
-    // 鏌ヨ  A06  鎴� A11 鏈�鏂扮殑涓�鐗� 鍑虹墖浠诲姟
-    @Select("select * from down_glass_task where task_type='2' and task_stauts='2' and end_cell=#{EndCell} limit 1")
-    GlassInfo SelectLastOutCacheInfo(String EndCell);
-
-    // 淇敼绗煎瓙鍐呬俊鎭�
-    @Update("update")
-    Integer UpdateCache(@Param("id") Integer id, @Param("order_id") String order_id);
-
-    // 娣诲姞涓嬬墖浠诲姟
-    @Insert("INSERT into down_glass_task VALUES(#{id},#{start},#{end},#{type},0,)")
-    Integer insertCacheTask(String id, String start, String end, String type,double width,double height,Integer filmsId,double thickness,String flowCardId);
-
-
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/mapper/userInfo/SysErrorMapper.java b/UnLoadGlassModule/src/main/java/com/mes/mapper/userInfo/SysErrorMapper.java
deleted file mode 100644
index ce86b42..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/mapper/userInfo/SysErrorMapper.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.mes.mapper.userInfo;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.mes.entity.userInfo.SysError;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-
-@Mapper
-public interface SysErrorMapper extends BaseMapper<SysError> {
-    Boolean saveError(@Param("sysError")SysError sysError);
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/mapper/userInfo/SysMenuItemMapper.java b/UnLoadGlassModule/src/main/java/com/mes/mapper/userInfo/SysMenuItemMapper.java
deleted file mode 100644
index bdb183e..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/mapper/userInfo/SysMenuItemMapper.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.mes.mapper.userInfo;
-
-import com.mes.entity.userInfo.SysMenuItem;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Select;
-
-import java.util.List;
-
-@Mapper
-public interface SysMenuItemMapper {
-     @Select("select  * from sys_menu_item as a where a.state=1 order by a.listSort")
-     List<SysMenuItem> findAll() ;
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/mapper/userInfo/SysMenuMapper.java b/UnLoadGlassModule/src/main/java/com/mes/mapper/userInfo/SysMenuMapper.java
deleted file mode 100644
index 1c9baf4..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/mapper/userInfo/SysMenuMapper.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.mes.mapper.userInfo;
-
-import com.mes.entity.userInfo.SysMenu;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Select;
-
-import java.util.List;
-
-@Mapper
-
-public interface SysMenuMapper {
-    @Select("select  a.id, a.menuName from sys_menu as a where a.state=1 order by a.listSort")
-    List<SysMenu> findAll();
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/mapper/userInfo/UserMapper.java b/UnLoadGlassModule/src/main/java/com/mes/mapper/userInfo/UserMapper.java
deleted file mode 100644
index ea43306..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/mapper/userInfo/UserMapper.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.mes.mapper.userInfo;
-
-
-import com.mes.entity.userInfo.User;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-import org.apache.ibatis.annotations.Select;
-
-import java.util.List;
-
-@Mapper
-
-public interface UserMapper {
-    List<User> findAll();
-
-    User findOne(Integer id);
-    @Select("select user_name FROM `user` where login_name=#{LoginName}")
-    User findOneLoginName(String LoginName);
-    @Select("select count(id) FROM `user` where login_name=#{userName} and password=#{password}  ")
-    int  checkUser(@Param("userName") String userName,@Param("password") String password);
-
-    @Select("select password FROM `user` where login_name=#{userId} ")
-    String getUserByID(String userId);
-
-
-    Boolean register(User user);
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/DownGlassCacheLogic.java b/UnLoadGlassModule/src/main/java/com/mes/service/DownGlassCacheLogic.java
deleted file mode 100644
index 9197e0b..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/service/DownGlassCacheLogic.java
+++ /dev/null
@@ -1,233 +0,0 @@
-package com.mes.service;
-
-import com.mes.common.PlcTools.S7control;
-import com.mes.entity.GlassInfo;
-import com.mes.entity.DownStorageCageDetails;
-import com.mes.entity.device.PlcParameterObject;
-import com.mes.mapper.SelectInfo;
-import lombok.Data;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-@Data
-@Service
-public class DownGlassCacheLogic {
-    @Autowired
-    private SelectInfo selectInfo;
-
-    /**
-     * @param Number
-     *    //璇嗗埆閫昏緫    涓嶄氦浜�
-     */
-
-    public void identify(String Number){
-        //鏌ヨ浠诲姟
-        PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
-        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 1);
-        String s=S7control.getinstance().ReadWord("DB14.26", 1).get(0)+"";
-        boolean isexist=isExist(Number);
-        if (isexist) {
-            //瀛樺湪閫昏緫    1.娣诲姞淇℃伅 2.鍥炲PLC瀛樺湪
-            //S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 1);
-        }else {
-            //涓嶅瓨鍦ㄩ�昏緫  1.鍥炲PLC涓嶅瓨鍦�
-            //S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 2);
-        }
-    }
-    //涓嬬墖鍓嶇悊鐗�
-    public static final String RESULT_IN = "1";
-    public static final String RESULT_OUT = "2";
-    public static final String RESULT_IN_OUT = "3";
-
-    public void process() {
-        String result = S7control.getinstance().ReadWord("DB14.0", 1).get(0) + "";
-        String number = S7control.getinstance().ReadWord("DB14.2", 1).get(0) + "";
-
-        // 杩涚墖璇锋眰
-        if (RESULT_IN.equals(result)) {
-            processInto(number);
-        }
-        // 鍑虹墖璇锋眰
-        else if (RESULT_OUT.equals(result)) {
-            processOut();
-        }
-        // 杩涘嚭鐗囪姹�
-        else if (RESULT_IN_OUT.equals(result)) {
-            // 鍏堝嚭鍚庤繘
-            if (!processOut()) {
-                processInto(number);
-            }
-        }
-    }
-
-
-    /**
-     * @param Number
-     * @return
-     *   //涓嬬墖鍓嶇悊鐗� 杩�
-     */
-
-    public boolean processInto(String Number){
-        //鎸塱d鏌ヨ鐜荤拑淇℃伅琛ㄩ噷鐨勭幓鐠�
-        GlassInfo GlassInfo=selectInfo.SelectGlassId(Number);
-        PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
-        //瀛樺湪姝ょ幓鐠冪紪鍙�
-        if(GlassInfo!=null){
-            //鍚岄挗鍖栫増鍥惧唴鐨勬爡鏍煎彿
-            List<DownStorageCageDetails> list=selectInfo.SelectIsExistIntoCache(GlassInfo.getTemperinglayoutid(),GlassInfo.getTemperingfeedsequence(),GlassInfo.getWidth());
-            //绌烘爡鏍煎彿
-            if (list.size()==0) {
-                list=selectInfo.SelectCacheLeisure();
-            }
-            //灏忎簬姝ょ幓鐠冮挗鍖栫増鍥惧簭鍙风殑鏍呮牸鍙�
-            if(list.size()==0){
-                list=selectInfo.SelectIsExistIntoCache(GlassInfo.getTemperinglayoutid(),GlassInfo.getWidth());
-            }
-            if(list.size()>0){
-                //瀛樺湪绌烘牸  
-                //1.鐢熸垚浠诲姟锛�  璧峰浣嶇疆0   缁撴潫浣嶇疆this.slot  浠诲姟绫诲瀷 1   锛堣繘鐗囦换鍔★級
-                //2.鍥炲 1杩涚墖
-                DownStorageCageDetails item=list.get(0);
-                selectInfo.insertCacheTask(GlassInfo.getId()+"","0",item.getSlot()+"","1",GlassInfo.getWidth(),GlassInfo.getHeight(),GlassInfo.getFilmsid(),GlassInfo.getThickness(),GlassInfo.getFlowcardid());
-                S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 1);
-                return true;
-            }
-            
-        }else{
-            // ID缂栧彿涓嶅瓨鍦�   涓嶅鐞�/鍥炲PLC  杩涜鎶ヨ鎻愮ず
-        }
-        //杩斿洖缁撴灉
-        return false;
-    }
-    //鐞嗙墖 鍑�
-    public boolean processOut(){
-        //鏌ヨ浠诲姟
-        String G06=S7control.getinstance().ReadWord("DB14.56", 1).get(0)+"";
-        String G11=S7control.getinstance().ReadWord("DB14.58", 1).get(0)+"";
-        String G13=S7control.getinstance().ReadWord("DB14.58", 1).get(0)+"";
-        PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
-        List<DownStorageCageDetails> list=selectInfo.SelectCacheOut();
-        //鍏朵粬鎯呭喌鏉′欢 濡傦細鍚庣画璁惧鏁呴殰绂佹鐞嗙墖鍑虹墖 绛�
-        boolean isOut=true;
-        if (list.size()>0&&isOut) {
-            DownStorageCageDetails item=list.get(0);
-           //
-            if(G06=="0"&&G11=="1"){
-                //鍑哄埌  G06
-
-                selectInfo.insertCacheTask(item.getGlassId()+"","0","06","2",item.getWidth(),item.getHeight(),item.getFilmsid(),item.getThickness(),item.getFlowCardId());
-                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), "1");
-                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
-                return true;
-            }else if(G06=="1"&&G11=="0"){
-                //鍑哄埌  G11
-
-                selectInfo.insertCacheTask(item.getGlassId()+"","0","11","2",item.getWidth(),item.getHeight(),item.getFilmsid(),item.getThickness(),item.getFlowCardId());
-                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), "2");
-                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
-                return true;
-            }else if(G06=="0"&&G11=="0"){
-                //閮藉厑璁�    G04/G05  涓婁竴鐗囨槸鍚﹀拰姝ょ墖鐜荤拑灏哄灏哄鐩稿悓
-                String endcell="06";
-                String SendEndcell="1";
-                boolean If_=false;
-                GlassInfo glassInfo06= selectInfo.SelectLastOutCacheInfo("06");
-                GlassInfo glassInfo11= selectInfo.SelectLastOutCacheInfo("11");
-                GlassInfo glassInfo13= selectInfo.SelectLastOutCacheInfo("13");
-                if(glassInfo06!=null&&glassInfo11.getWidth()==item.getWidth()&&glassInfo06.getHeight()==item.getHeight()){
-                    endcell="11";
-                    SendEndcell="2";
-                }else if(item.getHeight()>=3440&&item.getWidth()>=1440){
-                    //鍏朵粬鏉′欢浜哄伐澶勭悊
-
-                }
-
-                selectInfo.insertCacheTask(item.getGlassId()+"","0",endcell,"2",item.getWidth(),item.getHeight(),item.getFilmsid(),item.getThickness(),item.getFlowCardId());
-                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), SendEndcell);
-                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
-                return true;
-            }
-        }
-        //杩斿洖缁撴灉
-        return false;
-    }
-
-    /**
-     * @param Number
-     *  //纾ㄨ竟   涓嶄氦浜�  鐞嗙墖鍜岀(杈规満鑷繁浜や簰
-     */
-
-    public void processMb(String Number){
-          //鎸塱d鏌ヨ鐜荤拑淇℃伅琛ㄩ噷鐨勭幓鐠�
-        GlassInfo GlassInfo=selectInfo.SelectGlassId(Number);
-        PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
-        if(GlassInfo!=null){
-            //鍙戦�佷换鍔�   ID   闀� 瀹� 鍘� 鍊掕 宸ヨ壓鍔熻兘绛�
-            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.22").getAddress(),"N10000");  
-            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.24").getAddress(), "1000");  
-            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.26").getAddress(),"800");  
-            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(),"60");  
-            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.30").getAddress(), "2");  
-            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");   
-        }
-        //杩斿洖缁撴灉
-    }
-
-
-    /**
-     * @param Number
-     * @return
-     * 鏌ヨ娑堟伅闃熷垪閲屾鐜荤拑ID鐨勬暟鎹�
-     */
-    public boolean selectMessageId(String Number){
-        //鏌ヨ鏄惁瀛樺湪
-
-        GlassInfo GlassInfo=selectInfo.SelectGlassId(Number);
-        if(GlassInfo==null){
-            //杩斿洖 涓嶅瓨鍦�
-            return false;
-
-        }
-        //杩斿洖 瀛樺湪
-        return true;
-    }
-
-    /**
-     * @param Number
-     * @return
-     *   鍒犻櫎娑堟伅闃熷垪閲屾鐜荤拑ID鐨勬暟鎹�
-     */
-
-    public boolean deleteMessageId(String Number){
-        //鏌ヨ鏄惁瀛樺湪
-        GlassInfo GlassInfo=selectInfo.SelectGlassId(Number);
-        if(GlassInfo==null){
-            //杩斿洖 涓嶅瓨鍦�
-            return false;
-        }
-        //杩斿洖 瀛樺湪
-        return true;
-    }
-
-
-
-    /**
-     * @param Number
-     * @return
-     *   //鏄惁瀛樺湪姝ょ紪鍙风幓鐠�
-     */
-    public boolean isExist(String Number){
-        //鏌ヨ鏄惁瀛樺湪
-        GlassInfo GlassInfo=selectInfo.SelectGlassId(Number);
-        if(GlassInfo==null){
-            //杩斿洖 涓嶅瓨鍦�
-            return false;
-        }
-        //杩斿洖 瀛樺湪
-        return true;
-    }
-    
-}
-
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/DownGlassInfoService.java b/UnLoadGlassModule/src/main/java/com/mes/service/DownGlassInfoService.java
deleted file mode 100644
index 2cf4210..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/service/DownGlassInfoService.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.mes.service;
-
-import com.baomidou.dynamic.datasource.annotation.DS;
-import com.mes.entity.DownGlassInfo;
-import com.mes.mapper.DownGlassInfoMapper;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-@Service
-@DS("hangzhoumes")
-public class DownGlassInfoService {
-
-    @Autowired
-    private DownGlassInfoMapper downGlassInfoMapper;
-
-
-    public DownGlassInfo getDownGlassInfoById(Integer id) {
-        return downGlassInfoMapper.selectById(id);
-    }
-
-
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/DownGlassLogic.java b/UnLoadGlassModule/src/main/java/com/mes/service/DownGlassLogic.java
deleted file mode 100644
index a2f03a6..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/service/DownGlassLogic.java
+++ /dev/null
@@ -1,154 +0,0 @@
-package com.mes.service;
-
-import com.mes.entity.DownGlassInfo;
-import com.mes.entity.DownStorageCageDetails;
-import com.mes.entity.DownWorkstation;
-import com.mes.entity.device.PlcParameterObject;
-import com.mes.mapper.DownGlassInfoMapper;
-import com.mes.mapper.DownWorkstationMapper;
-import com.mes.tools.WebSocketServer;
-import lombok.Data;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-@Data
-@Service
-public class DownGlassLogic {
-
-    PlcParameterObject plcread = PLCAutoMes.PlcReadObject;
-    /**
-     * // 鏈烘鎵�1PLC璇锋眰瀛�
-     */
-    String robot1PLCrequestword = plcread.getPlcParameter("A01Position").getValue();
-    /**
-     * // 鏈烘鎵�2PLC璇锋眰瀛�
-     */
-    String robot2PLCrequestword = plcread.getPlcParameter("A01Position").getValue();
-    /**
-     * // 鐜荤拑id
-     */
-    String glassID = plcread.getPlcParameter("A01Position").getValue();
-    String glasswidth = plcread.getPlcParameter("A01Position").getValue();
-    String glassheight = plcread.getPlcParameter("A01Position").getValue();
-    //
-    String glassthickness = plcread.getPlcParameter("A01Position").getValue();
-    String pLcwancheng = plcread.getPlcParameter("A01Position").getValue();
-    @Autowired
-    private DownWorkstationMapper downWorkstationMapper;
-    private DownGlassInfo downGlassInfo;
-    private DownWorkstation downWorkstation;
-    private DownGlassInfoMapper downGlassInfoMapper;
-    private DownGlassInfoService downGlassInfoService;
-    /**
-     * // 瀛樻斁寰呭鐞嗙殑鐜荤拑淇℃伅
-     */
-    private List<DownGlassInfo> glassList;
-    /**
-     * 瀛樻斁鐜荤拑鏀剧疆鍦ㄧ紦瀛樼涓殑璇︾粏淇℃伅
-     */
-    private List<DownStorageCageDetails> cageDetailsList;
-
-    /**
-     * //褰撲笅鐗囦换鍔¤〃鐘舵�佷负1鏃跺�欏皢鏁版嵁鎻掑叆鍒颁笅鐗囩幓鐠冧俊鎭〃
-     */
-
-    public void insertdownglassinfo() {
-
-
-        downWorkstationMapper = WebSocketServer.applicationContext.getBean(DownWorkstationMapper.class);
-        downGlassInfoService = WebSocketServer.applicationContext.getBean(DownGlassInfoService.class);
-        downGlassInfoMapper = WebSocketServer.applicationContext.getBean(DownGlassInfoMapper.class);
-        List<DownGlassInfo> taskdownGlassInf = downGlassInfoMapper.selectunloadingtaskstate();
-//
-        if (taskdownGlassInf != null && !taskdownGlassInf.isEmpty()) {
-
-//
-
-
-            for (DownGlassInfo downGlassInfo : taskdownGlassInf) {
-                // 鍒涘缓鏂扮殑 DownGlassInfo 瀵硅薄骞惰缃浉鍏冲睘鎬�
-                DownGlassInfo newdownGlassInfo = new DownGlassInfo();
-
-                newdownGlassInfo.setFlowCardId(downGlassInfo.getFlowCardId());
-                Integer maxSequence = downGlassInfoMapper.getMaxSequenceByFlowCardId(downGlassInfo.getFlowCardId());
-                // 鍒濆鍖栭『搴忓瓧娈靛��
-                int sequence = maxSequence != null ? maxSequence + 1 : 1;
-
-                newdownGlassInfo.setWidth(downGlassInfo.getWidth());
-                newdownGlassInfo.setHeight(downGlassInfo.getHeight());
-                newdownGlassInfo.setThickness(downGlassInfo.getThickness());
-                newdownGlassInfo.setFilmsid(downGlassInfo.getFilmsid());
-                // 璁剧疆椤哄簭瀛楁鍊�
-                newdownGlassInfo.setSequence(sequence);
-
-                // 鎻掑叆鏁版嵁鍒颁笅鐗囩幓鐠冧俊鎭〃
-                downGlassInfoMapper.insert(newdownGlassInfo);
-                //鎻掑叆鏁版嵁鍒版満姊版墜浠诲姟琛�
-                downWorkstationMapper.insertdownWorkstationtask(newdownGlassInfo);
-                //鏇存柊涓嬬墖浠诲姟琛ㄧ姸鎬佷负0
-                downGlassInfoMapper.updateTaskStateToZero(downGlassInfo.getFlowCardId());
-
-                sequence++; // 閫掑椤哄簭瀛楁鍊�
-
-
-            }
-        }
-    }
-
-
-    /**
-     * //褰撴満姊版墜浠诲姟琛ㄤ腑鐘舵�佷负1锛屽伐浣嶈〃娴佺▼鍗$粦瀹氫簡鏋跺瓙 鏇存柊宸茬粡钀芥灦鏁伴噺锛屽苟涓旀妸涓嬬墖浠诲姟琛ㄧ殑瀵瑰簲璁板綍鍒犳帀
-     */
-
-    public void downWorkstation() {
-
-
-        try {
-            //鏌ヨ涓嬬墖宸ヤ綅琛ㄤ腑鏋跺瓙鏄惁缁戝畾浜嗘祦绋嬪崱鍙� 宸ヤ綅琛ㄥ拰浠诲姟琛ㄤ腑鐘舵�佷负1鐨勬祦绋嬪崱鍙峰拰宸茶惤鏋舵暟閲�
-            List<DownWorkstation> taskdownWorkstation = downWorkstationMapper.selectdownWorkstationstate();
-            if (taskdownWorkstation != null && !taskdownWorkstation.isEmpty()) {
-                //锛屽鏋滃凡缁忕粦瀹氬垯鏇存柊宸茶惤鏋舵暟閲�,骞朵笖鍒犻櫎涓嬬墖浠诲姟琛ㄤ腑鐨勮褰�
-                for (DownWorkstation downWorkstation : taskdownWorkstation) {
-
-                    //鏇存柊涓嬬墖宸ヤ綅琛ㄤ腑宸茶惤鏋舵暟閲�
-                    downWorkstationMapper.update_racks_number(downWorkstation.getFlowCardId(), downWorkstation.getRacksnumber() + 1);
-
-                    //鏇存柊鏈烘浠诲姟琛ㄤ腑鐘舵�佷负0
-                    downWorkstationMapper.update_task_state_to_zero(downWorkstation.getFlowCardId());
-                    //鍒犻櫎涓嬬墖浠诲姟琛ㄤ腑鐨勮褰�
-                    downGlassInfoMapper.deletetask(downWorkstation.getFlowCardId());
-
-                }
-            }
-        } catch (Exception e) {
-            // 鎵撳嵃寮傚父淇℃伅
-            e.printStackTrace();
-            // 鎴栬�呭彲浠ヨ繘琛屽叾浠栧紓甯稿鐞嗭紝姣斿璁板綍鏃ュ織鎴栬�呰繑鍥炵壒瀹氱殑閿欒淇℃伅
-        }
-
-
-    }
-
-
-    /**
-     * @param downWorkstation // 缁戝畾娴佺▼鍗″彿鏋跺瓙
-     */
-
-    public void bindingshelf(DownWorkstation downWorkstation) {
-        downWorkstationMapper.updateFlowCardId(downWorkstation);
-    }
-
-
-    /**
-     * @param downWorkstation // 婊℃灦鎷夎蛋 娓呴櫎娴佺▼鍗′俊鎭�
-     */
-
-    public void clearFlowCardId(DownWorkstation downWorkstation) {
-
-        downWorkstationMapper.clearFlowCardId(downWorkstation);
-    }
-
-
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/DownWorkstationService.java b/UnLoadGlassModule/src/main/java/com/mes/service/DownWorkstationService.java
deleted file mode 100644
index 9dca11e..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/service/DownWorkstationService.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.mes.service;
-
-import com.baomidou.dynamic.datasource.annotation.DS;
-import com.mes.entity.DownWorkstation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-import java.util.Map;
-
-@Service
-@DS("hangzhoumes")
-public  class DownWorkstationService {
-    @Autowired
-    private com.mes.mapper.DownWorkstationMapper DownWorkstationMapper;
-
-
-    public List<DownWorkstation> getoneDownWorkstations() {
-
-   return DownWorkstationMapper.getoneDownWorkstations();
-    }
-
-    public List<DownWorkstation> gettwoDownWorkstations() {
-
-        return DownWorkstationMapper.gettwoDownWorkstations();
-    }
-    public List<Map<String, Object>> getflowCardId() {
-
-        return DownWorkstationMapper.getflowCardId();
-    }
-
-
-    public int getTotalQuantity(int workstationId) {
-        // 鎵ц鑾峰彇鎬绘暟閲忕殑閫昏緫锛屽彲浠ユ槸鏁版嵁搴撴煡璇㈡垨鍏朵粬涓氬姟閫昏緫
-        Integer totalQuantity = DownWorkstationMapper.getTotalQuantity(workstationId);
-        return totalQuantity != null ? totalQuantity : 0;
-    }
-
-    public int getRacksNumber(int workstationId) {
-        // 鎵ц鑾峰彇钀芥灦鏁伴噺鐨勯�昏緫锛屽彲浠ユ槸鏁版嵁搴撴煡璇㈡垨鍏朵粬涓氬姟閫昏緫
-        Integer racksNumber = DownWorkstationMapper.getRacksNumber(workstationId);
-        return racksNumber != null ? racksNumber : 0;
-    }
-
-    public void clearFlowCardId(int workstationId) {
-        // 鎵ц娓呴櫎鎸囧畾宸ヤ綅ID鐨勬祦绋嬪崱淇℃伅鐨勯�昏緫锛屽彲浠ユ槸鏁版嵁搴撴搷浣滄垨鍏朵粬涓氬姟閫昏緫
-        // 鍒ゆ柇濡傛灉钀芥灦鏁伴噺绛変簬鎬绘暟閲忔墽琛屾竻闄わ紝鍚﹀垯涓嶆墽琛�
-        DownWorkstationMapper.clearFlowCardInfoByWorkstationId(workstationId);
-    }
-
-
-
-
-
-
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/GlassInfoService.java b/UnLoadGlassModule/src/main/java/com/mes/service/GlassInfoService.java
deleted file mode 100644
index 83ca461..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/service/GlassInfoService.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.mes.service;
-
-import com.mes.mapper.GlassInfoMapper;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-@Service
-public class GlassInfoService {
-
-    @Autowired
-    private GlassInfoMapper glassInfoMapper;
-
-    public int getGlassInfoCountByFlowCardId(String flowCardId) {
-        return glassInfoMapper.getGlassInfoCountByFlowCardId(flowCardId);
-    }
-
-    public void updateFlowCardIdAndCount(String flowCardId, int glassInfoCount,int workstationId) {
-        // 璋冪敤 GlassInfoMapper 鐨� updateFlowCardIdAndCount 鏂规硶
-        int rowsAffected = glassInfoMapper.updateFlowCardIdAndCount(flowCardId, glassInfoCount,workstationId);
-        if (rowsAffected > 0) {
-            System.out.println("鏇存柊鏋跺瓙涓婃祦绋嬪崱 ID 鍜屾暟閲忔垚鍔�");
-        } else {
-            System.out.println("鏇存柊鏋跺瓙涓婃祦绋嬪崱 ID 鍜屾暟閲忓け璐�");
-        }
-    }
-
-    // 杩欓噷鍙互娣诲姞鍏朵粬涓氬姟閫昏緫鏂规硶
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/ModuleA.java b/UnLoadGlassModule/src/main/java/com/mes/service/ModuleA.java
deleted file mode 100644
index f33714f..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/service/ModuleA.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.mes.service;
-
-import com.mes.common.RabbitMQUtils;
-
-public class ModuleA {
-    private static String QUEUE_NAME = "hangzhou2";
-    private static RabbitMQUtils receiver;
-
-    public ModuleA(String QUEUENAME) {
-        QUEUE_NAME = QUEUENAME;
-        // 瀹炰緥鍖� RabbitMQUtils 瀵硅薄
-        receiver = new RabbitMQUtils();
-    }
-
-    public static void main(String[] argv) throws Exception {
-//        ModuleA moduleA = new ModuleA("hangzhou2"); // 瀹炰緥鍖� ModuleA 瀵硅薄
-//        String message = "Your message to send666";
-//        String messageId = "5"; // 娑堟伅ID
-//        receiver.sendMessageWithId(QUEUE_NAME, message, messageId); // 璋冪敤 sendMessageWithId 鏂规硶鍙戦�佹秷鎭�
-        RabbitMQUtils.sendMessageWithId("hangzhou2", "Hello RabbitMQ!", "1");
-        RabbitMQUtils.sendMessageWithId("hangzhou2", "Another message", "2");
-        RabbitMQUtils.sendMessageWithId("hangzhou2", "Another message", "3");
-        RabbitMQUtils.sendMessageWithId("hangzhou2", "Another message", "4");
-        RabbitMQUtils.sendMessageWithId("hangzhou2", "Another message", "5");
-      //  receiver.sendMessageWithId("hangzhou2", "Yet another message", "1"); // 杩欐潯娑堟伅浼氭墦鍗伴噸澶嶆秷鎭殑閿欒淇℃伅
-
-    }
-}
-
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/ModuleB.java b/UnLoadGlassModule/src/main/java/com/mes/service/ModuleB.java
deleted file mode 100644
index 6c0dfba..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/service/ModuleB.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.mes.service;
-
-import com.mes.common.RabbitMQUtils;
-
-import java.util.List;
-
-public class ModuleB {
-    private final static String QUEUE_NAME = "hangzhou2";
-
-    public static void main(String[] argv) throws Exception {
-
-
-
-        RabbitMQUtils receiver = new RabbitMQUtils();
-
-        try {
-
-            //receiver.consumeMessageById("5",QUEUE_NAME);
-
-           // String receivedMessage = receiver.consumeSelectedMessage(1,QUEUE_NAME);
-        List<String> receivedMessage = RabbitMQUtils.browseMessages(QUEUE_NAME);
-          System.out.println("Received message: " + receivedMessage);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-//        // 鍒涘缓杩炴帴宸ュ巶
-//        ConnectionFactory factory = new ConnectionFactory();
-//    factory.setHost("10.153.19.150");
-//        //factory.setHost("localhost");
-//        try (Connection connection = factory.newConnection();
-//             Channel channel = connection.createChannel()) {
-//            // 澹版槑闃熷垪
-//            Map<String, Object> args = new HashMap<>();
-//            args.put("x-max-length-bytes",1024 * 1024);
-////            args.put("x-max-length",5000);
-//            channel.queueDeclare(QUEUE_NAME, false, false, false, args);
-//
-//            // 鍒涘缓娑堣垂鑰�
-//            DeliverCallback deliverCallback = (consumerTag, delivery) -> {
-//                String receivedMessage = new String(delivery.getBody(), "UTF-8");
-//                System.out.println(" [x] Received '" + receivedMessage + "'");
-//            };
-//            // 寮�濮嬫秷璐规秷鎭�
-//          channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> {
-//           });
-//        }
-    }
-}
-
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/PLCAutoMes.java b/UnLoadGlassModule/src/main/java/com/mes/service/PLCAutoMes.java
deleted file mode 100644
index 66e4cc9..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/service/PLCAutoMes.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package com.mes.service;
-
-import com.mes.entity.device.PlcParameterObject;
-import com.mes.tools.InitUtil;
-import org.springframework.context.annotation.Configuration;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static com.mes.tools.InitUtil.readAndUpdateWordValues;
-
-public class PLCAutoMes extends Thread {
-
-    // 鐢ㄤ簬瀛樺偍搴旂敤绋嬪簭鐨勯厤缃俊鎭�
-    private Configuration config;
-    private static InitUtil initUtil;
-
-
-    // 鍗曚緥瀹炰緥
-    private static PLCAutoMes instance;
-    private static String PlcMes = PLCAutoMes.class.getResource("/JsonFile/PlcMes.json").getPath();
-    private static String PlcRead = PLCAutoMes.class.getResource("/JsonFile/PlcRead.json").getPath();
-    private static String Plcframe = PLCAutoMes.class.getResource("/JsonFile/Plcframe.json").getPath();
-//    private static String PlcParameter = PLCAutomaticParameterSettingReview2.class
-//            .getResource("/JsonFile/PlcParameter.json").getPath();
-//    private static String PlcSign = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcSign.json")
-//            .getPath();
-//    private static String PlcState = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcState.json")
-//            .getPath();
-    private static String PlcAlarm = PLCAutoMes.class.getResource("/JsonFile/PlcAlarm.json").getPath();
-   // private static String PlcTest = PLCAutoMes.class.getResource("/JsonFile/PlcTest.json").getPath();
-
-    // 璋冪敤initword鏂规硶
-
-//
-   // public static PlcBitObject plcPlcAlarm = initUtil.initbit(PlcAlarm);
-    public static PlcParameterObject PlcMesObject = initUtil.initword(PlcMes);
-    public static PlcParameterObject PlcReadObject = initUtil.initword(PlcRead);
-    public static PlcParameterObject PlcframeObject = initUtil.initword(Plcframe);
-
-    // 绉佹湁鏋勯�犲嚱鏁�
-    public PLCAutoMes() throws IOException {
-
-        initUtil = new InitUtil();
-    }
-
-    // 鑾峰彇鍗曚緥瀹炰緥
-    public static synchronized PLCAutoMes getInstance() throws IOException {
-        if (instance == null) {
-            instance = new PLCAutoMes();
-        }
-        return instance;
-    }
-
-    @Override
-    public void run() {
-        while (this != null) {
-            try {
-                Thread.sleep(100);
-
-            } catch (InterruptedException e) {
-                e.printStackTrace();
-            }
-
-            // System.out.println(jsonFilePath);
-
-          // readAndUpdateWordValues(PlcReadObject);
-            readAndUpdateWordValues(PlcMesObject);
-//      readAndUpdateWordValues(PlcframeObject);
-            // readAndUpdateWordValues(PlcframeObject);
-
-            // readAndUpdateWordValues(plcStateObject);
-          //  int index = PlcMesObject.getPlcParameter("AddStart").getAddressIndex();
-            // System.out.println(index);
-          //  PlcMesObject.getPlcParameter("AddStart").getAddress(index);
-            // System.out.println(PlcMesObject.getPlcParameter("AddStart").getAddress(index));
-            List<String> addresses = new ArrayList<>();
-            addresses.add("FeedID");
-            addresses.add("AddStart");
-            // System.out.println(addresses);
-            // System.out.println(PlcMesObject.getPlcParameterValues(addresses));
-            List<String> addresses2 = new ArrayList<>();
-            addresses2.add("FeedID");
-            addresses2.add("FeedCarStatus");
-
-         //   System.out.println(PlcReadObject.getPlcParameterValues(addresses2));
-
-        }
-    }
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/Plcaction.java b/UnLoadGlassModule/src/main/java/com/mes/service/Plcaction.java
deleted file mode 100644
index 4268c38..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/service/Plcaction.java
+++ /dev/null
@@ -1,103 +0,0 @@
-package com.mes.service;
-
-import com.mes.common.PlcTools.MockS7PLCtwo;
-import com.mes.entity.DownGlassInfo;
-import com.mes.mapper.DownWorkstationMapper;
-import com.mes.tools.WebSocketServer;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-public class Plcaction extends Thread {
-
-
-  @Autowired
-  private DownWorkstationMapper downWorkstationMapper;
-  private DownGlassInfo downGlassInfo; //
-  private DownGlassInfoService downGlassInfoService;
-  private int i =1; //
-
-    //MockS7PLC mockS7PLC=new MockS7PLC();
-  @Override
-  public void run() {
-    while (!Thread.currentThread().isInterrupted()) {
-      try {
-        i++;
-        Thread.sleep(1000);
-      } catch (InterruptedException e) {
-        Thread.currentThread().interrupt();
-        e.printStackTrace();
-      }
-      downWorkstationMapper = WebSocketServer.applicationContext.getBean(DownWorkstationMapper.class);
-      downGlassInfoService = WebSocketServer.applicationContext.getBean(DownGlassInfoService.class);
-      int workstationId = 1;
-      int deviceId = 2;
-      int newWorkState = 9;
-
-      downWorkstationMapper.updateWorkStateByWorkstationIdAndDeviceId(workstationId, deviceId, newWorkState);
-      downGlassInfo  = downGlassInfoService.getDownGlassInfoById(1); // 璁剧疆闇�瑕佹煡璇㈢殑id
-//   System.out.println("Down Glass Info in new thread: "+i + downGlassInfo);
-      Boolean[] value4 = { false, true, true, true, true, true, false, false, false,
-              false};
-     List<Boolean> booldata2 = new ArrayList<>(Arrays.asList(value4));
-       // MockS7PLCtwo.getInstance().writeBoolean("DB1.DBX0.0", false);
-       // MockS7PLCtwo.getInstance().writebits("DB4.0.0",booldata2);
-// 浠庣浉鍚岀殑鍦板潃璇诲彇甯冨皵鍊�
-      boolean value = MockS7PLCtwo.getInstance().readBoolean("DB1.DBX0.0");
-      Short[] values1 = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1};
-      Short[] values2 = { 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
-
-   List<Short> data = new ArrayList<>(Arrays.asList(values1));
-      List<Short> data2 = new ArrayList<>(Arrays.asList(values2));
-        List<String> addresses3 = new ArrayList<>();
-        addresses3.add("DB1.0.0");
-        addresses3.add("DB1.0.3");
-        addresses3.add("DB1.0.5");
-      List<String> addresses = new ArrayList<>();
-      addresses.add("DB100.0");
-      addresses.add("DB100.2");
-      addresses.add("DB100.4");
-      addresses.add("DB100.6");
-      addresses.add("DB100.26");
-      addresses.add("DB100.28");
-      addresses.add("DB100.30");
-      addresses.add("DB100.32");
-      addresses.add("DB100.34");
-      addresses.add("DB100.36");
-
-
-
-      List<String> addresses2 = new ArrayList<>();
-      addresses2.add("DB101.0");
-      addresses2.add("DB101.2");
-      addresses2.add("DB101.4");
-      addresses2.add("DB101.6");
-      addresses2.add("DB101.8");
-      addresses2.add("DB101.10");
-      addresses2.add("DB101.12");
-      addresses2.add("DB101.14");
-      addresses2.add("DB101.16");
-      addresses2.add("DB101.18");
-//      mockPLC.writeword("DB100.2",data );
-        MockS7PLCtwo.getInstance().WriteWords(addresses, data);
-        MockS7PLCtwo.getInstance().WriteWords(addresses2, data2);
-  //DB100.2,DB100.4,DB100.6,DB100.28,DB100.30,DB100.32,DB100.36,DB100.38,DB100.40
-
-  List<Short> data5= MockS7PLCtwo.getInstance().readwords("DB104.0", 9);
-      List<Short> data3= MockS7PLCtwo.getInstance().ReadWords(addresses);
-      List<Boolean> data4= MockS7PLCtwo.getInstance().readbits("DB4.0.0",10);
-
-        List<Boolean> data6= MockS7PLCtwo.getInstance().readBits(addresses3);
-    //  System.out.println("璇诲彇鐨勫竷灏斿��: " + value); // 搴旇杈撳嚭 true
-     // System.out.println("璇诲彇鐨剋ord鍊�: " + data3);
-      System.out.println("璇诲彇鐨剋ord鍊�: " + data4);
-//        System.out.println("璇诲彇鐨刡it鍊�: " + data4);
-//        System.out.println("璇诲彇鐨刡it鍊�: " + data6);
-
-
-     //   System.out.println("璇诲彇鐨剋ord鍊�: " + MockS7PLCtwo.getInstance().readInt16("DB5.0.0"));
-    }
-  }
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/Plchome.java b/UnLoadGlassModule/src/main/java/com/mes/service/Plchome.java
deleted file mode 100644
index 266169e..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/service/Plchome.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package com.mes.service;
-
-import cn.hutool.json.JSONObject;
-import com.mes.tools.WebSocketServer;
-import org.springframework.stereotype.Component;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import java.util.ArrayList;
-import java.util.function.Supplier;
-
-@Component
-public class Plchome extends Thread {
-    private int i = 1;
-    private static final Logger log = LogManager.getLogger(Plchome.class);
-
-    private final Supplier<DownGlassLogic> plcServiceSupplier;
-
-    public Plchome() {
-        this.plcServiceSupplier = () -> WebSocketServer.applicationContext.getBean(DownGlassLogic.class);
-    }
-
-
-
-    @Override
-    public void run() {
-        while (!Thread.currentThread().isInterrupted()) {
-            try {
-                i++;
-                Thread.sleep(100);
-                DownGlassLogic plcService = plcServiceSupplier.get();
-               // plcService.performPlcActions();
-                //plcService.unloadpush();
-
-                //褰撲笅鐗囦换鍔¤〃鐘舵�佷负1鏃跺�欏皢鏁版嵁鎻掑叆鍒颁笅鐗囩幓鐠冧俊鎭〃
-                plcService.insertdownglassinfo();
-
-
-
-                //褰撴満姊版墜浠诲姟琛ㄤ腑鐘舵�佷负1 鏇存柊宸茬粡钀芥灦鏁伴噺锛屽苟涓旀妸涓嬬墖浠诲姟琛ㄧ殑閭f潯璁板綍鍒犳帀 宸ヤ綅琛ㄦ祦绋嬪崱缁戝畾浜嗘灦瀛�
-                plcService.downWorkstation();
-
-
-            } catch (InterruptedException e) {
-                Thread.currentThread().interrupt();
-                e.printStackTrace();
-            }
-
-            JSONObject jsonObject = new JSONObject();
-            // System.out.println(arraylist6);
-            jsonObject.append("data", 1);
-            ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("unloadglass");
-            if (sendwServer != null) {
-                for (WebSocketServer webserver : sendwServer) {
-                    webserver.sendMessage(jsonObject.toString());
-                    log.info("鍑嗗鍚� WebSocket 鏈嶅姟鍣ㄥ彂閫佹秷鎭�: {}", jsonObject.toString());
-                }}
-
-        }
-    }
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/ServiceContextHolder.java b/UnLoadGlassModule/src/main/java/com/mes/service/ServiceContextHolder.java
deleted file mode 100644
index b05b2fd..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/service/ServiceContextHolder.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.mes.service;
-
-public class ServiceContextHolder {
-
-    private static final ThreadLocal<DownGlassInfoService> downGlassInfoServiceThreadLocal = new ThreadLocal<>();
-
-    public static void setDownGlassInfoService(DownGlassInfoService service) {
-        downGlassInfoServiceThreadLocal.set(service);
-    }
-
-    public static DownGlassInfoService getDownGlassInfoService() {
-        return downGlassInfoServiceThreadLocal.get();
-    }
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/ThreadExample.java b/UnLoadGlassModule/src/main/java/com/mes/service/ThreadExample.java
deleted file mode 100644
index ef49205..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/service/ThreadExample.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.mes.service;
-
-import com.mes.entity.DownGlassInfo;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.ApplicationArguments;
-import org.springframework.boot.ApplicationRunner;
-import org.springframework.stereotype.Component;
-
-@Component
-public class ThreadExample implements ApplicationRunner {
-
-  @Autowired
-  private DownGlassInfoService downGlassInfoService;
-
-  @Override
-  public void run(ApplicationArguments args) throws Exception {
-    Thread thread = new Thread(() -> {
-      DownGlassInfo downGlassInfo = downGlassInfoService.getDownGlassInfoById(1); // 璁剧疆闇�瑕佹煡璇㈢殑id
-      System.out.println("Down Glass Info in new thread: " + downGlassInfo);
-    });
-    thread.start();
-  }
-
-
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/userInfo/SysErrorService.java b/UnLoadGlassModule/src/main/java/com/mes/service/userInfo/SysErrorService.java
deleted file mode 100644
index 9940470..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/service/userInfo/SysErrorService.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.mes.service.userInfo;
-
-import com.baomidou.dynamic.datasource.annotation.DS;
-import com.mes.entity.userInfo.SysError;
-import com.mes.mapper.userInfo.SysErrorMapper;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-@Service
-@DS("hangzhoumes")
-public class SysErrorService {
-    private final SysErrorMapper sysErrorMapper;
-
-    public SysErrorService(SysErrorMapper sysErrorMapper) {
-        this.sysErrorMapper = sysErrorMapper;
-    }
-
-    public void insert(SysError sysError) {
-        sysErrorMapper.saveError(sysError);
-    }
-
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/userInfo/SysMenuItemService.java b/UnLoadGlassModule/src/main/java/com/mes/service/userInfo/SysMenuItemService.java
deleted file mode 100644
index ee38452..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/service/userInfo/SysMenuItemService.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.mes.service.userInfo;
-
-import com.baomidou.dynamic.datasource.annotation.DS;
-import com.mes.entity.userInfo.SysMenuItem;
-import com.mes.mapper.userInfo.SysMenuItemMapper;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-@Service
-@DS("hangzhoumes")
-public class SysMenuItemService {
-    @Autowired
-    SysMenuItemMapper sysMenuItemMapper;
-    public List<SysMenuItem> getMenuItem() {
-        return sysMenuItemMapper.findAll();
-    }
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/userInfo/SysMenuService.java b/UnLoadGlassModule/src/main/java/com/mes/service/userInfo/SysMenuService.java
deleted file mode 100644
index 55f8fc6..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/service/userInfo/SysMenuService.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.mes.service.userInfo;
-
-import com.baomidou.dynamic.datasource.annotation.DS;
-import com.mes.entity.userInfo.SysMenu;
-import com.mes.mapper.userInfo.SysMenuMapper;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-@Service
-@DS("hangzhoumes")
-public class SysMenuService {
-    @Autowired
-    private SysMenuMapper sysMenuMapper;
-
-    public List<SysMenu> getMenu(){
-
-        return sysMenuMapper.findAll();
-    }
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/userInfo/UserService.java b/UnLoadGlassModule/src/main/java/com/mes/service/userInfo/UserService.java
deleted file mode 100644
index e172f10..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/service/userInfo/UserService.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package com.mes.service.userInfo;
-
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.dynamic.datasource.annotation.DS;
-import com.mes.controller.dto.UserDTO;
-import com.mes.entity.userInfo.User;
-import com.mes.mapper.userInfo.UserMapper;
-import com.mes.tools.TokenTools;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.cache.annotation.CacheEvict;
-import org.springframework.cache.annotation.Cacheable;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-@Service
-@DS("hangzhoumes")
-public class UserService {
-
-    @Autowired
-    private  UserMapper userMapper;
-
-
-    @Cacheable(value="users", key="#userDTO.getUserId()")
-    public UserDTO login(UserDTO userDTO) {
-
-        if(StrUtil.isBlank(userDTO.getUserId()) ||StrUtil.isBlank(userDTO.getPass())){
-            return null;
-        }else{
-            int getUserCount=userMapper.checkUser(userDTO.getUserId(),userDTO.getPass());
-            if(getUserCount==1){
-                String token = TokenTools.getToken(userDTO.getUserId(),userDTO.getPass());
-                userDTO.setToken(token);
-                User user = userMapper.findOneLoginName(userDTO.getUserId());
-                userDTO.setUserName(user.getUserName());
-                return userDTO;
-            }
-        return null;
-
-        }
-    }
-
-    @CacheEvict(value="users",key="#id",beforeInvocation=true)
-    public String deleteCache(String id ) {
-        //System.out.println("delete user by id: " + id);
-        return null;
-
-    }
-
-    public String getUserByID(String userId){
-        return userMapper.getUserByID(userId);
-    }
-
-    @Transactional
-    public User register(User user) {
-        User returnUser = new User();
-        if(userMapper.register(user)){
-            User getUser = userMapper.findOne(user.getId());
-            returnUser.setUserName(getUser.getUserName());
-            returnUser.setLoginName(getUser.getLoginName());
-        }
-        return returnUser;
-    }
-}
-
diff --git a/UnLoadGlassModule/src/main/java/com/mes/tools/Configuration.java b/UnLoadGlassModule/src/main/java/com/mes/tools/Configuration.java
deleted file mode 100644
index 1f64390..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/tools/Configuration.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.mes.tools;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Properties;
-
-/**
- * @author SNG-012
- *
- *  Configuration 绫荤敤浜庡姞杞介厤缃枃浠跺苟鎻愪緵璁块棶閰嶇疆椤圭殑鏂规硶銆�
- */
-public class Configuration {
-
-    /**
-     * // Properties 瀵硅薄锛岀敤浜庡瓨鍌ㄩ厤缃枃浠朵腑鐨勯敭鍊煎銆�
-     */
-    private Properties properties;
-
-    /**
-     * @param fileName
-     * @throws IOException
-     *     // 鏋勯�犲嚱鏁帮紝鏍规嵁浼犲叆鐨勬枃浠跺悕鍔犺浇閰嶇疆鏂囦欢銆�
-     */
-
-    public Configuration(String fileName) throws IOException {
-        // 浣跨敤绫诲姞杞藉櫒鑾峰彇璧勬簮鏂囦欢鐨勮緭鍏ユ祦銆�
-        InputStream inputStream = getClass().getClassLoader().getResourceAsStream(fileName);
-        // 濡傛灉杈撳叆娴佷负null锛岃〃绀烘湭鎵惧埌鏂囦欢锛屾姏鍑篎ileNotFoundException銆�
-        if (inputStream == null) {
-            throw new FileNotFoundException("Property file '" + fileName + "' not found in the classpath");
-        }
-        // 瀹炰緥鍖朠roperties瀵硅薄銆�
-        properties = new Properties();
-        // 浠庤緭鍏ユ祦鍔犺浇閰嶇疆椤广��
-        properties.load(inputStream);
-    }
-
-    /**
-     * @param key
-     * @return
-     *     // 鏍规嵁閰嶇疆椤圭殑閿幏鍙栧叾瀵瑰簲鐨勫�笺��
-     */
-
-    public String getProperty(String key) {
-        return properties.getProperty(key);
-    }
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/tools/ExcelToJsonConverter.java b/UnLoadGlassModule/src/main/java/com/mes/tools/ExcelToJsonConverter.java
deleted file mode 100644
index e1ad35c..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/tools/ExcelToJsonConverter.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package com.mes.tools;
-
-import com.google.gson.Gson;
-import org.apache.poi.ss.usermodel.Cell;
-import org.apache.poi.ss.usermodel.Row;
-import org.apache.poi.ss.usermodel.Sheet;
-import org.apache.poi.ss.usermodel.Workbook;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
-
-import java.io.FileInputStream;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-
-public class ExcelToJsonConverter {
-
-    public static void main(String[] args) {
-        String excelFilePath = "src/main/resources/JsonFile/alarm.xlsx";
-        String sheetName = "Sheet1";
-        int addressColumnIndex = 0;
-        int nameColumnIndex = 1;
-
-        //int unitColumnIndex = 2;
-        String outputFilePath = "src/main/resources/JsonFile/PlcAlarm.json";
-
-        try (Workbook workbook = new XSSFWorkbook(new FileInputStream(excelFilePath))) {
-            Sheet sheet = workbook.getSheet(sheetName);
-
-            List<LinkedHashMap<String, Object>> jsonList = new ArrayList<>();
-
-            Iterator<Row> rowIterator = sheet.iterator();
-            // Skip the header row
-            if (rowIterator.hasNext()) {
-                rowIterator.next();
-            }
-
-            int plcAddressLength = 0; // 璁板綍鎵�鏈� addressLenght 鐨勫拰
-            int addressIndex = 0; // 鑷鐨勫湴鍧�绱㈠紩
-            while (rowIterator.hasNext()) {
-                Row row = rowIterator.next();
-
-                Cell nameCell = row.getCell(nameColumnIndex);
-                Cell addressCell = row.getCell(addressColumnIndex);
-              //  Cell unitCell = row.getCell(unitColumnIndex);
-
-                String name = nameCell.getStringCellValue();
-                String address = addressCell.getStringCellValue();
-               // String unit = unitCell.getStringCellValue();
-
-              //  String addressIndex = extractAddressIndex(address);
-
-                LinkedHashMap<String, Object> jsonObject = new LinkedHashMap<>();
-                jsonObject.put("codeId", name);
-                jsonObject.put("addressIndex", addressIndex);
-
-                int addressLength = 0;
-                if (address.contains("~")) {
-                    addressLength = 14;
-                } else {
-                    addressLength = 2;
-                }
-               // jsonObject.put("addressLenght", String.valueOf(addressLength));
-
-                //jsonObject.put("unit", unit);
-
-                plcAddressLength += addressLength;
-
-                jsonList.add(jsonObject);
-                addressIndex++;
-            }
-
-            LinkedHashMap<String, Object> resultObject = new LinkedHashMap<>();
-            resultObject.put("plcAddressBegin", "DB100.0");
-            resultObject.put("plcAddressLenght", String.valueOf(plcAddressLength));
-           // resultObject.put("dataType", "word");
-            resultObject.put("dataType", "bit");
-            resultObject.put("parameteInfor", jsonList);
-
-            Gson gson = new Gson();
-            String jsonOutput = gson.toJson(resultObject);
-
-            try (FileWriter fileWriter = new FileWriter(outputFilePath)) {
-                fileWriter.write(jsonOutput);
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-
-
-
-    private static String extractAddressIndex(String address) {
-        // Assuming the address format is "DB103.DBW0" or "DB103.DBB100~DBB113"
-        if (address.startsWith("DB") && address.contains(".DBW")) {
-            int startIndex = address.indexOf(".DBW") + 4;
-            int endIndex = address.length();
-            return address.substring(startIndex, endIndex);
-        } else if (address.startsWith("DB") && address.contains(".DBB")) {
-            int startIndex2 = address.indexOf(".DBB") + 4;
-            int endIndex2 = address.indexOf("~");
-            return address.substring(startIndex2, endIndex2);
-        }
-        return "";
-    }
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/tools/InitUtil.java b/UnLoadGlassModule/src/main/java/com/mes/tools/InitUtil.java
deleted file mode 100644
index 30d75ae..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/tools/InitUtil.java
+++ /dev/null
@@ -1,128 +0,0 @@
-package com.mes.tools;
-
-import cn.hutool.json.JSONArray;
-import cn.hutool.json.JSONObject;
-import com.mes.entity.device.PlcBitInfo;
-import com.mes.entity.device.PlcBitObject;
-import com.mes.entity.device.PlcParameterInfo;
-import com.mes.entity.device.PlcParameterObject;
-
-import java.io.BufferedReader;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-public class InitUtil {
-    //鍒濆鍖杦ord
-    public static PlcParameterObject initword(String jsonFilePath) {
-        try {
-            FileReader fileReader = new FileReader(jsonFilePath);
-            BufferedReader bufferedReader = new BufferedReader(fileReader);
-
-            StringBuilder content = new StringBuilder();
-            String line;
-
-            while ((line = bufferedReader.readLine()) != null) {
-                content.append(line);
-            }
-
-            bufferedReader.close();
-            fileReader.close();
-
-            JSONObject jsonfileobj = new JSONObject(content.toString());
-            JSONArray jsonArray = jsonfileobj.getJSONArray("parameteInfor");
-            PlcParameterObject plcParameterObject = new PlcParameterObject();
-            plcParameterObject.setPlcAddressBegin(jsonfileobj.getStr("plcAddressBegin"));//璁剧疆璧峰浣嶅湴鍧�
-            plcParameterObject.setPlcAddressLength(Integer.valueOf(jsonfileobj.getStr("plcAddressLenght")));//璁剧疆鍦板潃闀垮害
-
-            for (int i = 0; i < jsonArray.size(); i++) {
-                JSONObject parameterObj = jsonArray.getJSONObject(i);
-                PlcParameterInfo plcParameterInfo = new PlcParameterInfo(jsonfileobj.getStr("plcAddressBegin")); //鍙傛暟瀹炰緥
-                String codeid = parameterObj.getStr("codeId");
-                plcParameterInfo.setCodeId(codeid);
-                plcParameterInfo.setAddressIndex(Integer.valueOf(parameterObj.getStr("addressIndex")));
-                //plcParameterInfo.setRatio(Integer.valueOf(parameterObj.getStr("ratio")));
-                plcParameterInfo.setAddressLength(Integer.valueOf(parameterObj.getStr("addressLenght")));
-                plcParameterInfo.setUnit(parameterObj.getStr("unit"));
-                plcParameterObject.addPlcParameter(plcParameterInfo);
-            }
-           // byte[] getplcvlues = {0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02};
-           // byte[] getplcvlues = S7control.getinstance().ReadByte(plcParameterObject.getPlcAddressBegin(), plcParameterObject.getPlcAddressLength());
-           // plcParameterObject.setPlcParameterList(getplcvlues);
-
-            return plcParameterObject;
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-    //鍒濆鍖朾it
-    public static PlcBitObject initbit(String jsonFilePath) {
-        PlcBitObject plcBitObject = new PlcBitObject();
-
-        try {
-            FileReader fileReader = new FileReader(jsonFilePath);
-            BufferedReader bufferedReader = new BufferedReader(fileReader);
-
-            StringBuilder content = new StringBuilder();
-            String line;
-
-            while ((line = bufferedReader.readLine()) != null) {
-                content.append(line);
-            }
-
-            bufferedReader.close();
-            fileReader.close();
-
-            JSONObject jsonfileobj = new JSONObject(content.toString());
-            JSONArray jsonArray = jsonfileobj.getJSONArray("parameteInfor");
-            plcBitObject.setPlcAddressBegin(jsonfileobj.getStr("plcAddressBegin"));//璁剧疆璧峰浣嶅湴鍧�
-            plcBitObject.setPlcAddressLength(Integer.valueOf(jsonfileobj.getStr("plcAddressLenght")));//璁剧疆鍦板潃闀垮害
-
-            for (int i = 0; i < jsonArray.size(); i++) {
-                JSONObject parameterObj = jsonArray.getJSONObject(i);
-
-                PlcBitInfo plcBitInfo = new PlcBitInfo(jsonfileobj.getStr("plcAddressBegin")); //鍙傛暟瀹炰緥
-                String codeid = parameterObj.getStr("codeId");
-                plcBitInfo.setCodeId(codeid);
-                plcBitInfo.setAddressIndex(Integer.valueOf(parameterObj.getStr("addressIndex")));
-
-                plcBitObject.addPlcBit(plcBitInfo);
-            }
-            System.out.println("");
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-           //Boolean[] values1 = { false, true, true, true, false, false, true, false,
-          //  false, true ,true };
-   // List<Boolean> getplcvlues = new ArrayList<>(Arrays.asList(values1));
-
-//        List<Boolean> getplcvlues = S7control.getinstance().ReadBits(plcBitObject.getPlcAddressBegin(), plcBitObject.getPlcAddressLength());
-//        plcBitObject.setPlcBitList(getplcvlues);
-        return plcBitObject;
-    }
-
-//
-    public static void readAndUpdateBitValues(PlcBitObject plcBitObject) {
-
-        Boolean[] values1 = { false, true, true, true, false, false, true, false,
-          false, true ,true };
-         List<Boolean> getplcvlues = new ArrayList<>(Arrays.asList(values1));
-        //List<Boolean> getplcvlues = S7control.getinstance().ReadBits(plcBitObject.getPlcAddressBegin(), plcBitObject.getPlcAddressLength());
-        plcBitObject.setPlcBitList(getplcvlues);
-    }
-
-
-    public static void readAndUpdateWordValues(PlcParameterObject plcParameterObject) {
-
-         byte[] getplcvlues = {0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03,0x03};
-       // byte[] getplcvlues = MockS7PLC.getInstance().readByte(plcParameterObject.getPlcAddressBegin(), plcParameterObject.getPlcAddressLength());
-        plcParameterObject.setPlcParameterList(getplcvlues);
-    }
-
-
-
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/tools/TokenTools.java b/UnLoadGlassModule/src/main/java/com/mes/tools/TokenTools.java
deleted file mode 100644
index 1cb6dc2..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/tools/TokenTools.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.mes.tools;
-
-import cn.hutool.core.date.DateUtil;
-import com.auth0.jwt.JWT;
-import com.auth0.jwt.algorithms.Algorithm;
-
-import java.util.Date;
-
-public class TokenTools {
-
-    /**
-     * 鐢熸垚token
-     * @return
-     */
-    public  static String getToken(String userid,String sign){
-        return JWT.create().withAudience(userid) // 灏� user id 淇濆瓨鍒� token 閲岄潰,浣滀负杞借嵎
-                .withExpiresAt(DateUtil.offsetHour(new Date(), 24)) // 2灏忔椂鍚巘oken杩囨湡
-                .sign(Algorithm.HMAC256(sign)); // 浠� password 浣滀负 token 鐨勫瘑閽�
-
-    }
-}
diff --git a/UnLoadGlassModule/src/main/resources/JsonFile/PlcAlarm.json b/UnLoadGlassModule/src/main/resources/JsonFile/PlcAlarm.json
deleted file mode 100644
index a840092..0000000
--- a/UnLoadGlassModule/src/main/resources/JsonFile/PlcAlarm.json
+++ /dev/null
@@ -1,371 +0,0 @@
-{
-  "plcAddressBegin": "DB104.0.0",
-  "plcAddressLenght": "91",
-  "dataType": "bit",
-  "parameteInfor": [
-    {
-      "codeId": "D01VFDerror",
-      "addressIndex": 0
-    },
-    {
-      "codeId": "D02VFDerror",
-      "addressIndex": 1
-    },
-    {
-      "codeId": "D03VFDerror",
-      "addressIndex": 2
-    },
-    {
-      "codeId": "D04VFDerror",
-      "addressIndex": 3
-    },
-    {
-      "codeId": "D05VFDerror",
-      "addressIndex": 4
-    },
-    {
-      "codeId": "D06VFDerror",
-      "addressIndex": 5
-    },
-    {
-      "codeId": "B01VFDerror",
-      "addressIndex": 6
-    },
-    {
-      "codeId": "B02VFDerror",
-      "addressIndex": 7
-    },
-    {
-      "codeId": "A01VFDerror",
-      "addressIndex": 8
-    },
-    {
-      "codeId": "A02VFDerror",
-      "addressIndex": 9
-    },
-    {
-      "codeId": "A01servoturnerror",
-      "addressIndex": 10
-    },
-    {
-      "codeId": "A02servoturnerror",
-      "addressIndex": 11
-    },
-    {
-      "codeId": "A01servotravelerror",
-      "addressIndex": 12
-    },
-    {
-      "codeId": "A02servotravelerror",
-      "addressIndex": 13
-    },
-    {
-      "codeId": "B01servotravelerror",
-      "addressIndex": 14
-    },
-    {
-      "codeId": "B02servotravelerror",
-      "addressIndex": 15
-    },
-    {
-      "codeId": "D01DECerror",
-      "addressIndex": 16
-    },
-    {
-      "codeId": "D01poserror",
-      "addressIndex": 17
-    },
-    {
-      "codeId": "D02DECerror",
-      "addressIndex": 18
-    },
-    {
-      "codeId": "D02poserror",
-      "addressIndex": 19
-    },
-    {
-      "codeId": "D03DECerror",
-      "addressIndex": 20
-    },
-    {
-      "codeId": "D03poserror",
-      "addressIndex": 21
-    },
-    {
-      "codeId": "D04DECerror",
-      "addressIndex": 22
-    },
-    {
-      "codeId": "D04poserror",
-      "addressIndex": 23
-    },
-    {
-      "codeId": "D05DECerror",
-      "addressIndex": 24
-    },
-    {
-      "codeId": "D05poserror",
-      "addressIndex": 25
-    },
-    {
-      "codeId": "D06DECerror",
-      "addressIndex": 26
-    },
-    {
-      "codeId": "D06poserror",
-      "addressIndex": 27
-    },
-    {
-      "codeId": "A01DECerror",
-      "addressIndex": 28
-    },
-    {
-      "codeId": "A01poserror",
-      "addressIndex": 29
-    },
-    {
-      "codeId": "A02DECerror",
-      "addressIndex": 30
-    },
-    {
-      "codeId": "A02poserror",
-      "addressIndex": 31
-    },
-    {
-      "codeId": "B01INDECerror",
-      "addressIndex": 32
-    },
-    {
-      "codeId": "B01INposerror",
-      "addressIndex": 33
-    },
-    {
-      "codeId": "B01OUTDECerror",
-      "addressIndex": 34
-    },
-    {
-      "codeId": "B01OUTposerror",
-      "addressIndex": 35
-    },
-    {
-      "codeId": "B02INDECerror",
-      "addressIndex": 36
-    },
-    {
-      "codeId": "B02INposerror",
-      "addressIndex": 37
-    },
-    {
-      "codeId": "B02OUTDECerror",
-      "addressIndex": 38
-    },
-    {
-      "codeId": "B02OUTposerror",
-      "addressIndex": 39
-    },
-    {
-      "codeId": "D01Scanglassexceedinglimit",
-      "addressIndex": 40
-    },
-    {
-      "codeId": "emergencystopalarm",
-      "addressIndex": 41
-    },
-    {
-      "codeId": "Moreglassthanknown",
-      "addressIndex": 42
-    },
-    {
-      "codeId": "lessglassthanknown",
-      "addressIndex": 43
-    },
-    {
-      "codeId": "D01conveyortimeoutalarm",
-      "addressIndex": 44
-    },
-    {
-      "codeId": "D02conveyortimeoutalarm",
-      "addressIndex": 45
-    },
-    {
-      "codeId": "D03conveyortimeoutalarm",
-      "addressIndex": 46
-    },
-    {
-      "codeId": "D04conveyortimeoutalarm",
-      "addressIndex": 47
-    },
-    {
-      "codeId": "D05conveyortimeoutalarm",
-      "addressIndex": 48
-    },
-    {
-      "codeId": "D06conveyortimeoutalarm",
-      "addressIndex": 49
-    },
-    {
-      "codeId": "A01conveyortimeoutalarm",
-      "addressIndex": 50
-    },
-    {
-      "codeId": "A02conveyortimeoutalarm",
-      "addressIndex": 51
-    },
-    {
-      "codeId": "B01conveyortimeoutalarm",
-      "addressIndex": 52
-    },
-    {
-      "codeId": "B02conveyortimeoutalarm",
-      "addressIndex": 53
-    },
-    {
-      "codeId": "A01conveyorLeftsafetyalarm",
-      "addressIndex": 54
-    },
-    {
-      "codeId": "A01conveyorrightsafetyalarm",
-      "addressIndex": 55
-    },
-    {
-      "codeId": "A02conveyorLeftsafetyalarm",
-      "addressIndex": 56
-    },
-    {
-      "codeId": "A02conveyorrightsafetyalarm",
-      "addressIndex": 57
-    },
-    {
-      "codeId": "1#buffersafetyalarm",
-      "addressIndex": 58
-    },
-    {
-      "codeId": "2#buffersafetyalarm",
-      "addressIndex": 59
-    },
-    {
-      "codeId": "3#buffersafetyalarm",
-      "addressIndex": 60
-    },
-    {
-      "codeId": "4#buffersafetyalarm",
-      "addressIndex": 61
-    },
-    {
-      "codeId": "A01.SRrightinposerror",
-      "addressIndex": 62
-    },
-    {
-      "codeId": "A02.SRleftinposerror",
-      "addressIndex": 63
-    },
-    {
-      "codeId": "B01.SRleftinposerror",
-      "addressIndex": 64
-    },
-    {
-      "codeId": "B01.SRleftdecerror",
-      "addressIndex": 65
-    },
-    {
-      "codeId": "B01.SRrightdecerror",
-      "addressIndex": 66
-    },
-    {
-      "codeId": "B01.SRrightinposerror",
-      "addressIndex": 67
-    },
-    {
-      "codeId": "B02.SRleftinposerror",
-      "addressIndex": 68
-    },
-    {
-      "codeId": "B02.SRleftdecerror",
-      "addressIndex": 69
-    },
-    {
-      "codeId": "B02.SRrightdecerror",
-      "addressIndex": 70
-    },
-    {
-      "codeId": "B02.SRrightinposerror",
-      "addressIndex": 71
-    },
-    {
-      "codeId": "A01servoturnhomed",
-      "addressIndex": 72
-    },
-    {
-      "codeId": "A02servoturnhomed",
-      "addressIndex": 73
-    },
-    {
-      "codeId": "A01servotravelhomed",
-      "addressIndex": 74
-    },
-    {
-      "codeId": "A02servotravelhomed",
-      "addressIndex": 75
-    },
-    {
-      "codeId": "B01servotravelhomed",
-      "addressIndex": 76
-    },
-    {
-      "codeId": "B02servotravelhomed",
-      "addressIndex": 77
-    },
-    {
-      "codeId": "resetDelay",
-      "addressIndex": 78
-    },
-    {
-      "codeId": "A01travelNegativelimit",
-      "addressIndex": 79
-    },
-    {
-      "codeId": "A01travelPositivelimit",
-      "addressIndex": 80
-    },
-    {
-      "codeId": "A01turnuplimit",
-      "addressIndex": 81
-    },
-    {
-      "codeId": "A01turndownlimit",
-      "addressIndex": 82
-    },
-    {
-      "codeId": "A02travelNegativelimit",
-      "addressIndex": 83
-    },
-    {
-      "codeId": "A02travelPositivelimit",
-      "addressIndex": 84
-    },
-    {
-      "codeId": "A02turnuplimit",
-      "addressIndex": 85
-    },
-    {
-      "codeId": "A02turndownlimit",
-      "addressIndex": 86
-    },
-    {
-      "codeId": "B01travelNegativelimit",
-      "addressIndex": 87
-    },
-    {
-      "codeId": "B01travelPositivelimit",
-      "addressIndex": 88
-    },
-    {
-      "codeId": "B02travelNegativelimit",
-      "addressIndex": 89
-    },
-    {
-      "codeId": "B02travelPositivelimit",
-      "addressIndex": 90
-    }
-  ]
-}
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/resources/JsonFile/PlcMes.json b/UnLoadGlassModule/src/main/resources/JsonFile/PlcMes.json
deleted file mode 100644
index ab5d4cd..0000000
--- a/UnLoadGlassModule/src/main/resources/JsonFile/PlcMes.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-   "plcAddressBegin":"DB105.0",
-   "plcAddressLenght":"12",
-   "dataType":"word",
-   "parameteInfor":[
-      {
-         "codeId": "OutActivate",
-         "addressIndex":"0",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-          "codeId": "Addgoal",
-          "addressIndex":"2",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"m/min"      
-       },
-       {
-          "codeId": "AddLength",
-          "addressIndex":"4",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"m/min"       
-       },
-       {
-          "codeId": "AddWidth",
-          "addressIndex":"6",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "AddCount",
-          "addressIndex":"8",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "OutStart",
-          "addressIndex":"10",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       }
-
-   ]
-}
diff --git a/UnLoadGlassModule/src/main/resources/JsonFile/PlcParameter.json b/UnLoadGlassModule/src/main/resources/JsonFile/PlcParameter.json
deleted file mode 100644
index afbe090..0000000
--- a/UnLoadGlassModule/src/main/resources/JsonFile/PlcParameter.json
+++ /dev/null
@@ -1,610 +0,0 @@
-{
-   "plcAddressBegin":"DB100.0",
-   "plcAddressLenght":"198",
-   "dataType":"word",
-   "parameteInfor":[
-      {
-         "codeId": "conveyorVelocity(Max)",
-         "addressIndex":"0",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-          "codeId": "conveyorVelocity(AutoFAST)",
-          "addressIndex":"2",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"m/min"      
-       },
-       {
-          "codeId": "conveyorVelocity(AutoSLOW)",
-          "addressIndex":"4",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"m/min"       
-       },
-       {
-          "codeId": "conveyorVelocity(Manual)",
-          "addressIndex":"6",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "A01A02TURNJOGVelocity",
-          "addressIndex":"8",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "A01A02TRAVELJOGVelocity",
-          "addressIndex":"10",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "B01B02TRAVELJOGVelocity",
-          "addressIndex":"12",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "A01A02TURNPOSVelocityAUTO",
-          "addressIndex":"14",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "A01TURNPOSVelocitymanual",
-          "addressIndex":"16",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-         "codeId": "A01A02TRAVELPOSVelocityAUTO",
-         "addressIndex":"18",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },
-     {
-       "codeId": "A01TRAVELPOSVelocitymanual",
-       "addressIndex":"20",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm/S"
-     },
-     {
-       "codeId": "B01B02TRAVELPOSVelocityAUTO",
-       "addressIndex":"22",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm/S"
-     },
-     {
-       "codeId": "B01TRAVELPOSVelocitymanual",
-       "addressIndex":"24",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm/S"
-     },
-     {
-       "codeId": "A01A02conveyorVelocity(Max)",
-       "addressIndex":"26",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"m/min"
-     },
-     {
-       "codeId": "A01A02conveyorVelocity(AutoFAST)",
-       "addressIndex":"28",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"m/min"
-     },
-     {
-       "codeId": "A01A02conveyorVelocity(AutoSLOW)",
-       "addressIndex":"30",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"m/min"
-     },
-     {
-       "codeId": "B01B02conveyorVelocity(Manual)",
-       "addressIndex":"32",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"m/min"
-     },
-     {
-       "codeId": "B01B02conveyorVelocity(Max)",
-       "addressIndex":"34",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"m/min"
-     },
-     {
-       "codeId": "B01B02conveyorVelocity(AutoFAST)",
-       "addressIndex":"36",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"m/min"
-     },
-     {
-       "codeId": "B01B02conveyorVelocity(AutoSLOW)",
-       "addressIndex":"38",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"m/min"
-     },
-     {
-       "codeId": "B01B02conveyorVelocity(Manual)",
-       "addressIndex":"40",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"m/min"
-     },
-     {
-       "codeId": "gridspacing",
-       "addressIndex":"42",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A01Spliceaddresssetting",
-       "addressIndex":"44",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A02Spliceaddresssetting",
-       "addressIndex":"46",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A011#gridaddress",
-       "addressIndex":"48",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A0122#gridaddress",
-       "addressIndex":"50",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A0143#gridaddress",
-       "addressIndex":"52",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A0164#gridaddress",
-       "addressIndex":"54",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A0185#gridaddress",
-       "addressIndex":"56",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A01106#gridaddress",
-       "addressIndex":"58",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A01127#gridaddress",
-       "addressIndex":"60",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A01148#gridaddress",
-       "addressIndex":"62",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A01169#gridaddress",
-       "addressIndex":"64",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A01190#gridaddress",
-       "addressIndex":"66",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A021#gridaddress",
-       "addressIndex":"68",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A0222#gridaddress",
-       "addressIndex":"70",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A0243#gridaddress",
-       "addressIndex":"72",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A0264#gridaddress",
-       "addressIndex":"74",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A0285#gridaddress",
-       "addressIndex":"76",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A02106#gridaddress",
-       "addressIndex":"78",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A02127#gridaddress",
-       "addressIndex":"80",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A02148#gridaddress",
-       "addressIndex":"82",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A02169#gridaddress",
-       "addressIndex":"84",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A02190#gridaddress",
-       "addressIndex":"86",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "B011#gridaddress",
-       "addressIndex":"88",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "B0122#gridaddress",
-       "addressIndex":"90",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "B0143#gridaddress",
-       "addressIndex":"92",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "B0164#gridaddress",
-       "addressIndex":"94",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "B0185#gridaddress",
-       "addressIndex":"96",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "B02106#gridaddress",
-       "addressIndex":"98",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "B02127#gridaddress",
-       "addressIndex":"100",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "B02148#gridaddress",
-       "addressIndex":"102",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "B02169#gridaddress",
-       "addressIndex":"104",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "B02190#gridaddress",
-       "addressIndex":"106",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A01Targetgrid(Manual)",
-       "addressIndex":"108",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": " A02Targetgrid(Manual)",
-       "addressIndex":"110",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "B01Targetgrid(Manual)",
-       "addressIndex":"112",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "B02Targetgrid(Manual)",
-       "addressIndex":"114",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "A01turnTargetAngle(Manual)",
-       "addressIndex":"116",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"掳"
-     },
-     {
-       "codeId": "A02turnTargetAngle(Manual)",
-       "addressIndex":"118",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"掳"
-     },
-     {
-       "codeId": "A01turnAngle1",
-       "addressIndex":"120",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"掳"
-     },
-     {
-       "codeId": "A01turnAngle2",
-       "addressIndex":"122",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"掳"
-     },
-     {
-       "codeId": "A01turnAngle3",
-       "addressIndex":"124",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"掳"
-     },
-     {
-       "codeId": "A01turnAngle4",
-       "addressIndex":"126",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"掳"
-     },
-     {
-       "codeId": "A02turnAngle1",
-       "addressIndex":"128",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"掳"
-     },
-     {
-       "codeId": "A02turnAngle2",
-       "addressIndex":"130",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"掳"
-     },
-     {
-       "codeId": "A02turnAngle3",
-       "addressIndex":"132",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"掳"
-     },
-     {
-       "codeId": "A02turnAngle4",
-       "addressIndex":"134",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"掳"
-     },
-     {
-       "codeId": "Minimumglasslength",
-       "addressIndex":"136",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "Minimumglassheight",
-       "addressIndex":"138",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "Maximumglasslength",
-       "addressIndex":"140",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "Maximumglassheight",
-       "addressIndex":"142",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "A01cellsGlassNum",
-       "addressIndex":"144",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "A02cellsGlassNum",
-       "addressIndex":"146",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "A01ID",
-       "addressIndex":"148",
-       "addressLenght":"14",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "A02ID",
-       "addressIndex":"162",
-       "addressLenght":"14",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "A02TRAVELPOSVelocitymanual",
-       "addressIndex":"176",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "B02TRAVELPOSVelocitymanual",
-       "addressIndex":"178",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "Startingpositionofthefeedca",
-       "addressIndex":"180",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "Targetpositionofthefeedcar",
-       "addressIndex":"182",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "Lengthofincomingglass",
-       "addressIndex":"184",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "Widthofincomingglass",
-       "addressIndex":"186",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "Startingpositionoftheexitcar",
-       "addressIndex":"188",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     }, {
-       "codeId": "Exitcartargetposition",
-       "addressIndex":"190",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     }
-     , {
-       "codeId": "A02TURNPOSVelocitymanual",
-       "addressIndex":"192",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     }
-     , {
-       "codeId": "A01delayTime",
-       "addressIndex":"194",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     }
-
-
-   ]
-}
diff --git a/UnLoadGlassModule/src/main/resources/JsonFile/PlcRead.json b/UnLoadGlassModule/src/main/resources/JsonFile/PlcRead.json
deleted file mode 100644
index f3ebb33..0000000
--- a/UnLoadGlassModule/src/main/resources/JsonFile/PlcRead.json
+++ /dev/null
@@ -1,195 +0,0 @@
-{
-   "plcAddressBegin": "DB106.0",
-   "plcAddressLenght": "66",
-   "dataType": "word",
-   "parameteInfor": [{
-         "codeId": "A01Position",
-         "addressIndex": "0",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "A01FlipPosition",
-         "addressIndex": "2",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "A01QuestStartPosition",
-         "addressIndex": "4",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "A01EndPosition",
-         "addressIndex": "6",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "FeedCarStatus",
-         "addressIndex": "8",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "A02QuestOver",
-         "addressIndex": "10",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "A02Position",
-         "addressIndex": "12",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "A02FlipPosition",
-         "addressIndex": "14",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "A02QuestStartPosition",
-         "addressIndex": "16",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "A02EndPosition",
-         "addressIndex": "18",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "ExitCarStatus",
-         "addressIndex": "20",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "A02QuestOver",
-         "addressIndex": "22",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "FeedRequest",
-         "addressIndex": "24",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "FeedID",
-         "addressIndex": "26",
-         "addressLenght":"14", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "B01Position",
-         "addressIndex": "40",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "B01QuestPosition",
-         "addressIndex": "42",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "B01CurrentTaskMode",
-         "addressIndex": "44",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "B01CarStatus",
-         "addressIndex": "46",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "B01CarTaskStatus",
-         "addressIndex": "48",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "B02Position",
-         "addressIndex": "50",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "B02CarCurrentTask",
-         "addressIndex": "52",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "B02CurrentTaskMode",
-         "addressIndex": "54",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "B02CarStatus",
-         "addressIndex": "56",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "B02CarSaskStatus",
-         "addressIndex": "58",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "B01CompleteTheReport",
-         "addressIndex": "60",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "B02CompleteTheReport",
-         "addressIndex": "62",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "OutRequest",
-         "addressIndex": "64",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      }
-   ]
-}
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/resources/JsonFile/PlcSign.json b/UnLoadGlassModule/src/main/resources/JsonFile/PlcSign.json
deleted file mode 100644
index 8f9295a..0000000
--- a/UnLoadGlassModule/src/main/resources/JsonFile/PlcSign.json
+++ /dev/null
@@ -1,460 +0,0 @@
-{
-  "plcAddressBegin": "DB102.0.0",
-  "plcAddressLenght": "112",
-  "dataType": "bit",
-  "parameteInfor": [
-    {
-      "codeId": "D01.SRdec",
-      "addressIndex": 0
-    },
-    {
-      "codeId": "D01.SRinpos",
-      "addressIndex": 1
-    },
-    {
-      "codeId": "D02.SRdec",
-      "addressIndex": 2
-    },
-    {
-      "codeId": "D02.SRinpos",
-      "addressIndex": 3
-    },
-    {
-      "codeId": "D03.SRinto",
-      "addressIndex": 4
-    },
-    {
-      "codeId": "D03.SRdec",
-      "addressIndex": 5
-    },
-    {
-      "codeId": "D03.SRinpos",
-      "addressIndex": 6
-    },
-    {
-      "codeId": "D04.SRdec",
-      "addressIndex": 7
-    },
-    {
-      "codeId": "D04.SRinpos",
-      "addressIndex": 8
-    },
-    {
-      "codeId": "D05.SRdec",
-      "addressIndex": 9
-    },
-    {
-      "codeId": "D05.SRinpos",
-      "addressIndex": 10
-    },
-    {
-      "codeId": "D06.SRdec",
-      "addressIndex": 11
-    },
-    {
-      "codeId": "D06.SRinpos",
-      "addressIndex": 12
-    },
-    {
-      "codeId": "B01.SRindec",
-      "addressIndex": 13
-    },
-    {
-      "codeId": "B01.SRininpos",
-      "addressIndex": 14
-    },
-    {
-      "codeId": "B01.SRoutdec",
-      "addressIndex": 15
-    },
-    {
-      "codeId": "B01.SRoutinpos",
-      "addressIndex": 16
-    },
-    {
-      "codeId": "B01.SRturnon",
-      "addressIndex": 17
-    },
-    {
-      "codeId": "B01.SRturnoff",
-      "addressIndex": 18
-    },
-    {
-      "codeId": "B01.SRup",
-      "addressIndex": 19
-    },
-    {
-      "codeId": "B01.SRdown",
-      "addressIndex": 20
-    },
-    {
-      "codeId": "B02.SRoutdec",
-      "addressIndex": 21
-    },
-    {
-      "codeId": "B02.SRoutinpos",
-      "addressIndex": 22
-    },
-    {
-      "codeId": "B02.SRindec",
-      "addressIndex": 23
-    },
-    {
-      "codeId": "B02.SRininpos",
-      "addressIndex": 24
-    },
-    {
-      "codeId": "B02.SRturnon",
-      "addressIndex": 25
-    },
-    {
-      "codeId": "B02.SRturnoff",
-      "addressIndex": 26
-    },
-    {
-      "codeId": "B02.SRup",
-      "addressIndex": 27
-    },
-    {
-      "codeId": "B02.SRdown",
-      "addressIndex": 28
-    },
-    {
-      "codeId": "B01.SRinsafety",
-      "addressIndex": 29
-    },
-    {
-      "codeId": "B01.SRoutsafety",
-      "addressIndex": 30
-    },
-    {
-      "codeId": "B02.SRinsafety",
-      "addressIndex": 31
-    },
-    {
-      "codeId": "SB.start(+)",
-      "addressIndex": 32
-    },
-    {
-      "codeId": "SB.stop(-)",
-      "addressIndex": 33
-    },
-    {
-      "codeId": "SB.reset",
-      "addressIndex": 34
-    },
-    {
-      "codeId": "SB.auto/manul",
-      "addressIndex": 35
-    },
-    {
-      "codeId": "D01.SB.confirm",
-      "addressIndex": 36
-    },
-    {
-      "codeId": "SB.emg",
-      "addressIndex": 37
-    },
-    {
-      "codeId": "D01.SB.start",
-      "addressIndex": 38
-    },
-    {
-      "codeId": "D06.SB.start",
-      "addressIndex": 39
-    },
-    {
-      "codeId": "B02.SRoutsafety",
-      "addressIndex": 40
-    },
-    {
-      "codeId": "SafetyDoor.requset",
-      "addressIndex": 41
-    },
-    {
-      "codeId": "SafetyDoor.confirm",
-      "addressIndex": 42
-    },
-    {
-      "codeId": "SafetyDoor.reset",
-      "addressIndex": 43
-    },
-    {
-      "codeId": "Sspce",
-      "addressIndex": 44
-    },
-    {
-      "codeId": "Sspce",
-      "addressIndex": 45
-    },
-    {
-      "codeId": "Sspce",
-      "addressIndex": 46
-    },
-    {
-      "codeId": "Sspce",
-      "addressIndex": 47
-    },
-    {
-      "codeId": "A01.SRleftdec",
-      "addressIndex": 48
-    },
-    {
-      "codeId": "A01.SRleftinpos",
-      "addressIndex": 49
-    },
-    {
-      "codeId": "A01.SRleftsafety",
-      "addressIndex": 50
-    },
-    {
-      "codeId": "A01.SRrightdec",
-      "addressIndex": 51
-    },
-    {
-      "codeId": "A01.SRrightinpos",
-      "addressIndex": 52
-    },
-    {
-      "codeId": "A01.SRrightsafety",
-      "addressIndex": 53
-    },
-    {
-      "codeId": "A01.SRturnhome",
-      "addressIndex": 54
-    },
-    {
-      "codeId": "A01.SRturnup",
-      "addressIndex": 55
-    },
-    {
-      "codeId": "A01.SRturndown",
-      "addressIndex": 56
-    },
-    {
-      "codeId": "A01.SRtravelhome",
-      "addressIndex": 57
-    },
-    {
-      "codeId": "A01.SRtravelleftdec",
-      "addressIndex": 58
-    },
-    {
-      "codeId": "A01.SRtravelleftlimit",
-      "addressIndex": 59
-    },
-    {
-      "codeId": "A01.SRtravelrightdec",
-      "addressIndex": 60
-    },
-    {
-      "codeId": "A01.SRtravelrightlimit",
-      "addressIndex": 61
-    },
-    {
-      "codeId": "space",
-      "addressIndex": 62
-    },
-    {
-      "codeId": "space",
-      "addressIndex": 63
-    },
-    {
-      "codeId": "A02.SRleftdec",
-      "addressIndex": 64
-    },
-    {
-      "codeId": "A02.SRleftinpos",
-      "addressIndex": 65
-    },
-    {
-      "codeId": "A02.SRleftsafety",
-      "addressIndex": 66
-    },
-    {
-      "codeId": "A02.SRrightdec",
-      "addressIndex": 67
-    },
-    {
-      "codeId": "A02.SRrightinpos",
-      "addressIndex": 68
-    },
-    {
-      "codeId": "A02.SRrightsafety",
-      "addressIndex": 69
-    },
-    {
-      "codeId": "A02.SRturnhome",
-      "addressIndex": 70
-    },
-    {
-      "codeId": "A02.SRturnup",
-      "addressIndex": 71
-    },
-    {
-      "codeId": "A02.SRturndown",
-      "addressIndex": 72
-    },
-    {
-      "codeId": "A02.SRtravelhome",
-      "addressIndex": 73
-    },
-    {
-      "codeId": "A02.SRtravelleftdec",
-      "addressIndex": 74
-    },
-    {
-      "codeId": "A02.SRtravelleftlimit",
-      "addressIndex": 75
-    },
-    {
-      "codeId": "A02.SRtravelrightdec",
-      "addressIndex": 76
-    },
-    {
-      "codeId": "A02.SRtravelrightlimit",
-      "addressIndex": 77
-    },
-    {
-      "codeId": "space",
-      "addressIndex": 78
-    },
-    {
-      "codeId": "space",
-      "addressIndex": 79
-    },
-    {
-      "codeId": "B01.SRorigin",
-      "addressIndex": 80
-    },
-    {
-      "codeId": "B01.SRleftlimit",
-      "addressIndex": 81
-    },
-    {
-      "codeId": "B01.SRrightlimit",
-      "addressIndex": 82
-    },
-    {
-      "codeId": "B02.SRorigin",
-      "addressIndex": 83
-    },
-    {
-      "codeId": "B02.SRleftlimit",
-      "addressIndex": 84
-    },
-    {
-      "codeId": "B02.SRrightlimit",
-      "addressIndex": 85
-    },
-    {
-      "codeId": "space",
-      "addressIndex": 86
-    },
-    {
-      "codeId": "space",
-      "addressIndex": 87
-    },
-    {
-      "codeId": "LED.red",
-      "addressIndex": 88
-    },
-    {
-      "codeId": "LED.green",
-      "addressIndex": 89
-    },
-    {
-      "codeId": "LED.yellow",
-      "addressIndex": 90
-    },
-    {
-      "codeId": "D01.LED.green",
-      "addressIndex": 91
-    },
-    {
-      "codeId": "D06.LED.green",
-      "addressIndex": 92
-    },
-    {
-      "codeId": "B01.YV.turn",
-      "addressIndex": 93
-    },
-    {
-      "codeId": "B01.YV.updown",
-      "addressIndex": 94
-    },
-    {
-      "codeId": "B01.YV.gassing",
-      "addressIndex": 95
-    },
-    {
-      "codeId": "B02.YV.turn",
-      "addressIndex": 96
-    },
-    {
-      "codeId": "B02.YV.updown",
-      "addressIndex": 97
-    },
-    {
-      "codeId": "B02.YV.gassing",
-      "addressIndex": 98
-    },
-    {
-      "codeId": "SafetyDoor.Led",
-      "addressIndex": 99
-    },
-    {
-      "codeId": "SafetyDoor.open",
-      "addressIndex": 100
-    },
-    {
-      "codeId": "D01SB.confirm",
-      "addressIndex": 101
-    },
-    {
-      "codeId": "space",
-      "addressIndex": 102
-    },
-    {
-      "codeId": "space",
-      "addressIndex": 103
-    },
-    {
-      "codeId": "A01oilPump",
-      "addressIndex": 104
-    },
-    {
-      "codeId": "A01motorCtr",
-      "addressIndex": 105
-    },
-    {
-      "codeId": "space",
-      "addressIndex": 106
-    },
-    {
-      "codeId": "space",
-      "addressIndex": 107
-    },
-    {
-      "codeId": "A02oilPump",
-      "addressIndex": 108
-    },
-    {
-      "codeId": "A02motorCtr",
-      "addressIndex": 109
-    },
-    {
-      "codeId": "space",
-      "addressIndex": 110
-    },
-    {
-      "codeId": "space",
-      "addressIndex": 111
-    }
-    ,
-    {
-      "codeId": "space",
-      "addressIndex": 111
-    }
-  ]
-}
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/resources/JsonFile/PlcState.json b/UnLoadGlassModule/src/main/resources/JsonFile/PlcState.json
deleted file mode 100644
index dfdbaec..0000000
--- a/UnLoadGlassModule/src/main/resources/JsonFile/PlcState.json
+++ /dev/null
@@ -1,285 +0,0 @@
-{
-  "plcAddressBegin": "DB103.0",
-  "plcAddressLenght": "258",
-  "dataType": "word",
-  "parameteInfor": [
-    {
-      "codeId": "D01.State",
-      "addressIndex": "0",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "D02.State",
-      "addressIndex": "2",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "B01.State",
-      "addressIndex": "4",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "B02.State",
-      "addressIndex": "6",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "A01.State",
-      "addressIndex": "8",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "A02.State",
-      "addressIndex": "10",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "D03.State",
-      "addressIndex": "12",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "D04.State",
-      "addressIndex": "14",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "D05.State",
-      "addressIndex": "16",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "D06.State",
-      "addressIndex": "18",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "A01tavelActualPosition",
-      "addressIndex": "20",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "A01turnActualangle",
-      "addressIndex": "22",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "A02tavelActualPosition",
-      "addressIndex": "24",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "A02turnActualangle",
-      "addressIndex": "26",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "B01tavelActualPosition",
-      "addressIndex": "28",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "B02tavelActualPosition",
-      "addressIndex": "30",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "A01CurrentGrid",
-      "addressIndex": "32",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "A02CurrentGrid",
-      "addressIndex": "34",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "B01CurrentGrid",
-      "addressIndex": "36",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "B01TargetGrid",
-      "addressIndex": "38",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "B02CurrentGrid",
-      "addressIndex": "40",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "B02TargetGrid",
-      "addressIndex": "42",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "D01ID",
-      "addressIndex": "44",
-      "addressLenght": "14",
-      "unit": ""
-    },
-    {
-      "codeId": "D02ID",
-      "addressIndex": "58",
-      "addressLenght": "14",
-      "unit": ""
-    },
-    {
-      "codeId": "D03ID",
-      "addressIndex": "72",
-      "addressLenght": "14",
-      "unit": ""
-    },
-    {
-      "codeId": "D04ID",
-      "addressIndex": "86",
-      "addressLenght": "14",
-      "unit": ""
-    },
-    {
-      "codeId": "D05ID",
-      "addressIndex": "100",
-      "addressLenght": "14",
-      "unit": ""
-    },
-    {
-      "codeId": "D06ID",
-      "addressIndex": "114",
-      "addressLenght": "14",
-      "unit": ""
-    },
-    {
-      "codeId": "A01ID1",
-      "addressIndex": "128",
-      "addressLenght": "14",
-      "unit": ""
-    },
-    {
-      "codeId": "A01ID2",
-      "addressIndex": "142",
-      "addressLenght": "14",
-      "unit": ""
-    },
-    {
-      "codeId": "A02ID1",
-      "addressIndex": "156",
-      "addressLenght": "14",
-      "unit": ""
-    },
-    {
-      "codeId": "A02ID2",
-      "addressIndex": "170",
-      "addressLenght": "14",
-      "unit": ""
-    },
-    {
-      "codeId": "B01ID1",
-      "addressIndex": "184",
-      "addressLenght": "14",
-      "unit": ""
-    },
-    {
-      "codeId": "B01ID2",
-      "addressIndex": "198",
-      "addressLenght": "14",
-      "unit": ""
-    },
-    {
-      "codeId": "B02ID1",
-      "addressIndex": "212",
-      "addressLenght": "14",
-      "unit": ""
-    },
-    {
-      "codeId": "B02ID2",
-      "addressIndex": "226",
-      "addressLenght": "14",
-      "unit": ""
-    },
-    {
-      "codeId": "A01conveyorFaultcodes",
-      "addressIndex": "240",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "A01turnservoFaultcodes",
-      "addressIndex": "242",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "A01travelservoFaultcodes",
-      "addressIndex": "244",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "A02conveyorFaultcodes",
-      "addressIndex": "246",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "A02turnservoFaultcodes",
-      "addressIndex": "248",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "A02travelservoFaultcodes",
-      "addressIndex": "250",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "B01travelservoFaultcodes",
-      "addressIndex": "252",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "B02travelservoFaultcodes",
-      "addressIndex": "254",
-      "addressLenght": "2",
-      "unit": ""
-    }
-    ,
-    {
-      "codeId": "Scanningguns",
-      "addressIndex": "256",
-      "addressLenght": "2",
-      "unit": ""
-    }
-    ,
-    {
-      "codeId": "Frameid",
-      "addressIndex": "270",
-      "addressLenght": "2",
-      "unit": ""
-    }
-  ]
-}
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/resources/JsonFile/PlcTest.json b/UnLoadGlassModule/src/main/resources/JsonFile/PlcTest.json
deleted file mode 100644
index 263c782..0000000
--- a/UnLoadGlassModule/src/main/resources/JsonFile/PlcTest.json
+++ /dev/null
@@ -1,378 +0,0 @@
-{
-  "plcAddressBegin": "DB101.0.0",
-  "plcAddressLenght": "93",
-  "dataType": "bit",
-  "parameteInfor": [
-    {
-      "codeId": "D01VFDconveyor",
-      "addressIndex": 0
-    },
-    {
-      "codeId": "D02VFDconveyor",
-      "addressIndex": 1
-    },
-    {
-      "codeId": "D03VFDconveyor",
-      "addressIndex": 2
-    },
-    {
-      "codeId": "D04VFDconveyor",
-      "addressIndex": 3
-    },
-    {
-      "codeId": "D05VFDconveyor",
-      "addressIndex": 4
-    },
-    {
-      "codeId": "D06VFDconveyor",
-      "addressIndex": 5
-    },
-    {
-      "codeId": "A01VFDconveyor",
-      "addressIndex": 6
-    },
-    {
-      "codeId": "A02VFDconveyor",
-      "addressIndex": 7
-    },
-    {
-      "codeId": "B01VFDconveyor",
-      "addressIndex": 8
-    },
-    {
-      "codeId": "B02VFDconveyor",
-      "addressIndex": 9
-    },
-    {
-      "codeId": "A01SERVETURN",
-      "addressIndex": 10
-    },
-    {
-      "codeId": "A02SERVETURN",
-      "addressIndex": 11
-    },
-    {
-      "codeId": "A01SERVETRAVEL",
-      "addressIndex": 12
-    },
-    {
-      "codeId": "A02SERVETRAVEL",
-      "addressIndex": 13
-    },
-    {
-      "codeId": "B01SERVETRAVEL",
-      "addressIndex": 14
-    },
-    {
-      "codeId": "B02SERVETRAVEL",
-      "addressIndex": 15
-    },
-    {
-      "codeId": "A01SERVETURNPOS",
-      "addressIndex": 16
-    },
-    {
-      "codeId": "A02SERVETURNPOS",
-      "addressIndex": 17
-    },
-    {
-      "codeId": "A01SERVETRAVELPOS",
-      "addressIndex": 18
-    },
-    {
-      "codeId": "A02SERVETRAVELPOS",
-      "addressIndex": 19
-    },
-    {
-      "codeId": "B01SERVETRAVELPOS",
-      "addressIndex": 20
-    },
-    {
-      "codeId": "B02SERVETRAVELPOS",
-      "addressIndex": 21
-    },
-    {
-      "codeId": "B01YVTURN",
-      "addressIndex": 22
-    },
-    {
-      "codeId": "B01YVUPDOWN",
-      "addressIndex": 23
-    },
-    {
-      "codeId": "B02YVTURN",
-      "addressIndex": 24
-    },
-    {
-      "codeId": "B02YVUPDOWN",
-      "addressIndex": 25
-    },
-    {
-      "codeId": "B01YVGassing",
-      "addressIndex": 26
-    },
-    {
-      "codeId": "B02YVGassing",
-      "addressIndex": 27
-    },
-    {
-      "codeId": "A01VFDconveyorreverse",
-      "addressIndex": 28
-    },
-    {
-      "codeId": "A02VFDconveyorreverse",
-      "addressIndex": 29
-    },
-    {
-      "codeId": "A01SERVETURNreset",
-      "addressIndex": 30
-    },
-    {
-      "codeId": "A01SERVETURNhome",
-      "addressIndex": 31
-    },
-    {
-      "codeId": "A01SERVETRAVELreset",
-      "addressIndex": 32
-    },
-    {
-      "codeId": "A02SERVETURNreset",
-      "addressIndex": 33
-    },
-    {
-      "codeId": "A02SERVETURNhome",
-      "addressIndex": 34
-    },
-    {
-      "codeId": "A02SERVETRAVELreset",
-      "addressIndex": 35
-    },
-    {
-      "codeId": "B01SERVETRAVELreset",
-      "addressIndex": 36
-    },
-    {
-      "codeId": "B01SERVETRAVELhome",
-      "addressIndex": 37
-    },
-    {
-      "codeId": "B02SERVETRAVELreset",
-      "addressIndex": 38
-    },
-    {
-      "codeId": "B02SERVETRAVELhome",
-      "addressIndex": 39
-    },
-    {
-      "codeId": "Manualstoragestartup",
-      "addressIndex": 40
-    },
-    {
-      "codeId": "Manualoutputstartup",
-      "addressIndex": 41
-    },
-    {
-      "codeId": "A01oilpump",
-      "addressIndex": 42
-    },
-    {
-      "codeId": "A02oilpump",
-      "addressIndex": 43
-    },
-    {
-      "codeId": "A01get1#gridaddress",
-      "addressIndex": 44
-    },
-    {
-      "codeId": "A01get22#gridaddress",
-      "addressIndex": 45
-    },
-    {
-      "codeId": "A01get43#gridaddress",
-      "addressIndex": 46
-    },
-    {
-      "codeId": "A01get64#gridaddress",
-      "addressIndex": 47
-    },
-    {
-      "codeId": "A01get85#gridaddress",
-      "addressIndex": 48
-    },
-    {
-      "codeId": "A01get106#gridaddress",
-      "addressIndex": 49
-    },
-    {
-      "codeId": "A01get127#gridaddress",
-      "addressIndex": 50
-    },
-    {
-      "codeId": "A01get148#gridaddress",
-      "addressIndex": 51
-    },
-    {
-      "codeId": "A01get169#gridaddress",
-      "addressIndex": 52
-    },
-    {
-      "codeId": "A02get190#gridaddress",
-      "addressIndex": 53
-    },
-    {
-      "codeId": "A02get1#gridaddress",
-      "addressIndex": 54
-    },
-    {
-      "codeId": "A02get22#gridaddress",
-      "addressIndex": 55
-    },
-    {
-      "codeId": "A02get43#gridaddress",
-      "addressIndex": 56
-    },
-    {
-      "codeId": "A02get64#gridaddress",
-      "addressIndex": 57
-    },
-    {
-      "codeId": "A02get85#gridaddress",
-      "addressIndex": 58
-    },
-    {
-      "codeId": "A02get106#gridaddress",
-      "addressIndex": 59
-    },
-    {
-      "codeId": "A02get127#gridaddress",
-      "addressIndex": 60
-    },
-    {
-      "codeId": "A02get148#gridaddress",
-      "addressIndex": 61
-    },
-    {
-      "codeId": "A02get169#gridaddress",
-      "addressIndex": 62
-    },
-    {
-      "codeId": "A02get190#gridaddress",
-      "addressIndex": 63
-    },
-    {
-      "codeId": "B01get1#gridaddress",
-      "addressIndex": 64
-    },
-    {
-      "codeId": "B01get22#gridaddress",
-      "addressIndex": 65
-    },
-    {
-      "codeId": "B01get43#gridaddress",
-      "addressIndex": 66
-    },
-    {
-      "codeId": "B01get64#gridaddress",
-      "addressIndex": 67
-    },
-    {
-      "codeId": "B01get85#gridaddress",
-      "addressIndex": 68
-    },
-    {
-      "codeId": "B02get106#gridaddress",
-      "addressIndex": 69
-    },
-    {
-      "codeId": "B02get127#gridaddress",
-      "addressIndex": 70
-    },
-    {
-      "codeId": "B02get148#gridaddress",
-      "addressIndex": 71
-    },
-    {
-      "codeId": "B02get169#gridaddress",
-      "addressIndex": 72
-    },
-    {
-      "codeId": "B02get190#gridaddress",
-      "addressIndex": 73
-    },
-    {
-      "codeId": "D01IDClean",
-      "addressIndex": 74
-    },
-    {
-      "codeId": "D02IDClean",
-      "addressIndex": 75
-    },
-    {
-      "codeId": "D03IDClean",
-      "addressIndex": 76
-    },
-    {
-      "codeId": "D04IDClean",
-      "addressIndex": 77
-    },
-    {
-      "codeId": "D05IDClean",
-      "addressIndex": 78
-    },
-    {
-      "codeId": "D06IDClean",
-      "addressIndex": 79
-    },
-    {
-      "codeId": "A01IDClean",
-      "addressIndex": 80
-    },
-    {
-      "codeId": "A02IDClean",
-      "addressIndex": 81
-    },
-    {
-      "codeId": "B01IDClean",
-      "addressIndex": 82
-    },
-    {
-      "codeId": "B02IDClean",
-      "addressIndex": 83
-    },
-    {
-      "codeId": "abort/resumeTasks",
-      "addressIndex": 84
-    },
-    {
-      "codeId": "A01SERVETRAVELhome",
-      "addressIndex": 85
-    },
-    {
-      "codeId": "A02SERVETRAVELhome",
-      "addressIndex": 86
-    },
-    {
-      "codeId": "A01A02travelHoming",
-      "addressIndex": 87
-    },
-    {
-      "codeId": "A01halfAutoSelect",
-      "addressIndex": 88
-    },
-    {
-      "codeId": "A02halfAutoSelect",
-      "addressIndex": 89
-    },
-    {
-      "codeId": "A02abortTasks",
-      "addressIndex": 90
-    },
-    {
-      "codeId": "emgHMI",
-      "addressIndex": 91
-    },
-    {
-      "codeId": "Scanningmethod",
-      "addressIndex": 92
-  ]
-}
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/resources/JsonFile/Plcframe.json b/UnLoadGlassModule/src/main/resources/JsonFile/Plcframe.json
deleted file mode 100644
index c270227..0000000
--- a/UnLoadGlassModule/src/main/resources/JsonFile/Plcframe.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
-   "plcAddressBegin":"DB17.0",
-   "plcAddressLenght":"40",
-   "dataType":"word",
-   "parameteInfor":[
-      {
-         "codeId": "E01id",  
-         "addressIndex":"0",
-         "addressLenght":"14", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-          "codeId": "E01Quest",
-          "addressIndex":"16",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"m/min"      
-       },
-       {
-          "codeId": "E01Reply",
-          "addressIndex":"18",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"m/min"       
-       },
-       {
-          "codeId": "J01Quest",
-          "addressIndex":"20",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "J01id",
-          "addressIndex":"22",
-          "addressLenght":"14",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "J01TurnGo",
-          "addressIndex":"38",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       }
-
-
-   ]
-}
diff --git a/UnLoadGlassModule/src/main/resources/JsonFile/alarm.xlsx b/UnLoadGlassModule/src/main/resources/JsonFile/alarm.xlsx
deleted file mode 100644
index 50b26dc..0000000
--- a/UnLoadGlassModule/src/main/resources/JsonFile/alarm.xlsx
+++ /dev/null
Binary files differ
diff --git a/UnLoadGlassModule/src/main/resources/JsonFile/sign.xlsx b/UnLoadGlassModule/src/main/resources/JsonFile/sign.xlsx
deleted file mode 100644
index 3922301..0000000
--- a/UnLoadGlassModule/src/main/resources/JsonFile/sign.xlsx
+++ /dev/null
Binary files differ
diff --git a/UnLoadGlassModule/src/main/resources/JsonFile/test.xlsx b/UnLoadGlassModule/src/main/resources/JsonFile/test.xlsx
deleted file mode 100644
index 9862cf5..0000000
--- a/UnLoadGlassModule/src/main/resources/JsonFile/test.xlsx
+++ /dev/null
Binary files differ
diff --git a/UnLoadGlassModule/src/main/resources/application.yml b/UnLoadGlassModule/src/main/resources/application.yml
deleted file mode 100644
index 328e464..0000000
--- a/UnLoadGlassModule/src/main/resources/application.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-server:
-  port: 8081
-  servlet:
-   context-path: /mesModuleTools
-
-spring:
-  datasource:
-    dynamic:
-      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
-      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
-      datasource:
-        hangzhoumes:
-            url: jdbc:mysql://10.153.19.150:3306/hangzhoumes?serverTimezone=GMT%2b8
-            username: root
-            password: beibo.123/
-            driver-class-name: com.mysql.cj.jdbc.Driver
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/test/java/com/mes/MesApplicationTests.java b/UnLoadGlassModule/src/test/java/com/mes/MesApplicationTests.java
deleted file mode 100644
index 59327a7..0000000
--- a/UnLoadGlassModule/src/test/java/com/mes/MesApplicationTests.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.mes;
-
-import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
-
-@SpringBootTest
-class MesApplicationTests {
-
-    @Test
-    void contextLoads() {
-    }
-
-}
diff --git a/UnLoadGlassModule/target/classes/JsonFile/PlcAlarm.json b/UnLoadGlassModule/target/classes/JsonFile/PlcAlarm.json
deleted file mode 100644
index a840092..0000000
--- a/UnLoadGlassModule/target/classes/JsonFile/PlcAlarm.json
+++ /dev/null
@@ -1,371 +0,0 @@
-{
-  "plcAddressBegin": "DB104.0.0",
-  "plcAddressLenght": "91",
-  "dataType": "bit",
-  "parameteInfor": [
-    {
-      "codeId": "D01VFDerror",
-      "addressIndex": 0
-    },
-    {
-      "codeId": "D02VFDerror",
-      "addressIndex": 1
-    },
-    {
-      "codeId": "D03VFDerror",
-      "addressIndex": 2
-    },
-    {
-      "codeId": "D04VFDerror",
-      "addressIndex": 3
-    },
-    {
-      "codeId": "D05VFDerror",
-      "addressIndex": 4
-    },
-    {
-      "codeId": "D06VFDerror",
-      "addressIndex": 5
-    },
-    {
-      "codeId": "B01VFDerror",
-      "addressIndex": 6
-    },
-    {
-      "codeId": "B02VFDerror",
-      "addressIndex": 7
-    },
-    {
-      "codeId": "A01VFDerror",
-      "addressIndex": 8
-    },
-    {
-      "codeId": "A02VFDerror",
-      "addressIndex": 9
-    },
-    {
-      "codeId": "A01servoturnerror",
-      "addressIndex": 10
-    },
-    {
-      "codeId": "A02servoturnerror",
-      "addressIndex": 11
-    },
-    {
-      "codeId": "A01servotravelerror",
-      "addressIndex": 12
-    },
-    {
-      "codeId": "A02servotravelerror",
-      "addressIndex": 13
-    },
-    {
-      "codeId": "B01servotravelerror",
-      "addressIndex": 14
-    },
-    {
-      "codeId": "B02servotravelerror",
-      "addressIndex": 15
-    },
-    {
-      "codeId": "D01DECerror",
-      "addressIndex": 16
-    },
-    {
-      "codeId": "D01poserror",
-      "addressIndex": 17
-    },
-    {
-      "codeId": "D02DECerror",
-      "addressIndex": 18
-    },
-    {
-      "codeId": "D02poserror",
-      "addressIndex": 19
-    },
-    {
-      "codeId": "D03DECerror",
-      "addressIndex": 20
-    },
-    {
-      "codeId": "D03poserror",
-      "addressIndex": 21
-    },
-    {
-      "codeId": "D04DECerror",
-      "addressIndex": 22
-    },
-    {
-      "codeId": "D04poserror",
-      "addressIndex": 23
-    },
-    {
-      "codeId": "D05DECerror",
-      "addressIndex": 24
-    },
-    {
-      "codeId": "D05poserror",
-      "addressIndex": 25
-    },
-    {
-      "codeId": "D06DECerror",
-      "addressIndex": 26
-    },
-    {
-      "codeId": "D06poserror",
-      "addressIndex": 27
-    },
-    {
-      "codeId": "A01DECerror",
-      "addressIndex": 28
-    },
-    {
-      "codeId": "A01poserror",
-      "addressIndex": 29
-    },
-    {
-      "codeId": "A02DECerror",
-      "addressIndex": 30
-    },
-    {
-      "codeId": "A02poserror",
-      "addressIndex": 31
-    },
-    {
-      "codeId": "B01INDECerror",
-      "addressIndex": 32
-    },
-    {
-      "codeId": "B01INposerror",
-      "addressIndex": 33
-    },
-    {
-      "codeId": "B01OUTDECerror",
-      "addressIndex": 34
-    },
-    {
-      "codeId": "B01OUTposerror",
-      "addressIndex": 35
-    },
-    {
-      "codeId": "B02INDECerror",
-      "addressIndex": 36
-    },
-    {
-      "codeId": "B02INposerror",
-      "addressIndex": 37
-    },
-    {
-      "codeId": "B02OUTDECerror",
-      "addressIndex": 38
-    },
-    {
-      "codeId": "B02OUTposerror",
-      "addressIndex": 39
-    },
-    {
-      "codeId": "D01Scanglassexceedinglimit",
-      "addressIndex": 40
-    },
-    {
-      "codeId": "emergencystopalarm",
-      "addressIndex": 41
-    },
-    {
-      "codeId": "Moreglassthanknown",
-      "addressIndex": 42
-    },
-    {
-      "codeId": "lessglassthanknown",
-      "addressIndex": 43
-    },
-    {
-      "codeId": "D01conveyortimeoutalarm",
-      "addressIndex": 44
-    },
-    {
-      "codeId": "D02conveyortimeoutalarm",
-      "addressIndex": 45
-    },
-    {
-      "codeId": "D03conveyortimeoutalarm",
-      "addressIndex": 46
-    },
-    {
-      "codeId": "D04conveyortimeoutalarm",
-      "addressIndex": 47
-    },
-    {
-      "codeId": "D05conveyortimeoutalarm",
-      "addressIndex": 48
-    },
-    {
-      "codeId": "D06conveyortimeoutalarm",
-      "addressIndex": 49
-    },
-    {
-      "codeId": "A01conveyortimeoutalarm",
-      "addressIndex": 50
-    },
-    {
-      "codeId": "A02conveyortimeoutalarm",
-      "addressIndex": 51
-    },
-    {
-      "codeId": "B01conveyortimeoutalarm",
-      "addressIndex": 52
-    },
-    {
-      "codeId": "B02conveyortimeoutalarm",
-      "addressIndex": 53
-    },
-    {
-      "codeId": "A01conveyorLeftsafetyalarm",
-      "addressIndex": 54
-    },
-    {
-      "codeId": "A01conveyorrightsafetyalarm",
-      "addressIndex": 55
-    },
-    {
-      "codeId": "A02conveyorLeftsafetyalarm",
-      "addressIndex": 56
-    },
-    {
-      "codeId": "A02conveyorrightsafetyalarm",
-      "addressIndex": 57
-    },
-    {
-      "codeId": "1#buffersafetyalarm",
-      "addressIndex": 58
-    },
-    {
-      "codeId": "2#buffersafetyalarm",
-      "addressIndex": 59
-    },
-    {
-      "codeId": "3#buffersafetyalarm",
-      "addressIndex": 60
-    },
-    {
-      "codeId": "4#buffersafetyalarm",
-      "addressIndex": 61
-    },
-    {
-      "codeId": "A01.SRrightinposerror",
-      "addressIndex": 62
-    },
-    {
-      "codeId": "A02.SRleftinposerror",
-      "addressIndex": 63
-    },
-    {
-      "codeId": "B01.SRleftinposerror",
-      "addressIndex": 64
-    },
-    {
-      "codeId": "B01.SRleftdecerror",
-      "addressIndex": 65
-    },
-    {
-      "codeId": "B01.SRrightdecerror",
-      "addressIndex": 66
-    },
-    {
-      "codeId": "B01.SRrightinposerror",
-      "addressIndex": 67
-    },
-    {
-      "codeId": "B02.SRleftinposerror",
-      "addressIndex": 68
-    },
-    {
-      "codeId": "B02.SRleftdecerror",
-      "addressIndex": 69
-    },
-    {
-      "codeId": "B02.SRrightdecerror",
-      "addressIndex": 70
-    },
-    {
-      "codeId": "B02.SRrightinposerror",
-      "addressIndex": 71
-    },
-    {
-      "codeId": "A01servoturnhomed",
-      "addressIndex": 72
-    },
-    {
-      "codeId": "A02servoturnhomed",
-      "addressIndex": 73
-    },
-    {
-      "codeId": "A01servotravelhomed",
-      "addressIndex": 74
-    },
-    {
-      "codeId": "A02servotravelhomed",
-      "addressIndex": 75
-    },
-    {
-      "codeId": "B01servotravelhomed",
-      "addressIndex": 76
-    },
-    {
-      "codeId": "B02servotravelhomed",
-      "addressIndex": 77
-    },
-    {
-      "codeId": "resetDelay",
-      "addressIndex": 78
-    },
-    {
-      "codeId": "A01travelNegativelimit",
-      "addressIndex": 79
-    },
-    {
-      "codeId": "A01travelPositivelimit",
-      "addressIndex": 80
-    },
-    {
-      "codeId": "A01turnuplimit",
-      "addressIndex": 81
-    },
-    {
-      "codeId": "A01turndownlimit",
-      "addressIndex": 82
-    },
-    {
-      "codeId": "A02travelNegativelimit",
-      "addressIndex": 83
-    },
-    {
-      "codeId": "A02travelPositivelimit",
-      "addressIndex": 84
-    },
-    {
-      "codeId": "A02turnuplimit",
-      "addressIndex": 85
-    },
-    {
-      "codeId": "A02turndownlimit",
-      "addressIndex": 86
-    },
-    {
-      "codeId": "B01travelNegativelimit",
-      "addressIndex": 87
-    },
-    {
-      "codeId": "B01travelPositivelimit",
-      "addressIndex": 88
-    },
-    {
-      "codeId": "B02travelNegativelimit",
-      "addressIndex": 89
-    },
-    {
-      "codeId": "B02travelPositivelimit",
-      "addressIndex": 90
-    }
-  ]
-}
\ No newline at end of file
diff --git a/UnLoadGlassModule/target/classes/JsonFile/PlcMes.json b/UnLoadGlassModule/target/classes/JsonFile/PlcMes.json
deleted file mode 100644
index ab5d4cd..0000000
--- a/UnLoadGlassModule/target/classes/JsonFile/PlcMes.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-   "plcAddressBegin":"DB105.0",
-   "plcAddressLenght":"12",
-   "dataType":"word",
-   "parameteInfor":[
-      {
-         "codeId": "OutActivate",
-         "addressIndex":"0",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-          "codeId": "Addgoal",
-          "addressIndex":"2",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"m/min"      
-       },
-       {
-          "codeId": "AddLength",
-          "addressIndex":"4",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"m/min"       
-       },
-       {
-          "codeId": "AddWidth",
-          "addressIndex":"6",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "AddCount",
-          "addressIndex":"8",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "OutStart",
-          "addressIndex":"10",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       }
-
-   ]
-}
diff --git a/UnLoadGlassModule/target/classes/JsonFile/PlcParameter.json b/UnLoadGlassModule/target/classes/JsonFile/PlcParameter.json
deleted file mode 100644
index afbe090..0000000
--- a/UnLoadGlassModule/target/classes/JsonFile/PlcParameter.json
+++ /dev/null
@@ -1,610 +0,0 @@
-{
-   "plcAddressBegin":"DB100.0",
-   "plcAddressLenght":"198",
-   "dataType":"word",
-   "parameteInfor":[
-      {
-         "codeId": "conveyorVelocity(Max)",
-         "addressIndex":"0",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-          "codeId": "conveyorVelocity(AutoFAST)",
-          "addressIndex":"2",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"m/min"      
-       },
-       {
-          "codeId": "conveyorVelocity(AutoSLOW)",
-          "addressIndex":"4",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"m/min"       
-       },
-       {
-          "codeId": "conveyorVelocity(Manual)",
-          "addressIndex":"6",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "A01A02TURNJOGVelocity",
-          "addressIndex":"8",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "A01A02TRAVELJOGVelocity",
-          "addressIndex":"10",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "B01B02TRAVELJOGVelocity",
-          "addressIndex":"12",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "A01A02TURNPOSVelocityAUTO",
-          "addressIndex":"14",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "A01TURNPOSVelocitymanual",
-          "addressIndex":"16",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-         "codeId": "A01A02TRAVELPOSVelocityAUTO",
-         "addressIndex":"18",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },
-     {
-       "codeId": "A01TRAVELPOSVelocitymanual",
-       "addressIndex":"20",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm/S"
-     },
-     {
-       "codeId": "B01B02TRAVELPOSVelocityAUTO",
-       "addressIndex":"22",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm/S"
-     },
-     {
-       "codeId": "B01TRAVELPOSVelocitymanual",
-       "addressIndex":"24",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm/S"
-     },
-     {
-       "codeId": "A01A02conveyorVelocity(Max)",
-       "addressIndex":"26",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"m/min"
-     },
-     {
-       "codeId": "A01A02conveyorVelocity(AutoFAST)",
-       "addressIndex":"28",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"m/min"
-     },
-     {
-       "codeId": "A01A02conveyorVelocity(AutoSLOW)",
-       "addressIndex":"30",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"m/min"
-     },
-     {
-       "codeId": "B01B02conveyorVelocity(Manual)",
-       "addressIndex":"32",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"m/min"
-     },
-     {
-       "codeId": "B01B02conveyorVelocity(Max)",
-       "addressIndex":"34",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"m/min"
-     },
-     {
-       "codeId": "B01B02conveyorVelocity(AutoFAST)",
-       "addressIndex":"36",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"m/min"
-     },
-     {
-       "codeId": "B01B02conveyorVelocity(AutoSLOW)",
-       "addressIndex":"38",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"m/min"
-     },
-     {
-       "codeId": "B01B02conveyorVelocity(Manual)",
-       "addressIndex":"40",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"m/min"
-     },
-     {
-       "codeId": "gridspacing",
-       "addressIndex":"42",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A01Spliceaddresssetting",
-       "addressIndex":"44",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A02Spliceaddresssetting",
-       "addressIndex":"46",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A011#gridaddress",
-       "addressIndex":"48",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A0122#gridaddress",
-       "addressIndex":"50",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A0143#gridaddress",
-       "addressIndex":"52",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A0164#gridaddress",
-       "addressIndex":"54",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A0185#gridaddress",
-       "addressIndex":"56",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A01106#gridaddress",
-       "addressIndex":"58",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A01127#gridaddress",
-       "addressIndex":"60",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A01148#gridaddress",
-       "addressIndex":"62",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A01169#gridaddress",
-       "addressIndex":"64",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A01190#gridaddress",
-       "addressIndex":"66",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A021#gridaddress",
-       "addressIndex":"68",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A0222#gridaddress",
-       "addressIndex":"70",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A0243#gridaddress",
-       "addressIndex":"72",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A0264#gridaddress",
-       "addressIndex":"74",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A0285#gridaddress",
-       "addressIndex":"76",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A02106#gridaddress",
-       "addressIndex":"78",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A02127#gridaddress",
-       "addressIndex":"80",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A02148#gridaddress",
-       "addressIndex":"82",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A02169#gridaddress",
-       "addressIndex":"84",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A02190#gridaddress",
-       "addressIndex":"86",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "B011#gridaddress",
-       "addressIndex":"88",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "B0122#gridaddress",
-       "addressIndex":"90",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "B0143#gridaddress",
-       "addressIndex":"92",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "B0164#gridaddress",
-       "addressIndex":"94",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "B0185#gridaddress",
-       "addressIndex":"96",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "B02106#gridaddress",
-       "addressIndex":"98",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "B02127#gridaddress",
-       "addressIndex":"100",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "B02148#gridaddress",
-       "addressIndex":"102",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "B02169#gridaddress",
-       "addressIndex":"104",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "B02190#gridaddress",
-       "addressIndex":"106",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"mm"
-     },
-     {
-       "codeId": "A01Targetgrid(Manual)",
-       "addressIndex":"108",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": " A02Targetgrid(Manual)",
-       "addressIndex":"110",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "B01Targetgrid(Manual)",
-       "addressIndex":"112",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "B02Targetgrid(Manual)",
-       "addressIndex":"114",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "A01turnTargetAngle(Manual)",
-       "addressIndex":"116",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"掳"
-     },
-     {
-       "codeId": "A02turnTargetAngle(Manual)",
-       "addressIndex":"118",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"掳"
-     },
-     {
-       "codeId": "A01turnAngle1",
-       "addressIndex":"120",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"掳"
-     },
-     {
-       "codeId": "A01turnAngle2",
-       "addressIndex":"122",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"掳"
-     },
-     {
-       "codeId": "A01turnAngle3",
-       "addressIndex":"124",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"掳"
-     },
-     {
-       "codeId": "A01turnAngle4",
-       "addressIndex":"126",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"掳"
-     },
-     {
-       "codeId": "A02turnAngle1",
-       "addressIndex":"128",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"掳"
-     },
-     {
-       "codeId": "A02turnAngle2",
-       "addressIndex":"130",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"掳"
-     },
-     {
-       "codeId": "A02turnAngle3",
-       "addressIndex":"132",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"掳"
-     },
-     {
-       "codeId": "A02turnAngle4",
-       "addressIndex":"134",
-       "addressLenght":"2",
-       "ratio":"1",
-       "unit":"掳"
-     },
-     {
-       "codeId": "Minimumglasslength",
-       "addressIndex":"136",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "Minimumglassheight",
-       "addressIndex":"138",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "Maximumglasslength",
-       "addressIndex":"140",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "Maximumglassheight",
-       "addressIndex":"142",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "A01cellsGlassNum",
-       "addressIndex":"144",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "A02cellsGlassNum",
-       "addressIndex":"146",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "A01ID",
-       "addressIndex":"148",
-       "addressLenght":"14",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "A02ID",
-       "addressIndex":"162",
-       "addressLenght":"14",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "A02TRAVELPOSVelocitymanual",
-       "addressIndex":"176",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "B02TRAVELPOSVelocitymanual",
-       "addressIndex":"178",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "Startingpositionofthefeedca",
-       "addressIndex":"180",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "Targetpositionofthefeedcar",
-       "addressIndex":"182",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "Lengthofincomingglass",
-       "addressIndex":"184",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "Widthofincomingglass",
-       "addressIndex":"186",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     },
-     {
-       "codeId": "Startingpositionoftheexitcar",
-       "addressIndex":"188",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     }, {
-       "codeId": "Exitcartargetposition",
-       "addressIndex":"190",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     }
-     , {
-       "codeId": "A02TURNPOSVelocitymanual",
-       "addressIndex":"192",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     }
-     , {
-       "codeId": "A01delayTime",
-       "addressIndex":"194",
-       "addressLenght":"2",
-       "ratio":"1"
-
-     }
-
-
-   ]
-}
diff --git a/UnLoadGlassModule/target/classes/JsonFile/PlcRead.json b/UnLoadGlassModule/target/classes/JsonFile/PlcRead.json
deleted file mode 100644
index f3ebb33..0000000
--- a/UnLoadGlassModule/target/classes/JsonFile/PlcRead.json
+++ /dev/null
@@ -1,195 +0,0 @@
-{
-   "plcAddressBegin": "DB106.0",
-   "plcAddressLenght": "66",
-   "dataType": "word",
-   "parameteInfor": [{
-         "codeId": "A01Position",
-         "addressIndex": "0",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "A01FlipPosition",
-         "addressIndex": "2",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "A01QuestStartPosition",
-         "addressIndex": "4",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "A01EndPosition",
-         "addressIndex": "6",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "FeedCarStatus",
-         "addressIndex": "8",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "A02QuestOver",
-         "addressIndex": "10",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "A02Position",
-         "addressIndex": "12",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "A02FlipPosition",
-         "addressIndex": "14",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "A02QuestStartPosition",
-         "addressIndex": "16",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "A02EndPosition",
-         "addressIndex": "18",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "ExitCarStatus",
-         "addressIndex": "20",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "A02QuestOver",
-         "addressIndex": "22",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "FeedRequest",
-         "addressIndex": "24",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "FeedID",
-         "addressIndex": "26",
-         "addressLenght":"14", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "B01Position",
-         "addressIndex": "40",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "B01QuestPosition",
-         "addressIndex": "42",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "B01CurrentTaskMode",
-         "addressIndex": "44",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "B01CarStatus",
-         "addressIndex": "46",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "B01CarTaskStatus",
-         "addressIndex": "48",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "B02Position",
-         "addressIndex": "50",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "B02CarCurrentTask",
-         "addressIndex": "52",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "B02CurrentTaskMode",
-         "addressIndex": "54",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "B02CarStatus",
-         "addressIndex": "56",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "B02CarSaskStatus",
-         "addressIndex": "58",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "B01CompleteTheReport",
-         "addressIndex": "60",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "B02CompleteTheReport",
-         "addressIndex": "62",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-         "codeId": "OutRequest",
-         "addressIndex": "64",
-         "addressLenght":"2", 
-         "ratio":"1",
-         "unit":"m/min"    
-      }
-   ]
-}
\ No newline at end of file
diff --git a/UnLoadGlassModule/target/classes/JsonFile/PlcSign.json b/UnLoadGlassModule/target/classes/JsonFile/PlcSign.json
deleted file mode 100644
index 8f9295a..0000000
--- a/UnLoadGlassModule/target/classes/JsonFile/PlcSign.json
+++ /dev/null
@@ -1,460 +0,0 @@
-{
-  "plcAddressBegin": "DB102.0.0",
-  "plcAddressLenght": "112",
-  "dataType": "bit",
-  "parameteInfor": [
-    {
-      "codeId": "D01.SRdec",
-      "addressIndex": 0
-    },
-    {
-      "codeId": "D01.SRinpos",
-      "addressIndex": 1
-    },
-    {
-      "codeId": "D02.SRdec",
-      "addressIndex": 2
-    },
-    {
-      "codeId": "D02.SRinpos",
-      "addressIndex": 3
-    },
-    {
-      "codeId": "D03.SRinto",
-      "addressIndex": 4
-    },
-    {
-      "codeId": "D03.SRdec",
-      "addressIndex": 5
-    },
-    {
-      "codeId": "D03.SRinpos",
-      "addressIndex": 6
-    },
-    {
-      "codeId": "D04.SRdec",
-      "addressIndex": 7
-    },
-    {
-      "codeId": "D04.SRinpos",
-      "addressIndex": 8
-    },
-    {
-      "codeId": "D05.SRdec",
-      "addressIndex": 9
-    },
-    {
-      "codeId": "D05.SRinpos",
-      "addressIndex": 10
-    },
-    {
-      "codeId": "D06.SRdec",
-      "addressIndex": 11
-    },
-    {
-      "codeId": "D06.SRinpos",
-      "addressIndex": 12
-    },
-    {
-      "codeId": "B01.SRindec",
-      "addressIndex": 13
-    },
-    {
-      "codeId": "B01.SRininpos",
-      "addressIndex": 14
-    },
-    {
-      "codeId": "B01.SRoutdec",
-      "addressIndex": 15
-    },
-    {
-      "codeId": "B01.SRoutinpos",
-      "addressIndex": 16
-    },
-    {
-      "codeId": "B01.SRturnon",
-      "addressIndex": 17
-    },
-    {
-      "codeId": "B01.SRturnoff",
-      "addressIndex": 18
-    },
-    {
-      "codeId": "B01.SRup",
-      "addressIndex": 19
-    },
-    {
-      "codeId": "B01.SRdown",
-      "addressIndex": 20
-    },
-    {
-      "codeId": "B02.SRoutdec",
-      "addressIndex": 21
-    },
-    {
-      "codeId": "B02.SRoutinpos",
-      "addressIndex": 22
-    },
-    {
-      "codeId": "B02.SRindec",
-      "addressIndex": 23
-    },
-    {
-      "codeId": "B02.SRininpos",
-      "addressIndex": 24
-    },
-    {
-      "codeId": "B02.SRturnon",
-      "addressIndex": 25
-    },
-    {
-      "codeId": "B02.SRturnoff",
-      "addressIndex": 26
-    },
-    {
-      "codeId": "B02.SRup",
-      "addressIndex": 27
-    },
-    {
-      "codeId": "B02.SRdown",
-      "addressIndex": 28
-    },
-    {
-      "codeId": "B01.SRinsafety",
-      "addressIndex": 29
-    },
-    {
-      "codeId": "B01.SRoutsafety",
-      "addressIndex": 30
-    },
-    {
-      "codeId": "B02.SRinsafety",
-      "addressIndex": 31
-    },
-    {
-      "codeId": "SB.start(+)",
-      "addressIndex": 32
-    },
-    {
-      "codeId": "SB.stop(-)",
-      "addressIndex": 33
-    },
-    {
-      "codeId": "SB.reset",
-      "addressIndex": 34
-    },
-    {
-      "codeId": "SB.auto/manul",
-      "addressIndex": 35
-    },
-    {
-      "codeId": "D01.SB.confirm",
-      "addressIndex": 36
-    },
-    {
-      "codeId": "SB.emg",
-      "addressIndex": 37
-    },
-    {
-      "codeId": "D01.SB.start",
-      "addressIndex": 38
-    },
-    {
-      "codeId": "D06.SB.start",
-      "addressIndex": 39
-    },
-    {
-      "codeId": "B02.SRoutsafety",
-      "addressIndex": 40
-    },
-    {
-      "codeId": "SafetyDoor.requset",
-      "addressIndex": 41
-    },
-    {
-      "codeId": "SafetyDoor.confirm",
-      "addressIndex": 42
-    },
-    {
-      "codeId": "SafetyDoor.reset",
-      "addressIndex": 43
-    },
-    {
-      "codeId": "Sspce",
-      "addressIndex": 44
-    },
-    {
-      "codeId": "Sspce",
-      "addressIndex": 45
-    },
-    {
-      "codeId": "Sspce",
-      "addressIndex": 46
-    },
-    {
-      "codeId": "Sspce",
-      "addressIndex": 47
-    },
-    {
-      "codeId": "A01.SRleftdec",
-      "addressIndex": 48
-    },
-    {
-      "codeId": "A01.SRleftinpos",
-      "addressIndex": 49
-    },
-    {
-      "codeId": "A01.SRleftsafety",
-      "addressIndex": 50
-    },
-    {
-      "codeId": "A01.SRrightdec",
-      "addressIndex": 51
-    },
-    {
-      "codeId": "A01.SRrightinpos",
-      "addressIndex": 52
-    },
-    {
-      "codeId": "A01.SRrightsafety",
-      "addressIndex": 53
-    },
-    {
-      "codeId": "A01.SRturnhome",
-      "addressIndex": 54
-    },
-    {
-      "codeId": "A01.SRturnup",
-      "addressIndex": 55
-    },
-    {
-      "codeId": "A01.SRturndown",
-      "addressIndex": 56
-    },
-    {
-      "codeId": "A01.SRtravelhome",
-      "addressIndex": 57
-    },
-    {
-      "codeId": "A01.SRtravelleftdec",
-      "addressIndex": 58
-    },
-    {
-      "codeId": "A01.SRtravelleftlimit",
-      "addressIndex": 59
-    },
-    {
-      "codeId": "A01.SRtravelrightdec",
-      "addressIndex": 60
-    },
-    {
-      "codeId": "A01.SRtravelrightlimit",
-      "addressIndex": 61
-    },
-    {
-      "codeId": "space",
-      "addressIndex": 62
-    },
-    {
-      "codeId": "space",
-      "addressIndex": 63
-    },
-    {
-      "codeId": "A02.SRleftdec",
-      "addressIndex": 64
-    },
-    {
-      "codeId": "A02.SRleftinpos",
-      "addressIndex": 65
-    },
-    {
-      "codeId": "A02.SRleftsafety",
-      "addressIndex": 66
-    },
-    {
-      "codeId": "A02.SRrightdec",
-      "addressIndex": 67
-    },
-    {
-      "codeId": "A02.SRrightinpos",
-      "addressIndex": 68
-    },
-    {
-      "codeId": "A02.SRrightsafety",
-      "addressIndex": 69
-    },
-    {
-      "codeId": "A02.SRturnhome",
-      "addressIndex": 70
-    },
-    {
-      "codeId": "A02.SRturnup",
-      "addressIndex": 71
-    },
-    {
-      "codeId": "A02.SRturndown",
-      "addressIndex": 72
-    },
-    {
-      "codeId": "A02.SRtravelhome",
-      "addressIndex": 73
-    },
-    {
-      "codeId": "A02.SRtravelleftdec",
-      "addressIndex": 74
-    },
-    {
-      "codeId": "A02.SRtravelleftlimit",
-      "addressIndex": 75
-    },
-    {
-      "codeId": "A02.SRtravelrightdec",
-      "addressIndex": 76
-    },
-    {
-      "codeId": "A02.SRtravelrightlimit",
-      "addressIndex": 77
-    },
-    {
-      "codeId": "space",
-      "addressIndex": 78
-    },
-    {
-      "codeId": "space",
-      "addressIndex": 79
-    },
-    {
-      "codeId": "B01.SRorigin",
-      "addressIndex": 80
-    },
-    {
-      "codeId": "B01.SRleftlimit",
-      "addressIndex": 81
-    },
-    {
-      "codeId": "B01.SRrightlimit",
-      "addressIndex": 82
-    },
-    {
-      "codeId": "B02.SRorigin",
-      "addressIndex": 83
-    },
-    {
-      "codeId": "B02.SRleftlimit",
-      "addressIndex": 84
-    },
-    {
-      "codeId": "B02.SRrightlimit",
-      "addressIndex": 85
-    },
-    {
-      "codeId": "space",
-      "addressIndex": 86
-    },
-    {
-      "codeId": "space",
-      "addressIndex": 87
-    },
-    {
-      "codeId": "LED.red",
-      "addressIndex": 88
-    },
-    {
-      "codeId": "LED.green",
-      "addressIndex": 89
-    },
-    {
-      "codeId": "LED.yellow",
-      "addressIndex": 90
-    },
-    {
-      "codeId": "D01.LED.green",
-      "addressIndex": 91
-    },
-    {
-      "codeId": "D06.LED.green",
-      "addressIndex": 92
-    },
-    {
-      "codeId": "B01.YV.turn",
-      "addressIndex": 93
-    },
-    {
-      "codeId": "B01.YV.updown",
-      "addressIndex": 94
-    },
-    {
-      "codeId": "B01.YV.gassing",
-      "addressIndex": 95
-    },
-    {
-      "codeId": "B02.YV.turn",
-      "addressIndex": 96
-    },
-    {
-      "codeId": "B02.YV.updown",
-      "addressIndex": 97
-    },
-    {
-      "codeId": "B02.YV.gassing",
-      "addressIndex": 98
-    },
-    {
-      "codeId": "SafetyDoor.Led",
-      "addressIndex": 99
-    },
-    {
-      "codeId": "SafetyDoor.open",
-      "addressIndex": 100
-    },
-    {
-      "codeId": "D01SB.confirm",
-      "addressIndex": 101
-    },
-    {
-      "codeId": "space",
-      "addressIndex": 102
-    },
-    {
-      "codeId": "space",
-      "addressIndex": 103
-    },
-    {
-      "codeId": "A01oilPump",
-      "addressIndex": 104
-    },
-    {
-      "codeId": "A01motorCtr",
-      "addressIndex": 105
-    },
-    {
-      "codeId": "space",
-      "addressIndex": 106
-    },
-    {
-      "codeId": "space",
-      "addressIndex": 107
-    },
-    {
-      "codeId": "A02oilPump",
-      "addressIndex": 108
-    },
-    {
-      "codeId": "A02motorCtr",
-      "addressIndex": 109
-    },
-    {
-      "codeId": "space",
-      "addressIndex": 110
-    },
-    {
-      "codeId": "space",
-      "addressIndex": 111
-    }
-    ,
-    {
-      "codeId": "space",
-      "addressIndex": 111
-    }
-  ]
-}
\ No newline at end of file
diff --git a/UnLoadGlassModule/target/classes/JsonFile/PlcState.json b/UnLoadGlassModule/target/classes/JsonFile/PlcState.json
deleted file mode 100644
index dfdbaec..0000000
--- a/UnLoadGlassModule/target/classes/JsonFile/PlcState.json
+++ /dev/null
@@ -1,285 +0,0 @@
-{
-  "plcAddressBegin": "DB103.0",
-  "plcAddressLenght": "258",
-  "dataType": "word",
-  "parameteInfor": [
-    {
-      "codeId": "D01.State",
-      "addressIndex": "0",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "D02.State",
-      "addressIndex": "2",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "B01.State",
-      "addressIndex": "4",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "B02.State",
-      "addressIndex": "6",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "A01.State",
-      "addressIndex": "8",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "A02.State",
-      "addressIndex": "10",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "D03.State",
-      "addressIndex": "12",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "D04.State",
-      "addressIndex": "14",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "D05.State",
-      "addressIndex": "16",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "D06.State",
-      "addressIndex": "18",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "A01tavelActualPosition",
-      "addressIndex": "20",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "A01turnActualangle",
-      "addressIndex": "22",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "A02tavelActualPosition",
-      "addressIndex": "24",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "A02turnActualangle",
-      "addressIndex": "26",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "B01tavelActualPosition",
-      "addressIndex": "28",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "B02tavelActualPosition",
-      "addressIndex": "30",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "A01CurrentGrid",
-      "addressIndex": "32",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "A02CurrentGrid",
-      "addressIndex": "34",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "B01CurrentGrid",
-      "addressIndex": "36",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "B01TargetGrid",
-      "addressIndex": "38",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "B02CurrentGrid",
-      "addressIndex": "40",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "B02TargetGrid",
-      "addressIndex": "42",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "D01ID",
-      "addressIndex": "44",
-      "addressLenght": "14",
-      "unit": ""
-    },
-    {
-      "codeId": "D02ID",
-      "addressIndex": "58",
-      "addressLenght": "14",
-      "unit": ""
-    },
-    {
-      "codeId": "D03ID",
-      "addressIndex": "72",
-      "addressLenght": "14",
-      "unit": ""
-    },
-    {
-      "codeId": "D04ID",
-      "addressIndex": "86",
-      "addressLenght": "14",
-      "unit": ""
-    },
-    {
-      "codeId": "D05ID",
-      "addressIndex": "100",
-      "addressLenght": "14",
-      "unit": ""
-    },
-    {
-      "codeId": "D06ID",
-      "addressIndex": "114",
-      "addressLenght": "14",
-      "unit": ""
-    },
-    {
-      "codeId": "A01ID1",
-      "addressIndex": "128",
-      "addressLenght": "14",
-      "unit": ""
-    },
-    {
-      "codeId": "A01ID2",
-      "addressIndex": "142",
-      "addressLenght": "14",
-      "unit": ""
-    },
-    {
-      "codeId": "A02ID1",
-      "addressIndex": "156",
-      "addressLenght": "14",
-      "unit": ""
-    },
-    {
-      "codeId": "A02ID2",
-      "addressIndex": "170",
-      "addressLenght": "14",
-      "unit": ""
-    },
-    {
-      "codeId": "B01ID1",
-      "addressIndex": "184",
-      "addressLenght": "14",
-      "unit": ""
-    },
-    {
-      "codeId": "B01ID2",
-      "addressIndex": "198",
-      "addressLenght": "14",
-      "unit": ""
-    },
-    {
-      "codeId": "B02ID1",
-      "addressIndex": "212",
-      "addressLenght": "14",
-      "unit": ""
-    },
-    {
-      "codeId": "B02ID2",
-      "addressIndex": "226",
-      "addressLenght": "14",
-      "unit": ""
-    },
-    {
-      "codeId": "A01conveyorFaultcodes",
-      "addressIndex": "240",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "A01turnservoFaultcodes",
-      "addressIndex": "242",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "A01travelservoFaultcodes",
-      "addressIndex": "244",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "A02conveyorFaultcodes",
-      "addressIndex": "246",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "A02turnservoFaultcodes",
-      "addressIndex": "248",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "A02travelservoFaultcodes",
-      "addressIndex": "250",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "B01travelservoFaultcodes",
-      "addressIndex": "252",
-      "addressLenght": "2",
-      "unit": ""
-    },
-    {
-      "codeId": "B02travelservoFaultcodes",
-      "addressIndex": "254",
-      "addressLenght": "2",
-      "unit": ""
-    }
-    ,
-    {
-      "codeId": "Scanningguns",
-      "addressIndex": "256",
-      "addressLenght": "2",
-      "unit": ""
-    }
-    ,
-    {
-      "codeId": "Frameid",
-      "addressIndex": "270",
-      "addressLenght": "2",
-      "unit": ""
-    }
-  ]
-}
\ No newline at end of file
diff --git a/UnLoadGlassModule/target/classes/JsonFile/PlcTest.json b/UnLoadGlassModule/target/classes/JsonFile/PlcTest.json
deleted file mode 100644
index 263c782..0000000
--- a/UnLoadGlassModule/target/classes/JsonFile/PlcTest.json
+++ /dev/null
@@ -1,378 +0,0 @@
-{
-  "plcAddressBegin": "DB101.0.0",
-  "plcAddressLenght": "93",
-  "dataType": "bit",
-  "parameteInfor": [
-    {
-      "codeId": "D01VFDconveyor",
-      "addressIndex": 0
-    },
-    {
-      "codeId": "D02VFDconveyor",
-      "addressIndex": 1
-    },
-    {
-      "codeId": "D03VFDconveyor",
-      "addressIndex": 2
-    },
-    {
-      "codeId": "D04VFDconveyor",
-      "addressIndex": 3
-    },
-    {
-      "codeId": "D05VFDconveyor",
-      "addressIndex": 4
-    },
-    {
-      "codeId": "D06VFDconveyor",
-      "addressIndex": 5
-    },
-    {
-      "codeId": "A01VFDconveyor",
-      "addressIndex": 6
-    },
-    {
-      "codeId": "A02VFDconveyor",
-      "addressIndex": 7
-    },
-    {
-      "codeId": "B01VFDconveyor",
-      "addressIndex": 8
-    },
-    {
-      "codeId": "B02VFDconveyor",
-      "addressIndex": 9
-    },
-    {
-      "codeId": "A01SERVETURN",
-      "addressIndex": 10
-    },
-    {
-      "codeId": "A02SERVETURN",
-      "addressIndex": 11
-    },
-    {
-      "codeId": "A01SERVETRAVEL",
-      "addressIndex": 12
-    },
-    {
-      "codeId": "A02SERVETRAVEL",
-      "addressIndex": 13
-    },
-    {
-      "codeId": "B01SERVETRAVEL",
-      "addressIndex": 14
-    },
-    {
-      "codeId": "B02SERVETRAVEL",
-      "addressIndex": 15
-    },
-    {
-      "codeId": "A01SERVETURNPOS",
-      "addressIndex": 16
-    },
-    {
-      "codeId": "A02SERVETURNPOS",
-      "addressIndex": 17
-    },
-    {
-      "codeId": "A01SERVETRAVELPOS",
-      "addressIndex": 18
-    },
-    {
-      "codeId": "A02SERVETRAVELPOS",
-      "addressIndex": 19
-    },
-    {
-      "codeId": "B01SERVETRAVELPOS",
-      "addressIndex": 20
-    },
-    {
-      "codeId": "B02SERVETRAVELPOS",
-      "addressIndex": 21
-    },
-    {
-      "codeId": "B01YVTURN",
-      "addressIndex": 22
-    },
-    {
-      "codeId": "B01YVUPDOWN",
-      "addressIndex": 23
-    },
-    {
-      "codeId": "B02YVTURN",
-      "addressIndex": 24
-    },
-    {
-      "codeId": "B02YVUPDOWN",
-      "addressIndex": 25
-    },
-    {
-      "codeId": "B01YVGassing",
-      "addressIndex": 26
-    },
-    {
-      "codeId": "B02YVGassing",
-      "addressIndex": 27
-    },
-    {
-      "codeId": "A01VFDconveyorreverse",
-      "addressIndex": 28
-    },
-    {
-      "codeId": "A02VFDconveyorreverse",
-      "addressIndex": 29
-    },
-    {
-      "codeId": "A01SERVETURNreset",
-      "addressIndex": 30
-    },
-    {
-      "codeId": "A01SERVETURNhome",
-      "addressIndex": 31
-    },
-    {
-      "codeId": "A01SERVETRAVELreset",
-      "addressIndex": 32
-    },
-    {
-      "codeId": "A02SERVETURNreset",
-      "addressIndex": 33
-    },
-    {
-      "codeId": "A02SERVETURNhome",
-      "addressIndex": 34
-    },
-    {
-      "codeId": "A02SERVETRAVELreset",
-      "addressIndex": 35
-    },
-    {
-      "codeId": "B01SERVETRAVELreset",
-      "addressIndex": 36
-    },
-    {
-      "codeId": "B01SERVETRAVELhome",
-      "addressIndex": 37
-    },
-    {
-      "codeId": "B02SERVETRAVELreset",
-      "addressIndex": 38
-    },
-    {
-      "codeId": "B02SERVETRAVELhome",
-      "addressIndex": 39
-    },
-    {
-      "codeId": "Manualstoragestartup",
-      "addressIndex": 40
-    },
-    {
-      "codeId": "Manualoutputstartup",
-      "addressIndex": 41
-    },
-    {
-      "codeId": "A01oilpump",
-      "addressIndex": 42
-    },
-    {
-      "codeId": "A02oilpump",
-      "addressIndex": 43
-    },
-    {
-      "codeId": "A01get1#gridaddress",
-      "addressIndex": 44
-    },
-    {
-      "codeId": "A01get22#gridaddress",
-      "addressIndex": 45
-    },
-    {
-      "codeId": "A01get43#gridaddress",
-      "addressIndex": 46
-    },
-    {
-      "codeId": "A01get64#gridaddress",
-      "addressIndex": 47
-    },
-    {
-      "codeId": "A01get85#gridaddress",
-      "addressIndex": 48
-    },
-    {
-      "codeId": "A01get106#gridaddress",
-      "addressIndex": 49
-    },
-    {
-      "codeId": "A01get127#gridaddress",
-      "addressIndex": 50
-    },
-    {
-      "codeId": "A01get148#gridaddress",
-      "addressIndex": 51
-    },
-    {
-      "codeId": "A01get169#gridaddress",
-      "addressIndex": 52
-    },
-    {
-      "codeId": "A02get190#gridaddress",
-      "addressIndex": 53
-    },
-    {
-      "codeId": "A02get1#gridaddress",
-      "addressIndex": 54
-    },
-    {
-      "codeId": "A02get22#gridaddress",
-      "addressIndex": 55
-    },
-    {
-      "codeId": "A02get43#gridaddress",
-      "addressIndex": 56
-    },
-    {
-      "codeId": "A02get64#gridaddress",
-      "addressIndex": 57
-    },
-    {
-      "codeId": "A02get85#gridaddress",
-      "addressIndex": 58
-    },
-    {
-      "codeId": "A02get106#gridaddress",
-      "addressIndex": 59
-    },
-    {
-      "codeId": "A02get127#gridaddress",
-      "addressIndex": 60
-    },
-    {
-      "codeId": "A02get148#gridaddress",
-      "addressIndex": 61
-    },
-    {
-      "codeId": "A02get169#gridaddress",
-      "addressIndex": 62
-    },
-    {
-      "codeId": "A02get190#gridaddress",
-      "addressIndex": 63
-    },
-    {
-      "codeId": "B01get1#gridaddress",
-      "addressIndex": 64
-    },
-    {
-      "codeId": "B01get22#gridaddress",
-      "addressIndex": 65
-    },
-    {
-      "codeId": "B01get43#gridaddress",
-      "addressIndex": 66
-    },
-    {
-      "codeId": "B01get64#gridaddress",
-      "addressIndex": 67
-    },
-    {
-      "codeId": "B01get85#gridaddress",
-      "addressIndex": 68
-    },
-    {
-      "codeId": "B02get106#gridaddress",
-      "addressIndex": 69
-    },
-    {
-      "codeId": "B02get127#gridaddress",
-      "addressIndex": 70
-    },
-    {
-      "codeId": "B02get148#gridaddress",
-      "addressIndex": 71
-    },
-    {
-      "codeId": "B02get169#gridaddress",
-      "addressIndex": 72
-    },
-    {
-      "codeId": "B02get190#gridaddress",
-      "addressIndex": 73
-    },
-    {
-      "codeId": "D01IDClean",
-      "addressIndex": 74
-    },
-    {
-      "codeId": "D02IDClean",
-      "addressIndex": 75
-    },
-    {
-      "codeId": "D03IDClean",
-      "addressIndex": 76
-    },
-    {
-      "codeId": "D04IDClean",
-      "addressIndex": 77
-    },
-    {
-      "codeId": "D05IDClean",
-      "addressIndex": 78
-    },
-    {
-      "codeId": "D06IDClean",
-      "addressIndex": 79
-    },
-    {
-      "codeId": "A01IDClean",
-      "addressIndex": 80
-    },
-    {
-      "codeId": "A02IDClean",
-      "addressIndex": 81
-    },
-    {
-      "codeId": "B01IDClean",
-      "addressIndex": 82
-    },
-    {
-      "codeId": "B02IDClean",
-      "addressIndex": 83
-    },
-    {
-      "codeId": "abort/resumeTasks",
-      "addressIndex": 84
-    },
-    {
-      "codeId": "A01SERVETRAVELhome",
-      "addressIndex": 85
-    },
-    {
-      "codeId": "A02SERVETRAVELhome",
-      "addressIndex": 86
-    },
-    {
-      "codeId": "A01A02travelHoming",
-      "addressIndex": 87
-    },
-    {
-      "codeId": "A01halfAutoSelect",
-      "addressIndex": 88
-    },
-    {
-      "codeId": "A02halfAutoSelect",
-      "addressIndex": 89
-    },
-    {
-      "codeId": "A02abortTasks",
-      "addressIndex": 90
-    },
-    {
-      "codeId": "emgHMI",
-      "addressIndex": 91
-    },
-    {
-      "codeId": "Scanningmethod",
-      "addressIndex": 92
-  ]
-}
\ No newline at end of file
diff --git a/UnLoadGlassModule/target/classes/JsonFile/Plcframe.json b/UnLoadGlassModule/target/classes/JsonFile/Plcframe.json
deleted file mode 100644
index c270227..0000000
--- a/UnLoadGlassModule/target/classes/JsonFile/Plcframe.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
-   "plcAddressBegin":"DB17.0",
-   "plcAddressLenght":"40",
-   "dataType":"word",
-   "parameteInfor":[
-      {
-         "codeId": "E01id",  
-         "addressIndex":"0",
-         "addressLenght":"14", 
-         "ratio":"1",
-         "unit":"m/min"    
-      },
-      {
-          "codeId": "E01Quest",
-          "addressIndex":"16",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"m/min"      
-       },
-       {
-          "codeId": "E01Reply",
-          "addressIndex":"18",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"m/min"       
-       },
-       {
-          "codeId": "J01Quest",
-          "addressIndex":"20",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "J01id",
-          "addressIndex":"22",
-          "addressLenght":"14",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "J01TurnGo",
-          "addressIndex":"38",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       }
-
-
-   ]
-}
diff --git a/UnLoadGlassModule/target/classes/JsonFile/alarm.xlsx b/UnLoadGlassModule/target/classes/JsonFile/alarm.xlsx
deleted file mode 100644
index 50b26dc..0000000
--- a/UnLoadGlassModule/target/classes/JsonFile/alarm.xlsx
+++ /dev/null
Binary files differ
diff --git a/UnLoadGlassModule/target/classes/JsonFile/sign.xlsx b/UnLoadGlassModule/target/classes/JsonFile/sign.xlsx
deleted file mode 100644
index 3922301..0000000
--- a/UnLoadGlassModule/target/classes/JsonFile/sign.xlsx
+++ /dev/null
Binary files differ
diff --git a/UnLoadGlassModule/target/classes/JsonFile/test.xlsx b/UnLoadGlassModule/target/classes/JsonFile/test.xlsx
deleted file mode 100644
index 9862cf5..0000000
--- a/UnLoadGlassModule/target/classes/JsonFile/test.xlsx
+++ /dev/null
Binary files differ
diff --git a/UnLoadGlassModule/target/classes/application.yml b/UnLoadGlassModule/target/classes/application.yml
deleted file mode 100644
index 328e464..0000000
--- a/UnLoadGlassModule/target/classes/application.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-server:
-  port: 8081
-  servlet:
-   context-path: /mesModuleTools
-
-spring:
-  datasource:
-    dynamic:
-      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
-      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
-      datasource:
-        hangzhoumes:
-            url: jdbc:mysql://10.153.19.150:3306/hangzhoumes?serverTimezone=GMT%2b8
-            username: root
-            password: beibo.123/
-            driver-class-name: com.mysql.cj.jdbc.Driver
\ No newline at end of file
diff --git a/apache-maven-3.6.3/LICENSE b/apache-maven-3.6.3/LICENSE
deleted file mode 100644
index a6bd090..0000000
--- a/apache-maven-3.6.3/LICENSE
+++ /dev/null
@@ -1,327 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-Apache Maven includes a number of components and libraries with separate 
-copyright notices and license terms. Your use of those components are 
-subject to the terms and conditions of the following licenses: 
-
-- lib/guava-25.1-android.jar: com.google.guava:guava:bundle:25.1-android
-    Guava: Google Core Libraries for Java
-    Project URL: https://github.com/google/guava/
-    License: The Apache Software License, Version 2.0 (ASL-2.0)  http://www.apache.org/licenses/LICENSE-2.0.txt (lib/guava.license)
-
-
-- lib/guice-4.2.1.jar: com.google.inject:guice:jar:4.2.1
-    Google Guice - Core Library
-    Project URL: https://github.com/google/guice/
-    License: The Apache Software License, Version 2.0 (ASL-2.0)  http://www.apache.org/licenses/LICENSE-2.0.txt (lib/guice.license)
-
-
-- lib/commons-cli-1.4.jar: commons-cli:commons-cli:jar:1.4
-    Apache Commons CLI
-    Project URL: http://commons.apache.org/proper/commons-cli/
-    License: Apache License, Version 2.0 (ASL-2.0)  https://www.apache.org/licenses/LICENSE-2.0.txt (lib/commons-cli.license)
-
-
-- lib/commons-io-2.5.jar: commons-io:commons-io:jar:2.5
-    Apache Commons IO
-    Project URL: http://commons.apache.org/proper/commons-io/
-    License: Apache License, Version 2.0 (ASL-2.0)  http://www.apache.org/licenses/LICENSE-2.0.txt (lib/commons-io.license)
-
-
-- lib/jsr250-api-1.0.jar: javax.annotation:jsr250-api:jar:1.0
-    JSR-250 Common Annotations for the JavaTM Platform
-    Project URL: http://jcp.org/aboutJava/communityprocess/final/jsr250/index.html
-    License: COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 (CDDL-1.0)  https://glassfish.dev.java.net/public/CDDLv1.0.html (lib/jsr250-api.license)
-
-
-- lib/cdi-api-1.0.jar: javax.enterprise:cdi-api:jar:1.0
-    CDI APIs
-    Project URL: http://www.seamframework.org/Weld/cdi-api
-    License: Apache License, Version 2.0 (ASL-2.0)  http://www.apache.org/licenses/LICENSE-2.0 (lib/cdi-api.license)
-
-
-- lib/javax.inject-1.jar: javax.inject:javax.inject:jar:1
-    javax.inject
-    Project URL: http://code.google.com/p/atinject/
-    License: The Apache Software License, Version 2.0 (ASL-2.0)  http://www.apache.org/licenses/LICENSE-2.0.txt (lib/javax.inject.license)
-
-
-- lib/commons-lang3-3.8.1.jar: org.apache.commons:commons-lang3:jar:3.8.1
-    Apache Commons Lang
-    Project URL: http://commons.apache.org/proper/commons-lang/
-    License: Apache License, Version 2.0 (ASL-2.0)  https://www.apache.org/licenses/LICENSE-2.0.txt (lib/commons-lang3.license)
-
-
-- boot/plexus-classworlds-2.6.0.jar: org.codehaus.plexus:plexus-classworlds:bundle:2.6.0
-    Plexus Classworlds
-    Project URL: http://codehaus-plexus.github.io/plexus-classworlds/
-    License: Apache License, Version 2.0 (ASL-2.0)  http://www.apache.org/licenses/LICENSE-2.0.txt (boot/plexus-classworlds.license)
-
-
-- lib/plexus-component-annotations-2.1.0.jar: org.codehaus.plexus:plexus-component-annotations:jar:2.1.0
-    Plexus :: Component Annotations
-    Project URL: http://codehaus-plexus.github.io/plexus-containers/plexus-component-annotations/
-    License: Apache License, Version 2.0 (ASL-2.0)  http://www.apache.org/licenses/LICENSE-2.0.txt (lib/plexus-component-annotations.license)
-
-
-- lib/plexus-interpolation-1.25.jar: org.codehaus.plexus:plexus-interpolation:bundle:1.25
-    Plexus Interpolation API
-    Project URL: http://codehaus-plexus.github.io/plexus-interpolation/
-    License: Apache License, Version 2.0 (ASL-2.0)  http://www.apache.org/licenses/LICENSE-2.0.txt (lib/plexus-interpolation.license)
-
-
-- lib/plexus-utils-3.2.1.jar: org.codehaus.plexus:plexus-utils:jar:3.2.1
-    Plexus Common Utilities
-    Project URL: http://codehaus-plexus.github.io/plexus-utils/
-    License: Apache License, Version 2.0 (ASL-2.0)  http://www.apache.org/licenses/LICENSE-2.0.txt (lib/plexus-utils.license)
-
-
-- lib/org.eclipse.sisu.inject-0.3.4.jar: org.eclipse.sisu:org.eclipse.sisu.inject:jar:0.3.4
-    org.eclipse.sisu.inject
-    Project URL: https://www.eclipse.org/sisu/
-    License: Eclipse Public License, Version 1.0 (EPL-1.0)  http://www.eclipse.org/legal/epl-v10.html (lib/org.eclipse.sisu.inject.license)
-
-
-- lib/org.eclipse.sisu.plexus-0.3.4.jar: org.eclipse.sisu:org.eclipse.sisu.plexus:jar:0.3.4
-    org.eclipse.sisu.plexus
-    Project URL: https://www.eclipse.org/sisu/
-    License: Eclipse Public License, Version 1.0 (EPL-1.0)  http://www.eclipse.org/legal/epl-v10.html (lib/org.eclipse.sisu.plexus.license)
-
-
-- lib/jansi-1.17.1.jar: org.fusesource.jansi:jansi:jar:1.17.1
-    jansi
-    Project URL: http://fusesource.github.io/jansi/jansi
-    License: The Apache Software License, Version 2.0 (ASL-2.0)  http://www.apache.org/licenses/LICENSE-2.0.txt (lib/jansi.license)
-
-
-- lib/jsoup-1.12.1.jar: org.jsoup:jsoup:jar:1.12.1
-    jsoup Java HTML Parser
-    Project URL: https://jsoup.org/
-    License: The MIT License (MIT)  https://jsoup.org/license (lib/jsoup.license)
-
-
-- lib/jcl-over-slf4j-1.7.29.jar: org.slf4j:jcl-over-slf4j:jar:1.7.29
-    JCL 1.2 implemented over SLF4J
-    Project URL: http://www.slf4j.org
-    License: Apache License, Version 2.0 (ASL-2.0)  https://www.apache.org/licenses/LICENSE-2.0.txt (lib/jcl-over-slf4j.license)
-
-
-- lib/slf4j-api-1.7.29.jar: org.slf4j:slf4j-api:jar:1.7.29
-    SLF4J API Module
-    Project URL: http://www.slf4j.org
-    License: MIT License (MIT)  http://www.opensource.org/licenses/mit-license.php (lib/slf4j-api.license)
-
-
-- lib/plexus-cipher-1.7.jar: org.sonatype.plexus:plexus-cipher:jar:1.7
-    Plexus Cipher: encryption/decryption Component
-    Project URL: http://spice.sonatype.org/plexus-cipher
-    License: Apache Public License 2.0 (ASL-2.0)  http://www.apache.org/licenses/LICENSE-2.0 (lib/plexus-cipher.license)
-
-
-- lib/plexus-sec-dispatcher-1.4.jar: org.sonatype.plexus:plexus-sec-dispatcher:jar:1.4
-    Plexus Security Dispatcher Component
-    Project URL: http://spice.sonatype.org/plexus-sec-dispatcher
-    License: Apache Public License 2.0 (ASL-2.0)  http://www.apache.org/licenses/LICENSE-2.0 (lib/plexus-sec-dispatcher.license)
-
diff --git a/apache-maven-3.6.3/NOTICE b/apache-maven-3.6.3/NOTICE
deleted file mode 100644
index c76d78a..0000000
--- a/apache-maven-3.6.3/NOTICE
+++ /dev/null
@@ -1,106 +0,0 @@
-
-Apache Maven Distribution
-Copyright 2001-2019 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-
-This software bundles the following NOTICE files from third party library providers:
-
-META-INF/NOTICE in archive lib/guice-4.2.1-no_aop.jar
-Google Guice - Core Library
-Copyright 2006-2018 Google, Inc.
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-META-INF/NOTICE in archive lib/plexus-utils-3.2.1.jar
-This product includes software developed by the Indiana University
- Extreme! Lab (http://www.extreme.indiana.edu/).
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-This product includes software developed by
-ThoughtWorks (http://www.thoughtworks.com).
-This product includes software developed by
-javolution (http://javolution.org/).
-This product includes software developed by
-Rome (https://rome.dev.java.net/).
-
-about.html in archive lib/org.eclipse.sisu.inject-0.3.4.jar
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About org.eclipse.sisu.inject</title>
-</head>
-<body lang="EN-US">
-<h2>About org.eclipse.sisu.inject</h2>
- 
-<p>November 5, 2013</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
-indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was 
-provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-
-<h3>Third Party Content</h3>
-<p>The Content includes items that have been sourced from third parties as set 
-out below. If you did not receive this Content directly from the Eclipse Foundation, 
-the following is provided for informational purposes only, and you should look 
-to the Redistributor's license for terms and conditions of use.</p>
-
-<h4>ASM 4.1</h4>
-<p>The plug-in includes software developed by the ObjectWeb consortium as part
-of the ASM project at <a href="http://asm.ow2.org/">http://asm.ow2.org/</a>.</p>
-
-<p>A subset of ASM is re-packaged within the source and binary of the plug-in (org.eclipse.sisu.space.asm.*)
-to avoid version collisions with other usage and is also available from the plug-in's github repository.</p>
-
-<p>Your use of the ASM code is subject to the terms and conditions of the ASM License
-below which is also available at <a href="http://asm.ow2.org/license.html">http://asm.ow2.org/license.html</a>.</p>
-
-<blockquote><pre>
-Copyright (c) 2000-2011 INRIA, France Telecom
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-
-3. Neither the name of the copyright holders nor the names of its
-   contributors may be used to endorse or promote products derived from
-   this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGE.
-</pre></blockquote>
-
-</body>
-</html>
diff --git a/apache-maven-3.6.3/README.txt b/apache-maven-3.6.3/README.txt
deleted file mode 100644
index 3e93a84..0000000
--- a/apache-maven-3.6.3/README.txt
+++ /dev/null
@@ -1,79 +0,0 @@
-
-                          Apache Maven
-
-  What is it?
-  -----------
-
-  Maven is a software project management and comprehension tool. Based on
-  the concept of a Project Object Model (POM), Maven can manage a project's
-  build, reporting and documentation from a central piece of information.
-
-  Documentation
-  -------------
-
-  The most up-to-date documentation can be found at https://maven.apache.org/.
-
-  Release Notes
-  -------------
-
-  The full list of changes can be found at https://maven.apache.org/docs/history.html.
-
-  System Requirements
-  -------------------
-
-  JDK:
-    1.7 or above (this is to execute Maven - it still allows you to build against 1.3
-    and prior JDK's).
-  Memory:
-    No minimum requirement.
-  Disk:
-    Approximately 10MB is required for the Maven installation itself. In addition to
-    that, additional disk space will be used for your local Maven repository. The size
-    of your local repository will vary depending on usage but expect at least 500MB.
-  Operating System:
-    Windows:
-      Windows 2000 or above.
-    Unix based systems (Linux, Solaris and Mac OS X) and others:
-      No minimum requirement.
-
-  Installing Maven
-  ----------------
-
-  1) Unpack the archive where you would like to store the binaries, e.g.:
-
-    Unix-based operating systems (Linux, Solaris and Mac OS X)
-      tar zxvf apache-maven-3.x.y.tar.gz
-    Windows
-      unzip apache-maven-3.x.y.zip
-
-  2) A directory called "apache-maven-3.x.y" will be created.
-
-  3) Add the bin directory to your PATH, e.g.:
-
-    Unix-based operating systems (Linux, Solaris and Mac OS X)
-      export PATH=/usr/local/apache-maven-3.x.y/bin:$PATH
-    Windows
-      set PATH="c:\program files\apache-maven-3.x.y\bin";%PATH%
-
-  4) Make sure JAVA_HOME is set to the location of your JDK
-
-  5) Run "mvn --version" to verify that it is correctly installed.
-
-  For complete documentation, see https://maven.apache.org/download.html#Installation
-
-  Licensing
-  ---------
-
-  Please see the file called LICENSE.
-
-  Maven URLS
-  ----------
-
-  Home Page:          https://maven.apache.org/
-  Downloads:          https://maven.apache.org/download.html
-  Release Notes:      https://maven.apache.org/docs/history.html
-  Mailing Lists:      https://maven.apache.org/mailing-lists.html
-  Source Code:        https://gitbox.apache.org/repos/asf/maven.git
-  Issue Tracking:     https://issues.apache.org/jira/browse/MNG
-  Wiki:               https://cwiki.apache.org/confluence/display/MAVEN/
-  Available Plugins:  https://maven.apache.org/plugins/
diff --git a/apache-maven-3.6.3/bin/m2.conf b/apache-maven-3.6.3/bin/m2.conf
deleted file mode 100644
index 2235f82..0000000
--- a/apache-maven-3.6.3/bin/m2.conf
+++ /dev/null
@@ -1,8 +0,0 @@
-main is org.apache.maven.cli.MavenCli from plexus.core
-
-set maven.conf default ${maven.home}/conf
-
-[plexus.core]
-load       ${maven.conf}/logging
-optionally ${maven.home}/lib/ext/*.jar
-load       ${maven.home}/lib/*.jar
diff --git a/apache-maven-3.6.3/bin/mvn b/apache-maven-3.6.3/bin/mvn
deleted file mode 100644
index a554c66..0000000
--- a/apache-maven-3.6.3/bin/mvn
+++ /dev/null
@@ -1,199 +0,0 @@
-#!/bin/sh
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# -----------------------------------------------------------------------------
-# Apache Maven Startup Script
-#
-# Environment Variable Prerequisites
-#
-#   JAVA_HOME       Must point at your Java Development Kit installation.
-#   MAVEN_OPTS      (Optional) Java runtime options used when Maven is executed.
-#   MAVEN_SKIP_RC   (Optional) Flag to disable loading of mavenrc files.
-# -----------------------------------------------------------------------------
-
-if [ -z "$MAVEN_SKIP_RC" ] ; then
-
-  if [ -f /etc/mavenrc ] ; then
-    . /etc/mavenrc
-  fi
-
-  if [ -f "$HOME/.mavenrc" ] ; then
-    . "$HOME/.mavenrc"
-  fi
-
-fi
-
-# OS specific support. $var _must_ be set to either true or false.
-cygwin=false;
-mingw=false;
-case "`uname`" in
-  CYGWIN*) cygwin=true;;
-  MINGW*) mingw=true;;
-esac
-
-## resolve links - $0 may be a link to Maven's home
-PRG="$0"
-
-# need this for relative symlinks
-while [ -h "$PRG" ] ; do
-  ls=`ls -ld "$PRG"`
-  link=`expr "$ls" : '.*-> \(.*\)$'`
-  if expr "$link" : '/.*' > /dev/null; then
-    PRG="$link"
-  else
-    PRG="`dirname "$PRG"`/$link"
-  fi
-done
-
-saveddir=`pwd`
-
-MAVEN_HOME=`dirname "$PRG"`/..
-
-# make it fully qualified
-MAVEN_HOME=`cd "$MAVEN_HOME" && pwd`
-
-cd "$saveddir"
-
-# For Cygwin, ensure paths are in Unix format before anything is touched
-if $cygwin ; then
-  [ -n "$MAVEN_HOME" ] &&
-    MAVEN_HOME=`cygpath --unix "$MAVEN_HOME"`
-  [ -n "$JAVA_HOME" ] &&
-    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-  [ -n "$CLASSPATH" ] &&
-    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
-fi
-
-# For MinGW, ensure paths are in Unix format before anything is touched
-if $mingw ; then
-  [ -n "$MAVEN_HOME" ] &&
-    MAVEN_HOME=`(cd "$MAVEN_HOME"; pwd)`
-  [ -n "$JAVA_HOME" ] &&
-    JAVA_HOME=`(cd "$JAVA_HOME"; pwd)`
-  # TODO classpath?
-fi
-
-if [ -z "$JAVA_HOME" ] ; then
-  JAVACMD=`which java`
-else
-  JAVACMD="$JAVA_HOME/bin/java"
-fi
-
-if [ ! -x "$JAVACMD" ] ; then
-  echo "The JAVA_HOME environment variable is not defined correctly" >&2
-  echo "This environment variable is needed to run this program" >&2
-  echo "NB: JAVA_HOME should point to a JDK not a JRE" >&2
-  exit 1
-fi
-
-CLASSWORLDS_JAR=`echo "${MAVEN_HOME}"/boot/plexus-classworlds-*.jar`
-CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
-  [ -n "$MAVEN_HOME" ] &&
-    MAVEN_HOME=`cygpath --path --windows "$MAVEN_HOME"`
-  [ -n "$JAVA_HOME" ] &&
-    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
-  [ -n "$CLASSPATH" ] &&
-    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
-  [ -n "$CLASSWORLDS_JAR" ] &&
-    CLASSWORLDS_JAR=`cygpath --path --windows "$CLASSWORLDS_JAR"`
-fi
-
-# traverses directory structure from process work directory to filesystem root
-# first directory with .mvn subdirectory is considered project base directory
-find_maven_basedir() {
-(
-  basedir=`find_file_argument_basedir "$@"`
-  wdir="${basedir}"
-  while [ "$wdir" != '/' ] ; do
-    if [ -d "$wdir"/.mvn ] ; then
-      basedir=$wdir
-      break
-    fi
-    wdir=`cd "$wdir/.."; pwd`
-  done
-  echo "${basedir}"
-)
-}
-
-find_file_argument_basedir() {
-(
-  basedir=`pwd`
-
-  found_file_switch=0
-  for arg in "$@"; do
-    if [ ${found_file_switch} -eq 1 ]; then
-      if [ -d "${arg}" ]; then
-        basedir=`cd "${arg}" && pwd -P`
-      elif [ -f "${arg}" ]; then
-        basedir=`dirname "${arg}"`
-        basedir=`cd "${basedir}" && pwd -P`
-        if [ ! -d "${basedir}" ]; then
-          echo "Directory ${basedir} extracted from the -f/--file command-line argument ${arg} does not exist" >&2
-          exit 1
-        fi
-      else
-        echo "POM file ${arg} specified with the -f/--file command line argument does not exist" >&2
-        exit 1
-      fi
-      break
-    fi
-    if [ "$arg" = "-f" -o "$arg" = "--file" ]; then
-      found_file_switch=1
-    fi
-  done
-  echo "${basedir}"
-)
-}
-
-# concatenates all lines of a file
-concat_lines() {
-  if [ -f "$1" ]; then
-    echo "`tr -s '\r\n' '  ' < "$1"`"
-  fi
-}
-
-MAVEN_PROJECTBASEDIR="${MAVEN_BASEDIR:-`find_maven_basedir "$@"`}"
-MAVEN_OPTS="`concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config"` $MAVEN_OPTS"
-
-# For Cygwin, switch project base directory path to Windows format before
-# executing Maven otherwise this will cause Maven not to consider it.
-if $cygwin ; then
-  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
-  MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
-fi
-
-export MAVEN_PROJECTBASEDIR
-
-# Provide a "standardized" way to retrieve the CLI args that will
-# work with both Windows and non-Windows executions.
-MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
-export MAVEN_CMD_LINE_ARGS
-
-exec "$JAVACMD" \
-  $MAVEN_OPTS \
-  $MAVEN_DEBUG_OPTS \
-  -classpath "${CLASSWORLDS_JAR}" \
-  "-Dclassworlds.conf=${MAVEN_HOME}/bin/m2.conf" \
-  "-Dmaven.home=${MAVEN_HOME}" \
-  "-Dlibrary.jansi.path=${MAVEN_HOME}/lib/jansi-native" \
-  "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
-  ${CLASSWORLDS_LAUNCHER} "$@"
diff --git a/apache-maven-3.6.3/bin/mvn.cmd b/apache-maven-3.6.3/bin/mvn.cmd
deleted file mode 100644
index fd1b21e..0000000
--- a/apache-maven-3.6.3/bin/mvn.cmd
+++ /dev/null
@@ -1,205 +0,0 @@
-@REM Licensed to the Apache Software Foundation (ASF) under one
-@REM or more contributor license agreements.  See the NOTICE file
-@REM distributed with this work for additional information
-@REM regarding copyright ownership.  The ASF licenses this file
-@REM to you under the Apache License, Version 2.0 (the
-@REM "License"); you may not use this file except in compliance
-@REM with the License.  You may obtain a copy of the License at
-@REM
-@REM    http://www.apache.org/licenses/LICENSE-2.0
-@REM
-@REM Unless required by applicable law or agreed to in writing,
-@REM software distributed under the License is distributed on an
-@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-@REM KIND, either express or implied.  See the License for the
-@REM specific language governing permissions and limitations
-@REM under the License.
-
-@REM -----------------------------------------------------------------------------
-@REM Apache Maven Startup Script
-@REM
-@REM Environment Variable Prerequisites
-@REM
-@REM   JAVA_HOME          Must point at your Java Development Kit installation.
-@REM   MAVEN_BATCH_ECHO  (Optional) Set to 'on' to enable the echoing of the batch commands.
-@REM   MAVEN_BATCH_PAUSE (Optional) set to 'on' to wait for a key stroke before ending.
-@REM   MAVEN_OPTS        (Optional) Java runtime options used when Maven is executed.
-@REM   MAVEN_SKIP_RC     (Optional) Flag to disable loading of mavenrc files.
-@REM -----------------------------------------------------------------------------
-
-@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
-@echo off
-@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
-@if "%MAVEN_BATCH_ECHO%"=="on" echo %MAVEN_BATCH_ECHO%
-
-@REM Execute a user defined script before this one
-if not "%MAVEN_SKIP_RC%"=="" goto skipRcPre
-@REM check for pre script, once with legacy .bat ending and once with .cmd ending
-if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat"
-if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd"
-:skipRcPre
-
-@setlocal
-
-set ERROR_CODE=0
-
-@REM ==== START VALIDATION ====
-if not "%JAVA_HOME%"=="" goto OkJHome
-for %%i in (java.exe) do set "JAVACMD=%%~$PATH:i"
-goto checkJCmd
-
-:OkJHome
-set "JAVACMD=%JAVA_HOME%\bin\java.exe"
-
-:checkJCmd
-if exist "%JAVACMD%" goto chkMHome
-
-echo The JAVA_HOME environment variable is not defined correctly >&2
-echo This environment variable is needed to run this program >&2
-echo NB: JAVA_HOME should point to a JDK not a JRE >&2
-goto error
-
-:chkMHome
-set "MAVEN_HOME=%~dp0.."
-if not "%MAVEN_HOME%"=="" goto stripMHome
-goto error
-
-:stripMHome
-if not "_%MAVEN_HOME:~-1%"=="_\" goto checkMCmd
-set "MAVEN_HOME=%MAVEN_HOME:~0,-1%"
-goto stripMHome
-
-:checkMCmd
-if exist "%MAVEN_HOME%\bin\mvn.cmd" goto init
-goto error
-@REM ==== END VALIDATION ====
-
-:init
-
-set MAVEN_CMD_LINE_ARGS=%*
-
-@REM Find the project basedir, i.e., the directory that contains the folder ".mvn".
-@REM Fallback to current working directory if not found.
-
-set "MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%"
-if not "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
-
-set "EXEC_DIR=%CD%"
-set "WDIR=%EXEC_DIR%"
-
-@REM Look for the --file switch and start the search for the .mvn directory from the specified
-@REM POM location, if supplied.
-
-set FILE_ARG=
-:arg_loop
-if "%~1" == "-f" (
-  set "FILE_ARG=%~2"
-  shift
-  goto process_file_arg
-)
-if "%~1" == "--file" (
-  set "FILE_ARG=%~2"
-  shift
-  goto process_file_arg
-)
-@REM If none of the above, skip the argument
-shift
-if not "%~1" == "" (
-  goto arg_loop
-) else (
-  goto findBaseDir
-)
-
-:process_file_arg
-if "%FILE_ARG%" == "" (
-  goto findBaseDir
-)
-if not exist "%FILE_ARG%" (
-  echo POM file "%FILE_ARG%" specified the -f/--file command-line argument does not exist >&2
-  goto error
-)
-if exist "%FILE_ARG%\*" (
-  set "POM_DIR=%FILE_ARG%"
-) else (
-  call :get_directory_from_file "%FILE_ARG%"
-)
-if not exist "%POM_DIR%" (
-  echo Directory "%POM_DIR%" extracted from the -f/--file command-line argument "%FILE_ARG%" does not exist >&2
-  goto error
-)
-set "WDIR=%POM_DIR%"
-goto findBaseDir
-
-:get_directory_from_file
-set "POM_DIR=%~dp1"
-:stripPomDir
-if not "_%POM_DIR:~-1%"=="_\" goto pomDirStripped
-set "POM_DIR=%POM_DIR:~0,-1%"
-goto stripPomDir
-:pomDirStripped
-exit /b
-
-:findBaseDir
-cd /d "%WDIR%"
-:findBaseDirLoop
-if exist "%WDIR%\.mvn" goto baseDirFound
-cd ..
-IF "%WDIR%"=="%CD%" goto baseDirNotFound
-set "WDIR=%CD%"
-goto findBaseDirLoop
-
-:baseDirFound
-set "MAVEN_PROJECTBASEDIR=%WDIR%"
-cd /d "%EXEC_DIR%"
-goto endDetectBaseDir
-
-:baseDirNotFound
-if "_%EXEC_DIR:~-1%"=="_\" set "EXEC_DIR=%EXEC_DIR:~0,-1%"
-set "MAVEN_PROJECTBASEDIR=%EXEC_DIR%"
-cd "%EXEC_DIR%"
-
-:endDetectBaseDir
-
-set "jvmConfig=\.mvn\jvm.config"
-if not exist "%MAVEN_PROJECTBASEDIR%%jvmConfig%" goto endReadAdditionalConfig
-
-@setlocal EnableExtensions EnableDelayedExpansion
-for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
-@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
-
-:endReadAdditionalConfig
-
-for %%i in ("%MAVEN_HOME%"\boot\plexus-classworlds-*) do set CLASSWORLDS_JAR="%%i"
-set CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
-
-"%JAVACMD%" ^
-  %JVM_CONFIG_MAVEN_PROPS% ^
-  %MAVEN_OPTS% ^
-  %MAVEN_DEBUG_OPTS% ^
-  -classpath %CLASSWORLDS_JAR% ^
-  "-Dclassworlds.conf=%MAVEN_HOME%\bin\m2.conf" ^
-  "-Dmaven.home=%MAVEN_HOME%" ^
-  "-Dlibrary.jansi.path=%MAVEN_HOME%\lib\jansi-native" ^
-  "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
-  %CLASSWORLDS_LAUNCHER% %MAVEN_CMD_LINE_ARGS%
-if ERRORLEVEL 1 goto error
-goto end
-
-:error
-set ERROR_CODE=1
-
-:end
-@endlocal & set ERROR_CODE=%ERROR_CODE%
-
-if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
-@REM check for post script, once with legacy .bat ending and once with .cmd ending
-if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
-if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
-:skipRcPost
-
-@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
-if "%MAVEN_BATCH_PAUSE%"=="on" pause
-
-if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%
-
-cmd /C exit /B %ERROR_CODE%
diff --git a/apache-maven-3.6.3/bin/mvnDebug b/apache-maven-3.6.3/bin/mvnDebug
deleted file mode 100644
index be495ff..0000000
--- a/apache-maven-3.6.3/bin/mvnDebug
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# -----------------------------------------------------------------------------
-# Apache Maven Debug Script
-#
-# Environment Variable Prerequisites
-#
-#   JAVA_HOME       Must point at your Java Development Kit installation.
-#   MAVEN_OPTS      (Optional) Java runtime options used when Maven is executed.
-#   MAVEN_SKIP_RC   (Optional) Flag to disable loading of mavenrc files.
-# -----------------------------------------------------------------------------
-
-MAVEN_DEBUG_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000"
-
-echo Preparing to execute Maven in debug mode
-
-env MAVEN_OPTS="$MAVEN_OPTS" MAVEN_DEBUG_OPTS="$MAVEN_DEBUG_OPTS" "`dirname "$0"`/mvn" "$@"
diff --git a/apache-maven-3.6.3/bin/mvnDebug.cmd b/apache-maven-3.6.3/bin/mvnDebug.cmd
deleted file mode 100644
index 5f9a20a..0000000
--- a/apache-maven-3.6.3/bin/mvnDebug.cmd
+++ /dev/null
@@ -1,33 +0,0 @@
-@REM Licensed to the Apache Software Foundation (ASF) under one
-@REM or more contributor license agreements.  See the NOTICE file
-@REM distributed with this work for additional information
-@REM regarding copyright ownership.  The ASF licenses this file
-@REM to you under the Apache License, Version 2.0 (the
-@REM "License"); you may not use this file except in compliance
-@REM with the License.  You may obtain a copy of the License at
-@REM
-@REM    http://www.apache.org/licenses/LICENSE-2.0
-@REM
-@REM Unless required by applicable law or agreed to in writing,
-@REM software distributed under the License is distributed on an
-@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-@REM KIND, either express or implied.  See the License for the
-@REM specific language governing permissions and limitations
-@REM under the License.
-
-@REM -----------------------------------------------------------------------------
-@REM Apache Maven Debug Script
-@REM
-@REM Environment Variable Prerequisites
-@REM
-@REM   JAVA_HOME          Must point at your Java Development Kit installation.
-@REM   MAVEN_BATCH_ECHO  (Optional) Set to 'on' to enable the echoing of the batch commands.
-@REM   MAVEN_BATCH_PAUSE (Optional) set to 'on' to wait for a key stroke before ending.
-@REM   MAVEN_OPTS        (Optional) Java runtime options used when Maven is executed.
-@REM   MAVEN_SKIP_RC     (Optional) Flag to disable loading of mavenrc files.
-@REM -----------------------------------------------------------------------------
-
-@setlocal
-@set MAVEN_DEBUG_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
-
-@call "%~dp0"mvn.cmd %*
diff --git a/apache-maven-3.6.3/bin/mvnyjp b/apache-maven-3.6.3/bin/mvnyjp
deleted file mode 100644
index a35eabf..0000000
--- a/apache-maven-3.6.3/bin/mvnyjp
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/sh
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# -----------------------------------------------------------------------------
-# Apache Maven YourKit Profiler Startup Script
-#
-# Environment Variable Prerequisites
-#
-#   JAVA_HOME       Must point at your Java Development Kit installation.
-#   MAVEN_OPTS      (Optional) Java runtime options used when Maven is executed.
-#   MAVEN_SKIP_RC   (Optional) Flag to disable loading of mavenrc files.
-# -----------------------------------------------------------------------------
-
-if [ ! -f "$YJPLIB" ]; then
-  echo "Error: Unable to autodetect the YJP library location. Please set YJPLIB variable" >&2
-  exit 1
-fi
-
-env MAVEN_OPTS="-agentpath:$YJPLIB=onexit=snapshot,onexit=memory,tracing,onlylocal $MAVEN_OPTS" "`dirname "$0"`/mvn" "$@"
diff --git a/apache-maven-3.6.3/boot/plexus-classworlds.license b/apache-maven-3.6.3/boot/plexus-classworlds.license
deleted file mode 100644
index d645695..0000000
--- a/apache-maven-3.6.3/boot/plexus-classworlds.license
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/apache-maven-3.6.3/conf/logging/simplelogger.properties b/apache-maven-3.6.3/conf/logging/simplelogger.properties
deleted file mode 100644
index 64b331b..0000000
--- a/apache-maven-3.6.3/conf/logging/simplelogger.properties
+++ /dev/null
@@ -1,32 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-org.slf4j.simpleLogger.defaultLogLevel=info
-org.slf4j.simpleLogger.showDateTime=false
-org.slf4j.simpleLogger.showThreadName=false
-org.slf4j.simpleLogger.showLogName=false
-org.slf4j.simpleLogger.logFile=System.out
-org.slf4j.simpleLogger.cacheOutputStream=true
-org.slf4j.simpleLogger.levelInBrackets=true
-org.slf4j.simpleLogger.log.Sisu=info
-org.slf4j.simpleLogger.warnLevelString=WARNING
-
-# MNG-6181: mvn -X also prints all debug logging from HttpClient
-# Be aware that the shaded packages are used
-# org.apache.http -> org.apache.maven.wagon.providers.http.httpclient
-org.slf4j.simpleLogger.log.org.apache.maven.wagon.providers.http.httpclient=off
-org.slf4j.simpleLogger.log.org.apache.maven.wagon.providers.http.httpclient.wire=off
diff --git a/apache-maven-3.6.3/conf/settings.xml b/apache-maven-3.6.3/conf/settings.xml
deleted file mode 100644
index e27c579..0000000
--- a/apache-maven-3.6.3/conf/settings.xml
+++ /dev/null
@@ -1,257 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-
-<!--
- | This is the configuration file for Maven. It can be specified at two levels:
- |
- |  1. User Level. This settings.xml file provides configuration for a single user,
- |                 and is normally provided in ${user.home}/.m2/settings.xml.
- |
- |                 NOTE: This location can be overridden with the CLI option:
- |
- |                 -s /path/to/user/settings.xml
- |
- |  2. Global Level. This settings.xml file provides configuration for all Maven
- |                 users on a machine (assuming they're all using the same Maven
- |                 installation). It's normally provided in
- |                 ${maven.conf}/settings.xml.
- |
- |                 NOTE: This location can be overridden with the CLI option:
- |
- |                 -gs /path/to/global/settings.xml
- |
- | The sections in this sample file are intended to give you a running start at
- | getting the most out of your Maven installation. Where appropriate, the default
- | values (values used when the setting is not specified) are provided.
- |
- |-->
-<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
-          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
-  <!-- localRepository
-   | The path to the local repository maven will use to store artifacts.
-   |
-   | Default: ${user.home}/.m2/repository
-  <localRepository>/path/to/local/repo</localRepository>
-  -->
-
-  <!-- interactiveMode
-   | This will determine whether maven prompts you when it needs input. If set to false,
-   | maven will use a sensible default value, perhaps based on some other setting, for
-   | the parameter in question.
-   |
-   | Default: true
-  <interactiveMode>true</interactiveMode>
-  -->
-
-  <!-- offline
-   | Determines whether maven should attempt to connect to the network when executing a build.
-   | This will have an effect on artifact downloads, artifact deployment, and others.
-   |
-   | Default: false
-  <offline>false</offline>
-  -->
-
-  <!-- pluginGroups
-   | This is a list of additional group identifiers that will be searched when resolving plugins by their prefix, i.e.
-   | when invoking a command line like "mvn prefix:goal". Maven will automatically add the group identifiers
-   | "org.apache.maven.plugins" and "org.codehaus.mojo" if these are not already contained in the list.
-   |-->
-  <pluginGroups>
-    <!-- pluginGroup
-     | Specifies a further group identifier to use for plugin lookup.
-    <pluginGroup>com.your.plugins</pluginGroup>
-    -->
-  </pluginGroups>
-
-  <!-- proxies
-   | This is a list of proxies which can be used on this machine to connect to the network.
-   | Unless otherwise specified (by system property or command-line switch), the first proxy
-   | specification in this list marked as active will be used.
-   |-->
-  <proxies>
-    <!-- proxy
-     | Specification for one proxy, to be used in connecting to the network.
-     |
-    <proxy>
-      <id>optional</id>
-      <active>true</active>
-      <protocol>http</protocol>
-      <username>proxyuser</username>
-      <password>proxypass</password>
-      <host>proxy.host.net</host>
-      <port>80</port>
-      <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
-    </proxy>
-    -->
-  </proxies>
-
-  <!-- servers
-   | This is a list of authentication profiles, keyed by the server-id used within the system.
-   | Authentication profiles can be used whenever maven must make a connection to a remote server.
-   |-->
-  <servers>
-    <!-- server
-     | Specifies the authentication information to use when connecting to a particular server, identified by
-     | a unique name within the system (referred to by the 'id' attribute below).
-     |
-     | NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are
-     |       used together.
-     |
-    <server>
-      <id>deploymentRepo</id>
-      <username>repouser</username>
-      <password>repopwd</password>
-    </server>
-    -->
-
-    <!-- Another sample, using keys to authenticate.
-    <server>
-      <id>siteServer</id>
-      <privateKey>/path/to/private/key</privateKey>
-      <passphrase>optional; leave empty if not used.</passphrase>
-    </server>
-    -->
-  </servers>
-
-  <!-- mirrors
-   | This is a list of mirrors to be used in downloading artifacts from remote repositories.
-   |
-   | It works like this: a POM may declare a repository to use in resolving certain artifacts.
-   | However, this repository may have problems with heavy traffic at times, so people have mirrored
-   | it to several places.
-   |
-   | That repository definition will have a unique id, so we can create a mirror reference for that
-   | repository, to be used as an alternate download site. The mirror site will be the preferred
-   | server for that repository.
-   |-->
-  <mirrors>
-    <!-- mirror
-     | Specifies a repository mirror site to use instead of a given repository. The repository that
-     | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
-     | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
-     |
-    <mirror>
-      <id>mirrorId</id>
-      <mirrorOf>repositoryId</mirrorOf>
-      <name>Human Readable Name for this Mirror.</name>
-      <url>http://my.repository.com/repo/path</url>
-    </mirror>
-     -->
-  </mirrors>
-
-  <!-- profiles
-   | This is a list of profiles which can be activated in a variety of ways, and which can modify
-   | the build process. Profiles provided in the settings.xml are intended to provide local machine-
-   | specific paths and repository locations which allow the build to work in the local environment.
-   |
-   | For example, if you have an integration testing plugin - like cactus - that needs to know where
-   | your Tomcat instance is installed, you can provide a variable here such that the variable is
-   | dereferenced during the build process to configure the cactus plugin.
-   |
-   | As noted above, profiles can be activated in a variety of ways. One way - the activeProfiles
-   | section of this document (settings.xml) - will be discussed later. Another way essentially
-   | relies on the detection of a system property, either matching a particular value for the property,
-   | or merely testing its existence. Profiles can also be activated by JDK version prefix, where a
-   | value of '1.4' might activate a profile when the build is executed on a JDK version of '1.4.2_07'.
-   | Finally, the list of active profiles can be specified directly from the command line.
-   |
-   | NOTE: For profiles defined in the settings.xml, you are restricted to specifying only artifact
-   |       repositories, plugin repositories, and free-form properties to be used as configuration
-   |       variables for plugins in the POM.
-   |
-   |-->
-  <profiles>
-    <!-- profile
-     | Specifies a set of introductions to the build process, to be activated using one or more of the
-     | mechanisms described above. For inheritance purposes, and to activate profiles via <activatedProfiles/>
-     | or the command line, profiles have to have an ID that is unique.
-     |
-     | An encouraged best practice for profile identification is to use a consistent naming convention
-     | for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc.
-     | This will make it more intuitive to understand what the set of introduced profiles is attempting
-     | to accomplish, particularly when you only have a list of profile id's for debug.
-     |
-     | This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo.
-    <profile>
-      <id>jdk-1.4</id>
-
-      <activation>
-        <jdk>1.4</jdk>
-      </activation>
-
-      <repositories>
-        <repository>
-          <id>jdk14</id>
-          <name>Repository for JDK 1.4 builds</name>
-          <url>http://www.myhost.com/maven/jdk14</url>
-          <layout>default</layout>
-          <snapshotPolicy>always</snapshotPolicy>
-        </repository>
-      </repositories>
-    </profile>
-    -->
-
-    <!--
-     | Here is another profile, activated by the system property 'target-env' with a value of 'dev',
-     | which provides a specific path to the Tomcat instance. To use this, your plugin configuration
-     | might hypothetically look like:
-     |
-     | ...
-     | <plugin>
-     |   <groupId>org.myco.myplugins</groupId>
-     |   <artifactId>myplugin</artifactId>
-     |
-     |   <configuration>
-     |     <tomcatLocation>${tomcatPath}</tomcatLocation>
-     |   </configuration>
-     | </plugin>
-     | ...
-     |
-     | NOTE: If you just wanted to inject this configuration whenever someone set 'target-env' to
-     |       anything, you could just leave off the <value/> inside the activation-property.
-     |
-    <profile>
-      <id>env-dev</id>
-
-      <activation>
-        <property>
-          <name>target-env</name>
-          <value>dev</value>
-        </property>
-      </activation>
-
-      <properties>
-        <tomcatPath>/path/to/tomcat/instance</tomcatPath>
-      </properties>
-    </profile>
-    -->
-  </profiles>
-
-  <!-- activeProfiles
-   | List of profiles that are active for all builds.
-   |
-  <activeProfiles>
-    <activeProfile>alwaysActiveProfile</activeProfile>
-    <activeProfile>anotherAlwaysActiveProfile</activeProfile>
-  </activeProfiles>
-  -->
-</settings>
diff --git a/apache-maven-3.6.3/conf/toolchains.xml b/apache-maven-3.6.3/conf/toolchains.xml
deleted file mode 100644
index b263072..0000000
--- a/apache-maven-3.6.3/conf/toolchains.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-
-<!--
- | This is the toolchains file for Maven. It can be specified at two levels:
- |
- |  1. User Level. This toolchains.xml file provides configuration for a single user,
- |                 and is normally provided in ${user.home}/.m2/toolchains.xml.
- |
- |                 NOTE: This location can be overridden with the CLI option:
- |
- |                 -t /path/to/user/toolchains.xml
- |
- |  2. Global Level. This toolchains.xml file provides configuration for all Maven
- |                 users on a machine (assuming they're all using the same Maven
- |                 installation). It's normally provided in
- |                 ${maven.conf}/toolchains.xml.
- |
- |                 NOTE: This location can be overridden with the CLI option:
- |
- |                 -gt /path/to/global/toolchains.xml
- |
- | The sections in this sample file are intended to give you a running start at
- | getting the most out of your Maven installation.
- |-->
-<toolchains xmlns="http://maven.apache.org/TOOLCHAINS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/TOOLCHAINS/1.1.0 http://maven.apache.org/xsd/toolchains-1.1.0.xsd">
-
-  <!-- 
-   | With toolchains you can refer to installations on your system. This 
-   | way you don't have to hardcode paths in your pom.xml. 
-   | 
-   | Every toolchain consist of 3 elements: 
-   | * type: the type of tool. An often used value is 'jdk'. Toolchains-aware 
-   |   plugins should document which type you must use. 
-   | 
-   | * provides: A list of key/value-pairs. 
-   |   Based on the toolchain-configuration in the pom.xml Maven will search for 
-   |   matching <provides/> configuration. You can decide for yourself which key-value 
-   |   pairs to use. Often used keys are 'version', 'vendor' and 'arch'. By default 
-   |   the version has a special meaning. If you configured in the pom.xml '1.5' 
-   |   Maven will search for 1.5 and above.
-   |   
-   | * configuration: Additional configuration for this tool.
-   |   Look for documentation of the toolchains-aware plugin which configuration elements
-   |   can be used.   
-   |
-   | See also https://maven.apache.org/guides/mini/guide-using-toolchains.html
-   |
-   | General example
-
-  <toolchain>
-    <type/>
-    <provides> 
-      <version>1.0</version> 
-    </provides> 
-    <configuration/>
-  </toolchain>
-   
-   | JDK examples
-
-  <toolchain>
-    <type>jdk</type>
-    <provides>
-      <version>1.5</version>
-      <vendor>sun</vendor>
-    </provides>
-    <configuration>
-      <jdkHome>/path/to/jdk/1.5</jdkHome>
-    </configuration>
-  </toolchain>
-  <toolchain>
-    <type>jdk</type>
-    <provides>
-      <version>1.6</version>
-      <vendor>sun</vendor>
-    </provides>
-    <configuration>
-      <jdkHome>/path/to/jdk/1.6</jdkHome>
-    </configuration>
-  </toolchain>
-   
-  -->
-
-</toolchains>
\ No newline at end of file
diff --git a/apache-maven-3.6.3/lib/cdi-api.license b/apache-maven-3.6.3/lib/cdi-api.license
deleted file mode 100644
index d645695..0000000
--- a/apache-maven-3.6.3/lib/cdi-api.license
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/apache-maven-3.6.3/lib/commons-cli.license b/apache-maven-3.6.3/lib/commons-cli.license
deleted file mode 100644
index d645695..0000000
--- a/apache-maven-3.6.3/lib/commons-cli.license
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/apache-maven-3.6.3/lib/commons-io.license b/apache-maven-3.6.3/lib/commons-io.license
deleted file mode 100644
index d645695..0000000
--- a/apache-maven-3.6.3/lib/commons-io.license
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/apache-maven-3.6.3/lib/commons-lang3.license b/apache-maven-3.6.3/lib/commons-lang3.license
deleted file mode 100644
index d645695..0000000
--- a/apache-maven-3.6.3/lib/commons-lang3.license
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/apache-maven-3.6.3/lib/ext/README.txt b/apache-maven-3.6.3/lib/ext/README.txt
deleted file mode 100644
index 5ebe59e..0000000
--- a/apache-maven-3.6.3/lib/ext/README.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-Use this directory to contribute 3rd-party extensions to the Maven core. These extensions can either extend or override
-Maven's default implementation.
diff --git a/apache-maven-3.6.3/lib/guava.license b/apache-maven-3.6.3/lib/guava.license
deleted file mode 100644
index d645695..0000000
--- a/apache-maven-3.6.3/lib/guava.license
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/apache-maven-3.6.3/lib/guice.license b/apache-maven-3.6.3/lib/guice.license
deleted file mode 100644
index d645695..0000000
--- a/apache-maven-3.6.3/lib/guice.license
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/apache-maven-3.6.3/lib/jansi-native/README.txt b/apache-maven-3.6.3/lib/jansi-native/README.txt
deleted file mode 100644
index 22857a6..0000000
--- a/apache-maven-3.6.3/lib/jansi-native/README.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-This directory contains Jansi native libraries, extracted from Jansi jar.
-
-You can add your own extensions for platforms not natively supported by
-Jansi: the libraries follow HawtJNI directory and filename conventions.
-See http://fusesource.github.io/hawtjni/documentation/api/org/fusesource/hawtjni/runtime/Library.html
-
-See https://github.com/fusesource/jansi-native for native lib source.
diff --git a/apache-maven-3.6.3/lib/jansi-native/freebsd32/libjansi.so b/apache-maven-3.6.3/lib/jansi-native/freebsd32/libjansi.so
deleted file mode 100644
index c56b19d..0000000
--- a/apache-maven-3.6.3/lib/jansi-native/freebsd32/libjansi.so
+++ /dev/null
Binary files differ
diff --git a/apache-maven-3.6.3/lib/jansi-native/freebsd64/libjansi.so b/apache-maven-3.6.3/lib/jansi-native/freebsd64/libjansi.so
deleted file mode 100644
index fe6c05f..0000000
--- a/apache-maven-3.6.3/lib/jansi-native/freebsd64/libjansi.so
+++ /dev/null
Binary files differ
diff --git a/apache-maven-3.6.3/lib/jansi-native/linux32/libjansi.so b/apache-maven-3.6.3/lib/jansi-native/linux32/libjansi.so
deleted file mode 100644
index 25bec3a..0000000
--- a/apache-maven-3.6.3/lib/jansi-native/linux32/libjansi.so
+++ /dev/null
Binary files differ
diff --git a/apache-maven-3.6.3/lib/jansi-native/linux64/libjansi.so b/apache-maven-3.6.3/lib/jansi-native/linux64/libjansi.so
deleted file mode 100644
index b684f04..0000000
--- a/apache-maven-3.6.3/lib/jansi-native/linux64/libjansi.so
+++ /dev/null
Binary files differ
diff --git a/apache-maven-3.6.3/lib/jansi-native/osx/libjansi.jnilib b/apache-maven-3.6.3/lib/jansi-native/osx/libjansi.jnilib
deleted file mode 100644
index d5293bc..0000000
--- a/apache-maven-3.6.3/lib/jansi-native/osx/libjansi.jnilib
+++ /dev/null
Binary files differ
diff --git a/apache-maven-3.6.3/lib/jansi-native/windows32/jansi.dll b/apache-maven-3.6.3/lib/jansi-native/windows32/jansi.dll
deleted file mode 100644
index 29cfd15..0000000
--- a/apache-maven-3.6.3/lib/jansi-native/windows32/jansi.dll
+++ /dev/null
Binary files differ
diff --git a/apache-maven-3.6.3/lib/jansi-native/windows64/jansi.dll b/apache-maven-3.6.3/lib/jansi-native/windows64/jansi.dll
deleted file mode 100644
index cfe23c9..0000000
--- a/apache-maven-3.6.3/lib/jansi-native/windows64/jansi.dll
+++ /dev/null
Binary files differ
diff --git a/apache-maven-3.6.3/lib/jansi.license b/apache-maven-3.6.3/lib/jansi.license
deleted file mode 100644
index d645695..0000000
--- a/apache-maven-3.6.3/lib/jansi.license
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/apache-maven-3.6.3/lib/javax.inject.license b/apache-maven-3.6.3/lib/javax.inject.license
deleted file mode 100644
index d645695..0000000
--- a/apache-maven-3.6.3/lib/javax.inject.license
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/apache-maven-3.6.3/lib/jcl-over-slf4j.license b/apache-maven-3.6.3/lib/jcl-over-slf4j.license
deleted file mode 100644
index d645695..0000000
--- a/apache-maven-3.6.3/lib/jcl-over-slf4j.license
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/apache-maven-3.6.3/lib/jsoup.license b/apache-maven-3.6.3/lib/jsoup.license
deleted file mode 100644
index fa8a44e..0000000
--- a/apache-maven-3.6.3/lib/jsoup.license
+++ /dev/null
@@ -1,23 +0,0 @@
-https://raw.githubusercontent.com/jhy/jsoup/jsoup-1.12.1/LICENSE
-
-The MIT License
-
-Copyright (c) 2009-2019 Jonathan Hedley <jonathan@hedley.net>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/apache-maven-3.6.3/lib/jsr250-api.license b/apache-maven-3.6.3/lib/jsr250-api.license
deleted file mode 100644
index 9bc6342..0000000
--- a/apache-maven-3.6.3/lib/jsr250-api.license
+++ /dev/null
@@ -1,384 +0,0 @@
-COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-
-
-      1. Definitions.
-
-            1.1. "Contributor" means each individual or entity that
-            creates or contributes to the creation of Modifications.
-
-            1.2. "Contributor Version" means the combination of the
-            Original Software, prior Modifications used by a
-            Contributor (if any), and the Modifications made by that
-            particular Contributor.
-
-            1.3. "Covered Software" means (a) the Original Software, or
-            (b) Modifications, or (c) the combination of files
-            containing Original Software with files containing
-            Modifications, in each case including portions thereof.
-
-            1.4. "Executable" means the Covered Software in any form
-            other than Source Code. 
-
-            1.5. "Initial Developer" means the individual or entity
-            that first makes Original Software available under this
-            License. 
-            
-            1.6. "Larger Work" means a work which combines Covered
-            Software or portions thereof with code not governed by the
-            terms of this License.
-
-            1.7. "License" means this document.
-
-            1.8. "Licensable" means having the right to grant, to the
-            maximum extent possible, whether at the time of the initial
-            grant or subsequently acquired, any and all of the rights
-            conveyed herein.
-            
-            1.9. "Modifications" means the Source Code and Executable
-            form of any of the following: 
-
-                  A. Any file that results from an addition to,
-                  deletion from or modification of the contents of a
-                  file containing Original Software or previous
-                  Modifications; 
-
-                  B. Any new file that contains any part of the
-                  Original Software or previous Modification; or 
-
-                  C. Any new file that is contributed or otherwise made
-                  available under the terms of this License.
-
-            1.10. "Original Software" means the Source Code and
-            Executable form of computer software code that is
-            originally released under this License. 
-
-            1.11. "Patent Claims" means any patent claim(s), now owned
-            or hereafter acquired, including without limitation,
-            method, process, and apparatus claims, in any patent
-            Licensable by grantor. 
-
-            1.12. "Source Code" means (a) the common form of computer
-            software code in which modifications are made and (b)
-            associated documentation included in or with such code.
-
-            1.13. "You" (or "Your") means an individual or a legal
-            entity exercising rights under, and complying with all of
-            the terms of, this License. For legal entities, "You"
-            includes any entity which controls, is controlled by, or is
-            under common control with You. For purposes of this
-            definition, "control" means (a) the power, direct or
-            indirect, to cause the direction or management of such
-            entity, whether by contract or otherwise, or (b) ownership
-            of more than fifty percent (50%) of the outstanding shares
-            or beneficial ownership of such entity.
-
-      2. License Grants. 
-
-            2.1. The Initial Developer Grant.
-
-            Conditioned upon Your compliance with Section 3.1 below and
-            subject to third party intellectual property claims, the
-            Initial Developer hereby grants You a world-wide,
-            royalty-free, non-exclusive license: 
-
-                  (a) under intellectual property rights (other than
-                  patent or trademark) Licensable by Initial Developer,
-                  to use, reproduce, modify, display, perform,
-                  sublicense and distribute the Original Software (or
-                  portions thereof), with or without Modifications,
-                  and/or as part of a Larger Work; and 
-
-                  (b) under Patent Claims infringed by the making,
-                  using or selling of Original Software, to make, have
-                  made, use, practice, sell, and offer for sale, and/or
-                  otherwise dispose of the Original Software (or
-                  portions thereof). 
-
-                  (c) The licenses granted in Sections 2.1(a) and (b)
-                  are effective on the date Initial Developer first
-                  distributes or otherwise makes the Original Software
-                  available to a third party under the terms of this
-                  License. 
-
-                  (d) Notwithstanding Section 2.1(b) above, no patent
-                  license is granted: (1) for code that You delete from
-                  the Original Software, or (2) for infringements
-                  caused by: (i) the modification of the Original
-                  Software, or (ii) the combination of the Original
-                  Software with other software or devices. 
-
-            2.2. Contributor Grant.
-
-            Conditioned upon Your compliance with Section 3.1 below and
-            subject to third party intellectual property claims, each
-            Contributor hereby grants You a world-wide, royalty-free,
-            non-exclusive license:
-
-                  (a) under intellectual property rights (other than
-                  patent or trademark) Licensable by Contributor to
-                  use, reproduce, modify, display, perform, sublicense
-                  and distribute the Modifications created by such
-                  Contributor (or portions thereof), either on an
-                  unmodified basis, with other Modifications, as
-                  Covered Software and/or as part of a Larger Work; and
-                  
-
-                  (b) under Patent Claims infringed by the making,
-                  using, or selling of Modifications made by that
-                  Contributor either alone and/or in combination with
-                  its Contributor Version (or portions of such
-                  combination), to make, use, sell, offer for sale,
-                  have made, and/or otherwise dispose of: (1)
-                  Modifications made by that Contributor (or portions
-                  thereof); and (2) the combination of Modifications
-                  made by that Contributor with its Contributor Version
-                  (or portions of such combination). 
-
-                  (c) The licenses granted in Sections 2.2(a) and
-                  2.2(b) are effective on the date Contributor first
-                  distributes or otherwise makes the Modifications
-                  available to a third party. 
-
-                  (d) Notwithstanding Section 2.2(b) above, no patent
-                  license is granted: (1) for any code that Contributor
-                  has deleted from the Contributor Version; (2) for
-                  infringements caused by: (i) third party
-                  modifications of Contributor Version, or (ii) the
-                  combination of Modifications made by that Contributor
-                  with other software (except as part of the
-                  Contributor Version) or other devices; or (3) under
-                  Patent Claims infringed by Covered Software in the
-                  absence of Modifications made by that Contributor. 
-
-      3. Distribution Obligations.
-
-            3.1. Availability of Source Code.
-
-            Any Covered Software that You distribute or otherwise make
-            available in Executable form must also be made available in
-            Source Code form and that Source Code form must be
-            distributed only under the terms of this License. You must
-            include a copy of this License with every copy of the
-            Source Code form of the Covered Software You distribute or
-            otherwise make available. You must inform recipients of any
-            such Covered Software in Executable form as to how they can
-            obtain such Covered Software in Source Code form in a
-            reasonable manner on or through a medium customarily used
-            for software exchange.
-
-            3.2. Modifications.
-
-            The Modifications that You create or to which You
-            contribute are governed by the terms of this License. You
-            represent that You believe Your Modifications are Your
-            original creation(s) and/or You have sufficient rights to
-            grant the rights conveyed by this License.
-
-            3.3. Required Notices.
-
-            You must include a notice in each of Your Modifications
-            that identifies You as the Contributor of the Modification.
-            You may not remove or alter any copyright, patent or
-            trademark notices contained within the Covered Software, or
-            any notices of licensing or any descriptive text giving
-            attribution to any Contributor or the Initial Developer.
-
-            3.4. Application of Additional Terms.
-
-            You may not offer or impose any terms on any Covered
-            Software in Source Code form that alters or restricts the
-            applicable version of this License or the recipients"
-            rights hereunder. You may choose to offer, and to charge a
-            fee for, warranty, support, indemnity or liability
-            obligations to one or more recipients of Covered Software.
-            However, you may do so only on Your own behalf, and not on
-            behalf of the Initial Developer or any Contributor. You
-            must make it absolutely clear that any such warranty,
-            support, indemnity or liability obligation is offered by
-            You alone, and You hereby agree to indemnify the Initial
-            Developer and every Contributor for any liability incurred
-            by the Initial Developer or such Contributor as a result of
-            warranty, support, indemnity or liability terms You offer.
-          
-
-            3.5. Distribution of Executable Versions.
-
-            You may distribute the Executable form of the Covered
-            Software under the terms of this License or under the terms
-            of a license of Your choice, which may contain terms
-            different from this License, provided that You are in
-            compliance with the terms of this License and that the
-            license for the Executable form does not attempt to limit
-            or alter the recipient"s rights in the Source Code form
-            from the rights set forth in this License. If You
-            distribute the Covered Software in Executable form under a
-            different license, You must make it absolutely clear that
-            any terms which differ from this License are offered by You
-            alone, not by the Initial Developer or Contributor. You
-            hereby agree to indemnify the Initial Developer and every
-            Contributor for any liability incurred by the Initial
-            Developer or such Contributor as a result of any such terms
-            You offer.
-
-            3.6. Larger Works.
-
-            You may create a Larger Work by combining Covered Software
-            with other code not governed by the terms of this License
-            and distribute the Larger Work as a single product. In such
-            a case, You must make sure the requirements of this License
-            are fulfilled for the Covered Software. 
-            
-      4. Versions of the License. 
-
-            4.1. New Versions.
-
-            Sun Microsystems, Inc. is the initial license steward and
-            may publish revised and/or new versions of this License
-            from time to time. Each version will be given a
-            distinguishing version number. Except as provided in
-            Section 4.3, no one other than the license steward has the
-            right to modify this License. 
-
-            4.2. Effect of New Versions.
-
-            You may always continue to use, distribute or otherwise
-            make the Covered Software available under the terms of the
-            version of the License under which You originally received
-            the Covered Software. If the Initial Developer includes a
-            notice in the Original Software prohibiting it from being
-            distributed or otherwise made available under any
-            subsequent version of the License, You must distribute and
-            make the Covered Software available under the terms of the
-            version of the License under which You originally received
-            the Covered Software. Otherwise, You may also choose to
-            use, distribute or otherwise make the Covered Software
-            available under the terms of any subsequent version of the
-            License published by the license steward. 
-
-            4.3. Modified Versions.
-
-            When You are an Initial Developer and You want to create a
-            new license for Your Original Software, You may create and
-            use a modified version of this License if You: (a) rename
-            the license and remove any references to the name of the
-            license steward (except to note that the license differs
-            from this License); and (b) otherwise make it clear that
-            the license contains terms which differ from this License.
-            
-
-      5. DISCLAIMER OF WARRANTY.
-
-      COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS"
-      BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
-      INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED
-      SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR
-      PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND
-      PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY
-      COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
-      INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF
-      ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF
-      WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
-      ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
-      DISCLAIMER. 
-
-      6. TERMINATION. 
-
-            6.1. This License and the rights granted hereunder will
-            terminate automatically if You fail to comply with terms
-            herein and fail to cure such breach within 30 days of
-            becoming aware of the breach. Provisions which, by their
-            nature, must remain in effect beyond the termination of
-            this License shall survive.
-
-            6.2. If You assert a patent infringement claim (excluding
-            declaratory judgment actions) against Initial Developer or
-            a Contributor (the Initial Developer or Contributor against
-            whom You assert such claim is referred to as "Participant")
-            alleging that the Participant Software (meaning the
-            Contributor Version where the Participant is a Contributor
-            or the Original Software where the Participant is the
-            Initial Developer) directly or indirectly infringes any
-            patent, then any and all rights granted directly or
-            indirectly to You by such Participant, the Initial
-            Developer (if the Initial Developer is not the Participant)
-            and all Contributors under Sections 2.1 and/or 2.2 of this
-            License shall, upon 60 days notice from Participant
-            terminate prospectively and automatically at the expiration
-            of such 60 day notice period, unless if within such 60 day
-            period You withdraw Your claim with respect to the
-            Participant Software against such Participant either
-            unilaterally or pursuant to a written agreement with
-            Participant.
-
-            6.3. In the event of termination under Sections 6.1 or 6.2
-            above, all end user licenses that have been validly granted
-            by You or any distributor hereunder prior to termination
-            (excluding licenses granted to You by any distributor)
-            shall survive termination.
-
-      7. LIMITATION OF LIABILITY.
-
-      UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
-      (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
-      INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
-      COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE
-      LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
-      CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
-      LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK
-      STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
-      COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
-      INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
-      LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL
-      INJURY RESULTING FROM SUCH PARTY"S NEGLIGENCE TO THE EXTENT
-      APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO
-      NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
-      CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT
-      APPLY TO YOU.
-
-      8. U.S. GOVERNMENT END USERS.
-
-      The Covered Software is a "commercial item," as that term is
-      defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial
-      computer software" (as that term is defined at 48 C.F.R. "
-      252.227-7014(a)(1)) and "commercial computer software
-      documentation" as such terms are used in 48 C.F.R. 12.212 (Sept.
-      1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1
-      through 227.7202-4 (June 1995), all U.S. Government End Users
-      acquire Covered Software with only those rights set forth herein.
-      This U.S. Government Rights clause is in lieu of, and supersedes,
-      any other FAR, DFAR, or other clause or provision that addresses
-      Government rights in computer software under this License.
-
-      9. MISCELLANEOUS.
-
-      This License represents the complete agreement concerning subject
-      matter hereof. If any provision of this License is held to be
-      unenforceable, such provision shall be reformed only to the
-      extent necessary to make it enforceable. This License shall be
-      governed by the law of the jurisdiction specified in a notice
-      contained within the Original Software (except to the extent
-      applicable law, if any, provides otherwise), excluding such
-      jurisdiction"s conflict-of-law provisions. Any litigation
-      relating to this License shall be subject to the jurisdiction of
-      the courts located in the jurisdiction and venue specified in a
-      notice contained within the Original Software, with the losing
-      party responsible for costs, including, without limitation, court
-      costs and reasonable attorneys" fees and expenses. The
-      application of the United Nations Convention on Contracts for the
-      International Sale of Goods is expressly excluded. Any law or
-      regulation which provides that the language of a contract shall
-      be construed against the drafter shall not apply to this License.
-      You agree that You alone are responsible for compliance with the
-      United States export administration regulations (and the export
-      control laws and regulation of any other countries) when You use,
-      distribute or otherwise make available any Covered Software.
-
-      10. RESPONSIBILITY FOR CLAIMS.
-
-      As between Initial Developer and the Contributors, each party is
-      responsible for claims and damages arising, directly or
-      indirectly, out of its utilization of rights under this License
-      and You agree to work with Initial Developer and Contributors to
-      distribute such responsibility on an equitable basis. Nothing
-      herein is intended or shall be deemed to constitute any admission
-      of liability.
diff --git a/apache-maven-3.6.3/lib/org.eclipse.sisu.inject.license b/apache-maven-3.6.3/lib/org.eclipse.sisu.inject.license
deleted file mode 100644
index 6a200a1..0000000
--- a/apache-maven-3.6.3/lib/org.eclipse.sisu.inject.license
+++ /dev/null
@@ -1,210 +0,0 @@
-Eclipse Public License - v 1.0
-
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC
-LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
-CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
-
-   1. DEFINITIONS
-
-   "Contribution" means:
-
-a) in the case of the initial Contributor, the initial code and documentation
-distributed under this Agreement, and
-
-      b) in the case of each subsequent Contributor:
-
-         i) changes to the Program, and
-
-         ii) additions to the Program;
-
-where such changes and/or additions to the Program originate from and are
-distributed by that particular Contributor. A Contribution 'originates' from
-a Contributor if it was added to the Program by such Contributor itself or
-anyone acting on such Contributor's behalf. Contributions do not include additions
-to the Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii) are
-not derivative works of the Program.
-
-   "Contributor" means any person or entity that distributes the Program.
-
-"Licensed Patents" mean patent claims licensable by a Contributor which are
-necessarily infringed by the use or sale of its Contribution alone or when
-combined with the Program.
-
-"Program" means the Contributions distributed in accordance with this Agreement.
-
-"Recipient" means anyone who receives the Program under this Agreement, including
-all Contributors.
-
-   2. GRANT OF RIGHTS
-
-a) Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce,
-prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative
-works, in source code and object code form.
-
-b) Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed
-Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form.
-This patent license shall apply to the combination of the Contribution and
-the Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered by
-the Licensed Patents. The patent license shall not apply to any other combinations
-which include the Contribution. No hardware per se is licensed hereunder.
-
-c) Recipient understands that although each Contributor grants the licenses
-to its Contributions set forth herein, no assurances are provided by any Contributor
-that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient
-for claims brought by any other entity based on infringement of intellectual
-property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility
-to secure any other intellectual property rights needed, if any. For example,
-if a third party patent license is required to allow Recipient to distribute
-the Program, it is Recipient's responsibility to acquire that license before
-distributing the Program.
-
-d) Each Contributor represents that to its knowledge it has sufficient copyright
-rights in its Contribution, if any, to grant the copyright license set forth
-in this Agreement.
-
-   3. REQUIREMENTS
-
-A Contributor may choose to distribute the Program in object code form under
-its own license agreement, provided that:
-
-      a) it complies with the terms and conditions of this Agreement; and
-
-      b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and
-conditions, express and implied, including warranties or conditions of title
-and non-infringement, and implied warranties or conditions of merchantability
-and fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages,
-including direct, indirect, special, incidental and consequential damages,
-such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered
-by that Contributor alone and not by any other party; and
-
-iv) states that source code for the Program is available from such Contributor,
-and informs licensees how to obtain it in a reasonable manner on or through
-a medium customarily used for software exchange.
-
-   When the Program is made available in source code form:
-
-      a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within
-the Program.
-
-Each Contributor must identify itself as the originator of its Contribution,
-if any, in a manner that reasonably allows subsequent Recipients to identify
-the originator of the Contribution.
-
-   4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with
-respect to end users, business partners and the like. While this license is
-intended to facilitate the commercial use of the Program, the Contributor
-who includes the Program in a commercial product offering should do so in
-a manner which does not create potential liability for other Contributors.
-Therefore, if a Contributor includes the Program in a commercial product offering,
-such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
-every other Contributor ("Indemnified Contributor") against any losses, damages
-and costs (collectively "Losses") arising from claims, lawsuits and other
-legal actions brought by a third party against the Indemnified Contributor
-to the extent caused by the acts or omissions of such Commercial Contributor
-in connection with its distribution of the Program in a commercial product
-offering. The obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In order
-to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor
-to control, and cooperate with the Commercial Contributor in, the defense
-and any related settlement negotiations. The Indemnified Contributor may participate
-in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product
-offering, Product X. That Contributor is then a Commercial Contributor. If
-that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial
-Contributor's responsibility alone. Under this section, the Commercial Contributor
-would have to defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other Contributor
-to pay any damages as a result, the Commercial Contributor must pay those
-damages.
-
-   5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON
-AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS
-OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF
-TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-Each Recipient is solely responsible for determining the appropriateness of
-using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement, including but not limited to the
-risks and costs of program errors, compliance with applicable laws, damage
-to or loss of data, programs or equipment, and unavailability or interruption
-of operations.
-
-   6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
-CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION
-LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
-GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-   7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable
-law, it shall not affect the validity or enforceability of the remainder of
-the terms of this Agreement, and without further action by the parties hereto,
-such provision shall be reformed to the minimum extent necessary to make such
-provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a
-cross-claim or counterclaim in a lawsuit) alleging that the Program itself
-(excluding combinations of the Program with other software or hardware) infringes
-such Recipient's patent(s), then such Recipient's rights granted under Section
-2(b) shall terminate as of the date such litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to
-comply with any of the material terms or conditions of this Agreement and
-does not cure such failure in a reasonable period of time after becoming aware
-of such noncompliance. If all Recipient's rights under this Agreement terminate,
-Recipient agrees to cease use and distribution of the Program as soon as reasonably
-practicable. However, Recipient's obligations under this Agreement and any
-licenses granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but
-in order to avoid inconsistency the Agreement is copyrighted and may only
-be modified in the following manner. The Agreement Steward reserves the right
-to publish new versions (including revisions) of this Agreement from time
-to time. No one other than the Agreement Steward has the right to modify this
-Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse
-Foundation may assign the responsibility to serve as the Agreement Steward
-to a suitable separate entity. Each new version of the Agreement will be given
-a distinguishing version number. The Program (including Contributions) may
-always be distributed subject to the version of the Agreement under which
-it was received. In addition, after a new version of the Agreement is published,
-Contributor may elect to distribute the Program (including its Contributions)
-under the new version. Except as expressly stated in Sections 2(a) and 2(b)
-above, Recipient receives no rights or licenses to the intellectual property
-of any Contributor under this Agreement, whether expressly, by implication,
-estoppel or otherwise. All rights in the Program not expressly granted under
-this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual
-property laws of the United States of America. No party to this Agreement
-will bring a legal action under this Agreement more than one year after the
-cause of action arose. Each party waives its rights to a jury trial in any
-resulting litigation.
diff --git a/apache-maven-3.6.3/lib/org.eclipse.sisu.plexus.license b/apache-maven-3.6.3/lib/org.eclipse.sisu.plexus.license
deleted file mode 100644
index 6a200a1..0000000
--- a/apache-maven-3.6.3/lib/org.eclipse.sisu.plexus.license
+++ /dev/null
@@ -1,210 +0,0 @@
-Eclipse Public License - v 1.0
-
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC
-LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
-CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
-
-   1. DEFINITIONS
-
-   "Contribution" means:
-
-a) in the case of the initial Contributor, the initial code and documentation
-distributed under this Agreement, and
-
-      b) in the case of each subsequent Contributor:
-
-         i) changes to the Program, and
-
-         ii) additions to the Program;
-
-where such changes and/or additions to the Program originate from and are
-distributed by that particular Contributor. A Contribution 'originates' from
-a Contributor if it was added to the Program by such Contributor itself or
-anyone acting on such Contributor's behalf. Contributions do not include additions
-to the Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii) are
-not derivative works of the Program.
-
-   "Contributor" means any person or entity that distributes the Program.
-
-"Licensed Patents" mean patent claims licensable by a Contributor which are
-necessarily infringed by the use or sale of its Contribution alone or when
-combined with the Program.
-
-"Program" means the Contributions distributed in accordance with this Agreement.
-
-"Recipient" means anyone who receives the Program under this Agreement, including
-all Contributors.
-
-   2. GRANT OF RIGHTS
-
-a) Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce,
-prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative
-works, in source code and object code form.
-
-b) Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed
-Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form.
-This patent license shall apply to the combination of the Contribution and
-the Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered by
-the Licensed Patents. The patent license shall not apply to any other combinations
-which include the Contribution. No hardware per se is licensed hereunder.
-
-c) Recipient understands that although each Contributor grants the licenses
-to its Contributions set forth herein, no assurances are provided by any Contributor
-that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient
-for claims brought by any other entity based on infringement of intellectual
-property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility
-to secure any other intellectual property rights needed, if any. For example,
-if a third party patent license is required to allow Recipient to distribute
-the Program, it is Recipient's responsibility to acquire that license before
-distributing the Program.
-
-d) Each Contributor represents that to its knowledge it has sufficient copyright
-rights in its Contribution, if any, to grant the copyright license set forth
-in this Agreement.
-
-   3. REQUIREMENTS
-
-A Contributor may choose to distribute the Program in object code form under
-its own license agreement, provided that:
-
-      a) it complies with the terms and conditions of this Agreement; and
-
-      b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and
-conditions, express and implied, including warranties or conditions of title
-and non-infringement, and implied warranties or conditions of merchantability
-and fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages,
-including direct, indirect, special, incidental and consequential damages,
-such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered
-by that Contributor alone and not by any other party; and
-
-iv) states that source code for the Program is available from such Contributor,
-and informs licensees how to obtain it in a reasonable manner on or through
-a medium customarily used for software exchange.
-
-   When the Program is made available in source code form:
-
-      a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within
-the Program.
-
-Each Contributor must identify itself as the originator of its Contribution,
-if any, in a manner that reasonably allows subsequent Recipients to identify
-the originator of the Contribution.
-
-   4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with
-respect to end users, business partners and the like. While this license is
-intended to facilitate the commercial use of the Program, the Contributor
-who includes the Program in a commercial product offering should do so in
-a manner which does not create potential liability for other Contributors.
-Therefore, if a Contributor includes the Program in a commercial product offering,
-such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
-every other Contributor ("Indemnified Contributor") against any losses, damages
-and costs (collectively "Losses") arising from claims, lawsuits and other
-legal actions brought by a third party against the Indemnified Contributor
-to the extent caused by the acts or omissions of such Commercial Contributor
-in connection with its distribution of the Program in a commercial product
-offering. The obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In order
-to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor
-to control, and cooperate with the Commercial Contributor in, the defense
-and any related settlement negotiations. The Indemnified Contributor may participate
-in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product
-offering, Product X. That Contributor is then a Commercial Contributor. If
-that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial
-Contributor's responsibility alone. Under this section, the Commercial Contributor
-would have to defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other Contributor
-to pay any damages as a result, the Commercial Contributor must pay those
-damages.
-
-   5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON
-AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS
-OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF
-TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-Each Recipient is solely responsible for determining the appropriateness of
-using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement, including but not limited to the
-risks and costs of program errors, compliance with applicable laws, damage
-to or loss of data, programs or equipment, and unavailability or interruption
-of operations.
-
-   6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
-CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION
-LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
-GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-   7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable
-law, it shall not affect the validity or enforceability of the remainder of
-the terms of this Agreement, and without further action by the parties hereto,
-such provision shall be reformed to the minimum extent necessary to make such
-provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a
-cross-claim or counterclaim in a lawsuit) alleging that the Program itself
-(excluding combinations of the Program with other software or hardware) infringes
-such Recipient's patent(s), then such Recipient's rights granted under Section
-2(b) shall terminate as of the date such litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to
-comply with any of the material terms or conditions of this Agreement and
-does not cure such failure in a reasonable period of time after becoming aware
-of such noncompliance. If all Recipient's rights under this Agreement terminate,
-Recipient agrees to cease use and distribution of the Program as soon as reasonably
-practicable. However, Recipient's obligations under this Agreement and any
-licenses granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but
-in order to avoid inconsistency the Agreement is copyrighted and may only
-be modified in the following manner. The Agreement Steward reserves the right
-to publish new versions (including revisions) of this Agreement from time
-to time. No one other than the Agreement Steward has the right to modify this
-Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse
-Foundation may assign the responsibility to serve as the Agreement Steward
-to a suitable separate entity. Each new version of the Agreement will be given
-a distinguishing version number. The Program (including Contributions) may
-always be distributed subject to the version of the Agreement under which
-it was received. In addition, after a new version of the Agreement is published,
-Contributor may elect to distribute the Program (including its Contributions)
-under the new version. Except as expressly stated in Sections 2(a) and 2(b)
-above, Recipient receives no rights or licenses to the intellectual property
-of any Contributor under this Agreement, whether expressly, by implication,
-estoppel or otherwise. All rights in the Program not expressly granted under
-this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual
-property laws of the United States of America. No party to this Agreement
-will bring a legal action under this Agreement more than one year after the
-cause of action arose. Each party waives its rights to a jury trial in any
-resulting litigation.
diff --git a/apache-maven-3.6.3/lib/plexus-cipher.license b/apache-maven-3.6.3/lib/plexus-cipher.license
deleted file mode 100644
index d645695..0000000
--- a/apache-maven-3.6.3/lib/plexus-cipher.license
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/apache-maven-3.6.3/lib/plexus-component-annotations.license b/apache-maven-3.6.3/lib/plexus-component-annotations.license
deleted file mode 100644
index d645695..0000000
--- a/apache-maven-3.6.3/lib/plexus-component-annotations.license
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/apache-maven-3.6.3/lib/plexus-interpolation.license b/apache-maven-3.6.3/lib/plexus-interpolation.license
deleted file mode 100644
index d645695..0000000
--- a/apache-maven-3.6.3/lib/plexus-interpolation.license
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/apache-maven-3.6.3/lib/plexus-sec-dispatcher.license b/apache-maven-3.6.3/lib/plexus-sec-dispatcher.license
deleted file mode 100644
index d645695..0000000
--- a/apache-maven-3.6.3/lib/plexus-sec-dispatcher.license
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/apache-maven-3.6.3/lib/plexus-utils.license b/apache-maven-3.6.3/lib/plexus-utils.license
deleted file mode 100644
index d645695..0000000
--- a/apache-maven-3.6.3/lib/plexus-utils.license
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/apache-maven-3.6.3/lib/slf4j-api.license b/apache-maven-3.6.3/lib/slf4j-api.license
deleted file mode 100644
index 5a09409..0000000
--- a/apache-maven-3.6.3/lib/slf4j-api.license
+++ /dev/null
@@ -1,23 +0,0 @@
-https://raw.githubusercontent.com/qos-ch/slf4j/v_1.7.29/LICENSE.txt
-
-Copyright (c) 2004-2017 QOS.ch
-All rights reserved.
-
-Permission is hereby granted, free  of charge, to any person obtaining
-a  copy  of this  software  and  associated  documentation files  (the
-"Software"), to  deal in  the Software without  restriction, including
-without limitation  the rights to  use, copy, modify,  merge, publish,
-distribute,  sublicense, and/or sell  copies of  the Software,  and to
-permit persons to whom the Software  is furnished to do so, subject to
-the following conditions:
-
-The  above  copyright  notice  and  this permission  notice  shall  be
-included in all copies or substantial portions of the Software.
-
-THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
-EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
-MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/apache-maven-3.6.3/settings.xml b/apache-maven-3.6.3/settings.xml
deleted file mode 100644
index 62ef781..0000000
--- a/apache-maven-3.6.3/settings.xml
+++ /dev/null
@@ -1,279 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-
-<!--
- | This is the configuration file for Maven. It can be specified at two levels:
- |
- |  1. User Level. This settings.xml file provides configuration for a single user,
- |                 and is normally provided in ${user.home}/.m2/settings.xml.
- |
- |                 NOTE: This location can be overridden with the CLI option:
- |
- |                 -s /path/to/user/settings.xml
- |
- |  2. Global Level. This settings.xml file provides configuration for all Maven
- |                 users on a machine (assuming they're all using the same Maven
- |                 installation). It's normally provided in
- |                 ${maven.conf}/settings.xml.
- |
- |                 NOTE: This location can be overridden with the CLI option:
- |
- |                 -gs /path/to/global/settings.xml
- |
- | The sections in this sample file are intended to give you a running start at
- | getting the most out of your Maven installation. Where appropriate, the default
- | values (values used when the setting is not specified) are provided.
- |
- |-->
-<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
-          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
-  <!-- localRepository
-   | The path to the local repository maven will use to store artifacts.
-   |
-   | Default: ${user.home}/.m2/repository
-     -->
-  <localRepository>D:\tools\repository</localRepository>
-
-
-  <!-- interactiveMode
-   | This will determine whether maven prompts you when it needs input. If set to false,
-   | maven will use a sensible default value, perhaps based on some other setting, for
-   | the parameter in question.
-   |
-   | Default: true
-  <interactiveMode>true</interactiveMode>
-  -->
-
-  <!-- offline
-   | Determines whether maven should attempt to connect to the network when executing a build.
-   | This will have an effect on artifact downloads, artifact deployment, and others.
-   |
-   | Default: false
-  <offline>false</offline>
-  -->
-
-  <!-- pluginGroups
-   | This is a list of additional group identifiers that will be searched when resolving plugins by their prefix, i.e.
-   | when invoking a command line like "mvn prefix:goal". Maven will automatically add the group identifiers
-   | "org.apache.maven.plugins" and "org.codehaus.mojo" if these are not already contained in the list.
-   |-->
-  <pluginGroups>
-    <!-- pluginGroup
-     | Specifies a further group identifier to use for plugin lookup.
-    <pluginGroup>com.your.plugins</pluginGroup>
-    -->
-  </pluginGroups>
-
-  <!-- proxies
-   | This is a list of proxies which can be used on this machine to connect to the network.
-   | Unless otherwise specified (by system property or command-line switch), the first proxy
-   | specification in this list marked as active will be used.
-   |-->
-  <proxies>
-    <!-- proxy
-     | Specification for one proxy, to be used in connecting to the network.
-     |
-    <proxy>
-      <id>optional</id>
-      <active>true</active>
-      <protocol>http</protocol>
-      <username>proxyuser</username>
-      <password>proxypass</password>
-      <host>proxy.host.net</host>
-      <port>80</port>
-      <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
-    </proxy>
-    -->
-  </proxies>
-
-  <!-- servers
-   | This is a list of authentication profiles, keyed by the server-id used within the system.
-   | Authentication profiles can be used whenever maven must make a connection to a remote server.
-   |-->
-  <servers>
-    <!-- server
-     | Specifies the authentication information to use when connecting to a particular server, identified by
-     | a unique name within the system (referred to by the 'id' attribute below).
-     |
-     | NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are
-     |       used together.
-     |
-    <server>
-      <id>deploymentRepo</id>
-      <username>repouser</username>
-      <password>repopwd</password>
-    </server>
-    -->
-
-    <!-- Another sample, using keys to authenticate.
-    <server>
-      <id>siteServer</id>
-      <privateKey>/path/to/private/key</privateKey>
-      <passphrase>optional; leave empty if not used.</passphrase>
-    </server>
-    -->
-  </servers>
-
-  <!-- mirrors
-   | This is a list of mirrors to be used in downloading artifacts from remote repositories.
-   |
-   | It works like this: a POM may declare a repository to use in resolving certain artifacts.
-   | However, this repository may have problems with heavy traffic at times, so people have mirrored
-   | it to several places.
-   |
-   | That repository definition will have a unique id, so we can create a mirror reference for that
-   | repository, to be used as an alternate download site. The mirror site will be the preferred
-   | server for that repository.
-   |-->
-  <mirrors>
-    <!-- mirror
-     | Specifies a repository mirror site to use instead of a given repository. The repository that
-     | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
-     | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
-     |
-    <mirror>
-      <id>mirrorId</id>
-      <mirrorOf>repositoryId</mirrorOf>
-      <name>Human Readable Name for this Mirror.</name>
-      <url>http://my.repository.com/repo/path</url>
-    </mirror>
-     -->
-	 
-	     <mirror>        
-			  <id>nexus-aliyun</id>      
-			  <name>nexus-aliyun</name>    
-			  <url>http://maven.aliyun.com/nexus/content/groups/public</url>      
-			  <mirrorOf>central</mirrorOf>        
-		</mirror>
-  </mirrors>
-
-  <!-- profiles
-   | This is a list of profiles which can be activated in a variety of ways, and which can modify
-   | the build process. Profiles provided in the settings.xml are intended to provide local machine-
-   | specific paths and repository locations which allow the build to work in the local environment.
-   |
-   | For example, if you have an integration testing plugin - like cactus - that needs to know where
-   | your Tomcat instance is installed, you can provide a variable here such that the variable is
-   | dereferenced during the build process to configure the cactus plugin.
-   |
-   | As noted above, profiles can be activated in a variety of ways. One way - the activeProfiles
-   | section of this document (settings.xml) - will be discussed later. Another way essentially
-   | relies on the detection of a system property, either matching a particular value for the property,
-   | or merely testing its existence. Profiles can also be activated by JDK version prefix, where a
-   | value of '1.4' might activate a profile when the build is executed on a JDK version of '1.4.2_07'.
-   | Finally, the list of active profiles can be specified directly from the command line.
-   |
-   | NOTE: For profiles defined in the settings.xml, you are restricted to specifying only artifact
-   |       repositories, plugin repositories, and free-form properties to be used as configuration
-   |       variables for plugins in the POM.
-   |
-   |-->
-  <profiles>
-    <!-- profile
-     | Specifies a set of introductions to the build process, to be activated using one or more of the
-     | mechanisms described above. For inheritance purposes, and to activate profiles via <activatedProfiles/>
-     | or the command line, profiles have to have an ID that is unique.
-     |
-     | An encouraged best practice for profile identification is to use a consistent naming convention
-     | for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc.
-     | This will make it more intuitive to understand what the set of introduced profiles is attempting
-     | to accomplish, particularly when you only have a list of profile id's for debug.
-     |
-     | This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo.
-    <profile>
-      <id>jdk-1.4</id>
-
-      <activation>
-        <jdk>1.4</jdk>
-      </activation>
-
-      <repositories>
-        <repository>
-          <id>jdk14</id>
-          <name>Repository for JDK 1.4 builds</name>
-          <url>http://www.myhost.com/maven/jdk14</url>
-          <layout>default</layout>
-          <snapshotPolicy>always</snapshotPolicy>
-        </repository>
-      </repositories>
-    </profile>
-    -->
-
-    <!--
-     | Here is another profile, activated by the system property 'target-env' with a value of 'dev',
-     | which provides a specific path to the Tomcat instance. To use this, your plugin configuration
-     | might hypothetically look like:
-     |
-     | ...
-     | <plugin>
-     |   <groupId>org.myco.myplugins</groupId>
-     |   <artifactId>myplugin</artifactId>
-     |
-     |   <configuration>
-     |     <tomcatLocation>${tomcatPath}</tomcatLocation>
-     |   </configuration>
-     | </plugin>
-     | ...
-     |
-     | NOTE: If you just wanted to inject this configuration whenever someone set 'target-env' to
-     |       anything, you could just leave off the <value/> inside the activation-property.
-     |
-    <profile>
-      <id>env-dev</id>
-
-      <activation>
-        <property>
-          <name>target-env</name>
-          <value>dev</value>
-        </property>
-      </activation>
-
-      <properties>
-        <tomcatPath>/path/to/tomcat/instance</tomcatPath>
-      </properties>
-    </profile>
-    -->
-	
-	
-	<profile>
-		<id>jdk-1.8</id>
-		<activation>
-			<activeByDefault>true</activeByDefault>
-			<jdk>1.8</jdk>
-		</activation>
-		<properties>
-			<maven.compiler.source>1.8</maven.compiler.source>
-			<maven.compiler.target>1.8</maven.compiler.target>
-			<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
-		</properties>
-	</profile>
-  </profiles>
-
-  <!-- activeProfiles
-   | List of profiles that are active for all builds.
-   |
-  <activeProfiles>
-    <activeProfile>alwaysActiveProfile</activeProfile>
-    <activeProfile>anotherAlwaysActiveProfile</activeProfile>
-  </activeProfiles>
-  -->
-</settings>
diff --git a/hangzhoumesParent/common/pom.xml b/hangzhoumesParent/common/pom.xml
index ae22d4f..3a8a351 100644
--- a/hangzhoumesParent/common/pom.xml
+++ b/hangzhoumesParent/common/pom.xml
@@ -48,6 +48,12 @@
         </dependency>
 
         <dependency>
+            <groupId>com.github.yulichang</groupId>
+            <artifactId>mybatis-plus-join-boot-starter</artifactId>
+            <version>1.4.8</version>
+        </dependency>
+
+        <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
             <version>3.3.1</version>
@@ -170,12 +176,6 @@
             <groupId>com.alibaba</groupId>
             <artifactId>fastjson</artifactId>
             <version>1.2.33</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.github.yulichang</groupId>
-            <artifactId>mybatis-plus-join</artifactId>
-            <version>1.2.4</version>
         </dependency>
 
     </dependencies>
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
new file mode 100644
index 0000000..8e08002
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
@@ -0,0 +1,11 @@
+package com.mes.common.config;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/4/24 10:33
+ * @Description:
+ */
+public class Const {
+    public static final String DEFULT_PASSWORD = "123456";
+    public static final Long DEFULT_ROLE = 1L;
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Swagger2Config.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Swagger2Config.java
index 8a8dca4..0062ed2 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Swagger2Config.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Swagger2Config.java
@@ -7,13 +7,14 @@
 import springfox.documentation.builders.PathSelectors;
 import springfox.documentation.builders.RequestHandlerSelectors;
 import springfox.documentation.schema.ModelRef;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.service.Contact;
-import springfox.documentation.service.Parameter;
+import springfox.documentation.service.*;
 import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spi.service.contexts.SecurityContext;
 import springfox.documentation.spring.web.plugins.Docket;
 
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -46,46 +47,30 @@
                 .apis(RequestHandlerSelectors.basePackage("com.mes"))
                 .paths(PathSelectors.any())
                 .build()
-                .globalOperationParameters(pars);
+                .globalOperationParameters(pars)
+                .securitySchemes(Collections.EMPTY_LIST)
+                .securityContexts(Arrays.asList(securityContext()));
     }
 
-    @Bean
-    public Docket adminApiConfig() {
-        List<Parameter> pars = new ArrayList<>();
-        ParameterBuilder tokenPar = new ParameterBuilder();
-        tokenPar.name("adminId")
-                .description("鐢ㄦ埛token")
-                .defaultValue("1")
-                .modelRef(new ModelRef("string"))
-                .parameterType("header")
-                .required(false)
+    private SecurityContext securityContext() {
+        return SecurityContext.builder()
+                .securityReferences(defaultAuth())
+                .forPaths(PathSelectors.any())
                 .build();
-        pars.add(tokenPar.build());
-
-        return new Docket(DocumentationType.SWAGGER_2)
-                .groupName("adminApi")
-                .apiInfo(adminApiInfo())
-                .select()
-                //鍙樉绀篴dmin璺緞涓嬬殑椤甸潰
-                .apis(RequestHandlerSelectors.basePackage("com.mes"))
-                .paths(PathSelectors.any())
-                .build()
-                .globalOperationParameters(pars);
     }
+
+    private List<SecurityReference> defaultAuth() {
+        AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
+        AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
+        authorizationScopes[0] = authorizationScope;
+        return Arrays.asList(new SecurityReference("Authorization", authorizationScopes));
+    }
+
 
     private ApiInfo webApiInfo() {
         return new ApiInfoBuilder()
                 .title("缃戠珯-API鏂囨。")
                 .description("鏈枃妗f弿杩颁簡mes缃戠珯寰湇鍔℃帴鍙e畾涔�")
-                .version("1.0")
-                .contact(new Contact("zhan_py", "", ""))
-                .build();
-    }
-
-    private ApiInfo adminApiInfo() {
-        return new ApiInfoBuilder()
-                .title("鍚庡彴绠$悊绯荤粺-API鏂囨。")
-                .description("鏈枃妗f弿杩颁簡mes鍚庡彴绯荤粺鏈嶅姟鎺ュ彛瀹氫箟")
                 .version("1.0")
                 .contact(new Contact("zhan_py", "", ""))
                 .build();
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/entity/request/GeneralRequest.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/entity/request/GeneralRequest.java
new file mode 100644
index 0000000..d70b171
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/entity/request/GeneralRequest.java
@@ -0,0 +1,17 @@
+package com.mes.entity.request;
+
+import cn.hutool.db.Page;
+import lombok.Data;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/4/22 11:21
+ * @Description:
+ */
+@Data
+public class GeneralRequest {
+
+    private String key;
+
+    private Page page;
+}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/config/TokenWebSecurityConfig.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/config/TokenWebSecurityConfig.java
index e4a543e..e5f3071 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/config/TokenWebSecurityConfig.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/config/TokenWebSecurityConfig.java
@@ -2,23 +2,40 @@
 
 
 import com.mes.common.filter.JwtAuthenticationTokenFilter;
+import com.mes.common.handler.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.security.authentication.AuthenticationManager;
 import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
 import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
 import org.springframework.security.config.http.SessionCreationPolicy;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
 
 @Configuration
-//@EnableWebSecurity
+@EnableWebSecurity
 @EnableGlobalMethodSecurity(prePostEnabled = true)
 public class TokenWebSecurityConfig extends WebSecurityConfigurerAdapter {
     @Autowired
     private JwtAuthenticationTokenFilter jwtAuthenticationTokenFilter;
+    @Autowired
+    LoginFailureHandler loginFailureHandler;
+
+    @Autowired
+    LoginSuccessHandler loginSuccessHandler;
+
+    @Autowired
+    JwtAuthenticationEntryPoint jwtAuthenticationEntryPoint;
+
+    @Autowired
+    JwtAccessDeniedHandler jwtAccessDeniedHandler;
+
+    @Autowired
+    JwtLogoutSuccessHandler jwtLogoutSuccessHandler;
 
     @Bean
     public PasswordEncoder passwordEncoder() {
@@ -30,19 +47,42 @@
      */
     @Override
     protected void configure(HttpSecurity http) throws Exception {
-        http
-                //鍏抽棴csrf
-                .csrf().disable()
-                //涓嶉�氳繃Session鑾峰彇SecurityContext
-                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
+
+        http.cors().and().csrf().disable()
+
+                // 鐧诲綍閰嶇疆
+                .formLogin()
+                .successHandler(loginSuccessHandler)
+                .failureHandler(loginFailureHandler)
+
+                .and()
+                .logout()
+                .logoutSuccessHandler(jwtLogoutSuccessHandler)
+
+                // 绂佺敤session
+                .and()
+                .sessionManagement()
+                .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
+
+                // 閰嶇疆鎷︽埅瑙勫垯
                 .and()
                 .authorizeRequests()
-                // 瀵逛簬鐧诲綍鎺ュ彛 鍏佽鍖垮悕璁块棶
-                .antMatchers("/userinfo/login").anonymous()
-                .antMatchers("/hello").permitAll()
-                // 闄や笂闈㈠鐨勬墍鏈夎姹傚叏閮ㄩ渶瑕侀壌鏉冭璇�
-                .anyRequest().permitAll();
-//        http.addFilterBefore(jwtAuthenticationTokenFilter, UsernamePasswordAuthenticationFilter.class);
+                .antMatchers("/sys/user/login").anonymous()
+                .antMatchers("/swagger-ui.html").permitAll()
+                .antMatchers("/webjars/**").permitAll()
+                .antMatchers("/v2/**").permitAll()
+                .antMatchers("/swagger-resources/**").permitAll()
+                .anyRequest().authenticated()
+
+                // 寮傚父澶勭悊鍣�
+                .and()
+                .exceptionHandling()
+                .authenticationEntryPoint(jwtAuthenticationEntryPoint)
+                .accessDeniedHandler(jwtAccessDeniedHandler)
+
+                // 閰嶇疆鑷畾涔夌殑杩囨护鍣�
+                .and()
+                .addFilterBefore(jwtAuthenticationTokenFilter, UsernamePasswordAuthenticationFilter.class);
     }
 
     @Bean
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java
index 5be6d66..34416ba 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java
@@ -2,8 +2,9 @@
 
 import com.mes.common.utils.JwtUtil;
 import com.mes.common.utils.RedisUtil;
-import com.mes.menu.mapper.SysMenuMapper;
+import com.mes.common.utils.UserInfoUtils;
 import com.mes.userinfo.entity.LoginUser;
+import com.mes.userinfo.service.SysUserService;
 import io.jsonwebtoken.Claims;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@@ -36,7 +37,7 @@
     private RedisUtil redisUtil;
 
     @Resource
-    private SysMenuMapper menuMapper;
+    private SysUserService sysUserService;
 
     @Override
     protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
@@ -50,7 +51,7 @@
         //瑙f瀽token
         String userid;
         try {
-            Claims claims = JwtUtil.parseJWT(token);
+            Claims claims = JwtUtil.getClaimByToken(token);
             userid = claims.getSubject();
         } catch (Exception e) {
             e.printStackTrace();
@@ -60,10 +61,13 @@
         String redisKey = "login:" + userid;
         LoginUser loginUser = redisUtil.getCacheObject(redisKey);
         if (Objects.isNull(loginUser)) {
+            response.setHeader("token", "");
             throw new RuntimeException("鐢ㄦ埛鏈櫥褰�");
         }
+        //灏嗙敤鎴蜂俊鎭斁鍏ュ綋鍓嶇嚎绋�
+        UserInfoUtils.set(loginUser.getUser());
         //瀛樺叆SecurityContextHolder锛屼互渚涘悗闈㈢殑杩囨护鍣ㄤ娇鐢�
-        List<String> permissionKeyList = menuMapper.selectPermsByUserId(Long.parseLong(userid));
+        List<String> permissionKeyList = sysUserService.getUserAuthorityInfo(Long.parseLong(userid));
         List<GrantedAuthority> authorities = permissionKeyList.stream().
                 map(SimpleGrantedAuthority::new)
                 .collect(Collectors.toList());
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/AccessDeniedHandlerImpl.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/AccessDeniedHandlerImpl.java
deleted file mode 100644
index 302ff52..0000000
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/AccessDeniedHandlerImpl.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.mes.common.handler;
-
-import com.alibaba.fastjson.JSON;
-import com.mes.common.utils.WebUtils;
-import com.mes.utils.Result;
-import org.springframework.http.HttpStatus;
-import org.springframework.security.access.AccessDeniedException;
-import org.springframework.security.web.access.AccessDeniedHandler;
-import org.springframework.stereotype.Component;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-
-/**
- * @Author : zhoush
- * @Date: 2024/4/12 10:38
- * @Description:
- */
-@Component
-public class AccessDeniedHandlerImpl implements AccessDeniedHandler {
-    @Override
-    public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException, ServletException {
-        Result result = Result.error(HttpStatus.FORBIDDEN.value(), "鏉冮檺涓嶈冻");
-        String json = JSON.toJSONString(result);
-        WebUtils.renderString(response, json);
-
-    }
-}
\ No newline at end of file
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/AuthenticationEntryPointImpl.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/AuthenticationEntryPointImpl.java
deleted file mode 100644
index 6cf146f..0000000
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/AuthenticationEntryPointImpl.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.mes.common.handler;
-
-import com.alibaba.fastjson.JSON;
-import com.mes.common.utils.WebUtils;
-import com.mes.utils.Result;
-import org.springframework.http.HttpStatus;
-import org.springframework.security.core.AuthenticationException;
-import org.springframework.security.web.AuthenticationEntryPoint;
-import org.springframework.stereotype.Component;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-
-/**
- * @Author : zhoush
- * @Date: 2024/4/12 10:38
- * @Description:
- */
-@Component
-public class AuthenticationEntryPointImpl implements AuthenticationEntryPoint {
-    @Override
-    public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException {
-        Result result = Result.error(HttpStatus.UNAUTHORIZED.value(), "璁よ瘉澶辫触璇烽噸鏂扮櫥褰�");
-        String json = JSON.toJSONString(result);
-        WebUtils.renderString(response, json);
-    }
-}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtAccessDeniedHandler.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtAccessDeniedHandler.java
new file mode 100644
index 0000000..aad53aa
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtAccessDeniedHandler.java
@@ -0,0 +1,35 @@
+package com.mes.common.handler;
+
+import cn.hutool.json.JSONUtil;
+import com.mes.utils.Result;
+import org.springframework.http.HttpStatus;
+import org.springframework.security.access.AccessDeniedException;
+import org.springframework.security.web.access.AccessDeniedHandler;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+@Component
+public class JwtAccessDeniedHandler implements AccessDeniedHandler {
+
+	@Override
+	public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException, ServletException {
+
+		response.setContentType("application/json;charset=UTF-8");
+		response.setStatus(HttpServletResponse.SC_FORBIDDEN);
+
+		ServletOutputStream outputStream = response.getOutputStream();
+
+		Result result = Result.error(HttpStatus.FORBIDDEN.value(), "鏉冮檺涓嶈冻");
+
+		outputStream.write(JSONUtil.toJsonStr(result).getBytes("UTF-8"));
+
+		outputStream.flush();
+		outputStream.close();
+
+	}
+}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtAuthenticationEntryPoint.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtAuthenticationEntryPoint.java
new file mode 100644
index 0000000..a95ca0c
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtAuthenticationEntryPoint.java
@@ -0,0 +1,33 @@
+package com.mes.common.handler;
+
+import cn.hutool.json.JSONUtil;
+import com.mes.utils.Result;
+import org.springframework.http.HttpStatus;
+import org.springframework.security.core.AuthenticationException;
+import org.springframework.security.web.AuthenticationEntryPoint;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+@Component
+public class JwtAuthenticationEntryPoint implements AuthenticationEntryPoint {
+
+	@Override
+	public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException {
+
+		response.setContentType("application/json;charset=UTF-8");
+		response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
+		ServletOutputStream outputStream = response.getOutputStream();
+
+		Result result = Result.error(HttpStatus.UNAUTHORIZED.value(), "璁よ瘉澶辫触璇烽噸鏂扮櫥褰�");
+
+		outputStream.write(JSONUtil.toJsonStr(result).getBytes("UTF-8"));
+
+		outputStream.flush();
+		outputStream.close();
+	}
+}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtLogoutSuccessHandler.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtLogoutSuccessHandler.java
new file mode 100644
index 0000000..3757d4d
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtLogoutSuccessHandler.java
@@ -0,0 +1,40 @@
+package com.mes.common.handler;
+
+import cn.hutool.json.JSONUtil;
+import com.mes.utils.Result;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
+import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+@Component
+public class JwtLogoutSuccessHandler implements LogoutSuccessHandler {
+
+	private static final String header = "Authorization";
+
+	@Override
+	public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
+
+		if (authentication != null) {
+			new SecurityContextLogoutHandler().logout(request, response, authentication);
+		}
+
+		response.setContentType("application/json;charset=UTF-8");
+		ServletOutputStream outputStream = response.getOutputStream();
+
+		response.setHeader(header, "");
+
+		Result result = Result.success("");
+
+		outputStream.write(JSONUtil.toJsonStr(result).getBytes("UTF-8"));
+
+		outputStream.flush();
+		outputStream.close();
+	}
+}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/LoginFailureHandler.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/LoginFailureHandler.java
new file mode 100644
index 0000000..72abdbe
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/LoginFailureHandler.java
@@ -0,0 +1,31 @@
+package com.mes.common.handler;
+
+import cn.hutool.json.JSONUtil;
+import com.mes.utils.Result;
+import org.springframework.security.core.AuthenticationException;
+import org.springframework.security.web.authentication.AuthenticationFailureHandler;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+@Component
+public class LoginFailureHandler implements AuthenticationFailureHandler {
+
+	@Override
+	public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException {
+
+		response.setContentType("application/json;charset=UTF-8");
+		ServletOutputStream outputStream = response.getOutputStream();
+
+		Result result = Result.error("鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒");
+
+		outputStream.write(JSONUtil.toJsonStr(result).getBytes("UTF-8"));
+
+		outputStream.flush();
+		outputStream.close();
+	}
+}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/LoginSuccessHandler.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/LoginSuccessHandler.java
new file mode 100644
index 0000000..c5458bb
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/LoginSuccessHandler.java
@@ -0,0 +1,38 @@
+package com.mes.common.handler;
+
+import cn.hutool.json.JSONUtil;
+import com.mes.common.utils.JwtUtil;
+import com.mes.utils.Result;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+@Component
+public class LoginSuccessHandler implements AuthenticationSuccessHandler {
+
+	private static final String header = "Authorization";
+
+	@Override
+	public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
+		response.setContentType("application/json;charset=UTF-8");
+		ServletOutputStream outputStream = response.getOutputStream();
+
+		// 鐢熸垚jwt锛屽苟鏀剧疆鍒拌姹傚ご涓�
+		String jwt = JwtUtil.generateToken(authentication.getName());
+		response.setHeader(header, jwt);
+
+		Result result = Result.success("");
+
+		outputStream.write(JSONUtil.toJsonStr(result).getBytes("UTF-8"));
+
+		outputStream.flush();
+		outputStream.close();
+	}
+
+}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/JwtUtil.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/JwtUtil.java
index 8c8f0d9..ea033e3 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/JwtUtil.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/JwtUtil.java
@@ -2,119 +2,54 @@
 
 
 import io.jsonwebtoken.Claims;
-import io.jsonwebtoken.JwtBuilder;
 import io.jsonwebtoken.Jwts;
 import io.jsonwebtoken.SignatureAlgorithm;
+import lombok.Data;
 
-import javax.crypto.SecretKey;
-import javax.crypto.spec.SecretKeySpec;
-import java.util.Base64;
 import java.util.Date;
-import java.util.UUID;
 
 /**
  * @Author : zhoush
  * @Date: 2024/4/9 19:15
  * @Description:
  */
+@Data
 public class JwtUtil {
 
-    //鏈夋晥鏈熶负
-    public static final Long JWT_TTL = 60 * 60 * 1000L;// 60 * 60 *1000  涓�涓皬鏃�
-    //璁剧疆绉橀挜鏄庢枃
-    public static final String JWT_KEY = "sangeng";
+    private static final long expire = 60 * 60 * 1000L;
+    private static final String secret = "beibo";
+    private static final String header = "Authorization";
 
-    public static String getUUID() {
-        String token = UUID.randomUUID().toString().replaceAll("-", "");
-        return token;
-    }
+    // 鐢熸垚jwt
+    public static String generateToken(String username) {
 
-    /**
-     * 鐢熸垚jtw
-     *
-     * @param subject token涓瀛樻斁鐨勬暟鎹紙json鏍煎紡锛�
-     * @return
-     */
-    public static String createJWT(String subject) {
-        JwtBuilder builder = getJwtBuilder(subject, null, getUUID());// 璁剧疆杩囨湡鏃堕棿
-        return builder.compact();
-    }
+        Date nowDate = new Date();
+        Date expireDate = new Date(nowDate.getTime() + 1000 * expire);
 
-    /**
-     * 鐢熸垚jtw
-     *
-     * @param subject   token涓瀛樻斁鐨勬暟鎹紙json鏍煎紡锛�
-     * @param ttlMillis token瓒呮椂鏃堕棿
-     * @return
-     */
-    public static String createJWT(String subject, Long ttlMillis) {
-        JwtBuilder builder = getJwtBuilder(subject, ttlMillis, getUUID());// 璁剧疆杩囨湡鏃堕棿
-        return builder.compact();
-    }
-
-    private static JwtBuilder getJwtBuilder(String subject, Long ttlMillis, String uuid) {
-        SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
-        SecretKey secretKey = generalKey();
-        long nowMillis = System.currentTimeMillis();
-        Date now = new Date(nowMillis);
-        if (ttlMillis == null) {
-            ttlMillis = JwtUtil.JWT_TTL;
-        }
-        long expMillis = nowMillis + ttlMillis;
-        Date expDate = new Date(expMillis);
         return Jwts.builder()
-                .setId(uuid)              //鍞竴鐨処D
-                .setSubject(subject)   // 涓婚  鍙互鏄疛SON鏁版嵁
-                .setIssuer("sg")     // 绛惧彂鑰�
-                .setIssuedAt(now)      // 绛惧彂鏃堕棿
-                .signWith(signatureAlgorithm, secretKey) //浣跨敤HS256瀵圭О鍔犲瘑绠楁硶绛惧悕, 绗簩涓弬鏁颁负绉橀挜
-                .setExpiration(expDate);
+                .setHeaderParam("typ", "JWT")
+                .setSubject(username)
+                .setIssuedAt(nowDate)
+                .setExpiration(expireDate)// 7澶╅亷鏈�
+                .signWith(SignatureAlgorithm.HS512, secret)
+                .compact();
     }
 
-    /**
-     * 鍒涘缓token
-     *
-     * @param id
-     * @param subject
-     * @param ttlMillis
-     * @return
-     */
-    public static String createJWT(String id, String subject, Long ttlMillis) {
-        JwtBuilder builder = getJwtBuilder(subject, ttlMillis, id);// 璁剧疆杩囨湡鏃堕棿
-        return builder.compact();
+    // 瑙f瀽jwt
+    public static Claims getClaimByToken(String jwt) {
+        try {
+            return Jwts.parser()
+                    .setSigningKey(secret)
+                    .parseClaimsJws(jwt)
+                    .getBody();
+        } catch (Exception e) {
+            return null;
+        }
     }
 
-    public static void main(String[] args) throws Exception {
-        String token = "eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJjYWM2ZDVhZi1mNjVlLTQ0MDAtYjcxMi0zYWEwOGIyOTIwYjQiLCJzdWIiOiJzZyIsImlzcyI6InNnIiwiaWF0IjoxNjM4MTA2NzEyLCJleHAiOjE2MzgxMTAzMTJ9.JVsSbkP94wuczb4QryQbAke3ysBDIL5ou8fWsbt_ebg";
-        Claims claims = parseJWT(token);
-        System.out.println(claims);
+    // jwt鏄惁杩囨湡
+    public static boolean isTokenExpired(Claims claims) {
+        return claims.getExpiration().before(new Date());
     }
-
-    /**
-     * 鐢熸垚鍔犲瘑鍚庣殑绉橀挜 secretKey
-     *
-     * @return
-     */
-    public static SecretKey generalKey() {
-        byte[] encodedKey = Base64.getDecoder().decode(JwtUtil.JWT_KEY);
-        SecretKey key = new SecretKeySpec(encodedKey, 0, encodedKey.length, "AES");
-        return key;
-    }
-
-    /**
-     * 瑙f瀽
-     *
-     * @param jwt
-     * @return
-     * @throws Exception
-     */
-    public static Claims parseJWT(String jwt) throws Exception {
-        SecretKey secretKey = generalKey();
-        return Jwts.parser()
-                .setSigningKey(secretKey)
-                .parseClaimsJws(jwt)
-                .getBody();
-    }
-
 
 }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/RedisUtil.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/RedisUtil.java
index e097010..d11f2bc 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/RedisUtil.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/RedisUtil.java
@@ -217,4 +217,19 @@
     public Collection<String> keys(final String pattern) {
         return redisTemplate.keys(pattern);
     }
+
+    /**
+     * 鍒ゆ柇key鏄惁瀛樺湪
+     *
+     * @param key 閿�
+     * @return true 瀛樺湪 false涓嶅瓨鍦�
+     */
+    public boolean hasKey(String key) {
+        try {
+            return redisTemplate.hasKey(key);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/UserInfoUtils.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/UserInfoUtils.java
new file mode 100644
index 0000000..292797c
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/UserInfoUtils.java
@@ -0,0 +1,26 @@
+package com.mes.common.utils;
+
+import com.mes.userinfo.entity.SysUser;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/4/25 15:41
+ * @Description:
+ */
+public class UserInfoUtils {
+    private static InheritableThreadLocal<SysUser> tokenPool = new InheritableThreadLocal<SysUser>();
+
+    public static SysUser get() {
+        return tokenPool.get();
+    }
+
+    public static void set(SysUser user) {
+        tokenPool.set(user);
+    }
+
+    public static void remove() {
+        if (get() != null) {
+            tokenPool.remove();
+        }
+    }
+}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/config/TokenWebSecurityConfig.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/config/TokenWebSecurityConfig.java
deleted file mode 100644
index 610451e..0000000
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/config/TokenWebSecurityConfig.java
+++ /dev/null
@@ -1,69 +0,0 @@
-//package com.mes.config;
-//
-//
-//import com.mes.filter.TokenAuthFilter;
-//import com.mes.filter.TokenLoginFilter;
-//import com.mes.security.DefaultPasswordEncoder;
-//import com.mes.security.TokenLogoutHandler;
-//import com.mes.security.TokenManager;
-//import com.mes.security.UnauthEntryPoint;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.context.annotation.Configuration;
-//import org.springframework.data.redis.core.RedisTemplate;
-//import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
-//import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
-//import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-//import org.springframework.security.config.annotation.web.builders.WebSecurity;
-//import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-//import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
-//import org.springframework.security.core.userdetails.UserDetailsService;
-//
-//@Configuration
-//@EnableWebSecurity
-//@EnableGlobalMethodSecurity(prePostEnabled = true)
-//public class TokenWebSecurityConfig extends WebSecurityConfigurerAdapter {
-//
-//    private TokenManager tokenManager;
-//    private RedisTemplate redisTemplate;
-//    private DefaultPasswordEncoder defaultPasswordEncoder;
-//    private UserDetailsService userDetailsService;
-//
-//    @Autowired
-//    public TokenWebSecurityConfig(UserDetailsService userDetailsService, DefaultPasswordEncoder defaultPasswordEncoder,
-//                                  TokenManager tokenManager, RedisTemplate redisTemplate) {
-//        this.userDetailsService = userDetailsService;
-//        this.defaultPasswordEncoder = defaultPasswordEncoder;
-//        this.tokenManager = tokenManager;
-//        this.redisTemplate = redisTemplate;
-//    }
-//
-//    /**
-//     * 閰嶇疆璁剧疆
-//     * @param http
-//     * @throws Exception
-//     */
-//    //璁剧疆閫�鍑虹殑鍦板潃鍜宼oken锛宺edis鎿嶄綔鍦板潃
-//    @Override
-//    protected void configure(HttpSecurity http) throws Exception {
-//        http.exceptionHandling()
-//                .authenticationEntryPoint(new UnauthEntryPoint())//娌℃湁鏉冮檺璁块棶
-//                .and().csrf().disable()
-//                .authorizeRequests()
-//                .anyRequest().authenticated()
-//                .and().logout().logoutUrl("/admin/acl/index/logout")//閫�鍑鸿矾寰�
-//                .addLogoutHandler(new TokenLogoutHandler(tokenManager,redisTemplate)).and()
-//                .addFilter(new TokenLoginFilter(authenticationManager(), tokenManager, redisTemplate))
-//                .addFilter(new TokenAuthFilter(authenticationManager(), tokenManager, redisTemplate)).httpBasic();
-//    }
-//
-//    //璋冪敤userDetailsService鍜屽瘑鐮佸鐞�
-//    @Override
-//    public void configure(AuthenticationManagerBuilder auth) throws Exception {
-//        auth.userDetailsService(userDetailsService).passwordEncoder(defaultPasswordEncoder);
-//    }
-//    //涓嶈繘琛岃璇佺殑璺緞锛屽彲浠ョ洿鎺ヨ闂�
-//    @Override
-//    public void configure(WebSecurity web) throws Exception {
-//        web.ignoring().antMatchers("/api/**");
-//    }
-//}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/entity/SecurityUser.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/entity/SecurityUser.java
deleted file mode 100644
index b0f9c1a..0000000
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/entity/SecurityUser.java
+++ /dev/null
@@ -1,73 +0,0 @@
-//package com.mes.entity;
-//
-//import lombok.Data;
-//import org.springframework.security.core.GrantedAuthority;
-//import org.springframework.security.core.authority.SimpleGrantedAuthority;
-//import org.springframework.security.core.userdetails.UserDetails;
-//import org.springframework.util.StringUtils;
-//
-//import java.util.ArrayList;
-//import java.util.Collection;
-//import java.util.List;
-//
-//@Data
-//public class SecurityUser implements UserDetails {
-//
-//    //褰撳墠鐧诲綍鐢ㄦ埛
-//    private transient User currentUserInfo;
-//
-//    //褰撳墠鏉冮檺
-//    private List<String> permissionValueList;
-//
-//    public SecurityUser() {
-//    }
-//
-//    public SecurityUser(User user) {
-//        if (user != null) {
-//            this.currentUserInfo = user;
-//        }
-//    }
-//
-//    @Override
-//    public Collection<? extends GrantedAuthority> getAuthorities() {
-//        Collection<GrantedAuthority> authorities = new ArrayList<>();
-//        for(String permissionValue : permissionValueList) {
-//            if(StringUtils.isEmpty(permissionValue)) continue;
-//            SimpleGrantedAuthority authority = new SimpleGrantedAuthority(permissionValue);
-//            authorities.add(authority);
-//        }
-//
-//        return authorities;
-//    }
-//
-//    @Override
-//    public String getPassword() {
-//        return currentUserInfo.getPassword();
-//    }
-//
-//    @Override
-//    public String getUsername() {
-//        return currentUserInfo.getUsername();
-//    }
-//
-//    @Override
-//    public boolean isAccountNonExpired() {
-//        return true;
-//    }
-//
-//    @Override
-//    public boolean isAccountNonLocked() {
-//        return true;
-//    }
-//
-//    @Override
-//    public boolean isCredentialsNonExpired() {
-//        return true;
-//    }
-//
-//    @Override
-//    public boolean isEnabled() {
-//        return true;
-//    }
-//}
-//
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/entity/User.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/entity/User.java
deleted file mode 100644
index 2e3ec7e..0000000
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/entity/User.java
+++ /dev/null
@@ -1,31 +0,0 @@
-//package com.mes.entity;
-//
-//import io.swagger.annotations.ApiModel;
-//import io.swagger.annotations.ApiModelProperty;
-//import lombok.Data;
-//
-//import java.io.Serializable;
-//
-//@Data
-//@ApiModel(description = "鐢ㄦ埛瀹炰綋绫�")
-//public class User implements Serializable {
-//
-//    private static final long serialVersionUID = 1L;
-//
-//    @ApiModelProperty(value = "寰俊openid")
-//    private String username;
-//
-//    @ApiModelProperty(value = "瀵嗙爜")
-//    private String password;
-//
-//    @ApiModelProperty(value = "鏄电О")
-//    private String nickName;
-//
-//    @ApiModelProperty(value = "鐢ㄦ埛澶村儚")
-//    private String salt;
-//
-//    @ApiModelProperty(value = "鐢ㄦ埛绛惧悕")
-//    private String token;
-//
-//}
-//
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/filter/TokenAuthFilter.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/filter/TokenAuthFilter.java
deleted file mode 100644
index 5b1fd72..0000000
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/filter/TokenAuthFilter.java
+++ /dev/null
@@ -1,60 +0,0 @@
-//package com.mes.filter;
-//
-//import com.mes.security.TokenManager;
-//import org.springframework.data.redis.core.RedisTemplate;
-//import org.springframework.security.authentication.AuthenticationManager;
-//import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-//import org.springframework.security.core.GrantedAuthority;
-//import org.springframework.security.core.authority.SimpleGrantedAuthority;
-//import org.springframework.security.core.context.SecurityContextHolder;
-//import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
-//
-//import javax.servlet.FilterChain;
-//import javax.servlet.ServletException;
-//import javax.servlet.http.HttpServletRequest;
-//import javax.servlet.http.HttpServletResponse;
-//import java.io.IOException;
-//import java.util.ArrayList;
-//import java.util.Collection;
-//import java.util.List;
-//
-//public class TokenAuthFilter extends BasicAuthenticationFilter {
-//
-//    private TokenManager tokenManager;
-//    private RedisTemplate redisTemplate;
-//    public TokenAuthFilter(AuthenticationManager authenticationManager,TokenManager tokenManager,RedisTemplate redisTemplate) {
-//        super(authenticationManager);
-//        this.tokenManager = tokenManager;
-//        this.redisTemplate = redisTemplate;
-//    }
-//
-//    @Override
-//    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException {
-//        //鑾峰彇褰撳墠璁よ瘉鎴愬姛鐢ㄦ埛鏉冮檺淇℃伅
-//        UsernamePasswordAuthenticationToken authRequest = getAuthentication(request);
-//        //鍒ゆ柇濡傛灉鏈夋潈闄愪俊鎭紝鏀惧埌鏉冮檺涓婁笅鏂囦腑
-//        if(authRequest != null) {
-//            SecurityContextHolder.getContext().setAuthentication(authRequest);
-//        }
-//        chain.doFilter(request,response);
-//    }
-//
-//    private UsernamePasswordAuthenticationToken getAuthentication(HttpServletRequest request) {
-//        //浠巋eader鑾峰彇token
-//        String token = request.getHeader("token");
-//        if(token != null) {
-//            //浠巘oken鑾峰彇鐢ㄦ埛鍚�
-//            String username = tokenManager.getUserInfoFromToken(token);
-//            //浠巖edis鑾峰彇瀵瑰簲鏉冮檺鍒楄〃
-//            List<String> permissionValueList = (List<String>)redisTemplate.opsForValue().get(username);
-//            Collection<GrantedAuthority> authority = new ArrayList<>();
-//            for(String permissionValue : permissionValueList) {
-//                SimpleGrantedAuthority auth = new SimpleGrantedAuthority(permissionValue);
-//                authority.add(auth);
-//            }
-//            return new UsernamePasswordAuthenticationToken(username,token,authority);
-//        }
-//        return null;
-//    }
-//
-//}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/filter/TokenLoginFilter.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/filter/TokenLoginFilter.java
deleted file mode 100644
index d3f5f4c..0000000
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/filter/TokenLoginFilter.java
+++ /dev/null
@@ -1,74 +0,0 @@
-//package com.mes.filter;
-//
-//import com.fasterxml.jackson.databind.ObjectMapper;
-//import com.mes.utils.Result;
-//import com.mes.entity.SecurityUser;
-//import com.mes.entity.User;
-//import com.mes.security.TokenManager;
-//import com.mes.utils.ResponseUtil;
-//import org.springframework.data.redis.core.RedisTemplate;
-//import org.springframework.security.authentication.AuthenticationManager;
-//import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-//import org.springframework.security.core.Authentication;
-//import org.springframework.security.core.AuthenticationException;
-//import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
-//import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
-//
-//import javax.servlet.FilterChain;
-//import javax.servlet.ServletException;
-//import javax.servlet.http.HttpServletRequest;
-//import javax.servlet.http.HttpServletResponse;
-//import java.io.IOException;
-//import java.util.ArrayList;
-//
-//public class TokenLoginFilter extends UsernamePasswordAuthenticationFilter {
-//
-//    private TokenManager tokenManager;
-//    private RedisTemplate redisTemplate;
-//    private AuthenticationManager authenticationManager;
-//
-//    public TokenLoginFilter(AuthenticationManager authenticationManager, TokenManager tokenManager, RedisTemplate redisTemplate) {
-//        this.authenticationManager = authenticationManager;
-//        this.tokenManager = tokenManager;
-//        this.redisTemplate = redisTemplate;
-//        this.setPostOnly(false);
-//        this.setRequiresAuthenticationRequestMatcher(new AntPathRequestMatcher("/admin/acl/login","POST"));
-//    }
-//
-//    //1 鑾峰彇琛ㄥ崟鎻愪氦鐢ㄦ埛鍚嶅拰瀵嗙爜
-//    @Override
-//    public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response)
-//            throws AuthenticationException {
-//        //鑾峰彇琛ㄥ崟鎻愪氦鏁版嵁
-//        try {
-//            User user = new ObjectMapper().readValue(request.getInputStream(), User.class);
-//            return authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(user.getUsername(),user.getPassword(),
-//                    new ArrayList<>()));
-//        } catch (IOException e) {
-//            e.printStackTrace();
-//            throw new RuntimeException();
-//        }
-//    }
-//
-//    //2 璁よ瘉鎴愬姛璋冪敤鐨勬柟娉�
-//    @Override
-//    protected void successfulAuthentication(HttpServletRequest request,
-//                                            HttpServletResponse response, FilterChain chain, Authentication authResult)
-//            throws IOException, ServletException {
-//        //璁よ瘉鎴愬姛锛屽緱鍒拌璇佹垚鍔熶箣鍚庣敤鎴蜂俊鎭�
-//        SecurityUser user = (SecurityUser)authResult.getPrincipal();
-//        //鏍规嵁鐢ㄦ埛鍚嶇敓鎴恡oken
-//        String token = tokenManager.createToken(user.getCurrentUserInfo().getUsername());
-//        //鎶婄敤鎴峰悕绉板拰鐢ㄦ埛鏉冮檺鍒楄〃鏀惧埌redis
-//        redisTemplate.opsForValue().set(user.getCurrentUserInfo().getUsername(),user.getPermissionValueList());
-//        //杩斿洖token
-//        ResponseUtil.out(response, Result.success(token));
-//    }
-//
-//    //3 璁よ瘉澶辫触璋冪敤鐨勬柟娉�
-//    @Override
-//    protected void unsuccessfulAuthentication(HttpServletRequest request, HttpServletResponse response, AuthenticationException failed)
-//            throws IOException, ServletException {
-//        ResponseUtil.out(response, Result.error());
-//    }
-//}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/controller/SysMenuController.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/controller/SysMenuController.java
index 131b179..4ca0cb9 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/controller/SysMenuController.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/controller/SysMenuController.java
@@ -1,38 +1,76 @@
 package com.mes.menu.controller;
 
-
+import com.mes.entity.request.GeneralRequest;
 import com.mes.menu.entity.SysMenu;
 import com.mes.menu.service.SysMenuService;
 import com.mes.utils.Result;
-import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
+import java.util.Map;
 
 /**
- * <p>
- * 鑿滃崟琛�
- * </p>
- *
  * @author zhoush
  * @since 2024-04-11
  */
-@ApiModel("鑾峰彇鑿滃崟淇℃伅")
+@Api(description = "鑿滃崟绠$悊")
 @RestController
-@RequestMapping("/menu/sysMenu")
+@RequestMapping("/sys/menu")
 public class SysMenuController {
 
     @Autowired
-    SysMenuService sysMenuService;
+    private SysMenuService sysMenuService;
+
+    @ApiOperation("鏂板鑿滃崟")
+    @PostMapping("/save")
+//    @PreAuthorize("hasAuthority('sys:menu:save')")
+    public Result save(@Validated @RequestBody SysMenu sysMenu) {
+        return Result.success(sysMenuService.save(sysMenu));
+    }
+
+    @ApiOperation("淇敼鑿滃崟淇℃伅")
+    @PostMapping("/updateMenu")
+//    @PreAuthorize("hasAuthority('sys:menu:update')")
+    public Result updateMenu(@Validated @RequestBody SysMenu sysMenu) {
+        sysMenuService.updateMenu(sysMenu);
+        return Result.success(sysMenu);
+    }
 
     @ApiOperation("鑾峰彇鐢ㄦ埛鏈夋潈闄愮殑鎵�鏈夎彍鍗�")
-    @GetMapping("/list")
-    public Result<List<SysMenu>> getMenuTree() {
-        return Result.success(sysMenuService.getMenuTree());
+    @GetMapping("/getMenuTree")
+    public Result<List<SysMenu>> getMenuTree(GeneralRequest request) {
+        return Result.success(sysMenuService.getMenuTree(request));
+    }
+
+    @ApiOperation("鑾峰彇鐢ㄦ埛鐨勬潈闄�")
+    @GetMapping("/getAuthorityInfo")
+    public Result<List<String>> getAuthorityInfo() {
+        return Result.success(sysMenuService.getAuthorityInfo());
+    }
+
+
+    @ApiOperation("鐢ㄦ埛褰撳墠鐢ㄦ埛鐨勮彍鍗曞拰鏉冮檺淇℃伅")
+    @GetMapping("/nav")
+    public Result<Map<Object, Object>> nav() {
+        return Result.success(sysMenuService.nav());
+    }
+
+    @ApiOperation("鍒犻櫎鑿滃崟")
+    @PostMapping("/deleteMenu")
+//    @PreAuthorize("hasAuthority('sys:menu:delete')")
+    public Result<String> deleteMenu(Long menuId) {
+        return Result.success(sysMenuService.deleteMenu(menuId));
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎鑿滃崟")
+    @PostMapping("/batchDeleteMenu")
+//    @PreAuthorize("hasAuthority('sys:menu:delete')")
+    public Result<String> batchDeleteMenu(@RequestBody List<Long> menuIds) {
+        return Result.success(sysMenuService.batchDeleteMenu(menuIds));
     }
 
 }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/entity/SysMenu.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/entity/SysMenu.java
index 9ae6597..37476c6 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/entity/SysMenu.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/entity/SysMenu.java
@@ -30,12 +30,12 @@
      * 鑷id
      */
     @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
+    private Long id;
 
     /**
      * 鐖秈d
      */
-    private Integer parentId;
+    private Long parentId;
 
     /**
      * 妯″潡鍚嶇О
@@ -73,6 +73,11 @@
     private Date createTime;
 
     /**
+     * 鏉冮檺
+     */
+    private String perms;
+
+    /**
      * 瀛愯彍鍗�
      */
     @TableField(exist = false)
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/mapper/SysMenuMapper.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/mapper/SysMenuMapper.java
index 04fd616..b1ef2d6 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/mapper/SysMenuMapper.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/mapper/SysMenuMapper.java
@@ -1,6 +1,6 @@
 package com.mes.menu.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.menu.entity.SysMenu;
 import org.apache.ibatis.annotations.Mapper;
 
@@ -15,7 +15,7 @@
  * @since 2024-04-11
  */
 @Mapper
-public interface SysMenuMapper extends BaseMapper<SysMenu> {
+public interface SysMenuMapper extends MPJBaseMapper<SysMenu> {
 
     List<String> selectPermsByUserId(long parseLong);
 }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/SysMenuService.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/SysMenuService.java
index 3b77a2e..014d1cd 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/SysMenuService.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/SysMenuService.java
@@ -1,9 +1,11 @@
 package com.mes.menu.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.mes.entity.request.GeneralRequest;
 import com.mes.menu.entity.SysMenu;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -15,5 +17,50 @@
  */
 public interface SysMenuService extends IService<SysMenu> {
 
-    List<SysMenu> getMenuTree();
+    /**
+     * 鏇存柊鑿滃崟淇℃伅
+     *
+     * @param menu
+     * @return
+     */
+    SysMenu updateMenu(SysMenu menu);
+
+    /**
+     * 鑾峰彇鐢ㄦ埛鏈夋潈闄愮殑鑿滃崟鏍�
+     *
+     * @return
+     */
+    List<SysMenu> getMenuTree(GeneralRequest request);
+
+    /**
+     * 鑾峰彇鐢ㄦ埛鐨勬潈闄�
+     *
+     * @return
+     */
+    List<String> getAuthorityInfo();
+
+
+    /**
+     * 鑾峰彇鐢ㄦ埛鑿滃崟鍙婃潈闄愪俊鎭�
+     *
+     * @return
+     */
+    Map<Object, Object> nav();
+
+    /**
+     * 鍒犻櫎鑿滃崟淇℃伅
+     *
+     * @param menuId
+     * @return
+     */
+    String deleteMenu(Long menuId);
+
+    /**
+     * 鎵归噺鍒犻櫎鑿滃崟淇℃伅
+     *
+     * @param menuIds
+     * @return
+     */
+    String batchDeleteMenu(List<Long> menuIds);
+
 }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java
index 8527a36..b4d0fc6 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java
@@ -1,14 +1,28 @@
 package com.mes.menu.service.impl;
 
+import cn.hutool.core.map.MapUtil;
 import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.mes.common.utils.UserInfoUtils;
+import com.mes.entity.request.GeneralRequest;
 import com.mes.menu.entity.SysMenu;
 import com.mes.menu.mapper.SysMenuMapper;
 import com.mes.menu.service.SysMenuService;
+import com.mes.role.entity.SysRoleMenu;
+import com.mes.role.service.SysRoleMenuService;
+import com.mes.userinfo.entity.SysUser;
+import com.mes.userinfo.entity.SysUserRole;
+import com.mes.userinfo.mapper.SysUserRoleMapper;
+import com.mes.userinfo.service.SysUserService;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -23,10 +37,78 @@
 @Slf4j
 public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> implements SysMenuService {
 
+    @Autowired
+    SysUserService sysUserService;
+
+    @Autowired
+    SysUserRoleMapper sysUserRoleMapper;
+
+    @Autowired
+    SysRoleMenuService sysRoleMenuService;
+
     @Override
-    public List<SysMenu> getMenuTree() {
-        List<SysMenu> menuList = this.baseMapper.selectList(null);
+    public SysMenu updateMenu(SysMenu menu) {
+        baseMapper.updateById(menu);
+        // 娓呴櫎鎵�鏈変笌璇ヨ彍鍗曠浉鍏崇殑鏉冮檺缂撳瓨
+        sysUserService.clearUserAuthorityInfoByMenuId(menu.getId());
+        return menu;
+    }
+
+    @Override
+    public List<SysMenu> getMenuTree(GeneralRequest request) {
+        //todo:闇�瑕佸厛鑾峰彇鐢ㄦ埛鐨勮鑹诧紝瑙掕壊涓嬬殑鑿滃崟鏉冮檺锛屾嬁鍒拌彍鍗昳d鑾峰彇鎵�鏈夎彍鍗�
+        SysUser user = UserInfoUtils.get();
+        MPJLambdaWrapper<SysUserRole> wrapper = new MPJLambdaWrapper<>();
+
+        wrapper.selectAll(SysMenu.class).distinct()
+                .leftJoin(SysUser.class, SysUser::getId, SysUserRole::getUserId)
+                .leftJoin(SysRoleMenu.class, SysRoleMenu::getRoleId, SysUserRole::getRoleId)
+                .leftJoin(SysMenu.class, SysMenu::getId, SysRoleMenu::getMenuId)
+                .eq(SysUser::getId, user.getId())
+                .like(StringUtils.isNotBlank(request.getKey()), SysMenu::getMenuName, request.getKey());
+
+        List<SysMenu> menuList = sysUserRoleMapper.selectJoinList(SysMenu.class, wrapper);
         return create(menuList);
+    }
+
+    @Override
+    public List<String> getAuthorityInfo() {
+        SysUser user = UserInfoUtils.get();
+        log.info("鑾峰彇鐢ㄦ埛淇℃伅锛岀敤鎴峰悕涓簕}", user);
+        // 鑾峰彇鏉冮檺淇℃伅
+        // ROLE_admin,ROLE_normal,sys:user:list,....
+        return sysUserService.getUserAuthorityInfo(user.getId());
+    }
+
+    @Override
+    public Map<Object, Object> nav() {
+        List<SysMenu> menuTree = getMenuTree(new GeneralRequest());
+        List<String> authorityInfo = getAuthorityInfo();
+        return MapUtil.builder().put("authoritys", authorityInfo)
+                .put("tree", menuTree).map();
+    }
+
+    @Override
+    public String deleteMenu(Long menuId) {
+        int count = this.count(new LambdaQueryWrapper<SysMenu>().eq(SysMenu::getParentId, menuId));
+        if (count > 0) {
+            return "鏃犳硶鍒犻櫎,璇峰厛鍒犻櫎瀛愯彍鍗�";
+        }
+
+        // 娓呴櫎鎵�鏈変笌璇ヨ彍鍗曠浉鍏崇殑鏉冮檺缂撳瓨
+        sysUserService.clearUserAuthorityInfoByMenuId(menuId);
+
+        this.removeById(menuId);
+
+        // 鍚屾鍒犻櫎涓棿鍏宠仈琛�
+        sysRoleMenuService.remove(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getMenuId, menuId));
+        return "鍒犻櫎鎴愬姛";
+    }
+
+    @Override
+    public String batchDeleteMenu(List<Long> menuIds) {
+        menuIds.stream().forEach(e -> deleteMenu(e));
+        return "鎵归噺鍒犻櫎鎴愬姛";
     }
 
 
@@ -56,10 +138,7 @@
     private List<SysMenu> getChildren(SysMenu menu, List<SysMenu> menus) {
         List<SysMenu> res = menus.stream()
                 .filter(item -> item.getParentId().equals(menu.getId()))
-                .map(item -> {
-                    item.setChildren(getChildren(item, menus));
-                    return item;
-                }).collect(Collectors.toList());
+                .collect(Collectors.toList());
         log.info("鑿滃崟鏍�:{}", JSONUtil.toJsonStr(res));
         return res;
     }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java
index 943ff7d..cb6da80 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java
@@ -1,20 +1,63 @@
 package com.mes.role.controller;
 
 
+import com.mes.entity.request.GeneralRequest;
+import com.mes.role.entity.SysRole;
+import com.mes.role.entity.vo.SysRoleVO;
+import com.mes.role.service.SysRoleService;
+import com.mes.utils.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+
 /**
- * <p>
- * 瑙掕壊琛� 鍓嶇鎺у埗鍣�
- * </p>
- *
  * @author zhoush
  * @since 2024-04-11
  */
+@Api(description = "瑙掕壊绠$悊")
 @RestController
-@RequestMapping("/role/sys-role")
+@RequestMapping("/sys/role")
 public class SysRoleController {
 
-}
+    @Autowired
+    private SysRoleService sysRoleService;
 
+    @ApiOperation("鏂板瑙掕壊鍙婅鑹蹭笅鐨勬潈闄愪俊鎭�")
+    @PostMapping("/saveRole")
+//    @PreAuthorize("hasAuthority('sys:role:save')")
+    public Result<SysRole> saveRole(@Validated @RequestBody SysRoleVO sysRoleVO) {
+        return Result.success(sysRoleService.saveRole(sysRoleVO));
+    }
+
+    @ApiOperation("缂栬緫瑙掕壊鍙婅鑹蹭笅鐨勬潈闄愪俊鎭�")
+    @PostMapping("/updateRole")
+//    @PreAuthorize("hasAuthority('sys:role:save')")
+    public Result<String> updateRole(@Validated @RequestBody SysRoleVO sysRoleVO) {
+        return Result.success(sysRoleService.updateRole(sysRoleVO));
+    }
+
+    @ApiOperation("鏌ヨ瑙掕壊鍙婅鑹蹭笅鐨勬潈闄愪俊鎭�")
+    @PostMapping("/queryRole")
+//    @PreAuthorize("hasAuthority('sys:role:save')")
+    public Result<List<SysRoleVO>> queryRole(@Validated @RequestBody GeneralRequest request) {
+        return Result.success(sysRoleService.queryRole(request));
+    }
+
+
+    @ApiOperation("鍒犻櫎瑙掕壊鍙婅鑹蹭笅鐨勬潈闄愪俊鎭�")
+    @PostMapping("/delete")
+//    @PreAuthorize("hasAuthority('sys:role:delete')")
+    @Transactional
+    public Result<String> deleteRole(@RequestBody List<Long> ids) {
+        return Result.success(sysRoleService.deleteRole(ids));
+    }
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleMenuController.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleMenuController.java
deleted file mode 100644
index 77b3175..0000000
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleMenuController.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.mes.role.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 鍓嶇鎺у埗鍣�
- * </p>
- *
- * @author zhoush
- * @since 2024-04-11
- */
-@RestController
-@RequestMapping("/role/sys-role-menu")
-public class SysRoleMenuController {
-
-}
-
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/entity/SysRoleMenu.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/entity/SysRoleMenu.java
index e69af40..aae2aed 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/entity/SysRoleMenu.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/entity/SysRoleMenu.java
@@ -24,7 +24,7 @@
     /**
      * 瑙掕壊ID
      */
-    @TableId(value = "role_id", type = IdType.AUTO)
+    @TableId(type = IdType.NONE)
     private Long roleId;
 
     /**
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/entity/vo/SysRoleVO.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/entity/vo/SysRoleVO.java
new file mode 100644
index 0000000..45efd61
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/entity/vo/SysRoleVO.java
@@ -0,0 +1,44 @@
+package com.mes.role.entity.vo;
+
+import com.mes.menu.entity.SysMenu;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/4/26 13:57
+ * @Description:
+ */
+@Api(description = "瑙掕壊淇℃伅")
+@Data
+public class SysRoleVO implements Serializable {
+
+    @ApiModelProperty(hidden = true)
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "瑙掕壊ID", position = 2)
+    private Long id;
+
+    @ApiModelProperty(value = "瑙掕壊鍚嶇О", position = 3)
+    private String name;
+
+    @ApiModelProperty(value = "瑙掕壊鏉冮檺瀛楃涓�", position = 4)
+    private String roleKey;
+
+    @ApiModelProperty(value = "瑙掕壊鐘舵�侊紙0姝e父 1鍋滅敤锛�", position = 5)
+    private String status;
+
+    @ApiModelProperty(value = "鍒犻櫎鏍囧織", position = 6)
+    private Integer delFlag;
+
+    @ApiModelProperty(value = "澶囨敞", position = 7)
+    private String remark;
+
+    @ApiModelProperty(value = "瑙掕壊鑿滃崟淇℃伅", position = 8)
+    private List<SysMenu> menuList;
+
+}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMapper.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMapper.java
index 4a549d3..d9251c1 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMapper.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMapper.java
@@ -1,6 +1,6 @@
 package com.mes.role.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.role.entity.SysRole;
 import org.apache.ibatis.annotations.Mapper;
 
@@ -13,6 +13,6 @@
  * @since 2024-04-11
  */
 @Mapper
-public interface SysRoleMapper extends BaseMapper<SysRole> {
+public interface SysRoleMapper extends MPJBaseMapper<SysRole> {
 
 }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/SysRoleService.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/SysRoleService.java
index 6f89b19..9592106 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/SysRoleService.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/SysRoleService.java
@@ -1,7 +1,11 @@
 package com.mes.role.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.mes.entity.request.GeneralRequest;
 import com.mes.role.entity.SysRole;
+import com.mes.role.entity.vo.SysRoleVO;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +17,35 @@
  */
 public interface SysRoleService extends IService<SysRole> {
 
+    /**
+     * 鍒涘缓瑙掕壊淇℃伅
+     *
+     * @param sysRoleVO
+     * @return
+     */
+    SysRole saveRole(SysRoleVO sysRoleVO);
+
+    /**
+     * 淇敼瑙掕壊淇℃伅鍙婃潈闄�
+     *
+     * @param sysRoleVO
+     * @return
+     */
+    String updateRole(SysRoleVO sysRoleVO);
+
+    /**
+     * 鎸夌収瑙掕壊鍚嶆煡璇㈣鑹蹭俊鎭�
+     *
+     * @param request
+     * @return
+     */
+    List<SysRoleVO> queryRole(GeneralRequest request);
+
+    /**
+     * 鏌ヨ瑙掕壊鍙婅鑹蹭笅鐨勬潈闄愪俊鎭�
+     *
+     * @param ids
+     * @return
+     */
+    String deleteRole(List<Long> ids);
 }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java
index 5b78836..2d08603 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java
@@ -1,10 +1,28 @@
 package com.mes.role.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.mes.entity.request.GeneralRequest;
+import com.mes.menu.entity.SysMenu;
 import com.mes.role.entity.SysRole;
+import com.mes.role.entity.SysRoleMenu;
+import com.mes.role.entity.vo.SysRoleVO;
 import com.mes.role.mapper.SysRoleMapper;
+import com.mes.role.service.SysRoleMenuService;
 import com.mes.role.service.SysRoleService;
+import com.mes.userinfo.entity.SysUserRole;
+import com.mes.userinfo.service.SysUserRoleService;
+import com.mes.userinfo.service.SysUserService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
+
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -15,6 +33,91 @@
  * @since 2024-04-11
  */
 @Service
+@Slf4j
 public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements SysRoleService {
 
+    @Autowired
+    SysRoleMenuService sysRoleMenuService;
+
+    @Autowired
+    SysUserService sysUserService;
+
+    @Autowired
+    SysUserRoleService sysUserRoleService;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public SysRole saveRole(SysRoleVO sysRoleVO) {
+        log.info("淇濆瓨瑙掕壊淇℃伅锛岀敓鎴愬搴旂殑瑙掕壊id");
+        SysRole sysRole = new SysRole();
+        BeanUtils.copyProperties(sysRoleVO, sysRole);
+        this.save(sysRole);
+        //淇濆瓨瑙掕壊鏉冮檺淇℃伅
+        saveRoleMenu(sysRole.getId(), sysRoleVO.getMenuList());
+        return sysRole;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String updateRole(SysRoleVO sysRoleVO) {
+        log.info("淇濆瓨瑙掕壊淇℃伅锛岀敓鎴愬搴旂殑瑙掕壊id");
+        SysRole sysRole = new SysRole();
+        BeanUtils.copyProperties(sysRoleVO, sysRole);
+        this.updateById(sysRole);
+        //淇濆瓨瑙掕壊鏉冮檺淇℃伅
+        return saveRoleMenu(sysRole.getId(), sysRoleVO.getMenuList());
+    }
+
+    @Override
+    public List<SysRoleVO> queryRole(GeneralRequest request) {
+        MPJLambdaWrapper<SysRole> wrapper = new MPJLambdaWrapper<>();
+        wrapper.selectAll(SysRole.class)
+                .selectCollection(SysMenu.class, SysRoleVO::getMenuList)
+                .leftJoin(SysRoleMenu.class, SysRoleMenu::getRoleId, SysRole::getId)
+                .leftJoin(SysMenu.class, SysMenu::getId, SysRoleMenu::getMenuId)
+                .like(StringUtils.hasText(request.getKey()), SysRole::getName, request.getKey());
+        return baseMapper.selectJoinList(SysRoleVO.class, wrapper);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String deleteRole(List<Long> ids) {
+        log.info("鍒犻櫎瑙掕壊淇℃伅");
+        this.removeByIds(ids);
+
+        log.info("鍒犻櫎涓棿琛ㄤ俊鎭�");
+        sysUserRoleService.remove(new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getRoleId, ids));
+        sysRoleMenuService.remove(new LambdaQueryWrapper<SysRoleMenu>().in(SysRoleMenu::getRoleId, ids));
+
+        log.info("娓呯┖缂撳瓨涓殑鏉冮檺淇℃伅");
+        ids.stream().forEach(id -> sysUserService.clearUserAuthorityInfoByRoleId(id));
+        return "success";
+    }
+
+    /**
+     * 淇濆瓨瑙掕壊鏉冮檺淇℃伅
+     *
+     * @param roleId
+     * @param menuList
+     * @return
+     */
+    private String saveRoleMenu(Long roleId, List<SysMenu> menuList) {
+        log.info("閰嶇疆瑙掕壊鑿滃崟鍏冲績");
+        List<SysRoleMenu> roleMenuList = menuList.stream().map(menu -> {
+            SysRoleMenu roleMenu = new SysRoleMenu();
+            roleMenu.setRoleId(roleId);
+            roleMenu.setMenuId(menu.getId());
+            return roleMenu;
+        }).collect(Collectors.toList());
+        log.info("娓呯┖瑙掕壊鏉冮檺琛ㄤ腑璇ヨ鑹蹭俊鎭�");
+
+
+        // 鍏堝垹闄ゅ師鏉ョ殑璁板綍锛屽啀淇濆瓨鏂扮殑
+        sysRoleMenuService.remove(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, roleId));
+        sysRoleMenuService.saveBatch(roleMenuList);
+
+        // 鍒犻櫎缂撳瓨
+        sysUserService.clearUserAuthorityInfoByRoleId(roleId);
+        return "success";
+    }
 }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/security/DefaultPasswordEncoder.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/security/DefaultPasswordEncoder.java
deleted file mode 100644
index fe7efc7..0000000
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/security/DefaultPasswordEncoder.java
+++ /dev/null
@@ -1,25 +0,0 @@
-//package com.mes.security;
-//
-//import com.mes.utils.MD5;
-//import org.springframework.security.crypto.password.PasswordEncoder;
-//import org.springframework.stereotype.Component;
-//
-//@Component
-//public class DefaultPasswordEncoder implements PasswordEncoder {
-//
-//    public DefaultPasswordEncoder() {
-//        this(-1);
-//    }
-//    public DefaultPasswordEncoder(int strength) {
-//    }
-//    //杩涜MD5鍔犲瘑
-//    @Override
-//    public String encode(CharSequence charSequence) {
-//        return MD5.encrypt(charSequence.toString());
-//    }
-//    //杩涜瀵嗙爜姣斿
-//    @Override
-//    public boolean matches(CharSequence charSequence, String encodedPassword) {
-//        return encodedPassword.equals(MD5.encrypt(charSequence.toString()));
-//    }
-//}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/security/TokenLogoutHandler.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/security/TokenLogoutHandler.java
deleted file mode 100644
index e696abc..0000000
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/security/TokenLogoutHandler.java
+++ /dev/null
@@ -1,35 +0,0 @@
-//package com.mes.security;
-//
-//import com.mes.utils.Result;
-//import com.mes.utils.ResponseUtil;
-//import org.springframework.data.redis.core.RedisTemplate;
-//import org.springframework.security.core.Authentication;
-//import org.springframework.security.web.authentication.logout.LogoutHandler;
-//
-//import javax.servlet.http.HttpServletRequest;
-//import javax.servlet.http.HttpServletResponse;
-//
-////閫�鍑哄鐞嗗櫒
-//public class TokenLogoutHandler implements LogoutHandler {
-//    private TokenManager tokenManager;
-//    private RedisTemplate redisTemplate;
-//
-//    public TokenLogoutHandler(TokenManager tokenManager,RedisTemplate redisTemplate) {
-//        this.tokenManager = tokenManager;
-//        this.redisTemplate = redisTemplate;
-//    }
-//    @Override
-//    public void logout(HttpServletRequest request, HttpServletResponse response, Authentication authentication) {
-//        //1 浠巋eader閲岄潰鑾峰彇token
-//        //2 token涓嶄负绌猴紝绉婚櫎token锛屼粠redis鍒犻櫎token
-//        String token = request.getHeader("token");
-//        if(token != null) {
-//            //绉婚櫎
-//            tokenManager.removeToken(token);
-//            //浠巘oken鑾峰彇鐢ㄦ埛鍚�
-//            String username = tokenManager.getUserInfoFromToken(token);
-//            redisTemplate.delete(username);
-//        }
-//        ResponseUtil.out(response, Result.success());
-//    }
-//}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/security/TokenManager.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/security/TokenManager.java
deleted file mode 100644
index 61cf3ee..0000000
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/security/TokenManager.java
+++ /dev/null
@@ -1,30 +0,0 @@
-//package com.mes.security;
-//
-//import io.jsonwebtoken.CompressionCodecs;
-//import io.jsonwebtoken.Jwts;
-//import io.jsonwebtoken.SignatureAlgorithm;
-//import org.springframework.stereotype.Component;
-//
-//import java.util.Date;
-//
-//@Component
-//public class TokenManager {
-//    //token鏈夋晥鏃堕暱
-//    private long tokenEcpiration = 24*60*60*1000;
-//    //缂栫爜绉橀挜
-//    private String tokenSignKey = "123456";
-//    //1 浣跨敤jwt鏍规嵁鐢ㄦ埛鍚嶇敓鎴恡oken
-//    public String createToken(String username) {
-//        String token = Jwts.builder().setSubject(username)
-//                .setExpiration(new Date(System.currentTimeMillis()+tokenEcpiration))
-//                .signWith(SignatureAlgorithm.HS512, tokenSignKey).compressWith(CompressionCodecs.GZIP).compact();
-//        return token;
-//    }
-//    //2 鏍规嵁token瀛楃涓插緱鍒扮敤鎴蜂俊鎭�
-//    public String getUserInfoFromToken(String token) {
-//        String userinfo = Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token).getBody().getSubject();
-//        return userinfo;
-//    }
-//    //3 鍒犻櫎token
-//    public void removeToken(String token) { }
-//}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/security/UnauthEntryPoint.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/security/UnauthEntryPoint.java
deleted file mode 100644
index bc09439..0000000
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/security/UnauthEntryPoint.java
+++ /dev/null
@@ -1,18 +0,0 @@
-//package com.mes.security;
-//
-//import com.mes.utils.Result;
-//import com.mes.utils.ResponseUtil;
-//import org.springframework.security.core.AuthenticationException;
-//import org.springframework.security.web.AuthenticationEntryPoint;
-//
-//import javax.servlet.ServletException;
-//import javax.servlet.http.HttpServletRequest;
-//import javax.servlet.http.HttpServletResponse;
-//import java.io.IOException;
-//
-//public class UnauthEntryPoint implements AuthenticationEntryPoint {
-//    @Override
-//    public void commence(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, AuthenticationException e) throws IOException, ServletException {
-//        ResponseUtil.out(httpServletResponse, Result.error());
-//    }
-//}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/controller/SysUserController.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/controller/SysUserController.java
index 326e4d0..2e0f357 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/controller/SysUserController.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/controller/SysUserController.java
@@ -1,11 +1,23 @@
 package com.mes.userinfo.controller;
 
 
+import com.mes.entity.request.GeneralRequest;
 import com.mes.userinfo.entity.SysUser;
+import com.mes.userinfo.entity.vo.SysUserVO;
 import com.mes.userinfo.service.SysUserService;
 import com.mes.utils.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -15,21 +27,64 @@
  * @author zhoush
  * @since 2024-04-11
  */
+@Api(description = "鐢ㄦ埛绠$悊")
 @RestController
-@RequestMapping("/userinfo")
+@RequestMapping("/sys/user")
 public class SysUserController {
 
     @Autowired
     private SysUserService sysUserService;
 
+    @ApiOperation("鐢ㄦ埛鐧诲綍")
     @PostMapping("/login")
-    public Result login(@RequestBody SysUser user) {
-        return sysUserService.login(user);
+    public Result<Map<String, String>> login(@RequestBody SysUser user) {
+        return Result.success(sysUserService.login(user));
     }
 
-    @GetMapping("/hello")
-    public Result hello() {
-        return Result.success("eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJlZjMyMjQ4NDcyODE0ZWFlYWRlOTBkYmZjYWFlZmNmZSIsInN1YiI6IjEiLCJpc3MiOiJzZyIsImlhdCI6MTcxMjkwMjI0NCwiZXhwIjoxNzEyOTA1ODQ0fQ.DlJkhkiwjZSqprdLzKaTB3yuyxGukerKeF0FbJK_6HY");
+    @ApiOperation("閫�鍑虹櫥褰�")
+    @PostMapping("/logout")
+//    @PreAuthorize("hasRole('ROLE_admin')")
+    @PreAuthorize("hasAuthority('xt:yh')")
+    public Result<String> logout() {
+        return Result.success(sysUserService.logout());
     }
+
+    @ApiOperation("鏂板鐢ㄦ埛淇℃伅")
+    @PostMapping("/saveUser")
+//    @PreAuthorize("hasAuthority('sys:user:save')")
+    public Result<String> saveUser(@Validated @RequestBody SysUserVO sysUser) {
+        return Result.success(sysUserService.saveUser(sysUser));
+    }
+
+
+    @ApiOperation("鏇存柊鐢ㄦ埛淇℃伅")
+    @PostMapping("/updateUser")
+//    @PreAuthorize("hasAuthority('sys:user:update')")
+    public Result<SysUserVO> updateUser(@Validated @RequestBody SysUserVO sysUser) {
+        return Result.success(sysUserService.updateUser(sysUser));
+    }
+
+    @ApiOperation("閲嶇疆瀵嗙爜")
+    @PostMapping("/resetPassword")
+//    @PreAuthorize("hasAuthority('sys:user:resetPassword')")
+    public Result resetPassword(String userId) {
+        return Result.success(sysUserService.resetPassword(Long.parseLong(userId)));
+    }
+
+
+    @ApiOperation("鑾峰彇鐢ㄦ埛鍒楄〃")
+    @PostMapping("/listByUserName")
+//    @PreAuthorize("hasAuthority('sys:user:list')")
+    public Result<List<SysUserVO>> listByUserName(@RequestBody GeneralRequest request) {
+        return Result.success(sysUserService.listByUserName(request));
+    }
+
+    @ApiOperation("鍒犻櫎鐢ㄦ埛淇℃伅")
+    @PostMapping("/deleteUser")
+//    @PreAuthorize("hasAuthority('sys:user:delete')")
+    public Result<String> deleteUser(@RequestBody List<Long> ids) {
+        return Result.success(sysUserService.deleteUser(ids));
+    }
+
 }
 
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/controller/SysUserRoleController.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/controller/SysUserRoleController.java
deleted file mode 100644
index 8d6e6a7..0000000
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/controller/SysUserRoleController.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.mes.userinfo.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 鍓嶇鎺у埗鍣�
- * </p>
- *
- * @author zhoush
- * @since 2024-04-11
- */
-@RestController
-@RequestMapping("/userinfo/sys-user-role")
-public class SysUserRoleController {
-
-}
-
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/SysUserRole.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/SysUserRole.java
index 4d76c57..9aa76b4 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/SysUserRole.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/SysUserRole.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -17,6 +18,7 @@
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
+@AllArgsConstructor
 public class SysUserRole implements Serializable {
 
     private static final long serialVersionUID = 1L;
@@ -24,7 +26,7 @@
     /**
      * 鐢ㄦ埛id
      */
-    @TableId(value = "user_id", type = IdType.AUTO)
+    @TableId(type = IdType.NONE)
     private Long userId;
 
     /**
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/vo/SysUserVO.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/vo/SysUserVO.java
new file mode 100644
index 0000000..f43f8c7
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/vo/SysUserVO.java
@@ -0,0 +1,63 @@
+package com.mes.userinfo.entity.vo;
+
+import com.mes.role.entity.SysRole;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * <p>
+ * 鐢ㄦ埛琛�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+@Api(description = "鐢ㄦ埛淇℃伅")
+@Data
+public class SysUserVO implements Serializable {
+
+    @ApiModelProperty(hidden = true)
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 涓婚敭
+     */
+    @ApiModelProperty(value = "涓婚敭", position = 2)
+    private Long id;
+
+    /**
+     * 鐢ㄦ埛鍚�
+     */
+    @ApiModelProperty(value = "鐢ㄦ埛鍚�", position = 3)
+    private String userName;
+
+    /**
+     * 鏄电О
+     */
+    @ApiModelProperty(value = "鏄电О", position = 4)
+    private String nickName;
+
+    /**
+     * 瀵嗙爜
+     */
+    @ApiModelProperty(value = "瀵嗙爜", position = 5)
+    private String password;
+
+    /**
+     * 澶村儚
+     */
+    @ApiModelProperty(value = "澶村儚", position = 6)
+    private String avatar;
+
+    /**
+     * 鐢ㄦ埛鐨勮鑹蹭俊鎭�
+     */
+    @ApiModelProperty(value = "鐢ㄦ埛鐨勮鑹蹭俊鎭�", position = 7)
+    private List<SysRole> roleList;
+
+
+}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserMapper.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserMapper.java
index 093812d..f3e2f25 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserMapper.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserMapper.java
@@ -1,6 +1,6 @@
 package com.mes.userinfo.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.userinfo.entity.SysUser;
 import org.apache.ibatis.annotations.Mapper;
 
@@ -13,6 +13,6 @@
  * @since 2024-04-11
  */
 @Mapper
-public interface SysUserMapper extends BaseMapper<SysUser> {
+public interface SysUserMapper extends MPJBaseMapper<SysUser> {
 
 }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserRoleMapper.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserRoleMapper.java
index c40b16f..cfd9a6f 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserRoleMapper.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserRoleMapper.java
@@ -1,6 +1,6 @@
 package com.mes.userinfo.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.userinfo.entity.SysUserRole;
 import org.apache.ibatis.annotations.Mapper;
 
@@ -13,6 +13,6 @@
  * @since 2024-04-11
  */
 @Mapper
-public interface SysUserRoleMapper extends BaseMapper<SysUserRole> {
+public interface SysUserRoleMapper extends MPJBaseMapper<SysUserRole> {
 
 }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserRoleService.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserRoleService.java
index 0992b6c..9351f47 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserRoleService.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserRoleService.java
@@ -1,6 +1,6 @@
 package com.mes.userinfo.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.yulichang.base.MPJBaseService;
 import com.mes.userinfo.entity.SysUserRole;
 
 /**
@@ -11,6 +11,7 @@
  * @author zhoush
  * @since 2024-04-11
  */
-public interface SysUserRoleService extends IService<SysUserRole> {
+public interface SysUserRoleService extends MPJBaseService<SysUserRole> {
+
 
 }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserService.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserService.java
index ca49aa0..467a88a 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserService.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserService.java
@@ -1,8 +1,12 @@
 package com.mes.userinfo.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.mes.entity.request.GeneralRequest;
 import com.mes.userinfo.entity.SysUser;
-import com.mes.utils.Result;
+import com.mes.userinfo.entity.vo.SysUserVO;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -14,7 +18,93 @@
  */
 public interface SysUserService extends IService<SysUser> {
 
-    Result login(SysUser user);
+    /**
+     * 鐢ㄦ埛鐧诲綍
+     *
+     * @param user
+     * @return
+     */
+    Map<String, String> login(SysUser user);
 
-    Result logout();
+    /**
+     * 閫�鍑虹櫥褰�
+     *
+     * @return
+     */
+    String logout();
+
+    /**
+     * 鏂板鐢ㄦ埛淇℃伅
+     *
+     * @param user
+     * @return
+     */
+    String saveUser(SysUserVO user);
+
+    /**
+     * 鏇存柊鐢ㄦ埛淇℃伅
+     *
+     * @param sysUser
+     * @return
+     */
+    SysUserVO updateUser(SysUserVO sysUser);
+
+    /**
+     * 閲嶇疆瀵嗙爜
+     *
+     * @param userId
+     * @return
+     */
+    String resetPassword(Long userId);
+
+    /**
+     * 鎸夊悕绉拌幏鍙栫敤鎴蜂俊鎭�
+     *
+     * @param userName
+     * @return
+     */
+    SysUser queryByUserName(String userName);
+
+    /**
+     * 鎸夊叧閿瓧鑾峰彇鐢ㄦ埛淇℃伅鍒楄〃
+     *
+     * @param request
+     * @return
+     */
+    List<SysUserVO> listByUserName(GeneralRequest request);
+
+    /**
+     * 鍒犻櫎鐢ㄦ埛淇℃伅
+     *
+     * @param ids
+     * @return
+     */
+    String deleteUser(List<Long> ids);
+
+    /**
+     * 鑾峰彇鐢ㄦ埛瑙掕壊鏉冮檺淇℃伅
+     *
+     * @param userId
+     * @return
+     */
+    List<String> getUserAuthorityInfo(Long userId);
+
+    /**
+     * 娓呯┖鐢ㄦ埛鏉冮檺淇℃伅閫氳繃鐢ㄦ埛淇℃伅
+     */
+    void clearUserAuthorityInfo(String userName);
+
+    /**
+     * 娓呯┖鐢ㄦ埛鏉冮檺淇℃伅閫氳繃瑙掕壊id
+     *
+     * @param roleId
+     */
+    void clearUserAuthorityInfoByRoleId(Long roleId);
+
+    /**
+     * 娓呯┖鐢ㄦ埛鏉冮檺淇℃伅閫氳繃鑿滃崟id
+     *
+     * @param menuId
+     */
+    void clearUserAuthorityInfoByMenuId(Long menuId);
 }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java
index f6207b7..2e0cda6 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java
@@ -1,29 +1,45 @@
 package com.mes.userinfo.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.mes.common.config.Const;
 import com.mes.common.utils.JwtUtil;
 import com.mes.common.utils.RedisUtil;
+import com.mes.common.utils.UserInfoUtils;
+import com.mes.entity.request.GeneralRequest;
 import com.mes.menu.mapper.SysMenuMapper;
+import com.mes.role.entity.SysRole;
+import com.mes.role.entity.SysRoleMenu;
+import com.mes.role.service.SysRoleService;
 import com.mes.userinfo.entity.LoginUser;
 import com.mes.userinfo.entity.SysUser;
+import com.mes.userinfo.entity.SysUserRole;
+import com.mes.userinfo.entity.vo.SysUserVO;
 import com.mes.userinfo.mapper.SysUserMapper;
+import com.mes.userinfo.service.SysUserRoleService;
 import com.mes.userinfo.service.SysUserService;
-import com.mes.utils.Result;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.authentication.AuthenticationManager;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.core.userdetails.UserDetailsService;
 import org.springframework.security.core.userdetails.UsernameNotFoundException;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -34,18 +50,29 @@
  * @since 2024-04-11
  */
 @Service
+@Slf4j
 public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService, UserDetailsService {
 
     @Autowired
     private AuthenticationManager authenticationManager;
+
     @Autowired
     private RedisUtil redisUtil;
 
     @Resource
     private SysMenuMapper sysMenuMapper;
 
+    @Resource
+    private SysUserRoleService sysUserRoleService;
+
+    @Resource
+    private SysRoleService sysRoleService;
+
+    @Resource
+    BCryptPasswordEncoder passwordEncoder;
+
     @Override
-    public Result login(SysUser user) {
+    public Map<String, String> login(SysUser user) {
         UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(user.getUserName(), user.getPassword());
         Authentication authenticate = authenticationManager.authenticate(authenticationToken);
         if (Objects.isNull(authenticate)) {
@@ -54,24 +81,158 @@
         //浣跨敤userid鐢熸垚token
         LoginUser loginUser = (LoginUser) authenticate.getPrincipal();
         String userId = loginUser.getUser().getId().toString();
-        String jwt = JwtUtil.createJWT(userId);
+        String jwt = JwtUtil.generateToken(userId);
+
+        //鏌ヨ鏉冮檺淇℃伅
+//        List<String> perms = sysMenuMapper.selectPermsByUserId(userId);
         //authenticate瀛樺叆redis
         redisUtil.setCacheObject("login:" + userId, loginUser);
         //鎶妕oken鍝嶅簲缁欏墠绔�
         HashMap<String, String> map = new HashMap<>();
         map.put("token", jwt);
-        return Result.success(map);
+        return map;
     }
 
     @Override
-    public Result logout() {
-        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
-        LoginUser loginUser = (LoginUser) authentication.getPrincipal();
-        Long userid = loginUser.getUser().getId();
-        redisUtil.deleteObject("login:" + userid);
-        return Result.success("閫�鍑烘垚鍔�");
+    public String logout() {
+        log.info("鐢ㄦ埛閫�鍑�");
+        SysUser user = UserInfoUtils.get();
+        redisUtil.deleteObject("login:" + user.getId());
+        return "娉ㄩ攢鎴愬姛";
     }
 
+    @Transactional
+    @Override
+    public String saveUser(SysUserVO user) {
+        log.info("淇濆瓨鐢ㄦ埛淇℃伅");
+        // 榛樿瀵嗙爜
+        String password = passwordEncoder.encode(Const.DEFULT_PASSWORD);
+        user.setPassword(password);
+        SysUser sysUser = new SysUser();
+        BeanUtils.copyProperties(user, sysUser);
+        this.save(sysUser);
+        saveUserRole(user.getRoleList(), sysUser.getId());
+        return "success";
+    }
+
+    @Transactional
+    @Override
+    public SysUserVO updateUser(SysUserVO user) {
+        log.info("鏇存柊鐢ㄦ埛淇℃伅");
+        SysUser sysUser = new SysUser();
+        BeanUtils.copyProperties(user, sysUser);
+        this.updateById(sysUser);
+        log.info("鍒犻櫎鐢ㄦ埛瑙掕壊淇℃伅");
+        List<Long> roleIds = user.getRoleList().stream().map(SysRole::getId).collect(Collectors.toList());
+        sysUserRoleService.remove(new LambdaQueryWrapper<SysUserRole>()
+                .eq(SysUserRole::getUserId, sysUser.getId()).in(CollectionUtil.isNotEmpty(roleIds), SysUserRole::getRoleId, roleIds));
+        log.info("淇濆瓨鐢ㄦ埛瑙掕壊淇℃伅");
+        saveUserRole(user.getRoleList(), sysUser.getId());
+        return user;
+    }
+
+    @Override
+    public String resetPassword(Long userId) {
+        log.info("閲嶇疆瀵嗙爜涓簕}", Const.DEFULT_PASSWORD);
+        SysUser sysUser = new SysUser();
+        sysUser.setId(userId);
+        String password = passwordEncoder.encode(Const.DEFULT_PASSWORD);
+        sysUser.setPassword(password);
+        this.updateById(sysUser);
+        return "success";
+    }
+
+    @Override
+    public SysUser queryByUserName(String userName) {
+        return baseMapper.selectOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUserName, userName));
+    }
+
+    @Override
+    public List<SysUserVO> listByUserName(GeneralRequest request) {
+        MPJLambdaWrapper<SysUser> wrapper = new MPJLambdaWrapper<>();
+        wrapper.selectAll(SysUser.class)
+                .selectCollection(SysRole.class, SysUserVO::getRoleList)
+                .leftJoin(SysUserRole.class, SysUserRole::getUserId, SysUser::getId)
+                .leftJoin(SysRole.class, SysRole::getId, SysUserRole::getRoleId)
+                .like(StringUtils.hasText(request.getKey()), SysUser::getUserName, request.getKey());
+        return baseMapper.selectJoinList(SysUserVO.class, wrapper);
+    }
+
+    @Transactional
+    @Override
+    public String deleteUser(List<Long> ids) {
+        this.removeByIds(ids);
+        sysUserRoleService.remove(new QueryWrapper<SysUserRole>().in("user_id", ids));
+        return "success";
+
+    }
+
+    @Override
+    public List<String> getUserAuthorityInfo(Long userId) {
+        SysUser sysUser = baseMapper.selectById(userId);
+
+        //  ROLE_admin,ROLE_normal,sys:user:list,....
+        String authority = "";
+        if (redisUtil.hasKey("GrantedAuthority:" + sysUser.getUserName())) {
+            authority = redisUtil.getCacheObject("GrantedAuthority:" + sysUser.getUserName());
+
+        } else {
+            // 鑾峰彇瑙掕壊缂栫爜
+            List<SysRole> roles = sysRoleService.list(new QueryWrapper<SysRole>()
+                    .inSql("id", "select role_id from sys_user_role where user_id = " + userId));
+
+            if (roles.size() > 0) {
+                String roleCodes = roles.stream().map(r -> "ROLE_" + r.getRoleKey()).collect(Collectors.joining(","));
+                authority = roleCodes.concat(",");
+            }
+
+            // 鑾峰彇鑿滃崟鎿嶄綔缂栫爜
+            List<String> perms = sysMenuMapper.selectPermsByUserId(userId);
+            if (perms.size() > 0) {
+                String menuPerms = String.join(",", perms);
+                authority = authority.concat(menuPerms);
+            }
+
+            redisUtil.setCacheObject("GrantedAuthority:" + sysUser.getUserName(), authority, 60 * 60, TimeUnit.SECONDS);
+        }
+        return Arrays.stream(authority.split(",")).collect(Collectors.toList());
+    }
+
+    @Override
+    public void clearUserAuthorityInfo(String userName) {
+        redisUtil.deleteObject("GrantedAuthority:" + userName);
+    }
+
+    @Override
+    public void clearUserAuthorityInfoByRoleId(Long roleId) {
+        List<SysUser> sysUsers = this.list(new QueryWrapper<SysUser>()
+                .inSql("id", "select user_id from sys_user_role where role_id = " + roleId));
+
+        sysUsers.forEach(u -> {
+            this.clearUserAuthorityInfo(u.getUserName());
+        });
+
+    }
+
+    @Override
+    public void clearUserAuthorityInfoByMenuId(Long menuId) {
+        MPJLambdaWrapper<SysUserRole> wrapper = new MPJLambdaWrapper<SysUserRole>().selectAll(SysUser.class).distinct()
+                .leftJoin(SysUser.class, SysUser::getId, SysUserRole::getUserId)
+                .leftJoin(SysRoleMenu.class, SysRoleMenu::getRoleId, SysUserRole::getRoleId)
+                .eq(SysRoleMenu::getMenuId, menuId);
+        List<SysUser> sysUsers = sysUserRoleService.selectJoinList(SysUser.class, wrapper);
+        sysUsers.forEach(u -> {
+            this.clearUserAuthorityInfo(u.getUserName());
+        });
+    }
+
+    /**
+     * 瀹炵幇UserDetailsService鎺ュ彛锛屼粠鏁版嵁搴撳唴鑾峰彇鐢ㄦ埛鍙婃潈闄愪俊鎭�
+     *
+     * @param username
+     * @return
+     * @throws UsernameNotFoundException
+     */
     @Override
     public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
         LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<>();
@@ -86,4 +247,19 @@
 
         return new LoginUser(user, perms);
     }
+
+
+    private void saveUserRole(List<SysRole> roles, Long userId) {
+        log.info("淇濆瓨鐢ㄦ埛瑙掕壊淇℃伅");
+        List<SysUserRole> userRoles = new ArrayList<>();
+        if (CollectionUtils.isEmpty(roles)) {
+            log.info("淇濆瓨鐢ㄦ埛瑙掕壊淇℃伅涓虹┖锛岀粰榛樿鏅�氱敤鎴疯鑹�");
+            userRoles.add(new SysUserRole(userId, Const.DEFULT_ROLE));
+        } else {
+            log.info("淇濆瓨鐢ㄦ埛瑙掕壊淇℃伅");
+            userRoles = roles.stream().map(e -> new SysUserRole(userId, e.getId())).collect(Collectors.toList());
+        }
+        sysUserRoleService.saveBatch(userRoles);
+    }
+
 }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/resources/application.yml b/hangzhoumesParent/common/springsecurity/src/main/resources/application.yml
deleted file mode 100644
index d5978be..0000000
--- a/hangzhoumesParent/common/springsecurity/src/main/resources/application.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-server:
-  port: 8089
-spring:
-  datasource:
-    driver-class-name: com.mysql.cj.jdbc.Driver
-    url: jdbc:mysql://10.153.19.150:3306/hangzhoumes?serverTimezone=GMT%2b8&characterEncoding=utf-8&useSSL=false
-    username: root
-    password: beibo.123/
-  cloud:
-    nacos:
-      discovery:
-        server-addr: 10.153.19.150:8848
-  application:
-    name: security
-  redis:
-    database: 0
-    host: 10.153.19.150
-    port: 6379
-    password:
-  session:
-    store-type: redis
-mybatis-plus:
-  mapper-locations: classpath*:mapper/*.xml
-  configuration:
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
\ No newline at end of file
diff --git a/hangzhoumesParent/gateway/pom.xml b/hangzhoumesParent/gateway/pom.xml
index 6334bf7..ec368a6 100644
--- a/hangzhoumesParent/gateway/pom.xml
+++ b/hangzhoumesParent/gateway/pom.xml
@@ -28,5 +28,13 @@
             <artifactId>spring-cloud-starter-gateway</artifactId>
         </dependency>
     </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
 
 </project>
\ No newline at end of file
diff --git a/hangzhoumesParent/gateway/src/main/resources/application.yml b/hangzhoumesParent/gateway/src/main/resources/application.yml
index 1452d31..3ddd26b 100644
--- a/hangzhoumesParent/gateway/src/main/resources/application.yml
+++ b/hangzhoumesParent/gateway/src/main/resources/application.yml
@@ -6,7 +6,7 @@
   cloud:
     nacos:
       discovery:
-        server-addr: 10.153.19.150:8848
+        server-addr: 127.0.0.1:8848
     gateway:
       discovery:
         locator:
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/pom.xml b/hangzhoumesParent/moduleService/CacheGlassModule/pom.xml
index 192058e..0d87b5f 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/pom.xml
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/pom.xml
@@ -17,16 +17,16 @@
             <artifactId>junit</artifactId>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>com.github.yulichang</groupId>
-            <artifactId>mybatis-plus-join</artifactId>
-            <version>1.1.6</version>
-        </dependency>
-<!--        <dependency>-->
-<!--            <groupId>com.github.yulichang</groupId>-->
-<!--            <artifactId>mybatis-plus-join-boot-starter</artifactId>-->
-<!--            <version>1.4.12</version>-->
-<!--        </dependency>-->
+        <!--        <dependency>-->
+        <!--            <groupId>com.github.yulichang</groupId>-->
+        <!--            <artifactId>mybatis-plus-join</artifactId>-->
+        <!--            <version>1.1.6</version>-->
+        <!--        </dependency>-->
+        <!--        <dependency>-->
+        <!--            <groupId>com.github.yulichang</groupId>-->
+        <!--            <artifactId>mybatis-plus-join-boot-starter</artifactId>-->
+        <!--            <version>1.4.12</version>-->
+        <!--        </dependency>-->
     </dependencies>
 
     <properties>
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/AppRunnerConfig.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/AppRunnerConfig.java
new file mode 100644
index 0000000..f58a1de
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/AppRunnerConfig.java
@@ -0,0 +1,22 @@
+package com.mes;
+
+import com.mes.common.PlcHomeEdg;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+@Component
+@Order(1)
+
+public class AppRunnerConfig implements ApplicationRunner {
+
+    @Override
+    public void run(ApplicationArguments args) throws Exception {
+        // TODO Auto-generated method stub
+        //
+        //System.out.println("鍚姩瀹屾垚");
+       new PlcHomeEdg().start();
+
+    }
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/CacheGlassModuleApplication.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/CacheGlassModuleApplication.java
index bf6e500..42b56a2 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/CacheGlassModuleApplication.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/CacheGlassModuleApplication.java
@@ -1,11 +1,13 @@
 package com.mes;
 
+import com.mes.common.WebSocketServer;
 import lombok.extern.slf4j.Slf4j;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.context.ConfigurableApplicationContext;
 import springfox.documentation.swagger2.annotations.EnableSwagger2;
 import com.mes.edgstoragecage.service.*;
 
@@ -23,7 +25,10 @@
 
     public static void main(String[] args) {
         try {
-            SpringApplication.run(CacheGlassModuleApplication.class, args);
+            SpringApplication springApplication = new SpringApplication(CacheGlassModuleApplication.class);
+            ConfigurableApplicationContext applicationContext = springApplication.run(args);
+            WebSocketServer.setApplicationContext(applicationContext);
+            //SpringApplication.run(CacheGlassModuleApplication.class, args);
         } catch (Exception e) {
             log.error(e.getMessage());
         }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/common/PLCAutoMes.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/common/PLCAutoMes.java
index a97b2c6..2e921b4 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/common/PLCAutoMes.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/common/PLCAutoMes.java
@@ -7,45 +7,18 @@
 
 public class PLCAutoMes extends Thread {
 
-    // // 鐢ㄤ簬瀛樺偍搴旂敤绋嬪簭鐨勯厤缃俊鎭�
-    // private Configuration config;
     private static InitUtil initUtil;
-    // public static PlcParameterObject PlcMesObject;
-    // public static PlcParameterObject PlcReadObject;
-    // public static PlcParameterObject PlcframeObject;
-
-    // // 鍒涘缓涓�涓嚜瀹氫箟鐨� S7 鎺у埗鍣ㄦ秷鎭鐞嗗櫒瀵硅薄
-    // MessageHandler customS7Control = new MessageHandler();
 
     // 鍗曚緥瀹炰緥
     private static PLCAutoMes instance;
-    // private static String PlcMes = PLCAutoMes.class.getResource("/JsonFile/PlcMes.json").getPath();
     private static String PlcAlbania = PLCAutoMes.class.getResource("/JsonFile/PlcAlbania.json").getPath();
-    // private static String PlcRead = PLCAutoMes.class.getResource("/JsonFile/PlcRead.json").getPath();
-    // private static String Plcframe = PLCAutoMes.class.getResource("/JsonFile/Plcframe.json").getPath();
-    // private static String PlcParameter = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcParameter.json").getPath();
 
-    // private static String PlcSign = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcSign.json").getPath();
 
-    // private static String PlcState = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcState.json").getPath();
 
-    // private static String PlcAlarm = PLCAutoMes.class.getResource("/JsonFile/PlcAlarm.json").getPath();
-    // private static String PlcTest = PLCAutoMes.class.getResource("/JsonFile/PlcTest.json").getPath();
-
-    // 璋冪敤initword鏂规硶
-
-    // public static PlcParameterObject plcParameterObject = initUtil.initword(PlcParameter);
-    // public static PlcBitObject plcPlcTest = initUtil.initbit(PlcTest);
-    // public static PlcBitObject  plcBitObject = initUtil.initbit(PlcSign);
-    // public static PlcParameterObject  plcStateObject= initUtil.initword(PlcState);
-    // public static PlcBitObject plcPlcAlarm = initUtil.initbit(PlcAlarm);
     public static PlcParameterObject PlcMesObject = InitUtil.initword(PlcAlbania);
-    // public static PlcParameterObject PlcReadObject = initUtil.initword(PlcRead);
-    // public static PlcParameterObject PlcframeObject = initUtil.initword(Plcframe);
 
     // 绉佹湁鏋勯�犲嚱鏁�
     public PLCAutoMes() throws IOException {
-        //config = new Configuration("config.properties");
         initUtil = new InitUtil();
     }
 
@@ -67,28 +40,8 @@
                 e.printStackTrace();
             }
 
-            // System.out.println(jsonFilePath);
-
-            //readAndUpdateWordValues(PlcReadObject);
             readAndUpdateWordValues(PlcMesObject);
-            //readAndUpdateWordValues(PlcframeObject);
-            // readAndUpdateWordValues(PlcframeObject);
 
-            // readAndUpdateWordValues(plcStateObject);
-            // int index = PlcMesObject.getPlcParameter("AddStart").getAddressIndex();
-            // // System.out.println(index);
-            // PlcMesObject.getPlcParameter("AddStart").getAddress(index);
-            // // System.out.println(PlcMesObject.getPlcParameter("AddStart").getAddress(index));
-            // List<String> addresses = new ArrayList<>();
-            // addresses.add("FeedID");
-            // addresses.add("AddStart");
-            // // System.out.println(addresses);
-            // // System.out.println(PlcMesObject.getPlcParameterValues(addresses));
-            // List<String> addresses2 = new ArrayList<>();
-            // addresses2.add("FeedID");
-            // addresses2.add("FeedCarStatus");
-
-            //System.out.println(PlcReadObject.getPlcParameterValues(addresses2));
 
         }
     }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/common/PlcHomeEdg.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/common/PlcHomeEdg.java
new file mode 100644
index 0000000..6321ba4
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/common/PlcHomeEdg.java
@@ -0,0 +1,61 @@
+package com.mes.common;
+import cn.hutool.json.JSONObject;
+import java.util.ArrayList;
+import java.util.List;
+
+
+public class PlcHomeEdg extends Thread {
+    @Override
+    public void run() {
+        while (this != null) {
+            JSONObject jsonObject = new JSONObject();
+            try {
+                Thread.sleep(1000);
+                // 娉ㄥ叆mapper
+//                HomeService  = WebSocketServer.applicationContext.getBean(HomeService.class);
+//                QueueMapper  = WebSocketServer.applicationContext.getBean(QueueMapper.class);
+
+
+//                //璇诲彇DB105鍖烘枃浠�
+//                PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
+//
+//                String PlcRequest=plcmes.getPlcParameter("GaToMES").getValue();//璇锋眰
+//                String MesSend=plcmes.getPlcParameter("MESToGaStatus").getValue();//鍙戦��
+//                double width=Double.valueOf(plcmes.getPlcParameter("width").getValue());//瀹�
+//                double height=Double.valueOf(plcmes.getPlcParameter("Height").getValue());//楂�
+
+                //鑾峰彇娴嬮噺鐨勯暱锛屽
+                 boolean istest = true;
+                // String PlcRequest = "1";
+                // String MesSend = "0";
+                // double width = 516;
+                // double height = 507;
+                //System.out.println(111);
+                // //鏌ヨ褰撳墠璁㈠崟浠诲姟
+                //List<FlowCard> OrderTask = storageCageService.SelectOrderTask();
+                //jsonObject.append("OrderTask", OrderTask);
+
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+
+            // jsonObject.append("params", new short[] { 30, 40, });
+            ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Home");
+            if (sendwServer != null) {
+                for (WebSocketServer webserver : sendwServer) {
+                    webserver.sendMessage(jsonObject.toString());
+                    if (webserver != null) {
+
+                        List<String> messages = webserver.getMessages();
+
+                        if (!messages.isEmpty()) {
+                            // // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
+                            webserver.clearMessages();
+                        }
+                    }
+
+                }
+            }
+        }
+    }
+}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/tools/WebSocketServer.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/common/WebSocketServer.java
similarity index 96%
rename from UnLoadGlassModule/src/main/java/com/mes/tools/WebSocketServer.java
rename to hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/common/WebSocketServer.java
index 13a3bde..5fabafa 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/tools/WebSocketServer.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/common/WebSocketServer.java
@@ -1,4 +1,4 @@
-package com.mes.tools;
+package com.mes.common;
 
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
@@ -19,8 +19,6 @@
 @Component("webSocketServer")
 public class WebSocketServer {
 
-    // @Autowired
-    // HomeMapper homeMapper;
 
     public static ConfigurableApplicationContext applicationContext;
 
@@ -59,7 +57,7 @@
         } else {
             webSocketServers.add(this);
         }
-        
+
         log.info("鏈夋柊鐢ㄦ埛鍔犲叆锛寀sername={}, 褰撳墠鍦ㄧ嚎浜烘暟涓猴細{}", username, sessionMap.get(username).size());
 
         // JSONObject result = new JSONObject();
@@ -81,19 +79,19 @@
     public void onClose(Session session, @PathParam("username") String username) {
         List<WebSocketServer> webSocketServers = sessionMap.get(username);
         ArrayList<WebSocketServer> arrayListwebserver = new ArrayList<WebSocketServer>();
-        if (webSocketServers.size()>1) {
+        if (webSocketServers.size() > 1) {
             for (WebSocketServer webSocketServer : webSocketServers) {
-                if(webSocketServer!=this){
+                if (webSocketServer != this) {
                     arrayListwebserver.add(webSocketServer);
                 }
             }
             sessionMap.put(username, arrayListwebserver);
             log.info("绉婚櫎username={}涓�鍚嶇敤鎴穝ession, {}鐨勫綋鍓嶅湪绾夸汉鏁颁负锛歿}", username, username, sessionMap.get(username).size());
-        }else{
+        } else {
             sessionMap.remove(username);
             log.info("绉婚櫎username={}涓�鍚嶇敤鎴穝ession, {}杩炴帴鍏抽棴, 褰撳墠杩炴帴鏁颁负锛歿}", username, username, sessionMap.size());
         }
-        
+
     }
 
     /**
@@ -101,7 +99,7 @@
      * 鍚庡彴鏀跺埌瀹㈡埛绔彂閫佽繃鏉ョ殑娑堟伅
      * onMessage 鏄竴涓秷鎭殑涓浆绔�
      * 鎺ュ彈 娴忚鍣ㄧ socket.send 鍙戦�佽繃鏉ョ殑 json鏁版嵁
-     * 
+     *
      * @param message 瀹㈡埛绔彂閫佽繃鏉ョ殑娑堟伅
      */
     @OnMessage
@@ -157,8 +155,6 @@
     public void clearMessages() {
         messages.clear();
     }
-
-
 
 
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java
index defc8cb..dcd76c0 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java
@@ -3,17 +3,12 @@
 import com.mes.edgstoragecage.entity.EdgStorageCage;
 import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
 import com.mes.edgstoragecage.service.EdgStorageCageService;
-import com.mes.edgstoragecage.service.impl.EdgStorageCageServiceImpl;
-import com.mes.taskcache.entity.TaskCache;
-import com.mes.taskcache.service.impl.TaskCacheServiceImpl;
 import com.mes.utils.Result;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import java.awt.image.ImageProducer;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -25,7 +20,7 @@
  * @author zhoush
  * @since 2024-04-07
  */
-@Api(tags = "鐞嗙墖绗肩紦瀛�")
+@Api(description = "鐞嗙墖绗肩紦瀛�")
 @RestController
 @RequestMapping("/edgStorageCage")
 public class EdgStorageCageController {
@@ -37,28 +32,28 @@
     @PostMapping("/selectEdgStorageCage")
     @ResponseBody
     public Result selectEdgStorageCage () {
-        List<Map> list=edgStorageCageService.selectEdgStorageCages();
+        List<Map<String, Object>> list=edgStorageCageService.selectEdgStorageCages();
         return Result.build(200,"鎴愬姛",list);
     }
-    @ApiOperation("娣诲姞纾ㄨ竟缂撳瓨鐞嗙墖绗间俊鎭�   鍔熻兘锛氱鍐呯粦瀹氱幓鐠�  鍙傛暟(EdgStorageCage edgStorageCage)")
-    @PostMapping("/insertEdgStorageCage")
-    @ResponseBody
-    public Result insertEdgStorageCage(@RequestBody EdgStorageCage edgStorageCage) {
-        boolean isSucess=edgStorageCageService.updateEdgStorageCage(edgStorageCage);
-        return Result.build(200,"娣诲姞鎴愬姛",1);
-    }
-    @ApiOperation("淇敼纾ㄨ竟缂撳瓨鐞嗙墖绗间俊鎭�   鍔熻兘锛氬绗煎唴鏍呮牸杩涜銆愬惎鐢�/绂佺敤銆�/ 銆愭洿鎹€�戠鍐呮爡鏍肩幓鐠冧俊鎭�")
+//    @ApiOperation("娣诲姞纾ㄨ竟缂撳瓨鐞嗙墖绗间俊鎭�   鍔熻兘锛氱鍐呯粦瀹氱幓鐠�  鍙傛暟(EdgStorageCage edgStorageCage)")
+//    @PostMapping("/insertEdgStorageCage")
+//    @ResponseBody
+//    public Result insertEdgStorageCage(@RequestBody EdgStorageCage edgStorageCage) {
+//        boolean isSucess=edgStorageCageService.updateEdgStorageCage(edgStorageCage);
+//        return Result.build(200,"娣诲姞鎴愬姛",1);
+//    }
+    @ApiOperation("淇敼纾ㄨ竟缂撳瓨鐞嗙墖绗间俊鎭�   鍔熻兘锛氬绗煎唴鏍呮牸杩涜銆愬惎鐢�/绂佺敤銆�")
     @PostMapping("/updateEdgStorageCage")
     @ResponseBody
     public Result updateEdgStorageCage(@RequestBody EdgStorageCage edgStorageCage) {
         boolean isSucess=edgStorageCageService.updateEdgStorageCage(edgStorageCage);
         return Result.build(200,"鏇存崲鎴愬姛",1);
     }
-    @ApiOperation("鍒犻櫎纾ㄨ竟缂撳瓨鐞嗙墖绗间俊鎭�   鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑杩涜銆愭竻闄ゃ��")
-    @PostMapping("/deleteEdgStorageCage")
+    @ApiOperation("纾ㄨ竟缂撳瓨鐞嗙墖绗间俊鎭�   鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑杩涜銆愭竻闄�/鏇存崲/缁戝畾銆� EdgStorageCage鏍煎瓙淇℃伅,EdgStorageCageDetails 鐜荤拑淇℃伅 ")
+    @PostMapping("/edgStorageCageGlass")
     @ResponseBody
-    public Result deleteEdgStorageCage(@RequestBody EdgStorageCage edgStorageCage, EdgStorageCageDetails edgStorageCageDetails) {
-        boolean isSucess=edgStorageCageService.updateEdgStorageCage(edgStorageCage);
+    public Result edgStorageCageGlass(@RequestBody EdgStorageCage edgStorageCage,@RequestBody EdgStorageCageDetails edgStorageCageDetails) {
+        boolean isSucess=edgStorageCageService.updateEdgStorageCageDetails(edgStorageCage,edgStorageCageDetails);
         return Result.build(200,"鍒犻櫎鎴愬姛",1);
     }
 
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java
index 5b217ed..e09fb31 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java
@@ -30,14 +30,14 @@
      * 鑾峰彇 鍒囧壊褰撳墠鐗堝浘
      * @return
      */
-    List<OptimizeDetail> selectCutTerritory();
+    List<Map<String, Object>> selectCutTerritory();
 
     /**
      * 鑾峰彇 宸ョ▼涓嬬殑褰撳墠鐗堝浘
      * @param current
      * @return
      */
-    List<OptimizeDetail> selectCurrentCutTerritory(String current);
+    List<Map<String, Object>> selectCurrentCutTerritory(String current);
 
 
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java
index a8309dc..a72c8bb 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.github.yulichang.base.MPJBaseService;
 import com.mes.edgstoragecage.entity.EdgStorageCage;
+import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
 
 import java.util.List;
 import java.util.Map;
@@ -21,24 +22,26 @@
      * 鏌ヨ绗煎唴绌烘牸
      * @return
      */
-    List<Map> selectCacheEmpty();
+    List<Map<String, Object>> selectCacheEmpty();
 
     /**
      * 鏌ヨ绗煎唴鍑虹墖椤哄簭璇︽儏
      * @return
      */
-    List<Map> selectCacheOut();
+    List<Map<String, Object>> selectCacheOut();
 
     /**
      * 鏌ヨ绗煎唴璇︽儏
      * @return
      */
-    List<Map> selectEdgStorageCages();
+    List<Map<String, Object>> selectEdgStorageCages();
 
     /**
-     * 淇敼鐞嗙墖绗煎唴淇℃伅
+     * 淇敼鐞嗙墖绗间俊鎭�
      * @param edgStorageCage
      * @return
      */
     boolean updateEdgStorageCage(EdgStorageCage edgStorageCage);
+
+    boolean updateEdgStorageCageDetails(EdgStorageCage edgStorageCage, EdgStorageCageDetails edgStorageCageDetails);
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java
index cebe39d..64837c0 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java
@@ -2,11 +2,15 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.github.yulichang.query.MPJLambdaQueryWrapper;
 import com.github.yulichang.query.MPJQueryWrapper;
+import com.github.yulichang.toolkit.JoinWrappers;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
 import com.mes.edgstoragecage.mapper.EdgStorageCageDetailsMapper;
 import com.mes.edgstoragecage.service.EdgStorageCageDetailsService;
 import com.mes.pp.entity.OptimizeDetail;
+import com.mes.pp.entity.OptimizeLayout;
 import com.mes.pp.mapper.OptimizeDetailMapper;
 import com.mes.uppattenusage.entity.UpPattenUsage;
 import com.mes.uppattenusage.mapper.UpPattenUsageMapper;
@@ -14,6 +18,7 @@
 import org.springframework.stereotype.Service;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 
 /**
  * <p>
@@ -38,13 +43,21 @@
      * @return
      */
     public boolean identWorn(String glassId, int ControlsId) {
-        List<EdgStorageCageDetails> edgStorageCageDetails = baseMapper.selectList(new QueryWrapper<EdgStorageCageDetails>().eq("glass_id", glassId));
+        List<EdgStorageCageDetails> edgStorageCageDetails = baseMapper.selectList(new MPJLambdaQueryWrapper<EdgStorageCageDetails>().selectAll(EdgStorageCageDetails.class).eq(EdgStorageCageDetails::getGlassId,glassId));
         if (edgStorageCageDetails.size() == 1) {
             EdgStorageCageDetails item=edgStorageCageDetails.get(0);
             item.setState(ControlsId);
-            baseMapper.update(edgStorageCageDetails.get(0), new QueryWrapper<EdgStorageCageDetails>().eq("glass_id", glassId));
+            baseMapper.update(edgStorageCageDetails.get(0), new MPJLambdaWrapper<EdgStorageCageDetails>().selectAll(EdgStorageCageDetails.class).eq(EdgStorageCageDetails::getGlassId,glassId));
             return true;
         }
+//            Sql鐗堟湰
+//        List<EdgStorageCageDetails> edgStorageCageDetails = baseMapper.selectList(new QueryWrapper<EdgStorageCageDetails>().eq("glass_id", glassId));
+//        if (edgStorageCageDetails.size() == 1) {
+//            EdgStorageCageDetails item=edgStorageCageDetails.get(0);
+//            item.setState(ControlsId);
+//            baseMapper.update(edgStorageCageDetails.get(0), new QueryWrapper<EdgStorageCageDetails>().eq("glass_id", glassId));
+//            return true;
+//        }
         return false;
     }
 
@@ -53,15 +66,31 @@
      * @return
      */
     @Override
-    public List<OptimizeDetail> selectCutTerritory() {
-        List<UpPattenUsage> upPattenUsage=upPattenUsageMapper.selectList(new QueryWrapper<UpPattenUsage>()
-                        .eq("state", 1));
+    public List<Map<String, Object>> selectCutTerritory() {
+        List<UpPattenUsage> upPattenUsage=upPattenUsageMapper.selectList(new MPJLambdaWrapper<UpPattenUsage>()
+                .selectAll(UpPattenUsage.class)
+                .eq(UpPattenUsage::getState, 1));
+
         if(!upPattenUsage.isEmpty()){
             UpPattenUsage upPattenUsage1=upPattenUsage.get(0);
-            return optimizeDetailMapper.selectList(new QueryWrapper<OptimizeDetail>()
-                    .eq("project_no", upPattenUsage1.getEngineeringId())
-                    .eq("stock_id",upPattenUsage1.getLayoutSequence())
+            return optimizeDetailMapper.selectJoinMaps(JoinWrappers.lambda(OptimizeDetail.class)
+                    .selectAll(OptimizeDetail.class)
+                    .selectAs(OptimizeLayout::getWidth,"olWidth")
+                    .selectAs(OptimizeLayout::getWidth,"olHeight")
+                    .leftJoin(OptimizeLayout.class,on->on
+                            .eq(OptimizeLayout::getProjectNo,OptimizeDetail::getProjectNo)
+                            .eq(OptimizeLayout::getStockId,OptimizeDetail::getStockId))
+                    .eq(OptimizeDetail::getProjectNo, upPattenUsage1.getEngineeringId())
+                    .eq(OptimizeDetail::getStockId,upPattenUsage1.getLayoutSequence())
             );
+
+//            Sql鐗堟湰
+//            return optimizeDetailMapper.selectJoinMaps(new MPJQueryWrapper<OptimizeDetail>().selectAll(OptimizeDetail.class)
+//                    .select("ol.width as olwidth","ol.height as olheight")
+//                    .leftJoin("optimize_layout ol on t.project_no=ol.project_no and t.stock_id=ol.stock_id")
+//                    .eq("t.project_no", upPattenUsage1.getEngineeringId())
+//                    .eq("t.stock_id",upPattenUsage1.getLayoutSequence())
+//            );
         }
         return null;
     }
@@ -72,11 +101,23 @@
      * @return
      */
     @Override
-    public List<OptimizeDetail> selectCurrentCutTerritory(String current) {
-      return optimizeDetailMapper.selectList(new QueryWrapper<OptimizeDetail>().eq("project_no", current));
+    public List<Map<String, Object>> selectCurrentCutTerritory(String current) {
+
+        return optimizeDetailMapper.selectJoinMaps(JoinWrappers.lambda(OptimizeDetail.class)
+                .selectAll(OptimizeDetail.class)
+                .selectAs(OptimizeLayout::getWidth,"olWidth")
+                .selectAs(OptimizeLayout::getWidth,"olHeight")
+                .leftJoin(OptimizeLayout.class,on->on
+                        .eq(OptimizeLayout::getProjectNo,OptimizeDetail::getProjectNo)
+                        .eq(OptimizeLayout::getStockId,OptimizeDetail::getStockId))
+                .eq(OptimizeDetail::getProjectNo, current)
+        );
+//Sql鐗堟湰
+//        return optimizeDetailMapper.selectJoinMaps(new MPJQueryWrapper<OptimizeDetail>().selectAll(OptimizeDetail.class)
+//                .select("ol.width as olwidth","ol.height as olheight")
+//                .leftJoin("optimize_layout ol on t.project_no=ol.project_no and t.stock_id=ol.stock_id")
+//                .eq("t.project_no",current)
+//        );
     }
-
-    ;
-
 
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageServiceImpl.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageServiceImpl.java
index ee05420..4709fcf 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageServiceImpl.java
@@ -1,8 +1,13 @@
 package com.mes.edgstoragecage.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.github.yulichang.query.MPJLambdaQueryWrapper;
 import com.github.yulichang.query.MPJQueryWrapper;
+import com.github.yulichang.toolkit.JoinWrappers;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.mes.edgstoragecage.entity.EdgStorageCage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
@@ -38,13 +43,20 @@
      * @return
      */
     @Override
-    public List<Map> selectCacheEmpty(){
-        return baseMapper.selectJoinList(
-                Map.class,new MPJQueryWrapper<EdgStorageCage>().selectAll(EdgStorageCage.class)
-                        .select("escd.glass_id","escd.flow_card_id","escd.width","escd.height")
-                        .leftJoin("edg_storage_cage_details escd on t.device_id=escd.device_id and t.slot=escd.slot")
-                        .isNull("escd.slot")
+    public List<Map<String, Object>> selectCacheEmpty(){
+        return baseMapper.selectJoinMaps(JoinWrappers.lambda(EdgStorageCage.class).selectAll(EdgStorageCage.class)
+                .select(EdgStorageCageDetails::getWidth, EdgStorageCageDetails::getHeight,EdgStorageCageDetails::getGlassId)
+                .leftJoin(EdgStorageCageDetails.class,on->on
+                        .eq(EdgStorageCageDetails::getDeviceId,EdgStorageCage::getDeviceId)
+                        .eq(EdgStorageCageDetails::getSlot,EdgStorageCage::getSlot))
+                .isNull(EdgStorageCageDetails::getSlot)
         );
+
+//        return baseMapper.selectJoinMaps(new MPJQueryWrapper<EdgStorageCage>().selectAll(EdgStorageCage.class)
+//                        .select("escd.glass_id","escd.flow_card_id","escd.width","escd.height")
+//                        .leftJoin("edg_storage_cage_details escd on t.device_id=escd.device_id and t.slot=escd.slot")
+//                        .isNull("escd.slot")
+//        );
     }
 
     /**
@@ -52,14 +64,21 @@
      * @return
      */
     @Override
-    public List<Map> selectCacheOut(){
-        return upPattenUsageMapper.selectJoinList(
-                Map.class,new MPJQueryWrapper<UpPattenUsage>().selectAll(UpPattenUsage.class)
-                        .select("escd.glass_id","escd.flow_card_id","escd.width","escd.height")
-                        .leftJoin("edg_storage_cage_details escd on t.device_id=escd.device_id and t.slot=escd.slot")
-                        .isNotNull("escd.slot")
-                        .orderByAsc("escd.tempering_layout_id","escd.tempering_feed_sequence")
+    public List<Map<String, Object>> selectCacheOut(){
+
+        return upPattenUsageMapper.selectJoinMaps(JoinWrappers.lambda(UpPattenUsage.class).selectAll(UpPattenUsage.class)
+                .select(EdgStorageCageDetails::getWidth, EdgStorageCageDetails::getHeight,EdgStorageCageDetails::getGlassId)
+                .leftJoin(EdgStorageCageDetails.class,on->on
+                        .eq(EdgStorageCageDetails::getDeviceId,EdgStorageCage::getDeviceId)
+                        .eq(EdgStorageCageDetails::getSlot,EdgStorageCage::getSlot))
+                .isNull(EdgStorageCageDetails::getSlot)
         );
+//        return upPattenUsageMapper.selectJoinMaps(new MPJQueryWrapper<UpPattenUsage>().selectAll(UpPattenUsage.class)
+//                        .select("escd.glass_id","escd.flow_card_id","escd.width","escd.height")
+//                        .leftJoin("edg_storage_cage_details escd on t.device_id=escd.device_id and t.slot=escd.slot")
+//                        .isNotNull("escd.slot")
+//                        .orderByAsc("escd.tempering_layout_id","escd.tempering_feed_sequence")
+//        );
     }
 
     /**
@@ -67,23 +86,62 @@
      * @return
      */
     @Override
-    public List<Map> selectEdgStorageCages(){
-        return baseMapper.selectJoinList(
-                Map.class,new MPJQueryWrapper<EdgStorageCage>().selectAll(EdgStorageCage.class)
-                        .select("escd.glass_id","escd.flow_card_id","escd.width","escd.height")
-                        .leftJoin("edg_storage_cage_details escd on t.device_id=escd.device_id and t.slot=escd.slot")
+    public List<Map<String, Object>> selectEdgStorageCages(){
+        return baseMapper.selectJoinMaps(JoinWrappers.lambda(EdgStorageCage.class)
+                .selectAll(EdgStorageCage.class)
+                .selectAs(EdgStorageCageDetails::getId,"esdId")
+                .select(EdgStorageCageDetails::getGlassId,EdgStorageCageDetails::getWidth,EdgStorageCageDetails::getHeight,EdgStorageCageDetails::getId)
+                .leftJoin(EdgStorageCageDetails.class,on->on
+                        .eq(EdgStorageCageDetails::getDeviceId,EdgStorageCage::getDeviceId)
+                        .eq(EdgStorageCageDetails::getSlot,EdgStorageCage::getSlot))
         );
+//        return baseMapper.selectJoinMaps(new MPJQueryWrapper<EdgStorageCage>().selectAll(EdgStorageCage.class)
+//                        .select("escd.glass_id","escd.flow_card_id","escd.width","escd.height")
+//                        .leftJoin("edg_storage_cage_details escd on t.device_id=escd.device_id and t.slot=escd.slot")
+//        );
     }
 
     /**
-     * 淇敼鐞嗙墖绗煎唴淇℃伅 鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑 銆愭坊鍔�/鍒犻櫎/鏇存崲銆�
+     * 淇敼鐞嗙墖绗间俊鎭� 鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑 銆愬惎鐢�/绂佺敤銆�
      * @param edgStorageCage
      * @return
      */
     @Override
     public boolean updateEdgStorageCage(EdgStorageCage edgStorageCage){
-        baseMapper.updateById(edgStorageCage);
+        EdgStorageCage edgItem=baseMapper.selectById(edgStorageCage.getId());
+        edgItem.setEnableState(edgStorageCage.getEnableState());
+        baseMapper.updateById(edgItem);
         return true;
     }
 
+    /**
+     *淇敼鐞嗙墖绗间俊鎭� 鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑 銆愭坊鍔�/鍒犻櫎/鏇存崲銆�
+     * @param edgStorageCage
+     * @param edgStorageCageDetails
+     * @return
+     */
+    @Override
+    public boolean updateEdgStorageCageDetails(EdgStorageCage edgStorageCage,EdgStorageCageDetails edgStorageCageDetails){
+        EdgStorageCage edgItem=baseMapper.selectById(edgStorageCage.getId());
+        EdgStorageCageDetails edgDItem=edgStorageCageDetailsMapper.selectById(edgStorageCageDetails.getId());
+        if (edgItem!=null){
+            if(edgDItem==null){
+                //绉婚櫎鐜荤拑
+                EdgStorageCageDetails result=edgStorageCageDetailsMapper.selectOne(new MPJLambdaWrapper<EdgStorageCageDetails>().eq(EdgStorageCageDetails::getId,edgStorageCageDetails.getId()));
+                result.setSlot(0);
+                edgStorageCageDetailsMapper.updateById(result);
+            }else{
+                //1.缁戝畾鏂扮殑鐜荤拑    2.鏇存崲鐜荤拑  涓婁竴鐗囨竻闄�   閲嶆柊缁戝畾
+                EdgStorageCageDetails lastResult=edgStorageCageDetailsMapper.selectOne(new MPJLambdaWrapper<EdgStorageCageDetails>().eq(EdgStorageCageDetails::getSlot,edgStorageCage.getSlot()));
+                lastResult.setSlot(0);
+                edgStorageCageDetailsMapper.updateById(lastResult);
+                EdgStorageCageDetails result=edgStorageCageDetailsMapper.selectById(edgStorageCageDetails.getId());
+                result.setSlot(edgStorageCageDetails.getSlot());
+                edgStorageCageDetailsMapper.updateById(result);
+            }
+        }
+        return true;
+    }
+
+
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/glassinfo/controller/GlassInfoController.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/glassinfo/controller/GlassInfoController.java
index 78b491f..08fa5a6 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/glassinfo/controller/GlassInfoController.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/glassinfo/controller/GlassInfoController.java
@@ -10,10 +10,8 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.RestController;
-import com.mes.glassinfo.service.impl.GlassInfoServiceImpl;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * <p>
@@ -23,7 +21,7 @@
  * @author zhoush
  * @since 2024-04-07
  */
-@Api(tags = "鐜荤拑淇℃伅灏忕墖")
+@Api(description = "鐜荤拑淇℃伅灏忕墖")
 @RestController
 @RequestMapping("/glassInfo")
 public class GlassInfoController {
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
index f62e9ca..7e04d74 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
@@ -2,9 +2,12 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.query.MPJLambdaQueryWrapper;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.mes.glassinfo.entity.GlassInfo;
 import com.mes.glassinfo.mapper.GlassInfoMapper;
 import com.mes.glassinfo.service.GlassInfoService;
+import com.mes.taskcache.entity.TaskCache;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -30,7 +33,8 @@
      */
     @Override
     public List<GlassInfo> selectId(String glassId){
-        return baseMapper.selectList(new QueryWrapper<GlassInfo>().eq("glass_id",glassId));
+        return baseMapper.selectList(new MPJLambdaWrapper<GlassInfo>().selectAll(GlassInfo.class).eq(GlassInfo::getGlassId,glassId));
+//        return baseMapper.selectList(new QueryWrapper<GlassInfo>().eq("glass_id",glassId));
     };
 
     /**
@@ -49,6 +53,8 @@
      */
     @Override
     public List<GlassInfo> selectFlowCardId(String flowCardId){
-        return baseMapper.selectList(new QueryWrapper<GlassInfo>().eq("flow_card_id",flowCardId));
+        return baseMapper.selectList(new MPJLambdaWrapper<GlassInfo>().selectAll(GlassInfo.class).eq(GlassInfo::getFlowCardId,flowCardId));
+        //Sql鐗堟湰
+//        return baseMapper.selectList(new QueryWrapper<GlassInfo>().eq("flow_card_id",flowCardId));
     };
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java
index fae360b..bef6b24 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java
@@ -2,7 +2,6 @@
 
 import com.mes.edgstoragecage.service.EdgStorageCageDetailsService;
 import com.mes.edgstoragecage.service.EdgStorageCageService;
-import com.mes.pp.entity.OptimizeDetail;
 import com.mes.taskcache.entity.TaskCache;
 import com.mes.taskcache.service.TaskCacheService;
 import com.mes.utils.Result;
@@ -22,7 +21,7 @@
  * @author zhoush
  * @since 2024-04-07
  */
-@Api(tags = "璇嗗埆鏄剧ず")
+@Api(description = "璇嗗埆鏄剧ず")
 @RestController
 @RequestMapping("/taskCache")
 public class TaskCacheController {
@@ -39,14 +38,14 @@
     @PostMapping("/cutTerritory")
     @ResponseBody
     public Result cutTerritory(String current) {
-        List<OptimizeDetail> h = edgStorageCageDetailsService.selectCurrentCutTerritory(current);
+        List<Map<String, Object>> h = edgStorageCageDetailsService.selectCurrentCutTerritory(current);
         return Result.build(200,"鎴愬姛",h);
     }
     @ApiOperation("璇嗗埆鏄剧ず  褰撳墠鐗堝浘   鍙傛暟()")
     @PostMapping("/currentCutTerritory")
     @ResponseBody
     public Result currentCutTerritory() {
-        List<OptimizeDetail> h = edgStorageCageDetailsService.selectCutTerritory();
+        List<Map<String, Object>> h = edgStorageCageDetailsService.selectCutTerritory();
         return Result.build(200,"鎴愬姛",h);
     }
     @ApiOperation("璇嗗埆鎿嶄綔锛�   鐮存崯/鎷胯蛋     鍙傛暟锛圛D,鍔熻兘[200锛氭嬁璧帮紝201:鐮存崯]锛�")
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java
index 6560f03..ffa237c 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java
@@ -1,12 +1,15 @@
 package com.mes.taskcache.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.github.yulichang.query.MPJLambdaQueryWrapper;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.mes.glassinfo.entity.GlassInfo;
 import com.mes.glassinfo.mapper.GlassInfoMapper;
 import com.mes.taskcache.entity.TaskCache;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.mes.taskcache.mapper.TaskCacheMapper;
 import com.mes.taskcache.service.TaskCacheService;
+import com.mes.uppattenusage.entity.UpPattenUsage;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -41,7 +44,8 @@
      */
     @Override
     public List<TaskCache> selectEdgInfo(String line) {
-        return baseMapper.selectList(new QueryWrapper<TaskCache>().eq("end_cell",line));
+        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getEndCell,line));
+//        return baseMapper.selectList(new QueryWrapper<TaskCache>().eq("end_cell",line));
     }
 
     /**
@@ -50,7 +54,8 @@
      */
     @Override
     public List<TaskCache> selectCacheInfo(){
-        return baseMapper.selectList(new QueryWrapper<TaskCache>().eq("task_status",0));
+        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getTaskStatus,0));
+//        return baseMapper.selectList(new QueryWrapper<TaskCache>().eq("task_status",0));
     }
 
     /**
@@ -68,7 +73,9 @@
      */
     @Override
     public List<TaskCache> selectInputTaskCache(){
-        return baseMapper.selectList(new QueryWrapper<TaskCache>().eq("task_status",0).eq("task_type",1));
+        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getTaskStatus,0).eq(TaskCache::getTaskType,1));
+
+//        return baseMapper.selectList(new QueryWrapper<TaskCache>().eq("task_status",0).eq("task_type",1));
     }
 
     /**
@@ -77,7 +84,8 @@
      */
     @Override
     public List<TaskCache> selectOutTaskCache(){
-        return baseMapper.selectList(new QueryWrapper<TaskCache>().eq("task_status",0).eq("task_type",2));
+        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getTaskStatus,0).eq(TaskCache::getTaskType,2));
+//        return baseMapper.selectList(new QueryWrapper<TaskCache>().eq("task_status",0).eq("task_type",2));
     }
 
     /**
@@ -87,6 +95,7 @@
      */
     @Override
     public List<TaskCache> selectLastOutCacheInfo(String line){
-        return baseMapper.selectList(new QueryWrapper<TaskCache>().eq("end_xxxxcell",line).eq("task_status",1).orderByDesc("ID"));
+        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getEndCell,line).eq(TaskCache::getTaskStatus,1).orderByDesc(TaskCache::getID));
+//        return baseMapper.selectList(new QueryWrapper<TaskCache>().eq("end_cell",line).eq("task_status",1).orderByDesc("ID"));
     }
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application-dev.yml b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application-dev.yml
new file mode 100644
index 0000000..63837a9
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application-dev.yml
@@ -0,0 +1,27 @@
+spring:
+  datasource:
+    dynamic:
+      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
+      datasource:
+        hangzhoumes:
+          url: jdbc:mysql://127.0.0.1:3306/hangzhoumes?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+        pp:
+          url: jdbc:mysql://127.0.0.1:3306/pp?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 127.0.0.1:8848
+  application:
+    name: cacheGlass
+  redis:
+    database: 0
+    host: 127.0.0.1
+    port: 6379
+    password: 123456
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application-loc.yml b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application-loc.yml
new file mode 100644
index 0000000..477e2cb
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application-loc.yml
@@ -0,0 +1,27 @@
+spring:
+  datasource:
+    dynamic:
+      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
+      datasource:
+        hangzhoumes:
+          url: jdbc:mysql://192.168.56.10:3306/hangzhoumes?serverTimezone=GMT%2b8
+          username: root
+          password: root
+          driver-class-name: com.mysql.cj.jdbc.Driver
+        pp:
+          url: jdbc:mysql://192.168.56.10:3306/pp?serverTimezone=GMT%2b8
+          username: root
+          password: root
+          driver-class-name: com.mysql.cj.jdbc.Driver
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 127.0.0.1:8848
+  application:
+    name: cacheGlass
+  redis:
+    database: 0
+    host: 127.0.0.1
+    port: 6379
+    password: 123456
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application-prod.yml b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application-prod.yml
new file mode 100644
index 0000000..74b6d6c
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application-prod.yml
@@ -0,0 +1,27 @@
+spring:
+  datasource:
+    dynamic:
+      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
+      datasource:
+        hangzhoumes:
+          url: jdbc:mysql://10.153.19.150:3306/hangzhoumes?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+        pp:
+          url: jdbc:mysql://10.153.19.150:3306/pp?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 10.153.19.150:8848
+  application:
+    name: cacheGlass
+  redis:
+    database: 0
+    host: 10.153.19.150
+    port: 6379
+    password: 123456
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
index adff7bf..90aaa1b 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
@@ -1,45 +1,11 @@
 server:
   port: 8081
 spring:
-  datasource:
-    dynamic:
-      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
-      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
-      datasource:
-        hangzhoumes:
-          url: jdbc:mysql://10.153.19.150:3306/hangzhoumes?serverTimezone=GMT%2b8
-          username: root
-          password: beibo.123/
-          driver-class-name: com.mysql.cj.jdbc.Driver
-        pp:
-          url: jdbc:mysql://10.153.19.150:3306/pp?serverTimezone=GMT%2b8
-          username: root
-          password: beibo.123/
-          driver-class-name: com.mysql.cj.jdbc.Driver
-#        pp:
-#          url: jdbc:mysql://10.153.19.150:3306/pp?serverTimezone=GMT%2b8
-#          username: root
-#          password: beibo.123/
-#          driver-class-name: com.mysql.cj.jdbc.Driver
-#        salve_hangzhoumes:
-#          url: jdbc:sqlserver://10.153.19.150:1433;databasename=hangzhoumes
-#          username: sa
-#          password: beibo.123/
-#          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-  cloud:
-    nacos:
-      discovery:
-        server-addr: 10.153.19.150:8848
+  profiles:
+    active: prod
   application:
     name: cacheGlass
-  redis:
-    database: 0
-    host: 10.153.19.150
-    port: 6379
-    password: 123456
-  session:
-    store-type: redis
 mybatis-plus:
   mapper-locations: classpath*:mapper/*.xml
   configuration:
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
\ No newline at end of file
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/logback-spring.xml b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/logback-spring.xml
new file mode 100644
index 0000000..8a51541
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/logback-spring.xml
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="10 seconds">
+    <!-- logger涓婁笅鏂囧悕绉帮紙鏍规嵁涓氬姟淇敼锛� -->
+    <contextName>cacheGlass</contextName>
+
+    <!-- 瀹氫箟浜嗕竴涓悕涓簊erverName鐨勫睘鎬э紝瀹冪殑鍊兼潵鑷簬logging.file.name锛屽鏋滄病鏈夋壘鍒拌灞炴�ч粯璁や负MyServerName锛堟牴鎹笟鍔′慨鏀癸級 -->
+    <springProperty name="serverName" source="logging.file.name" defaultValue="cacheGlass"/>
+    <springProperty name="logging.path" source="logging.file.path" defaultValue="././logs/"/>
+
+    <!-- 褰╄壊鏃ュ織渚濊禆鐨勬覆鏌撶被 -->
+    <!-- 瀹氫箟浜嗕竴涓悕涓篶lr鐨勮浆鎹㈣鍒欙紝瀹冧娇鐢╫rg.springframework.boot.logging.logback.ColorConverter绫昏繘琛岃浆鎹紝杩欎釜鍏冪礌閫氬父鐢ㄤ簬灏嗘棩蹇楄緭鍑轰腑鐨勬枃鏈潃鑹诧紝浠ヤ究鏇村鏄撳湴鍖哄垎涓嶅悓鐨勬棩蹇楃骇鍒垨鍏朵粬淇℃伅 -->
+    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
+    <!-- WhitespaceThrowableProxyConverter鍜孍xtendedWhitespaceThrowableProxyConverter閮芥槸鐢ㄤ簬灏嗗紓甯镐俊鎭浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず鐨勭被銆傚畠浠箣闂寸殑鍖哄埆鍦ㄤ簬锛孍xtendedWhitespaceThrowableProxyConverter鍦ㄨ緭鍑哄紓甯镐俊鎭椂浼氬寘鍚洿澶氱殑璇︾粏淇℃伅锛屼緥濡傚紓甯哥殑绫诲悕銆佹柟娉曞悕鍜岃鍙风瓑 -->
+    <!-- 瀹氫箟浜嗕竴涓悕涓簑ex鐨勮浆鎹㈣鍒欙紝瀹冧娇鐢╫rg.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter绫昏繘琛岃浆鎹紝杩欎釜鍏冪礌閫氬父鐢ㄤ簬灏嗗紓甯镐俊鎭浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず -->
+    <conversionRule conversionWord="wex"
+                    converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
+    <!-- 瀹氫箟浜嗕竴涓悕涓簑Ex鐨勮浆鎹㈣鍒欙紝瀹冧娇鐢╫rg.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter绫昏繘琛岃浆鎹紝杩欎釜鍏冪礌閫氬父鐢ㄤ簬灏嗗紓甯镐俊鎭浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず -->
+    <conversionRule conversionWord="wEx"
+                    converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
+
+    <!-- 褰╄壊鏃ュ織鏍煎紡 -->
+    <!-- value鍊兼槸鏃ュ織杈撳嚭妯℃澘锛� :-鏄睘鎬у悕鍜屽叾榛樿鍊间箣闂寸殑鍒嗛殧绗︼紝浣滅敤涓�:鐩稿悓 -->
+    <!-- 瀹氫箟鏃ュ織杈撳嚭鏍煎紡鐨勮浆鎹㈣鍒欙紝%d{yyyy-MM-dd HH:mm:ss.SSS}琛ㄧず鏃ユ湡鍜屾椂闂达紝%clr琛ㄧず灏嗚緭鍑烘枃鏈潃鑹诧紝{faint}琛ㄧず浣跨敤娣¤壊 -->
+    <!-- %5p琛ㄧず鏃ュ織绾у埆杈撳嚭鍙冲榻愶紝宸﹁竟浠ョ┖鏍煎~鍏� -->
+    <!-- ${PID:- }琛ㄧず杩涚▼ID锛�%clr琛ㄧず灏嗚緭鍑烘枃鏈潃鑹诧紝{magenta}琛ㄧず浣跨敤娲嬬孩鑹� -->
+    <!-- -琛ㄧず涓�涓垎闅旂 -->
+    <!-- %t锛氭樉绀轰骇鐢熻鏃ュ織鐨勭嚎绋嬪悕锛�%15锛氳嫢瀛楃闀垮害灏忎簬15锛屽垯宸﹁竟鐢ㄧ┖鏍煎~鍏咃紱%.15锛氳嫢瀛楃闀垮害瓒呰繃15锛屾埅鍘诲浣欏瓧绗� -->
+    <!-- %-40锛氳嫢瀛楃闀垮害灏忎簬40锛屽垯鍙宠竟鐢ㄧ┖鏍煎~鍏咃紱%.40锛氳嫢瀛楃闀垮害瓒呰繃40锛屾埅鍘诲浣欏瓧绗︼紱logger{39}瀵瑰簲鐨勬槸鈥渓ogging.WARNING鈥濈骇鍒�傚叿浣撴潵璇达紝Python鐨刲ogging妯″潡瀹氫箟浜嗕互涓嬪嚑涓骇鍒紙浠庝綆鍒伴珮锛夛細NOTSET銆丏EBUG銆両NFO銆乄ARNING銆丒RROR銆丆RITICAL銆傚洜姝わ紝logger{39}琛ㄧず鐨勬槸WARNING绾у埆锛屽嵆鏃ュ織璁板綍鍣ㄤ細璁板綍鎵�鏈塛ARNING绾у埆鍙婁互涓婄殑鏃ュ織淇℃伅 -->
+    <!-- %m琛ㄧず鏃ュ織娑堟伅锛�%n琛ㄧず鎹㈣绗︼紱${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}琛ㄧず寮傚父淇℃伅銆傚鏋滄棩蹇楄緭鍑轰腑鍖呭惈寮傚父淇℃伅锛岃繖涓鍒欏皢浼氬皢鍏惰浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず -->
+    <property name="CONSOLE_LOG_PATTERN"
+              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
+
+    <!--1. 杈撳嚭鍒版帶鍒跺彴-->
+    <!-- 瀹氫箟鎺у埗鍙版棩蹇楄緭鍑虹殑appender锛宑lass="ch.qos.logback.core.ConsoleAppender"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凜onsoleAppender绫绘潵杈撳嚭鏃ュ織鍒版帶鍒跺彴 -->
+    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+        <!--姝ゆ棩蹇梐ppender鏄负寮�鍙戜娇鐢紝鍙厤缃渶搴曠骇鍒紝鎺у埗鍙拌緭鍑虹殑鏃ュ織绾у埆鏄ぇ浜庢垨绛変簬姝ょ骇鍒殑鏃ュ織淇℃伅-->
+        <!-- 瀹氫箟鏃ュ織杈撳嚭绾у埆鐨勮繃婊ゅ櫒锛宑lass="ch.qos.logback.classic.filter.ThresholdFilter"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凾hresholdFilter绫绘潵杩囨护鏃ュ織杈撳嚭锛�<level>debug</level>琛ㄧず鍙緭鍑篸ebug绾у埆鍙婁互涓婄殑鏃ュ織 -->
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>debug</level>
+        </filter>
+        <encoder>
+            <!-- ${CONSOLE_LOG_PATTERN}琛ㄧず鎺у埗鍙版棩蹇楄緭鍑烘牸寮忥紝UTF-8琛ㄧず缂栫爜鏍煎紡 -->
+            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
+            <!-- 璁剧疆瀛楃闆� -->
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+    <!--2. 杈撳嚭鍒版枃妗�-->
+    <!-- 2.1 level涓� DEBUG 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <!-- 瀹氫箟鏂囦欢鏃ュ織杈撳嚭鐨刟ppender锛宑lass="ch.qos.logback.core.rolling.RollingFileAppender"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凴ollingFileAppender绫绘潵杈撳嚭鏃ュ織鍒版枃浠� -->
+    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_debug.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 璁剧疆瀛楃闆� -->
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <!-- 瀹氫箟鏃ュ織鏂囦欢婊氬姩绛栫暐鐨勬爣绛撅紝class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凾imeBasedRollingPolicy绫绘潵瀹氫箟鏃ュ織鏂囦欢鐨勬粴鍔ㄧ瓥鐣� -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 鏃ュ織褰掓。 -->
+            <!-- 瀹氫箟鏃ュ織鏂囦欢鍚嶇殑妯″紡銆傚湪杩欎釜妯″紡涓紝${logging.path}琛ㄧず鏃ュ織鏂囦欢鐨勮矾寰勶紝%d{yyyy-MM-dd}琛ㄧず鏃ユ湡鏍煎紡锛�%i琛ㄧず鏂囦欢绱㈠紩 -->
+            <fileNamePattern>${logging.path}/${serverName}/web-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <!-- 瀹氫箟鏃ュ織鏂囦欢婊氬姩绛栫暐鐨勬爣绛撅紝class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凷izeAndTimeBasedFNATP绫绘潵瀹氫箟鏃ュ織鏂囦欢鐨勬粴鍔ㄧ瓥鐣ワ紝<maxFileSize>100MB</maxFileSize>琛ㄧず鏃ュ織鏂囦欢鐨勬渶澶уぇ灏忎负100MB銆傝繖涓粴鍔ㄧ瓥鐣ラ�氬父鐢ㄤ簬鎸夌収鏃堕棿鍜屾枃浠跺ぇ灏忔粴鍔ㄦ棩蹇楁枃浠讹紝浠ヤ究鏇村ソ鍦扮鐞嗘棩蹇楁枃浠剁殑澶у皬鍜屾暟閲� -->
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍debug绾у埆鐨� -->
+        <!-- 瀹氫箟鏃ュ織杈撳嚭绾у埆鐨勮繃婊ゅ櫒銆傚湪杩欎釜杩囨护鍣ㄤ腑锛宑lass="ch.qos.logback.classic.filter.LevelFilter"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凩evelFilter绫绘潵杩囨护鏃ュ織杈撳嚭锛�<level>debug</level>琛ㄧず鍙緭鍑篸ebug绾у埆鍙婁互涓婄殑鏃ュ織 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>debug</level>
+            <!-- <onMatch>ACCEPT</onMatch>琛ㄧず濡傛灉鏃ュ織浜嬩欢涓庤繃婊ゅ櫒鍖归厤锛屽垯鎺ュ彈璇ヤ簨浠讹紝<onMismatch>DENY</onMismatch>琛ㄧず濡傛灉鏃ュ織浜嬩欢涓庤繃婊ゅ櫒涓嶅尮閰嶏紝鍒欐嫆缁濊浜嬩欢 -->
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!-- 2.2 level涓� INFO 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_info.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 澶╁ぉ鏃ュ織褰掓。璺緞浠ュ強鏍煎紡 -->
+            <fileNamePattern>${logging.path}/${serverName}/web-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍info绾у埆鐨� -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>info</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!-- 2.3 level涓� WARN 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_warn.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 姝ゅ璁剧疆瀛楃闆� -->
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logging.path}/${serverName}/web-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍warn绾у埆鐨� -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>warn</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!-- 2.4 level涓� ERROR 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_error.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 姝ゅ璁剧疆瀛楃闆� -->
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logging.path}/${serverName}/web-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍ERROR绾у埆鐨� -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>ERROR</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!--     4.1 寮�鍙戠幆澧�:鎵撳嵃鎺у埗鍙�-->
+    <!-- 鐢ㄤ簬鍦⊿pring Boot搴旂敤绋嬪簭涓厤缃棩蹇楄褰曠殑鏍囩銆傚湪杩欎釜鏍囩涓紝name="dev"琛ㄧず杩欎釜閰嶇疆鏂囦欢鍙湪dev鐜涓敓鏁堬紝<logger name="com.myClass.controller" level="debug"/>琛ㄧず涓篶om.myClass.controller锛堟牴鎹笟鍔′慨鏀癸級杩欎釜鍖呬笅鐨勭被閰嶇疆鏃ュ織杈撳嚭绾у埆涓篸ebug -->
+    <!--    <springProfile name="dev">-->
+    <!--        <logger name="com.myClass.controller" level="debug"/>-->
+    <!--    </springProfile>-->
+    <!-- 鐢ㄤ簬閰嶇疆鏃ュ織杈撳嚭鐨勬爣绛俱�傚湪杩欎釜鏍囩涓紝level="info"琛ㄧず鏃ュ織杈撳嚭绾у埆涓篿nfo锛�<appender-ref ref="CONSOLE"/>銆�<appender-ref ref="DEBUG_FILE"/>銆�<appender-ref ref="INFO_FILE"/>銆�<appender-ref ref="WARN_FILE"/>銆�<appender-ref ref="ERROR_FILE"/>琛ㄧず灏嗘棩蹇楄緭鍑哄埌涓嶅悓鐨刟ppender涓紝鍒嗗埆涓烘帶鍒跺彴銆乨ebug鏂囦欢銆乮nfo鏂囦欢銆亀arn鏂囦欢鍜宔rror鏂囦欢 -->
+    <root level="info">
+        <appender-ref ref="CONSOLE"/>
+        <appender-ref ref="DEBUG_FILE"/>
+        <appender-ref ref="INFO_FILE"/>
+        <appender-ref ref="WARN_FILE"/>
+        <appender-ref ref="ERROR_FILE"/>
+    </root>
+</configuration>
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java
index 53f728a..2b083c4 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java
@@ -1,10 +1,14 @@
 package com.mes;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.github.yulichang.query.MPJLambdaQueryWrapper;
+import com.github.yulichang.query.MPJQueryWrapper;
+import com.github.yulichang.toolkit.JoinWrappers;
 import com.mes.edgstoragecage.service.EdgStorageCageDetailsService;
 import com.mes.edgstoragecage.service.EdgStorageCageService;
 import com.mes.edgstoragecage.service.impl.EdgStorageCageServiceImpl;
 import com.mes.pp.entity.OptimizeDetail;
+import com.mes.pp.entity.OptimizeLayout;
 import com.mes.pp.mapper.OptimizeDetailMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.junit.Test;
@@ -42,17 +46,17 @@
 
     @Test
     public void testCacheGlass() {
-        List<Map> map= edgStorageCageService.selectEdgStorageCages();
+        List<Map<String, Object>> map= edgStorageCageService.selectEdgStorageCages();
         log.info("绗煎唴淇℃伅锛歿}", Arrays.asList(map));
     }
     @Test
-    public void testselectCacheEmpty() {
-        List<Map> map= edgStorageCageService.selectCacheEmpty();
+    public void testSelectCacheEmpty() {
+        List<Map<String, Object>> map= edgStorageCageService.selectCacheEmpty();
         log.info("绗煎唴绌烘牸锛歿}", Arrays.asList(map));
     }
     @Test
     public void testScan() {
-        List<OptimizeDetail> map= edgStorageCageDetailsService.selectCutTerritory();
+        List<Map<String, Object>> map= edgStorageCageDetailsService.selectCutTerritory();
         log.info("鍒囧壊褰撳墠鐗堝浘淇℃伅锛歿}", Arrays.asList(map));
     }
 
@@ -65,5 +69,20 @@
         log.info("鍒囧壊褰撳墠鐗堝浘淇℃伅锛歿}", Arrays.asList(optimizeDetail));
 
     }
+    @Test
+    public void testOptimizeDetail() {
+
+        List<Map<String, Object>> map2=optimizeDetailMapper.selectJoinMaps(JoinWrappers.lambda(OptimizeDetail.class)
+                .selectAll(OptimizeDetail.class)
+                .selectAs(OptimizeLayout::getWidth,"olWidth")
+                .selectAs(OptimizeLayout::getWidth,"olHeight")
+                .select(OptimizeLayout::getWidth,OptimizeLayout::getHeight)
+                .leftJoin(OptimizeLayout.class,on-> on.eq(OptimizeLayout::getProjectNo,OptimizeDetail::getProjectNo)
+                        .eq(OptimizeLayout::getStockId,OptimizeDetail::getStockId))
+                .eq(OptimizeDetail::getProjectNo,"P24032204" )
+                .eq(OptimizeDetail::getStockId,5)
+        );
+        log.info("鍒囧壊褰撳墠鐗堝浘淇℃伅1锛歿}", Arrays.asList(map2));
+    }
 
 }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/pom.xml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/pom.xml
index 4ecea3c..88b2846 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/pom.xml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/pom.xml
@@ -13,11 +13,11 @@
 <artifactId>cacheVerticalGlass</artifactId>
     <dependencies>
 
-        <dependency>
-            <groupId>com.github.yulichang</groupId>
-            <artifactId>mybatis-plus-join</artifactId>
-            <version>1.1.6</version>
-        </dependency>
+        <!--        <dependency>-->
+        <!--            <groupId>com.github.yulichang</groupId>-->
+        <!--            <artifactId>mybatis-plus-join</artifactId>-->
+        <!--            <version>1.1.6</version>-->
+        <!--        </dependency>-->
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/CacheVerticalClassModuleApplication.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/CacheVerticalClassModuleApplication.java
index bd96580..bdd4e12 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/CacheVerticalClassModuleApplication.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/CacheVerticalClassModuleApplication.java
@@ -5,6 +5,7 @@
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.scheduling.annotation.EnableScheduling;
 import springfox.documentation.swagger2.annotations.EnableSwagger2;
 
 /**
@@ -17,6 +18,7 @@
 @EnableSwagger2
 @EnableDiscoveryClient
 @MapperScan(basePackages = "com.mes.*.mapper")
+@EnableScheduling
 public class CacheVerticalClassModuleApplication {
     public static void main(String[] args) {
         try {
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageController.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageController.java
index 9595d77..2564546 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageController.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageController.java
@@ -2,7 +2,7 @@
 
 import com.mes.bigstorage.entity.BigStorageCage;
 import com.mes.bigstorage.service.BigStorageCageService;
-import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -19,7 +19,7 @@
  * @author zhoush
  * @since 2024-03-27
  */
-@ApiModel("鐞嗙墖绗间俊鎭�")
+@Api(description = "鐞嗙墖绗间俊鎭�")
 @RestController
 @RequestMapping("/bigStorageCage")
 public class BigStorageCageController {
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
index 4041b1e..2b003c0 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
@@ -3,10 +3,9 @@
 
 import com.mes.bigstorage.entity.BigStorageCageDetails;
 import com.mes.bigstorage.service.BigStorageCageDetailsService;
-import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
@@ -21,7 +20,7 @@
  * @author zhoush
  * @since 2024-03-27
  */
-@ApiModel(description = "鐞嗙墖绗艰鎯�")
+@Api(description = "鐞嗙墖绗艰鎯�")
 @RestController
 @RequestMapping("/bigStorageCageDetails")
 public class BigStorageCageDetailsController {
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCage.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCage.java
index ddc77a0..5c89cc9 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCage.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCage.java
@@ -3,7 +3,7 @@
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
-import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -19,7 +19,7 @@
  * @author zhoush
  * @since 2024-03-27
  */
-@ApiModel(description = "<p> 澶х悊鐗囩 </p>")
+@Api(description = "澶х悊鐗囩")
 @Data
 @EqualsAndHashCode(callSuper = false)
 public class BigStorageCage implements Serializable {
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java
index fc9c3e0..4788f9b 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java
@@ -2,22 +2,22 @@
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
-import java.io.Serializable;
-
-import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.io.Serializable;
+
 /**
  * <p>
- * 
+ *
  * </p>
  *
  * @author zhoush
  * @since 2024-03-27
  */
-@ApiModel(description = "<p> 澶х悊鐗囩璇︽儏 </p>")
+@Api(description = "澶х悊鐗囩璇︽儏")
 @Data
 @EqualsAndHashCode(callSuper = false)
 public class BigStorageCageDetails implements Serializable {
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java
index 6956b36..6e71ea3 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java
@@ -162,6 +162,9 @@
         bigStorageCageMapper.update(bigStorageCage, bigStorageCageWrapper);
     }
 
+
+
+
     @Override
     public List<BigStorageCage> querybigStorageCageDetail() {
         //1銆佽幏鍙栧ぇ鐞嗙墖绗间俊鎭�
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageFeedTaskController.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageFeedTaskController.java
index d84d57b..332c237 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageFeedTaskController.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageFeedTaskController.java
@@ -3,7 +3,7 @@
 
 import com.mes.bigstoragetask.entity.BigStorageCageFeedTask;
 import com.mes.bigstoragetask.service.BigStorageCageFeedTaskService;
-import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -20,7 +20,7 @@
  * @author zhoush
  * @since 2024-04-16
  */
-@ApiModel("杩涚墖浠诲姟淇℃伅")
+@Api(description = "杩涚墖浠诲姟淇℃伅")
 @RestController
 @RequestMapping("/big-storage-cage-feed-task")
 public class BigStorageCageFeedTaskController {
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageOutTaskController.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageOutTaskController.java
index d98ee38..dbdc794 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageOutTaskController.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageOutTaskController.java
@@ -3,7 +3,7 @@
 
 import com.mes.bigstoragetask.entity.BigStorageCageOutTask;
 import com.mes.bigstoragetask.service.BigStorageCageOutTaskService;
-import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -20,7 +20,7 @@
  * @author zhoush
  * @since 2024-04-16
  */
-@ApiModel("鍑虹墖浠诲姟淇℃伅")
+@Api(description = "鍑虹墖浠诲姟淇℃伅")
 @RestController
 @RequestMapping("/big-storage-cage-out-task")
 public class BigStorageCageOutTaskController {
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/component/PlcStorageCage.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/component/PlcStorageCage.java
deleted file mode 100644
index a53fcde..0000000
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/component/PlcStorageCage.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package com.mes.component;
-
-import cn.hutool.json.JSONObject;
-import com.mes.bigstorage.entity.BigStorageCageDetails;
-import com.mes.bigstorage.service.BigStorageCageDetailsService;
-import com.mes.bigstorage.service.BigStorageCageService;
-import com.mes.bigstoragetask.entity.BigStorageCageFeedTask;
-import com.mes.bigstoragetask.service.BigStorageCageFeedTaskService;
-import com.mes.bigstoragetask.service.BigStorageCageOutTaskService;
-import com.mes.edgstoragetask.service.TaskCacheService;
-import com.mes.glassinfo.entity.GlassInfo;
-import com.mes.glassinfo.service.GlassInfoService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import java.util.List;
-
-@Slf4j
-public class PlcStorageCage extends Thread {
-
-    @Autowired
-    private BigStorageCageService bigStorageCageService;
-    @Autowired
-    private BigStorageCageDetailsService bigStorageCageDetailsService;
-    @Autowired
-    private GlassInfoService glassInfoService;
-    @Autowired
-    private BigStorageCageFeedTaskService bigStorageCageFeedTaskService;
-    @Autowired
-    private BigStorageCageOutTaskService bigStorageCageOutTaskService;
-    @Autowired
-    private TaskCacheService taskCacheService;
-
-    @Override
-    public void run() {
-        while (this != null) {
-            JSONObject jsonObject = new JSONObject();
-            try {
-                Thread.sleep(300);
-                boolean bigStorageCageFullAlarm=false;
-
-                String plcD01FeedReq = "0";
-                String plcD04FeedReq = "0";
-                String plcFeedGlassid = "111";
-                String plcFeedReqLine="0";
-                if("1".equals(plcD01FeedReq)){
-                    plcFeedReqLine="1";
-                }else {
-                    //plc浠诲姟鍙戦�佸瓧0
-                }
-                if("1".equals(plcD04FeedReq)){
-                plcFeedReqLine="2";
-                }else {
-                    //plc浠诲姟鍙戦�佸瓧0
-                }
-
-                if (!("0".equals(plcFeedReqLine))) {
-                    log.info("1銆丳lc杩涚墖璇锋眰鏃�");
-                    BigStorageCageDetails bigStorageCageDetails = new BigStorageCageDetails();
-                    GlassInfo glassInfo = glassInfoService.getById(plcFeedGlassid);
-                    log.info("2銆佹牴鎹幓鐠僫d鑾峰彇鐜荤拑淇℃伅"+glassInfo);
-                    BigStorageCageDetails slotInfo = bigStorageCageService.feedGlass(glassInfo, bigStorageCageDetails);
-                    if (slotInfo != null) {
-                        int taskType=taskCacheService.judgeTasktype();
-                        log.info("3銆佹煡璇换鍔¤〃鍒ゆ柇褰撳墠浠诲姟绫诲瀷涓轰笂杞︾瓑鍒拌繕鏄笂杞﹀惎鍔�"+taskType);
-                        bigStorageCageFeedTaskService.addFeedTask(slotInfo,Integer.parseInt(plcFeedReqLine),taskType);
-                        log.info("4銆佹坊鍔犱换鍔″埌浠诲姟琛�");
-                        //plc浠诲姟鍙戦�佸瓧1
-                        bigStorageCageFullAlarm=false;
-                    }else{
-                        //鐞嗙墖绗肩垎绗兼姤璀�
-                        bigStorageCageFullAlarm=true;
-                    }
-                }else{
-                    List<BigStorageCageFeedTask> bigStorageCageFeedTaskList=bigStorageCageFeedTaskService.querybigStorageCageFeedTask(1);
-                    log.info("5銆佹煡璇换鍔¤〃鏄惁鏈夊凡缁忓畬鎴愮殑杩涚墖浠诲姟"+bigStorageCageFeedTaskList.size());
-                    for (BigStorageCageFeedTask bigStorageCageFeedTask:bigStorageCageFeedTaskList
-                         ) {
-                        BigStorageCageDetails bigStorageCageDetails=new BigStorageCageDetails();
-                        bigStorageCageDetails.setId(bigStorageCageFeedTask.getId());
-                        bigStorageCageDetails.setState(1);
-                        bigStorageCageDetailsService.updateById(bigStorageCageDetails);
-                        log.info("6銆佷慨鏀圭悊鐗囩璇︽儏鐜荤拑鐘舵��");
-                        bigStorageCageFeedTaskService.removeById(bigStorageCageFeedTask);
-                        log.info("7銆佸垹闄ゅ凡缁忓畬鎴愮殑杩涚墖浠诲姟");
-                    }
-                }
-
-                //鍑虹墖璇锋眰
-                String plcOutReq = "0";
-                boolean result = false;
-                if ("1".equals(plcOutReq)) {
-                    result=bigStorageCageService.outGlass();
-                    log.info("8銆佸嚭鐗囪姹傛椂璋冪敤鍑虹墖鎺ュ彛"+result);
-                    if (result) {
-                        //plc浠诲姟鍙戦�佸瓧1
-                    }
-                }else{
-                    bigStorageCageOutTaskService.updateOutTask();
-                    //plc浠诲姟鍙戦�佸瓧0
-                }
-
-                //鏄剧ず鍓╀綑绌烘牸瀛�
-
-                //鎶ヨ淇℃伅
-                jsonObject.append("bigStorageCageFullAlarm", bigStorageCageFullAlarm);
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-
-    }
-}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
new file mode 100644
index 0000000..ab589a7
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -0,0 +1,122 @@
+package com.mes.job;
+
+import cn.hutool.json.JSONObject;
+import com.mes.bigstorage.entity.BigStorageCageDetails;
+import com.mes.bigstorage.service.BigStorageCageDetailsService;
+import com.mes.bigstorage.service.BigStorageCageService;
+import com.mes.bigstoragetask.entity.BigStorageCageFeedTask;
+import com.mes.bigstoragetask.service.BigStorageCageFeedTaskService;
+import com.mes.bigstoragetask.service.BigStorageCageOutTaskService;
+import com.mes.edgstoragetask.service.TaskCacheService;
+import com.mes.glassinfo.entity.GlassInfo;
+import com.mes.glassinfo.service.GlassInfoService;
+import com.mes.menu.service.SysMenuService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Component
+@Slf4j
+public class PlcStorageCageTask {
+
+    @Autowired
+    private BigStorageCageService bigStorageCageService;
+    @Autowired
+    private BigStorageCageDetailsService bigStorageCageDetailsService;
+    @Autowired
+    private GlassInfoService glassInfoService;
+    @Autowired
+    private BigStorageCageFeedTaskService bigStorageCageFeedTaskService;
+    @Autowired
+    private BigStorageCageOutTaskService bigStorageCageOutTaskService;
+    @Autowired
+    private TaskCacheService taskCacheService;
+
+    @Autowired
+    private SysMenuService sysMenuService;
+
+    /**
+     * fixedRate : 涓婁竴涓皟鐢ㄥ紑濮嬪悗鍐嶆璋冪敤鐨勫欢鏃讹紙涓嶇敤绛夊緟涓婁竴娆¤皟鐢ㄥ畬鎴愶級
+     * fixedDelay : 涓婁竴涓皟鐢ㄧ粨鏉熷悗鍐嶆璋冪敤鐨勫欢鏃�
+     */
+    @Scheduled(fixedDelay = 300)
+    public void plcStorageCageTask() throws InterruptedException {
+        JSONObject jsonObject = new JSONObject();
+        try {
+            Thread.sleep(300);
+            boolean bigStorageCageFullAlarm = false;
+
+            String plcD01FeedReq = "0";
+            String plcD04FeedReq = "0";
+            String plcFeedGlassid = "111";
+            String plcFeedReqLine = "0";
+            if ("1".equals(plcD01FeedReq)) {
+                plcFeedReqLine = "1";
+            } else {
+                //plc浠诲姟鍙戦�佸瓧0
+            }
+            if ("1".equals(plcD04FeedReq)) {
+                plcFeedReqLine = "2";
+            } else {
+                //plc浠诲姟鍙戦�佸瓧0
+            }
+
+            if (!("0".equals(plcFeedReqLine))) {
+                log.info("1銆丳lc杩涚墖璇锋眰鏃�");
+                BigStorageCageDetails bigStorageCageDetails = new BigStorageCageDetails();
+                GlassInfo glassInfo = glassInfoService.getById(plcFeedGlassid);
+                log.info("2銆佹牴鎹幓鐠僫d鑾峰彇鐜荤拑淇℃伅" + glassInfo);
+                BigStorageCageDetails slotInfo = bigStorageCageService.feedGlass(glassInfo, bigStorageCageDetails);
+                if (slotInfo != null) {
+                    int taskType = taskCacheService.judgeTasktype();
+                    log.info("3銆佹煡璇换鍔¤〃鍒ゆ柇褰撳墠浠诲姟绫诲瀷涓轰笂杞︾瓑鍒拌繕鏄笂杞﹀惎鍔�" + taskType);
+                    bigStorageCageFeedTaskService.addFeedTask(slotInfo, Integer.parseInt(plcFeedReqLine), taskType);
+                    log.info("4銆佹坊鍔犱换鍔″埌浠诲姟琛�");
+                    //plc浠诲姟鍙戦�佸瓧1
+                    bigStorageCageFullAlarm = false;
+                } else {
+                    //鐞嗙墖绗肩垎绗兼姤璀�
+                    bigStorageCageFullAlarm = true;
+                }
+            } else {
+                List<BigStorageCageFeedTask> bigStorageCageFeedTaskList = bigStorageCageFeedTaskService.querybigStorageCageFeedTask(1);
+                log.info("5銆佹煡璇换鍔¤〃鏄惁鏈夊凡缁忓畬鎴愮殑杩涚墖浠诲姟" + bigStorageCageFeedTaskList.size());
+                for (BigStorageCageFeedTask bigStorageCageFeedTask : bigStorageCageFeedTaskList
+                ) {
+                    BigStorageCageDetails bigStorageCageDetails = new BigStorageCageDetails();
+                    bigStorageCageDetails.setId(bigStorageCageFeedTask.getId());
+                    bigStorageCageDetails.setState(1);
+                    bigStorageCageDetailsService.updateById(bigStorageCageDetails);
+                    log.info("6銆佷慨鏀圭悊鐗囩璇︽儏鐜荤拑鐘舵��");
+                    bigStorageCageFeedTaskService.removeById(bigStorageCageFeedTask);
+                    log.info("7銆佸垹闄ゅ凡缁忓畬鎴愮殑杩涚墖浠诲姟");
+                }
+            }
+
+            //鍑虹墖璇锋眰
+            String plcOutReq = "0";
+            boolean result = false;
+            if ("1".equals(plcOutReq)) {
+                result = bigStorageCageService.outGlass();
+                log.info("8銆佸嚭鐗囪姹傛椂璋冪敤鍑虹墖鎺ュ彛" + result);
+                if (result) {
+                    //plc浠诲姟鍙戦�佸瓧1
+                }
+            } else {
+                bigStorageCageOutTaskService.updateOutTask();
+                //plc浠诲姟鍙戦�佸瓧0
+            }
+
+            //鏄剧ず鍓╀綑绌烘牸瀛�
+
+            //鎶ヨ淇℃伅
+            jsonObject.append("bigStorageCageFullAlarm", bigStorageCageFullAlarm);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-dev.yml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-dev.yml
new file mode 100644
index 0000000..b4d7552
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-dev.yml
@@ -0,0 +1,25 @@
+spring:
+  datasource:
+    dynamic:
+      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
+      datasource:
+        hangzhoumes:
+          url: jdbc:mysql://127.0.0.1:3306/hangzhoumes?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+        salve_hangzhoumes:
+          url: jdbc:sqlserver://127.0.0.1:1433;databasename=hangzhoumes
+          username: sa
+          password: beibo.123/
+          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 127.0.0.1:8848
+  redis:
+    database: 0
+    host: 127.0.0.1
+    port: 6379
+    password: 123456
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-loc.yml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-loc.yml
new file mode 100644
index 0000000..2454814
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-loc.yml
@@ -0,0 +1,25 @@
+spring:
+  datasource:
+    dynamic:
+      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
+      datasource:
+        hangzhoumes:
+          url: jdbc:mysql://192.168.56.10:3306/hangzhoumes?serverTimezone=GMT%2b8
+          username: root
+          password: root
+          driver-class-name: com.mysql.cj.jdbc.Driver
+        salve_hangzhoumes:
+          url: jdbc:sqlserver://127.0.0.1:1433;databasename=hangzhoumes
+          username: sa
+          password: beibo.123/
+          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 127.0.0.1:8848
+  redis:
+    database: 0
+    host: 127.0.0.1
+    port: 6379
+    password: 123456
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-prod.yml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-prod.yml
new file mode 100644
index 0000000..25593bb
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-prod.yml
@@ -0,0 +1,25 @@
+spring:
+  datasource:
+    dynamic:
+      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
+      datasource:
+        hangzhoumes:
+          url: jdbc:mysql://10.153.19.150:3306/hangzhoumes?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+        salve_hangzhoumes:
+          url: jdbc:sqlserver://10.153.19.150:1433;databasename=hangzhoumes
+          username: sa
+          password: beibo.123/
+          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 10.153.19.150:8848
+  redis:
+    database: 0
+    host: 10.153.19.150
+    port: 6379
+    password: 123456
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
index 71c5cb3..8f86c1c 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
@@ -2,32 +2,10 @@
   port: 8082
 
 spring:
-  datasource:
-    dynamic:
-      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
-      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
-      datasource:
-        hangzhoumes:
-          url: jdbc:mysql://10.153.19.150:3306/hangzhoumes?serverTimezone=GMT%2b8
-          username: root
-          password: beibo.123/
-          driver-class-name: com.mysql.cj.jdbc.Driver
-        salve_hangzhoumes:
-          url: jdbc:sqlserver://10.153.19.150:1433;databasename=hangzhoumes
-          username: sa
-          password: beibo.123/
-          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-  cloud:
-    nacos:
-      discovery:
-        server-addr: 10.153.19.150:8848
+  profiles:
+    active: prod
   application:
     name: cacheVerticalGlass
-  redis:
-    database: 0
-    host: 10.153.19.150
-    port: 6379
-    password: 123456
 mybatis-plus:
   mapper-locations: classpath*:mapper/*.xml
   configuration:
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/logback-spring.xml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/logback-spring.xml
new file mode 100644
index 0000000..fefb23d
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/logback-spring.xml
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="10 seconds">
+    <!-- logger涓婁笅鏂囧悕绉帮紙鏍规嵁涓氬姟淇敼锛� -->
+    <contextName>cacheVerticalGlass</contextName>
+
+    <!-- 瀹氫箟浜嗕竴涓悕涓簊erverName鐨勫睘鎬э紝瀹冪殑鍊兼潵鑷簬logging.file.name锛屽鏋滄病鏈夋壘鍒拌灞炴�ч粯璁や负MyServerName锛堟牴鎹笟鍔′慨鏀癸級 -->
+    <springProperty name="serverName" source="logging.file.name" defaultValue="cacheVerticalGlass"/>
+    <springProperty name="logging.path" source="logging.file.path" defaultValue="././logs/"/>
+
+    <!-- 褰╄壊鏃ュ織渚濊禆鐨勬覆鏌撶被 -->
+    <!-- 瀹氫箟浜嗕竴涓悕涓篶lr鐨勮浆鎹㈣鍒欙紝瀹冧娇鐢╫rg.springframework.boot.logging.logback.ColorConverter绫昏繘琛岃浆鎹紝杩欎釜鍏冪礌閫氬父鐢ㄤ簬灏嗘棩蹇楄緭鍑轰腑鐨勬枃鏈潃鑹诧紝浠ヤ究鏇村鏄撳湴鍖哄垎涓嶅悓鐨勬棩蹇楃骇鍒垨鍏朵粬淇℃伅 -->
+    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
+    <!-- WhitespaceThrowableProxyConverter鍜孍xtendedWhitespaceThrowableProxyConverter閮芥槸鐢ㄤ簬灏嗗紓甯镐俊鎭浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず鐨勭被銆傚畠浠箣闂寸殑鍖哄埆鍦ㄤ簬锛孍xtendedWhitespaceThrowableProxyConverter鍦ㄨ緭鍑哄紓甯镐俊鎭椂浼氬寘鍚洿澶氱殑璇︾粏淇℃伅锛屼緥濡傚紓甯哥殑绫诲悕銆佹柟娉曞悕鍜岃鍙风瓑 -->
+    <!-- 瀹氫箟浜嗕竴涓悕涓簑ex鐨勮浆鎹㈣鍒欙紝瀹冧娇鐢╫rg.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter绫昏繘琛岃浆鎹紝杩欎釜鍏冪礌閫氬父鐢ㄤ簬灏嗗紓甯镐俊鎭浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず -->
+    <conversionRule conversionWord="wex"
+                    converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
+    <!-- 瀹氫箟浜嗕竴涓悕涓簑Ex鐨勮浆鎹㈣鍒欙紝瀹冧娇鐢╫rg.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter绫昏繘琛岃浆鎹紝杩欎釜鍏冪礌閫氬父鐢ㄤ簬灏嗗紓甯镐俊鎭浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず -->
+    <conversionRule conversionWord="wEx"
+                    converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
+
+    <!-- 褰╄壊鏃ュ織鏍煎紡 -->
+    <!-- value鍊兼槸鏃ュ織杈撳嚭妯℃澘锛� :-鏄睘鎬у悕鍜屽叾榛樿鍊间箣闂寸殑鍒嗛殧绗︼紝浣滅敤涓�:鐩稿悓 -->
+    <!-- 瀹氫箟鏃ュ織杈撳嚭鏍煎紡鐨勮浆鎹㈣鍒欙紝%d{yyyy-MM-dd HH:mm:ss.SSS}琛ㄧず鏃ユ湡鍜屾椂闂达紝%clr琛ㄧず灏嗚緭鍑烘枃鏈潃鑹诧紝{faint}琛ㄧず浣跨敤娣¤壊 -->
+    <!-- %5p琛ㄧず鏃ュ織绾у埆杈撳嚭鍙冲榻愶紝宸﹁竟浠ョ┖鏍煎~鍏� -->
+    <!-- ${PID:- }琛ㄧず杩涚▼ID锛�%clr琛ㄧず灏嗚緭鍑烘枃鏈潃鑹诧紝{magenta}琛ㄧず浣跨敤娲嬬孩鑹� -->
+    <!-- -琛ㄧず涓�涓垎闅旂 -->
+    <!-- %t锛氭樉绀轰骇鐢熻鏃ュ織鐨勭嚎绋嬪悕锛�%15锛氳嫢瀛楃闀垮害灏忎簬15锛屽垯宸﹁竟鐢ㄧ┖鏍煎~鍏咃紱%.15锛氳嫢瀛楃闀垮害瓒呰繃15锛屾埅鍘诲浣欏瓧绗� -->
+    <!-- %-40锛氳嫢瀛楃闀垮害灏忎簬40锛屽垯鍙宠竟鐢ㄧ┖鏍煎~鍏咃紱%.40锛氳嫢瀛楃闀垮害瓒呰繃40锛屾埅鍘诲浣欏瓧绗︼紱logger{39}瀵瑰簲鐨勬槸鈥渓ogging.WARNING鈥濈骇鍒�傚叿浣撴潵璇达紝Python鐨刲ogging妯″潡瀹氫箟浜嗕互涓嬪嚑涓骇鍒紙浠庝綆鍒伴珮锛夛細NOTSET銆丏EBUG銆両NFO銆乄ARNING銆丒RROR銆丆RITICAL銆傚洜姝わ紝logger{39}琛ㄧず鐨勬槸WARNING绾у埆锛屽嵆鏃ュ織璁板綍鍣ㄤ細璁板綍鎵�鏈塛ARNING绾у埆鍙婁互涓婄殑鏃ュ織淇℃伅 -->
+    <!-- %m琛ㄧず鏃ュ織娑堟伅锛�%n琛ㄧず鎹㈣绗︼紱${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}琛ㄧず寮傚父淇℃伅銆傚鏋滄棩蹇楄緭鍑轰腑鍖呭惈寮傚父淇℃伅锛岃繖涓鍒欏皢浼氬皢鍏惰浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず -->
+    <property name="CONSOLE_LOG_PATTERN"
+              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
+
+    <!--1. 杈撳嚭鍒版帶鍒跺彴-->
+    <!-- 瀹氫箟鎺у埗鍙版棩蹇楄緭鍑虹殑appender锛宑lass="ch.qos.logback.core.ConsoleAppender"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凜onsoleAppender绫绘潵杈撳嚭鏃ュ織鍒版帶鍒跺彴 -->
+    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+        <!--姝ゆ棩蹇梐ppender鏄负寮�鍙戜娇鐢紝鍙厤缃渶搴曠骇鍒紝鎺у埗鍙拌緭鍑虹殑鏃ュ織绾у埆鏄ぇ浜庢垨绛変簬姝ょ骇鍒殑鏃ュ織淇℃伅-->
+        <!-- 瀹氫箟鏃ュ織杈撳嚭绾у埆鐨勮繃婊ゅ櫒锛宑lass="ch.qos.logback.classic.filter.ThresholdFilter"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凾hresholdFilter绫绘潵杩囨护鏃ュ織杈撳嚭锛�<level>debug</level>琛ㄧず鍙緭鍑篸ebug绾у埆鍙婁互涓婄殑鏃ュ織 -->
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>debug</level>
+        </filter>
+        <encoder>
+            <!-- ${CONSOLE_LOG_PATTERN}琛ㄧず鎺у埗鍙版棩蹇楄緭鍑烘牸寮忥紝UTF-8琛ㄧず缂栫爜鏍煎紡 -->
+            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
+            <!-- 璁剧疆瀛楃闆� -->
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+    <!--2. 杈撳嚭鍒版枃妗�-->
+    <!-- 2.1 level涓� DEBUG 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <!-- 瀹氫箟鏂囦欢鏃ュ織杈撳嚭鐨刟ppender锛宑lass="ch.qos.logback.core.rolling.RollingFileAppender"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凴ollingFileAppender绫绘潵杈撳嚭鏃ュ織鍒版枃浠� -->
+    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_debug.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 璁剧疆瀛楃闆� -->
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <!-- 瀹氫箟鏃ュ織鏂囦欢婊氬姩绛栫暐鐨勬爣绛撅紝class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凾imeBasedRollingPolicy绫绘潵瀹氫箟鏃ュ織鏂囦欢鐨勬粴鍔ㄧ瓥鐣� -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 鏃ュ織褰掓。 -->
+            <!-- 瀹氫箟鏃ュ織鏂囦欢鍚嶇殑妯″紡銆傚湪杩欎釜妯″紡涓紝${logging.path}琛ㄧず鏃ュ織鏂囦欢鐨勮矾寰勶紝%d{yyyy-MM-dd}琛ㄧず鏃ユ湡鏍煎紡锛�%i琛ㄧず鏂囦欢绱㈠紩 -->
+            <fileNamePattern>${logging.path}/${serverName}/web-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <!-- 瀹氫箟鏃ュ織鏂囦欢婊氬姩绛栫暐鐨勬爣绛撅紝class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凷izeAndTimeBasedFNATP绫绘潵瀹氫箟鏃ュ織鏂囦欢鐨勬粴鍔ㄧ瓥鐣ワ紝<maxFileSize>100MB</maxFileSize>琛ㄧず鏃ュ織鏂囦欢鐨勬渶澶уぇ灏忎负100MB銆傝繖涓粴鍔ㄧ瓥鐣ラ�氬父鐢ㄤ簬鎸夌収鏃堕棿鍜屾枃浠跺ぇ灏忔粴鍔ㄦ棩蹇楁枃浠讹紝浠ヤ究鏇村ソ鍦扮鐞嗘棩蹇楁枃浠剁殑澶у皬鍜屾暟閲� -->
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍debug绾у埆鐨� -->
+        <!-- 瀹氫箟鏃ュ織杈撳嚭绾у埆鐨勮繃婊ゅ櫒銆傚湪杩欎釜杩囨护鍣ㄤ腑锛宑lass="ch.qos.logback.classic.filter.LevelFilter"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凩evelFilter绫绘潵杩囨护鏃ュ織杈撳嚭锛�<level>debug</level>琛ㄧず鍙緭鍑篸ebug绾у埆鍙婁互涓婄殑鏃ュ織 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>debug</level>
+            <!-- <onMatch>ACCEPT</onMatch>琛ㄧず濡傛灉鏃ュ織浜嬩欢涓庤繃婊ゅ櫒鍖归厤锛屽垯鎺ュ彈璇ヤ簨浠讹紝<onMismatch>DENY</onMismatch>琛ㄧず濡傛灉鏃ュ織浜嬩欢涓庤繃婊ゅ櫒涓嶅尮閰嶏紝鍒欐嫆缁濊浜嬩欢 -->
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!-- 2.2 level涓� INFO 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_info.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 澶╁ぉ鏃ュ織褰掓。璺緞浠ュ強鏍煎紡 -->
+            <fileNamePattern>${logging.path}/${serverName}/web-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍info绾у埆鐨� -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>info</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!-- 2.3 level涓� WARN 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_warn.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 姝ゅ璁剧疆瀛楃闆� -->
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logging.path}/${serverName}/web-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍warn绾у埆鐨� -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>warn</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!-- 2.4 level涓� ERROR 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_error.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 姝ゅ璁剧疆瀛楃闆� -->
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logging.path}/${serverName}/web-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍ERROR绾у埆鐨� -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>ERROR</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!--     4.1 寮�鍙戠幆澧�:鎵撳嵃鎺у埗鍙�-->
+    <!-- 鐢ㄤ簬鍦⊿pring Boot搴旂敤绋嬪簭涓厤缃棩蹇楄褰曠殑鏍囩銆傚湪杩欎釜鏍囩涓紝name="dev"琛ㄧず杩欎釜閰嶇疆鏂囦欢鍙湪dev鐜涓敓鏁堬紝<logger name="com.myClass.controller" level="debug"/>琛ㄧず涓篶om.myClass.controller锛堟牴鎹笟鍔′慨鏀癸級杩欎釜鍖呬笅鐨勭被閰嶇疆鏃ュ織杈撳嚭绾у埆涓篸ebug -->
+    <!--    <springProfile name="dev">-->
+    <!--        <logger name="com.myClass.controller" level="debug"/>-->
+    <!--    </springProfile>-->
+    <!-- 鐢ㄤ簬閰嶇疆鏃ュ織杈撳嚭鐨勬爣绛俱�傚湪杩欎釜鏍囩涓紝level="info"琛ㄧず鏃ュ織杈撳嚭绾у埆涓篿nfo锛�<appender-ref ref="CONSOLE"/>銆�<appender-ref ref="DEBUG_FILE"/>銆�<appender-ref ref="INFO_FILE"/>銆�<appender-ref ref="WARN_FILE"/>銆�<appender-ref ref="ERROR_FILE"/>琛ㄧず灏嗘棩蹇楄緭鍑哄埌涓嶅悓鐨刟ppender涓紝鍒嗗埆涓烘帶鍒跺彴銆乨ebug鏂囦欢銆乮nfo鏂囦欢銆亀arn鏂囦欢鍜宔rror鏂囦欢 -->
+    <root level="info">
+        <appender-ref ref="CONSOLE"/>
+        <appender-ref ref="DEBUG_FILE"/>
+        <appender-ref ref="INFO_FILE"/>
+        <appender-ref ref="WARN_FILE"/>
+        <appender-ref ref="ERROR_FILE"/>
+    </root>
+</configuration>
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-dev.yml b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-dev.yml
new file mode 100644
index 0000000..a4d1cac
--- /dev/null
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-dev.yml
@@ -0,0 +1,25 @@
+spring:
+  datasource:
+    dynamic:
+      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
+      datasource:
+        hangzhoumes:
+          url: jdbc:mysql://127.0.0.1:3306/hangzhoumes?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+        pp:
+          url: jdbc:mysql://127.0.0.1:3306/pp?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 127.0.0.1:8848
+  redis:
+    database: 0
+    host: 127.0.0.1
+    port: 6379
+    password: 123456
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-loc.yml b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-loc.yml
new file mode 100644
index 0000000..cc53ca6
--- /dev/null
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-loc.yml
@@ -0,0 +1,25 @@
+spring:
+  datasource:
+    dynamic:
+      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
+      datasource:
+        hangzhoumes:
+          url: jdbc:mysql://192.168.56.10:3306/hangzhoumes?serverTimezone=GMT%2b8
+          username: root
+          password: root
+          driver-class-name: com.mysql.cj.jdbc.Driver
+        pp:
+          url: jdbc:mysql://192.168.56.10:3306/pp?serverTimezone=GMT%2b8
+          username: root
+          password: root
+          driver-class-name: com.mysql.cj.jdbc.Driver
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 127.0.0.1:8848
+  redis:
+    database: 0
+    host: 127.0.0.1
+    port: 6379
+    password: 123456
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-prod.yml b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-prod.yml
new file mode 100644
index 0000000..c372c41
--- /dev/null
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-prod.yml
@@ -0,0 +1,25 @@
+spring:
+  datasource:
+    dynamic:
+      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
+      datasource:
+        hangzhoumes:
+          url: jdbc:mysql://10.153.19.150:3306/hangzhoumes?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+        pp:
+          url: jdbc:mysql://10.153.19.150:3306/pp?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 10.153.19.150:8848
+  redis:
+    database: 0
+    host: 10.153.19.150
+    port: 6379
+    password: 123456
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml
index ae352b3..c4f2565 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml
@@ -1,34 +1,14 @@
 server:
   port: 8083
-
 spring:
-  datasource:
-    dynamic:
-      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
-      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
-      datasource:
-        hangzhoumes:
-          url: jdbc:mysql://10.153.19.150:3306/hangzhoumes?serverTimezone=GMT%2b8
-          username: root
-          password: beibo.123/
-          driver-class-name: com.mysql.cj.jdbc.Driver
-        pp:
-          url: jdbc:mysql://10.153.19.150:3306/pp?serverTimezone=GMT%2b8
-          username: root
-          password: beibo.123/
-          driver-class-name: com.mysql.cj.jdbc.Driver
-  cloud:
-    nacos:
-      discovery:
-        server-addr: 10.153.19.150:8848
+  profiles:
+    active: prod
   application:
     name: loadGlass
-  redis:
-    database: 0
-    host: 10.153.19.150
-    port: 6379
-    password: 123456
 mybatis-plus:
   mapper-locations: classpath*:mapper/*.xml
   configuration:
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
\ No newline at end of file
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+
+test:
+  common: 123789
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/logback-spring.xml b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/logback-spring.xml
new file mode 100644
index 0000000..4b520f3
--- /dev/null
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/logback-spring.xml
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="10 seconds">
+    <!-- logger涓婁笅鏂囧悕绉帮紙鏍规嵁涓氬姟淇敼锛� -->
+    <contextName>loadGlass</contextName>
+
+    <!-- 瀹氫箟浜嗕竴涓悕涓簊erverName鐨勫睘鎬э紝瀹冪殑鍊兼潵鑷簬logging.file.name锛屽鏋滄病鏈夋壘鍒拌灞炴�ч粯璁や负MyServerName锛堟牴鎹笟鍔′慨鏀癸級 -->
+    <springProperty name="serverName" source="logging.file.name" defaultValue="loadGlass"/>
+    <springProperty name="logging.path" source="logging.file.path" defaultValue="././logs/"/>
+
+    <!-- 褰╄壊鏃ュ織渚濊禆鐨勬覆鏌撶被 -->
+    <!-- 瀹氫箟浜嗕竴涓悕涓篶lr鐨勮浆鎹㈣鍒欙紝瀹冧娇鐢╫rg.springframework.boot.logging.logback.ColorConverter绫昏繘琛岃浆鎹紝杩欎釜鍏冪礌閫氬父鐢ㄤ簬灏嗘棩蹇楄緭鍑轰腑鐨勬枃鏈潃鑹诧紝浠ヤ究鏇村鏄撳湴鍖哄垎涓嶅悓鐨勬棩蹇楃骇鍒垨鍏朵粬淇℃伅 -->
+    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
+    <!-- WhitespaceThrowableProxyConverter鍜孍xtendedWhitespaceThrowableProxyConverter閮芥槸鐢ㄤ簬灏嗗紓甯镐俊鎭浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず鐨勭被銆傚畠浠箣闂寸殑鍖哄埆鍦ㄤ簬锛孍xtendedWhitespaceThrowableProxyConverter鍦ㄨ緭鍑哄紓甯镐俊鎭椂浼氬寘鍚洿澶氱殑璇︾粏淇℃伅锛屼緥濡傚紓甯哥殑绫诲悕銆佹柟娉曞悕鍜岃鍙风瓑 -->
+    <!-- 瀹氫箟浜嗕竴涓悕涓簑ex鐨勮浆鎹㈣鍒欙紝瀹冧娇鐢╫rg.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter绫昏繘琛岃浆鎹紝杩欎釜鍏冪礌閫氬父鐢ㄤ簬灏嗗紓甯镐俊鎭浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず -->
+    <conversionRule conversionWord="wex"
+                    converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
+    <!-- 瀹氫箟浜嗕竴涓悕涓簑Ex鐨勮浆鎹㈣鍒欙紝瀹冧娇鐢╫rg.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter绫昏繘琛岃浆鎹紝杩欎釜鍏冪礌閫氬父鐢ㄤ簬灏嗗紓甯镐俊鎭浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず -->
+    <conversionRule conversionWord="wEx"
+                    converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
+
+    <!-- 褰╄壊鏃ュ織鏍煎紡 -->
+    <!-- value鍊兼槸鏃ュ織杈撳嚭妯℃澘锛� :-鏄睘鎬у悕鍜屽叾榛樿鍊间箣闂寸殑鍒嗛殧绗︼紝浣滅敤涓�:鐩稿悓 -->
+    <!-- 瀹氫箟鏃ュ織杈撳嚭鏍煎紡鐨勮浆鎹㈣鍒欙紝%d{yyyy-MM-dd HH:mm:ss.SSS}琛ㄧず鏃ユ湡鍜屾椂闂达紝%clr琛ㄧず灏嗚緭鍑烘枃鏈潃鑹诧紝{faint}琛ㄧず浣跨敤娣¤壊 -->
+    <!-- %5p琛ㄧず鏃ュ織绾у埆杈撳嚭鍙冲榻愶紝宸﹁竟浠ョ┖鏍煎~鍏� -->
+    <!-- ${PID:- }琛ㄧず杩涚▼ID锛�%clr琛ㄧず灏嗚緭鍑烘枃鏈潃鑹诧紝{magenta}琛ㄧず浣跨敤娲嬬孩鑹� -->
+    <!-- -琛ㄧず涓�涓垎闅旂 -->
+    <!-- %t锛氭樉绀轰骇鐢熻鏃ュ織鐨勭嚎绋嬪悕锛�%15锛氳嫢瀛楃闀垮害灏忎簬15锛屽垯宸﹁竟鐢ㄧ┖鏍煎~鍏咃紱%.15锛氳嫢瀛楃闀垮害瓒呰繃15锛屾埅鍘诲浣欏瓧绗� -->
+    <!-- %-40锛氳嫢瀛楃闀垮害灏忎簬40锛屽垯鍙宠竟鐢ㄧ┖鏍煎~鍏咃紱%.40锛氳嫢瀛楃闀垮害瓒呰繃40锛屾埅鍘诲浣欏瓧绗︼紱logger{39}瀵瑰簲鐨勬槸鈥渓ogging.WARNING鈥濈骇鍒�傚叿浣撴潵璇达紝Python鐨刲ogging妯″潡瀹氫箟浜嗕互涓嬪嚑涓骇鍒紙浠庝綆鍒伴珮锛夛細NOTSET銆丏EBUG銆両NFO銆乄ARNING銆丒RROR銆丆RITICAL銆傚洜姝わ紝logger{39}琛ㄧず鐨勬槸WARNING绾у埆锛屽嵆鏃ュ織璁板綍鍣ㄤ細璁板綍鎵�鏈塛ARNING绾у埆鍙婁互涓婄殑鏃ュ織淇℃伅 -->
+    <!-- %m琛ㄧず鏃ュ織娑堟伅锛�%n琛ㄧず鎹㈣绗︼紱${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}琛ㄧず寮傚父淇℃伅銆傚鏋滄棩蹇楄緭鍑轰腑鍖呭惈寮傚父淇℃伅锛岃繖涓鍒欏皢浼氬皢鍏惰浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず -->
+    <property name="CONSOLE_LOG_PATTERN"
+              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
+
+    <!--1. 杈撳嚭鍒版帶鍒跺彴-->
+    <!-- 瀹氫箟鎺у埗鍙版棩蹇楄緭鍑虹殑appender锛宑lass="ch.qos.logback.core.ConsoleAppender"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凜onsoleAppender绫绘潵杈撳嚭鏃ュ織鍒版帶鍒跺彴 -->
+    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+        <!--姝ゆ棩蹇梐ppender鏄负寮�鍙戜娇鐢紝鍙厤缃渶搴曠骇鍒紝鎺у埗鍙拌緭鍑虹殑鏃ュ織绾у埆鏄ぇ浜庢垨绛変簬姝ょ骇鍒殑鏃ュ織淇℃伅-->
+        <!-- 瀹氫箟鏃ュ織杈撳嚭绾у埆鐨勮繃婊ゅ櫒锛宑lass="ch.qos.logback.classic.filter.ThresholdFilter"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凾hresholdFilter绫绘潵杩囨护鏃ュ織杈撳嚭锛�<level>debug</level>琛ㄧず鍙緭鍑篸ebug绾у埆鍙婁互涓婄殑鏃ュ織 -->
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>debug</level>
+        </filter>
+        <encoder>
+            <!-- ${CONSOLE_LOG_PATTERN}琛ㄧず鎺у埗鍙版棩蹇楄緭鍑烘牸寮忥紝UTF-8琛ㄧず缂栫爜鏍煎紡 -->
+            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
+            <!-- 璁剧疆瀛楃闆� -->
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+    <!--2. 杈撳嚭鍒版枃妗�-->
+    <!-- 2.1 level涓� DEBUG 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <!-- 瀹氫箟鏂囦欢鏃ュ織杈撳嚭鐨刟ppender锛宑lass="ch.qos.logback.core.rolling.RollingFileAppender"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凴ollingFileAppender绫绘潵杈撳嚭鏃ュ織鍒版枃浠� -->
+    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_debug.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 璁剧疆瀛楃闆� -->
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <!-- 瀹氫箟鏃ュ織鏂囦欢婊氬姩绛栫暐鐨勬爣绛撅紝class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凾imeBasedRollingPolicy绫绘潵瀹氫箟鏃ュ織鏂囦欢鐨勬粴鍔ㄧ瓥鐣� -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 鏃ュ織褰掓。 -->
+            <!-- 瀹氫箟鏃ュ織鏂囦欢鍚嶇殑妯″紡銆傚湪杩欎釜妯″紡涓紝${logging.path}琛ㄧず鏃ュ織鏂囦欢鐨勮矾寰勶紝%d{yyyy-MM-dd}琛ㄧず鏃ユ湡鏍煎紡锛�%i琛ㄧず鏂囦欢绱㈠紩 -->
+            <fileNamePattern>${logging.path}/${serverName}/web-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <!-- 瀹氫箟鏃ュ織鏂囦欢婊氬姩绛栫暐鐨勬爣绛撅紝class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凷izeAndTimeBasedFNATP绫绘潵瀹氫箟鏃ュ織鏂囦欢鐨勬粴鍔ㄧ瓥鐣ワ紝<maxFileSize>100MB</maxFileSize>琛ㄧず鏃ュ織鏂囦欢鐨勬渶澶уぇ灏忎负100MB銆傝繖涓粴鍔ㄧ瓥鐣ラ�氬父鐢ㄤ簬鎸夌収鏃堕棿鍜屾枃浠跺ぇ灏忔粴鍔ㄦ棩蹇楁枃浠讹紝浠ヤ究鏇村ソ鍦扮鐞嗘棩蹇楁枃浠剁殑澶у皬鍜屾暟閲� -->
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍debug绾у埆鐨� -->
+        <!-- 瀹氫箟鏃ュ織杈撳嚭绾у埆鐨勮繃婊ゅ櫒銆傚湪杩欎釜杩囨护鍣ㄤ腑锛宑lass="ch.qos.logback.classic.filter.LevelFilter"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凩evelFilter绫绘潵杩囨护鏃ュ織杈撳嚭锛�<level>debug</level>琛ㄧず鍙緭鍑篸ebug绾у埆鍙婁互涓婄殑鏃ュ織 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>debug</level>
+            <!-- <onMatch>ACCEPT</onMatch>琛ㄧず濡傛灉鏃ュ織浜嬩欢涓庤繃婊ゅ櫒鍖归厤锛屽垯鎺ュ彈璇ヤ簨浠讹紝<onMismatch>DENY</onMismatch>琛ㄧず濡傛灉鏃ュ織浜嬩欢涓庤繃婊ゅ櫒涓嶅尮閰嶏紝鍒欐嫆缁濊浜嬩欢 -->
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!-- 2.2 level涓� INFO 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_info.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 澶╁ぉ鏃ュ織褰掓。璺緞浠ュ強鏍煎紡 -->
+            <fileNamePattern>${logging.path}/${serverName}/web-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍info绾у埆鐨� -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>info</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!-- 2.3 level涓� WARN 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_warn.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 姝ゅ璁剧疆瀛楃闆� -->
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logging.path}/${serverName}/web-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍warn绾у埆鐨� -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>warn</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!-- 2.4 level涓� ERROR 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_error.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 姝ゅ璁剧疆瀛楃闆� -->
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logging.path}/${serverName}/web-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍ERROR绾у埆鐨� -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>ERROR</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!--     4.1 寮�鍙戠幆澧�:鎵撳嵃鎺у埗鍙�-->
+    <!-- 鐢ㄤ簬鍦⊿pring Boot搴旂敤绋嬪簭涓厤缃棩蹇楄褰曠殑鏍囩銆傚湪杩欎釜鏍囩涓紝name="dev"琛ㄧず杩欎釜閰嶇疆鏂囦欢鍙湪dev鐜涓敓鏁堬紝<logger name="com.myClass.controller" level="debug"/>琛ㄧず涓篶om.myClass.controller锛堟牴鎹笟鍔′慨鏀癸級杩欎釜鍖呬笅鐨勭被閰嶇疆鏃ュ織杈撳嚭绾у埆涓篸ebug -->
+    <!--    <springProfile name="dev">-->
+    <!--        <logger name="com.myClass.controller" level="debug"/>-->
+    <!--    </springProfile>-->
+    <!-- 鐢ㄤ簬閰嶇疆鏃ュ織杈撳嚭鐨勬爣绛俱�傚湪杩欎釜鏍囩涓紝level="info"琛ㄧず鏃ュ織杈撳嚭绾у埆涓篿nfo锛�<appender-ref ref="CONSOLE"/>銆�<appender-ref ref="DEBUG_FILE"/>銆�<appender-ref ref="INFO_FILE"/>銆�<appender-ref ref="WARN_FILE"/>銆�<appender-ref ref="ERROR_FILE"/>琛ㄧず灏嗘棩蹇楄緭鍑哄埌涓嶅悓鐨刟ppender涓紝鍒嗗埆涓烘帶鍒跺彴銆乨ebug鏂囦欢銆乮nfo鏂囦欢銆亀arn鏂囦欢鍜宔rror鏂囦欢 -->
+    <root level="info">
+        <appender-ref ref="CONSOLE"/>
+        <appender-ref ref="DEBUG_FILE"/>
+        <appender-ref ref="INFO_FILE"/>
+        <appender-ref ref="WARN_FILE"/>
+        <appender-ref ref="ERROR_FILE"/>
+    </root>
+</configuration>
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/test/java/com/mes/ApplicationTest.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/test/java/com/mes/ApplicationTest.java
index 9f636a1..dfb7a0b 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/test/java/com/mes/ApplicationTest.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/test/java/com/mes/ApplicationTest.java
@@ -1,7 +1,11 @@
 package com.mes;
 
+import com.mes.common.utils.UserInfoUtils;
+import com.mes.menu.entity.SysMenu;
+import com.mes.menu.service.SysMenuService;
 import com.mes.pp.entity.OptimizeDetail;
 import com.mes.pp.service.OptimizeDetailService;
+import com.mes.userinfo.entity.SysUser;
 import lombok.extern.slf4j.Slf4j;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -25,6 +29,18 @@
     @Resource
     OptimizeDetailService optimizationDetailService;
 
+    @Resource
+    SysMenuService service;
+
+    @Test
+    public void test1() {
+        SysUser user = new SysUser();
+        user.setId(1l);
+        UserInfoUtils.set(user);
+        List<SysMenu> menuTree = service.getMenuTree(null);
+        System.out.println("鑾峰彇璁板綍鏁帮細" + menuTree);
+    }
+
     @Test
     public void test() {
         List<OptimizeDetail> list = optimizationDetailService.list();
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-dev.yml b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-dev.yml
new file mode 100644
index 0000000..f02ebee
--- /dev/null
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-dev.yml
@@ -0,0 +1,22 @@
+spring:
+  datasource:
+    dynamic:
+      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
+      datasource:
+        hangzhoumes:
+          url: jdbc:mysql://127.0.0.1:3306/hangzhoumes?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 127.0.0.1:8848
+  application:
+    name: temperingGlass
+  redis:
+    database: 0
+    host: 127.0.0.1
+    port: 6379
+    password: 123456
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-loc.yml b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-loc.yml
new file mode 100644
index 0000000..1e4042f
--- /dev/null
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-loc.yml
@@ -0,0 +1,22 @@
+spring:
+  datasource:
+    dynamic:
+      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
+      datasource:
+        hangzhoumes:
+          url: jdbc:mysql://192.168.56.10:3306/hangzhoumes?serverTimezone=GMT%2b8
+          username: root
+          password: root
+          driver-class-name: com.mysql.cj.jdbc.Driver
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 127.0.0.1:8848
+  application:
+    name: temperingGlass
+  redis:
+    database: 0
+    host: 127.0.0.1
+    port: 6379
+    password: 123456
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-prod.yml b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-prod.yml
new file mode 100644
index 0000000..9fb2c6f
--- /dev/null
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-prod.yml
@@ -0,0 +1,20 @@
+spring:
+  datasource:
+    dynamic:
+      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
+      datasource:
+        hangzhoumes:
+          url: jdbc:mysql://10.153.19.150:3306/hangzhoumes?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 10.153.19.150:8848
+  redis:
+    database: 0
+    host: 10.153.19.150
+    port: 6379
+    password: 123456
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml
index a84c58e..e9fcc1e 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml
@@ -1,27 +1,10 @@
 server:
   port: 8084
 spring:
-  datasource:
-    dynamic:
-      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
-      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
-      datasource:
-        hangzhoumes:
-          url: jdbc:mysql://10.153.19.150:3306/hangzhoumes?serverTimezone=GMT%2b8
-          username: root
-          password: beibo.123/
-          driver-class-name: com.mysql.cj.jdbc.Driver
-  cloud:
-    nacos:
-      discovery:
-        server-addr: 10.153.19.150:8848
+  profiles:
+    active: prod
   application:
     name: temperingGlass
-  redis:
-    database: 0
-    host: 10.153.19.150
-    port: 6379
-    password: 123456
 mybatis-plus:
   mapper-locations: classpath*:mapper/*.xml
   configuration:
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/logback-spring.xml b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/logback-spring.xml
new file mode 100644
index 0000000..6d44fc6
--- /dev/null
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/logback-spring.xml
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="10 seconds">
+    <!-- logger涓婁笅鏂囧悕绉帮紙鏍规嵁涓氬姟淇敼锛� -->
+    <contextName>temperingGlass</contextName>
+
+    <!-- 瀹氫箟浜嗕竴涓悕涓簊erverName鐨勫睘鎬э紝瀹冪殑鍊兼潵鑷簬logging.file.name锛屽鏋滄病鏈夋壘鍒拌灞炴�ч粯璁や负MyServerName锛堟牴鎹笟鍔′慨鏀癸級 -->
+    <springProperty name="serverName" source="logging.file.name" defaultValue="temperingGlass"/>
+    <springProperty name="logging.path" source="logging.file.path" defaultValue="././logs/"/>
+
+    <!-- 褰╄壊鏃ュ織渚濊禆鐨勬覆鏌撶被 -->
+    <!-- 瀹氫箟浜嗕竴涓悕涓篶lr鐨勮浆鎹㈣鍒欙紝瀹冧娇鐢╫rg.springframework.boot.logging.logback.ColorConverter绫昏繘琛岃浆鎹紝杩欎釜鍏冪礌閫氬父鐢ㄤ簬灏嗘棩蹇楄緭鍑轰腑鐨勬枃鏈潃鑹诧紝浠ヤ究鏇村鏄撳湴鍖哄垎涓嶅悓鐨勬棩蹇楃骇鍒垨鍏朵粬淇℃伅 -->
+    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
+    <!-- WhitespaceThrowableProxyConverter鍜孍xtendedWhitespaceThrowableProxyConverter閮芥槸鐢ㄤ簬灏嗗紓甯镐俊鎭浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず鐨勭被銆傚畠浠箣闂寸殑鍖哄埆鍦ㄤ簬锛孍xtendedWhitespaceThrowableProxyConverter鍦ㄨ緭鍑哄紓甯镐俊鎭椂浼氬寘鍚洿澶氱殑璇︾粏淇℃伅锛屼緥濡傚紓甯哥殑绫诲悕銆佹柟娉曞悕鍜岃鍙风瓑 -->
+    <!-- 瀹氫箟浜嗕竴涓悕涓簑ex鐨勮浆鎹㈣鍒欙紝瀹冧娇鐢╫rg.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter绫昏繘琛岃浆鎹紝杩欎釜鍏冪礌閫氬父鐢ㄤ簬灏嗗紓甯镐俊鎭浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず -->
+    <conversionRule conversionWord="wex"
+                    converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
+    <!-- 瀹氫箟浜嗕竴涓悕涓簑Ex鐨勮浆鎹㈣鍒欙紝瀹冧娇鐢╫rg.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter绫昏繘琛岃浆鎹紝杩欎釜鍏冪礌閫氬父鐢ㄤ簬灏嗗紓甯镐俊鎭浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず -->
+    <conversionRule conversionWord="wEx"
+                    converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
+
+    <!-- 褰╄壊鏃ュ織鏍煎紡 -->
+    <!-- value鍊兼槸鏃ュ織杈撳嚭妯℃澘锛� :-鏄睘鎬у悕鍜屽叾榛樿鍊间箣闂寸殑鍒嗛殧绗︼紝浣滅敤涓�:鐩稿悓 -->
+    <!-- 瀹氫箟鏃ュ織杈撳嚭鏍煎紡鐨勮浆鎹㈣鍒欙紝%d{yyyy-MM-dd HH:mm:ss.SSS}琛ㄧず鏃ユ湡鍜屾椂闂达紝%clr琛ㄧず灏嗚緭鍑烘枃鏈潃鑹诧紝{faint}琛ㄧず浣跨敤娣¤壊 -->
+    <!-- %5p琛ㄧず鏃ュ織绾у埆杈撳嚭鍙冲榻愶紝宸﹁竟浠ョ┖鏍煎~鍏� -->
+    <!-- ${PID:- }琛ㄧず杩涚▼ID锛�%clr琛ㄧず灏嗚緭鍑烘枃鏈潃鑹诧紝{magenta}琛ㄧず浣跨敤娲嬬孩鑹� -->
+    <!-- -琛ㄧず涓�涓垎闅旂 -->
+    <!-- %t锛氭樉绀轰骇鐢熻鏃ュ織鐨勭嚎绋嬪悕锛�%15锛氳嫢瀛楃闀垮害灏忎簬15锛屽垯宸﹁竟鐢ㄧ┖鏍煎~鍏咃紱%.15锛氳嫢瀛楃闀垮害瓒呰繃15锛屾埅鍘诲浣欏瓧绗� -->
+    <!-- %-40锛氳嫢瀛楃闀垮害灏忎簬40锛屽垯鍙宠竟鐢ㄧ┖鏍煎~鍏咃紱%.40锛氳嫢瀛楃闀垮害瓒呰繃40锛屾埅鍘诲浣欏瓧绗︼紱logger{39}瀵瑰簲鐨勬槸鈥渓ogging.WARNING鈥濈骇鍒�傚叿浣撴潵璇达紝Python鐨刲ogging妯″潡瀹氫箟浜嗕互涓嬪嚑涓骇鍒紙浠庝綆鍒伴珮锛夛細NOTSET銆丏EBUG銆両NFO銆乄ARNING銆丒RROR銆丆RITICAL銆傚洜姝わ紝logger{39}琛ㄧず鐨勬槸WARNING绾у埆锛屽嵆鏃ュ織璁板綍鍣ㄤ細璁板綍鎵�鏈塛ARNING绾у埆鍙婁互涓婄殑鏃ュ織淇℃伅 -->
+    <!-- %m琛ㄧず鏃ュ織娑堟伅锛�%n琛ㄧず鎹㈣绗︼紱${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}琛ㄧず寮傚父淇℃伅銆傚鏋滄棩蹇楄緭鍑轰腑鍖呭惈寮傚父淇℃伅锛岃繖涓鍒欏皢浼氬皢鍏惰浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず -->
+    <property name="CONSOLE_LOG_PATTERN"
+              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
+
+    <!--1. 杈撳嚭鍒版帶鍒跺彴-->
+    <!-- 瀹氫箟鎺у埗鍙版棩蹇楄緭鍑虹殑appender锛宑lass="ch.qos.logback.core.ConsoleAppender"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凜onsoleAppender绫绘潵杈撳嚭鏃ュ織鍒版帶鍒跺彴 -->
+    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+        <!--姝ゆ棩蹇梐ppender鏄负寮�鍙戜娇鐢紝鍙厤缃渶搴曠骇鍒紝鎺у埗鍙拌緭鍑虹殑鏃ュ織绾у埆鏄ぇ浜庢垨绛変簬姝ょ骇鍒殑鏃ュ織淇℃伅-->
+        <!-- 瀹氫箟鏃ュ織杈撳嚭绾у埆鐨勮繃婊ゅ櫒锛宑lass="ch.qos.logback.classic.filter.ThresholdFilter"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凾hresholdFilter绫绘潵杩囨护鏃ュ織杈撳嚭锛�<level>debug</level>琛ㄧず鍙緭鍑篸ebug绾у埆鍙婁互涓婄殑鏃ュ織 -->
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>debug</level>
+        </filter>
+        <encoder>
+            <!-- ${CONSOLE_LOG_PATTERN}琛ㄧず鎺у埗鍙版棩蹇楄緭鍑烘牸寮忥紝UTF-8琛ㄧず缂栫爜鏍煎紡 -->
+            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
+            <!-- 璁剧疆瀛楃闆� -->
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+    <!--2. 杈撳嚭鍒版枃妗�-->
+    <!-- 2.1 level涓� DEBUG 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <!-- 瀹氫箟鏂囦欢鏃ュ織杈撳嚭鐨刟ppender锛宑lass="ch.qos.logback.core.rolling.RollingFileAppender"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凴ollingFileAppender绫绘潵杈撳嚭鏃ュ織鍒版枃浠� -->
+    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_debug.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 璁剧疆瀛楃闆� -->
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <!-- 瀹氫箟鏃ュ織鏂囦欢婊氬姩绛栫暐鐨勬爣绛撅紝class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凾imeBasedRollingPolicy绫绘潵瀹氫箟鏃ュ織鏂囦欢鐨勬粴鍔ㄧ瓥鐣� -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 鏃ュ織褰掓。 -->
+            <!-- 瀹氫箟鏃ュ織鏂囦欢鍚嶇殑妯″紡銆傚湪杩欎釜妯″紡涓紝${logging.path}琛ㄧず鏃ュ織鏂囦欢鐨勮矾寰勶紝%d{yyyy-MM-dd}琛ㄧず鏃ユ湡鏍煎紡锛�%i琛ㄧず鏂囦欢绱㈠紩 -->
+            <fileNamePattern>${logging.path}/${serverName}/web-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <!-- 瀹氫箟鏃ュ織鏂囦欢婊氬姩绛栫暐鐨勬爣绛撅紝class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凷izeAndTimeBasedFNATP绫绘潵瀹氫箟鏃ュ織鏂囦欢鐨勬粴鍔ㄧ瓥鐣ワ紝<maxFileSize>100MB</maxFileSize>琛ㄧず鏃ュ織鏂囦欢鐨勬渶澶уぇ灏忎负100MB銆傝繖涓粴鍔ㄧ瓥鐣ラ�氬父鐢ㄤ簬鎸夌収鏃堕棿鍜屾枃浠跺ぇ灏忔粴鍔ㄦ棩蹇楁枃浠讹紝浠ヤ究鏇村ソ鍦扮鐞嗘棩蹇楁枃浠剁殑澶у皬鍜屾暟閲� -->
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍debug绾у埆鐨� -->
+        <!-- 瀹氫箟鏃ュ織杈撳嚭绾у埆鐨勮繃婊ゅ櫒銆傚湪杩欎釜杩囨护鍣ㄤ腑锛宑lass="ch.qos.logback.classic.filter.LevelFilter"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凩evelFilter绫绘潵杩囨护鏃ュ織杈撳嚭锛�<level>debug</level>琛ㄧず鍙緭鍑篸ebug绾у埆鍙婁互涓婄殑鏃ュ織 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>debug</level>
+            <!-- <onMatch>ACCEPT</onMatch>琛ㄧず濡傛灉鏃ュ織浜嬩欢涓庤繃婊ゅ櫒鍖归厤锛屽垯鎺ュ彈璇ヤ簨浠讹紝<onMismatch>DENY</onMismatch>琛ㄧず濡傛灉鏃ュ織浜嬩欢涓庤繃婊ゅ櫒涓嶅尮閰嶏紝鍒欐嫆缁濊浜嬩欢 -->
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!-- 2.2 level涓� INFO 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_info.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 澶╁ぉ鏃ュ織褰掓。璺緞浠ュ強鏍煎紡 -->
+            <fileNamePattern>${logging.path}/${serverName}/web-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍info绾у埆鐨� -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>info</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!-- 2.3 level涓� WARN 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_warn.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 姝ゅ璁剧疆瀛楃闆� -->
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logging.path}/${serverName}/web-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍warn绾у埆鐨� -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>warn</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!-- 2.4 level涓� ERROR 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_error.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 姝ゅ璁剧疆瀛楃闆� -->
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logging.path}/${serverName}/web-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍ERROR绾у埆鐨� -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>ERROR</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!--     4.1 寮�鍙戠幆澧�:鎵撳嵃鎺у埗鍙�-->
+    <!-- 鐢ㄤ簬鍦⊿pring Boot搴旂敤绋嬪簭涓厤缃棩蹇楄褰曠殑鏍囩銆傚湪杩欎釜鏍囩涓紝name="dev"琛ㄧず杩欎釜閰嶇疆鏂囦欢鍙湪dev鐜涓敓鏁堬紝<logger name="com.myClass.controller" level="debug"/>琛ㄧず涓篶om.myClass.controller锛堟牴鎹笟鍔′慨鏀癸級杩欎釜鍖呬笅鐨勭被閰嶇疆鏃ュ織杈撳嚭绾у埆涓篸ebug -->
+    <!--    <springProfile name="dev">-->
+    <!--        <logger name="com.myClass.controller" level="debug"/>-->
+    <!--    </springProfile>-->
+    <!-- 鐢ㄤ簬閰嶇疆鏃ュ織杈撳嚭鐨勬爣绛俱�傚湪杩欎釜鏍囩涓紝level="info"琛ㄧず鏃ュ織杈撳嚭绾у埆涓篿nfo锛�<appender-ref ref="CONSOLE"/>銆�<appender-ref ref="DEBUG_FILE"/>銆�<appender-ref ref="INFO_FILE"/>銆�<appender-ref ref="WARN_FILE"/>銆�<appender-ref ref="ERROR_FILE"/>琛ㄧず灏嗘棩蹇楄緭鍑哄埌涓嶅悓鐨刟ppender涓紝鍒嗗埆涓烘帶鍒跺彴銆乨ebug鏂囦欢銆乮nfo鏂囦欢銆亀arn鏂囦欢鍜宔rror鏂囦欢 -->
+    <root level="info">
+        <appender-ref ref="CONSOLE"/>
+        <appender-ref ref="DEBUG_FILE"/>
+        <appender-ref ref="INFO_FILE"/>
+        <appender-ref ref="WARN_FILE"/>
+        <appender-ref ref="ERROR_FILE"/>
+    </root>
+</configuration>
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/pom.xml b/hangzhoumesParent/moduleService/UnLoadGlassModule/pom.xml
index 7f8d916..e090930 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/pom.xml
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/pom.xml
@@ -27,12 +27,6 @@
 
 
         <dependency>
-            <groupId>com.github.yulichang</groupId>
-            <artifactId>mybatis-plus-join</artifactId>
-            <version>1.2.4</version>
-        </dependency>
-
-        <dependency>
             <groupId>com.microsoft.sqlserver</groupId>
             <artifactId>sqljdbc4</artifactId>
             <version>4.0</version>
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/Plcdownglass.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/Plcdownglass.java
new file mode 100644
index 0000000..56b0c56
--- /dev/null
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/Plcdownglass.java
@@ -0,0 +1,81 @@
+package com.mes.common;
+
+import cn.hutool.json.JSONObject;
+
+import com.mes.device.PlcParameterObject;
+import com.mes.downglassinfo.entity.DownGlassTask;
+import com.mes.downglassinfo.service.DownGlassTaskService;
+import com.mes.downstorage.entity.DownStorageCageDetails;
+import com.mes.downstorage.mapper.DownStorageCageDetailsMapper;
+import com.mes.downstorage.service.DownStorageCageService;
+import com.mes.downworkstation.service.DownWorkstationService;
+import com.mes.glassinfo.entity.GlassInfo;
+import com.mes.glassinfo.service.GlassInfoService;
+import com.mes.tools.WebSocketServer;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+import java.util.function.Supplier;
+
+@Slf4j
+public class Plcdownglass extends Thread {
+
+    public static final String RESULT_IN = "1";
+    public static final String RESULT_OUT = "2";
+    public static final String RESULT_IN_OUT = "3";
+
+    @Autowired
+    private DownStorageCageService downStorageCageService;
+    @Autowired
+  private DownWorkstationService downWorkstationService;
+
+//     private final Supplier<DownWorkstationService> plcServiceSupplier;
+//
+//    public Plcdownglass() {
+//        this.plcServiceSupplier = () -> WebSocketServer.applicationContext.getBean(DownWorkstationService.class);
+//    }
+
+
+
+    @Override
+    public void run() {
+        while (this != null) {
+            JSONObject jsonObject = new JSONObject();
+            try {
+                Thread.sleep(100);
+                downWorkstationService = WebSocketServer.applicationContext.getBean(DownWorkstationService.class);
+                downStorageCageService = WebSocketServer.applicationContext.getBean(DownStorageCageService.class);
+                //                String result = S7control.getinstance().ReadWord("DB14.0", 1).get(0) + "";
+//                String number = S7control.getinstance().ReadWord("DB14.2", 1).get(0) + "";
+                String result ="1";
+                String number ="1";
+                // 杩涚墖璇锋眰
+                if (RESULT_IN.equals(result)) {
+                    downStorageCageService.processInto(number);
+                }
+                // 鍑虹墖璇锋眰
+                else if (RESULT_OUT.equals(result)) {
+                    downStorageCageService.processOut();
+                }
+                // 杩涘嚭鐗囪姹�
+                else if (RESULT_IN_OUT.equals(result)) {
+                    // 鍏堝嚭鍚庤繘
+                    if (!downStorageCageService.processOut()) {
+                        downStorageCageService.processInto(number);
+                    }
+                }
+
+
+                downWorkstationService.insertdownglassinfo();
+
+
+
+
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+
+    }
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/Plchome.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/Plchome.java
index e9885db..4969337 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/Plchome.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/Plchome.java
@@ -1,25 +1,31 @@
 package com.mes.common;
 
 import cn.hutool.json.JSONObject;
-import com.mes.downworkstation.service.DownGlassLogic;
+
+import com.mes.downworkstation.service.DownWorkstationService;
 import com.mes.tools.WebSocketServer;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
 import java.util.function.Supplier;
 
 @Component
 public class Plchome extends Thread {
     private int i = 1;
     private static final Logger log = LogManager.getLogger(Plchome.class);
+    @Autowired
+    private  DownWorkstationService downWorkstationService;
 
-    private final Supplier<DownGlassLogic> plcServiceSupplier;
+   // private final Supplier<DownGlassLogic> plcServiceSupplier;
 
-    public Plchome() {
-        this.plcServiceSupplier = () -> WebSocketServer.applicationContext.getBean(DownGlassLogic.class);
-    }
+//    public Plchome() {
+//        this.plcServiceSupplier = () -> WebSocketServer.applicationContext.getBean(DownGlassLogic.class);
+//    }
 
 
     @Override
@@ -27,16 +33,19 @@
         while (!Thread.currentThread().isInterrupted()) {
             try {
                 i++;
-                Thread.sleep(100);
-                DownGlassLogic plcService = plcServiceSupplier.get();
-
-
-                //褰撲笅鐗囦换鍔¤〃鐘舵�佷负1鏃跺�欏皢鏁版嵁鎻掑叆鍒颁笅鐗囩幓鐠冧俊鎭〃
-                plcService.insertdownglassinfo();
-
-
-                //褰撴満姊版墜浠诲姟琛ㄤ腑鐘舵�佷负1 鏇存柊宸茬粡钀芥灦鏁伴噺锛屽苟涓旀妸涓嬬墖浠诲姟琛ㄧ殑閭f潯璁板綍鍒犳帀 宸ヤ綅琛ㄦ祦绋嬪崱缁戝畾浜嗘灦瀛�
-                plcService.downWorkstation();
+                Thread.sleep(1000);
+                JSONObject jsonObject = new JSONObject();
+                System.out.println(77);
+                downWorkstationService = WebSocketServer.applicationContext.getBean(DownWorkstationService.class);
+                List<Map<String, Object>>  yy= downWorkstationService.getTotalGlassDimensionsByWorkstation();
+                jsonObject.append("data", yy);
+                ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("unloadglass");
+                if (sendwServer != null) {
+                    for (WebSocketServer webserver : sendwServer) {
+                        webserver.sendMessage(jsonObject.toString());
+                        log.info("鍑嗗鍚� WebSocket 鏈嶅姟鍣ㄥ彂閫佹秷鎭�: {}", jsonObject.toString());
+                    }
+                }
 
 
             } catch (InterruptedException e) {
@@ -44,16 +53,7 @@
                 e.printStackTrace();
             }
 
-            JSONObject jsonObject = new JSONObject();
-            // System.out.println(arraylist6);
-            jsonObject.append("data", 1);
-            ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("unloadglass");
-            if (sendwServer != null) {
-                for (WebSocketServer webserver : sendwServer) {
-                    webserver.sendMessage(jsonObject.toString());
-                    log.info("鍑嗗鍚� WebSocket 鏈嶅姟鍣ㄥ彂閫佹秷鎭�: {}", jsonObject.toString());
-                }
-            }
+
 
         }
     }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java
index bd213d8..c0bf80e 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java
@@ -1,5 +1,6 @@
 package com.mes.config;
 
+import com.mes.common.Plcdownglass;
 import com.mes.common.Plchome;
 import com.mes.device.PLCAutoMes;
 import org.springframework.boot.ApplicationArguments;
@@ -18,11 +19,11 @@
         //
         System.out.println("鍚姩瀹屾垚");
 
-
+        //new Plcdownglass().start();
 
 //       new PLCAutoMes().start();
 //
-//    new Plchome().start();
+// new Plchome().start();
 
     }
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassInfoMapper.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassInfoMapper.java
index 7450c30..d10f370 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassInfoMapper.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassInfoMapper.java
@@ -7,11 +7,6 @@
 @Repository
 public interface DownGlassInfoMapper extends BaseMapper<DownGlassInfo> {
 
-//   @Select("SELECT MAX(sequence) FROM down_glass_info WHERE flow_card_id = #{flowCardId} LIMIT 1")
-//   Integer getMaxSequenceByFlowCardId(@Param("flowCardId") String flowCardId);
-////
-// @Delete("delete  from down_glass_task where flow_card_id = #{flowCardId}")
-//  void deletetask(@Param("flowCardId") String flowCardId);
 
 
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassTaskService.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassTaskService.java
index 1e8ed89..cd1141e 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassTaskService.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassTaskService.java
@@ -19,9 +19,17 @@
 
     void updateTaskStateToZero(long id);
 
-    void deleteTask(long id);
+    void deleteTask(String id);
 
     DownGlassTask selectLastOutCacheInfo(String endCell);
 
-    Integer insertCacheTask(Long id, String start, String end, String type, double width, double height, String filmsId, double thickness, String flowCardId);
+    Integer insertCacheTask(DownGlassTask downGlassTask);
+
+    List<DownGlassTask> selectInputTaskCache();
+
+    /**
+     * 鏌ヨ鍑虹墖浠诲姟
+     * @return
+     */
+    List<DownGlassTask> selectOutTaskCache();
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java
index e493c74..f66cf65 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java
@@ -3,9 +3,18 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.mes.downglassinfo.entity.DownGlassInfo;
+import com.mes.downglassinfo.entity.DownGlassTask;
 import com.mes.downglassinfo.mapper.DownGlassInfoMapper;
 import com.mes.downglassinfo.service.DownGlassInfoService;
+import com.mes.downglassinfo.service.DownGlassTaskService;
+import com.mes.downworkstation.entity.DownWorkstation;
+import com.mes.downworkstation.mapper.DownWorkstationMapper;
+import com.mes.downworkstation.service.DownWorkstationService;
+import com.mes.downworkstation.service.DownWorkstationTaskService;
+import com.mes.tools.WebSocketServer;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 @Service
 public class DownGlassInfoServiceImpl extends ServiceImpl<DownGlassInfoMapper, DownGlassInfo> implements DownGlassInfoService {
@@ -30,4 +39,8 @@
     }
 
 
+
+
+
+
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java
index 4e9cdf8..8389edd 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java
@@ -39,9 +39,9 @@
     }
 
     @Override
-    public void deleteTask(long id) {
+    public void deleteTask(String id) {
         LambdaQueryWrapper<DownGlassTask> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(DownGlassTask::getId, id);
+        queryWrapper.eq(DownGlassTask::getFlowCardId, id);
 
         baseMapper.delete(queryWrapper);
     }
@@ -58,17 +58,17 @@
     }
 
     @Override
-    public Integer insertCacheTask(Long id, String start, String end, String type, double width, double height, String filmsId, double thickness, String flowCardId) {
+    public Integer insertCacheTask(DownGlassTask downGlassTask) {
         DownGlassTask glassInfo = new DownGlassTask();
-        glassInfo.setId(id);
-        glassInfo.setStartCell(start);
-        glassInfo.setEndCell(end);
-        glassInfo.setTaskType(type);
-        glassInfo.setWidth(width);
-        glassInfo.setHeight(height);
-        glassInfo.setFilmsid(filmsId);
-        glassInfo.setThickness(thickness);
-        glassInfo.setFlowCardId(flowCardId);
+        glassInfo.setId(downGlassTask.getId());
+        glassInfo.setStartCell(downGlassTask.getStartCell());
+        glassInfo.setEndCell(downGlassTask.getEndCell());
+        glassInfo.setTaskType(downGlassTask.getTaskType());
+        glassInfo.setWidth(downGlassTask.getWidth());
+        glassInfo.setHeight(downGlassTask.getHeight());
+        glassInfo.setFilmsid(downGlassTask.getFilmsid());
+        glassInfo.setThickness(downGlassTask.getThickness());
+        glassInfo.setFlowCardId(downGlassTask.getFlowCardId());
         glassInfo.setTaskStauts(0); // 榛樿浠诲姟鐘舵�佷负0
 
         int rows = baseMapper.insert(glassInfo);
@@ -78,6 +78,20 @@
 
 
 
+    @Override
+    public List<DownGlassTask> selectInputTaskCache(){
+        return baseMapper.selectList(new QueryWrapper<DownGlassTask>().eq("task_status",0).eq("task_type",1));
+    }
+
+    /**
+     * 鏌ヨ寰呭嚭鐗囦换鍔�
+     * @return
+     */
+    @Override
+    public List<DownGlassTask> selectOutTaskCache(){
+        return baseMapper.selectList(new QueryWrapper<DownGlassTask>().eq("task_status",0).eq("task_type",2));
+    }
+
 
 
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/controller/DownStorageCageDetailsController.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/controller/DownStorageCageDetailsController.java
index 17a62f7..f89f3ee 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/controller/DownStorageCageDetailsController.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/controller/DownStorageCageDetailsController.java
@@ -11,7 +11,7 @@
 
 import java.util.List;
 import java.util.Map;
-@Api(tags = "缂撳瓨")
+@Api(description = "缂撳瓨")
 @RestController
 @RequestMapping("/downStorage")
 public class DownStorageCageDetailsController {
@@ -34,7 +34,7 @@
     @GetMapping("/selectStorageCage")
     @ResponseBody
     public Result selectEdgStorageCage () {
-        List<Map> list=downStorageCageService.getCacheInfo();
+        List<Map> list=downStorageCageDetailsService.getCacheInfo();
         return Result.build(200,"鎴愬姛",list);
     }
 
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/DownStorageCage.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/DownStorageCage.java
index 1617790..795e921 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/DownStorageCage.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/DownStorageCage.java
@@ -2,7 +2,7 @@
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
-import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -17,7 +17,7 @@
  * @author zhoush
  * @since 2024-03-27
  */
-@ApiModel(description = "<p> 缂撳瓨</p>")
+@Api(description = "缂撳瓨")
 @Data
 @EqualsAndHashCode(callSuper = false)
 public class DownStorageCage implements Serializable {
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/DownStorageCageDetails.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/DownStorageCageDetails.java
index 4cc400f..c5b11a4 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/DownStorageCageDetails.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/DownStorageCageDetails.java
@@ -40,7 +40,7 @@
     /**
      * 鐜荤拑id
      */
-    private Integer glassId;
+    private String glassId;
 
     /**
      * 灏忕墖鍦ㄦ牸鍐呯殑椤哄簭
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java
index 7418618..49a3bd9 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java
@@ -1,6 +1,7 @@
 package com.mes.downstorage.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.downglassinfo.entity.DownGlassTask;
 import com.mes.downstorage.entity.DownStorageCageDetails;
 import com.mes.glassinfo.entity.GlassInfo;
@@ -17,54 +18,6 @@
  * @since 2024-03-27
  */
 @Mapper
-public interface DownStorageCageDetailsMapper extends BaseMapper<DownStorageCageDetails> {
-//
-//    @Select("select * from `glass_info` where id=#{id}")
-//    GlassInfo SelectGlassId(String id);
-    // 鏌ヨ绗煎瓙鍐呯┖闂�
-    @Select("select escd.* from down_storage_cage as esc LEFT JOIN down_storage_cage_details as escd on esc.slot=escd.slot where escd.slot is null order by escd.slot")
-    List<DownStorageCageDetails> SelectCacheLeisure();
-
-    // 鏌ヨ绗﹀悎宸ヤ綅鐨勫嚭鐗囩幓鐠�
-    @Select("select escd.* from down_storage_cage as esc LEFT JOIN down_storage_cage_details as escd on esc.slot=escd.slot left join down_workstation as dw  on escd.flow_card_id=dw.flow_card_id WHERE escd.slot IS NOT NULL and dw.workstation_id BETWEEN #{start} and #{end} order by escd.tempering_layout_id,escd.tempering_feed_sequence")
-    List<DownStorageCageDetails> SelectCacheOut(int start,int end);
-//SELECT* from (SELECT DISTINCT escd.* from down_storage_cage as esc LEFT JOIN down_storage_cage_details as escd on esc.slot=escd.slot left join down_workstation as dw  on escd.flow_card_id=dw.flow_card_id WHERE escd.slot IS NOT NULL and dw.workstation_id BETWEEN 1 and 5   order by escd.tempering_layout_id,escd.tempering_feed_sequence) as cc ORDER BY cc.width desc
-    // 鏌ヨ绗煎瓙鍐呬俊鎭�
-    @Select("select escd.* from down_storage_cage as esc LEFT JOIN down_storage_cage_details as escd on esc.slot=escd.slot order by esc.slot")
-    List<DownStorageCageDetails> SelectCachInfo();
-
-    // 鏌ヨ鍙繘姝ょ墖鐜荤拑鐨勬爡鏍煎彿  鎵惧埌鐩稿悓鐗堝浘id骞朵笖澶т簬鍓嶉潰鐨勯『搴忕殑绌烘牸
-    @Select("select escd.* from down_storage_cage as esc LEFT JOIN down_storage_cage_details as escd on esc.slot=escd.slot where escd.slot is not null and escd.tempering_layout_id=#{tempering_layout_id} and escd.tempering_feed_sequence<#{tempering_feed_sequence} and esc.remain_width-#{width}>0 order by escd.tempering_feed_sequence")
-    List<DownStorageCageDetails> SelectIsExistIntoCache(Integer tempering_layout_id, Integer tempering_feed_sequence,
-                                                        double width);
-
-    // 鏌ヨ鍙繘姝ょ墖鐜荤拑鐨勬爡鏍煎彿
-    @Select("select escd.* from down_storage_cage as esc LEFT JOIN down_storage_cage_details as escd on esc.slot=escd.slot where escd.slot is not null escd.tempering_layout_id<#{tempering_layout_id} and esc.remain_width-#{width}>0 order by escd.tempering_layout_id desc,escd.tempering_feed_sequence")
-    List<DownStorageCageDetails> SelectIsExistIntoCache(Integer tempering_layout_id, double width);
-
-//    // 鏌ヨ鍏ㄩ儴浠诲姟
-//    @Select("select * from down_glass_task")
-//    List<DownGlassTask> SelectCacheInfoAll();
-//
-//    // 鏌ヨ杩涚墖浠诲姟
-//    @Select("select * from down_glass_task where task_type='1' and task_stauts='0'")
-//    List<DownGlassTask> SelectInputCacheInfo();
-//
-//    // 鏌ヨ鍑虹墖浠诲姟
-//    @Select("select * from down_glass_task where task_type='2' and task_stauts='0'")
-//    List<DownGlassTask> SelectOutCacheInfo();
-
-    // 鏌ヨ  A06  鎴� A11 鏈�鏂扮殑涓�鐗� 鍑虹墖浠诲姟
-//    @Select("select * from down_glass_task where task_type='2' and task_stauts='2' and end_cell=#{EndCell} limit 1")
-//    GlassInfo SelectLastOutCacheInfo(String EndCell);
-
-    // 淇敼绗煎瓙鍐呬俊鎭�
-//    @Update("update")
-//    Integer UpdateCache(@Param("id") Integer id, @Param("order_id") String order_id);
-
-    // 娣诲姞涓嬬墖浠诲姟
-    @Insert("INSERT into down_glass_task VALUES(#{id},#{start},#{end},#{type},0,)")
-    Integer insertCacheTask(String id, String start, String end, String type,double width,double height,Integer filmsId,double thickness,String flowCardId);
-
+public interface DownStorageCageDetailsMapper extends MPJBaseMapper<DownStorageCageDetails> {
 
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageMapper.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageMapper.java
index ae0b8a2..59edb81 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageMapper.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageMapper.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.downstorage.entity.DownStorageCage;
+import org.apache.ibatis.annotations.Mapper;
 
 /**
  * <p>
@@ -12,6 +13,7 @@
  * @author zhoush
  * @since 2024-03-27
  */
+@Mapper
 public interface DownStorageCageMapper extends MPJBaseMapper<DownStorageCage> {
 
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownGlassCacheLogic.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownGlassCacheLogic.java
deleted file mode 100644
index 1aa2bdf..0000000
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownGlassCacheLogic.java
+++ /dev/null
@@ -1,236 +0,0 @@
-package com.mes.downstorage.service;
-
-import com.mes.common.PLCAutoMes;
-import com.mes.common.S7control;
-import com.mes.device.PlcParameterObject;
-
-import com.mes.downglassinfo.entity.DownGlassTask;
-import com.mes.downglassinfo.service.DownGlassTaskService;
-import com.mes.downstorage.entity.DownStorageCageDetails;
-import com.mes.downstorage.mapper.DownStorageCageDetailsMapper;
-import com.mes.downworkstation.mapper.DownWorkstationMapper;
-import com.mes.tools.WebSocketServer;
-import com.mes.glassinfo.entity.GlassInfo;
-import com.mes.glassinfo.service.GlassInfoService;
-import lombok.Data;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-import static jdk.nashorn.internal.runtime.regexp.joni.Config.log;
-
-@Data
-@Service
-public class DownGlassCacheLogic {
-    //涓嬬墖鍓嶇悊鐗�
-    public static final String RESULT_IN = "1";
-    public static final String RESULT_OUT = "2";
-    public static final String RESULT_IN_OUT = "3";
-    @Autowired
-    private DownStorageCageDetailsMapper selectInfo;
-    @Autowired
-    private GlassInfoService glassInfoService;
-    @Autowired
-    private DownStorageCageService downStorageCageService;
-    @Autowired
-    private DownGlassTaskService downGlassTaskService;
-
-
-
-
-
-    public void process() {
-        String result = S7control.getinstance().ReadWord("DB14.0", 1).get(0) + "";
-        String number = S7control.getinstance().ReadWord("DB14.2", 1).get(0) + "";
-
-        // 杩涚墖璇锋眰
-        if (RESULT_IN.equals(result)) {
-            processInto(number);
-        }
-        // 鍑虹墖璇锋眰
-        else if (RESULT_OUT.equals(result)) {
-            processOut();
-        }
-        // 杩涘嚭鐗囪姹�
-        else if (RESULT_IN_OUT.equals(result)) {
-            // 鍏堝嚭鍚庤繘
-            if (!processOut()) {
-                processInto(number);
-            }
-        }
-    }
-
-
-    /**
-     * @param Number
-     * @return //涓嬬墖鍓嶇悊鐗� 杩�
-     */
-
-    public boolean processInto(String Number) {
-        glassInfoService = WebSocketServer.applicationContext.getBean(GlassInfoService.class);
-        downStorageCageService = WebSocketServer.applicationContext.getBean(DownStorageCageService.class);
-
-        //鎸塱d鏌ヨ鐜荤拑淇℃伅琛ㄩ噷鐨勭幓鐠�
-        GlassInfo GlassInfo = glassInfoService.selectGlassId(Number);
-        PlcParameterObject plcmes = PLCAutoMes.PlcMesObject;
-        //瀛樺湪姝ょ幓鐠冪紪鍙�
-        if (GlassInfo != null) {
-            //鍚岄挗鍖栫増鍥惧唴鐨勬爡鏍煎彿    鎵惧埌鐩稿悓鐗堝浘id骞朵笖澶т簬鍓嶉潰鐨勯『搴忕殑绌烘牸
-            List<DownStorageCageDetails> list = downStorageCageService.getIsExistIntoCacheByLayoutAndSequence(GlassInfo.getTemperingLayoutId(), GlassInfo.getTemperingFeedSequence(), GlassInfo.getWidth());
-            //绌烘爡鏍煎彿
-            if (list.size() == 0) {
-                //鏌ヨ绗煎瓙鍐呯┖闂�
-                list = downStorageCageService.getCacheLeisure();
-            }
-            //灏忎簬姝ょ幓鐠冮挗鍖栫増鍥惧簭鍙风殑鏍呮牸鍙�
-            if (list.size() == 0) {
-                list = downStorageCageService.getIsExistIntoCacheByLayout(GlassInfo.getTemperingLayoutId(), GlassInfo.getWidth());
-            }
-            if (list.size() > 0) {
-                //瀛樺湪绌烘牸  
-                //1.鐢熸垚浠诲姟锛�  璧峰浣嶇疆0   缁撴潫浣嶇疆this.slot  浠诲姟绫诲瀷 1   锛堣繘鐗囦换鍔★級
-                //2.鍥炲 1杩涚墖
-                DownStorageCageDetails item = list.get(0);
-                selectInfo.insertCacheTask(GlassInfo.getId() + "", "0", item.getSlot() + "", "1", GlassInfo.getWidth(), GlassInfo.getHeight(), GlassInfo.getFilmsid(), GlassInfo.getThickness(), GlassInfo.getFlowcardId());
-
-                S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(), (short) 1);
-
-               //瀹屾垚鍚庢彃鍏ュ皬鐗囨暟鎹埌缂撳瓨琛�
-                return true;
-            }
-
-        } else {
-            // ID缂栧彿涓嶅瓨鍦�   涓嶅鐞�/鍥炲PLC  杩涜鎶ヨ鎻愮ず
-        }
-        //杩斿洖缁撴灉
-        return false;
-    }
-
-    //鐞嗙墖 鍑�
-    public boolean processOut() {
-        // 鏌ヨ浠诲姟
-        String G06 = S7control.getinstance().ReadWord("DB14.56", 1).get(0) + "";
-        String G11 = S7control.getinstance().ReadWord("DB14.58", 1).get(0) + "";
-        String G13 = S7control.getinstance().ReadWord("DB14.58", 1).get(0) + "";
-        PlcParameterObject plcmes = PLCAutoMes.PlcMesObject;
-
-
-        List<DownStorageCageDetails> list = downStorageCageService.getCacheOut(1, 5);
-        List<DownStorageCageDetails> list2 = downStorageCageService.getCacheOut(6, 10);
-        List<DownStorageCageDetails> list3 = downStorageCageService.getCacheOut(1, 10);
-        GlassInfo Maxglass=glassInfoService.selectGlassId("2");;
-
-        // 浼樺厛 瓒呭嚭灏哄浼樺厛浜哄伐鍑虹墖 浜哄伐澶勭悊
-        if (!list3.isEmpty()) {
-            DownStorageCageDetails item3 = list3.get(0);
-            if (item3.getHeight() >= 1 && item3.getWidth() >= 1) {
-
-                String endcell = "13";
-                String SendEndcell = "1";
-
-                selectInfo.insertCacheTask(item3.getGlassId() + "", "0", endcell, "2", item3.getWidth(), item3.getHeight(), item3.getFilmsid(), item3.getThickness(), item3.getFlowCardId());
-                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), SendEndcell);
-                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
-                return true;
-            }
-        }
-
-        //鍚屾椂璇锋眰 浼樺厛鍚庣鍑虹墖
-        else if (!list3.isEmpty()&&Maxglass.equals(list3.get(0))) {
-            DownStorageCageDetails item3 = list3.get(0);
-            if (G06.equals("0") && G11.equals("0")) {
-                String endcell = "11";
-                String SendEndcell = "1";
-                selectInfo.insertCacheTask(item3.getGlassId() + "", "0", endcell, "2", item3.getWidth(), item3.getHeight(), item3.getFilmsid(), item3.getThickness(), item3.getFlowCardId());
-                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), SendEndcell);
-                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
-                return true;
-            }
-        }
-        // 鎸夌収澶у皬绗﹀悎鍓嶇鍑虹墖
-        else if (!list.isEmpty()) {
-            DownStorageCageDetails item = list.get(0);
-            if (G06.equals("0") && G11.equals("1")) {
-                // 鍑哄埌 G06
-                selectInfo.insertCacheTask(item.getGlassId() + "", "0", "06", "2", item.getWidth(), item.getHeight(), item.getFilmsid(), item.getThickness(), item.getFlowCardId());
-                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), "1");
-                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
-                return true;
-            }
-            // 鎸夌収椤哄簭绗﹀悎鍚庣鍑虹墖
-        } else if (!list2.isEmpty()) {
-            DownStorageCageDetails item2 = list2.get(0);
-            if (G06.equals("1") && G11.equals("0")) {
-                // 鍑哄埌 G11
-                selectInfo.insertCacheTask(item2.getGlassId() + "", "0", "11", "2", item2.getWidth(), item2.getHeight(), item2.getFilmsid(), item2.getThickness(), item2.getFlowCardId());
-                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), "2");
-                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
-                return true;
-            }
-
-        }
-
-
-        // 杩斿洖缁撴灉
-        return false;
-    }
-
-
-    /**
-     * @param Number
-     *  //纾ㄨ竟   涓嶄氦浜�  鐞嗙墖鍜岀(杈规満鑷繁浜や簰
-     */
-
-
-    /**
-     * @param Number
-     * @return 鏌ヨ娑堟伅闃熷垪閲屾鐜荤拑ID鐨勬暟鎹�
-     */
-    public boolean selectMessageId(String Number) {
-        //鏌ヨ鏄惁瀛樺湪
-
-        GlassInfo GlassInfo = glassInfoService.selectGlassId(Number);
-        if (GlassInfo == null) {
-            //杩斿洖 涓嶅瓨鍦�
-            return false;
-
-        }
-        //杩斿洖 瀛樺湪
-        return true;
-    }
-
-    /**
-     * @param Number
-     * @return 鍒犻櫎娑堟伅闃熷垪閲屾鐜荤拑ID鐨勬暟鎹�
-     */
-
-    public boolean deleteMessageId(String Number) {
-        //鏌ヨ鏄惁瀛樺湪
-        GlassInfo GlassInfo = glassInfoService.selectGlassId(Number);
-        if (GlassInfo == null) {
-            //杩斿洖 涓嶅瓨鍦�
-            return false;
-        }
-        //杩斿洖 瀛樺湪
-        return true;
-    }
-
-
-    /**
-     * @param Number
-     * @return //鏄惁瀛樺湪姝ょ紪鍙风幓鐠�
-     */
-    public boolean isExist(String Number) {
-        //鏌ヨ鏄惁瀛樺湪
-        GlassInfo GlassInfo = glassInfoService.selectGlassId(Number);
-        if (GlassInfo == null) {
-            //杩斿洖 涓嶅瓨鍦�
-            return false;
-        }
-        //杩斿洖 瀛樺湪
-        return true;
-    }
-
-}
-
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java
index b71fc94..c8a3dc8 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java
@@ -1,6 +1,7 @@
 package com.mes.downstorage.service;
 
 import com.mes.downstorage.entity.DownStorageCageDetails;
+import com.mes.glassinfo.entity.GlassInfo;
 
 import java.util.List;
 import java.util.Map;
@@ -11,4 +12,12 @@
 
     //淇敼鐞嗙墖绗煎唴淇℃伅
     boolean updatedownStorageCageDetails(DownStorageCageDetails details);
+    List<DownStorageCageDetails> getCacheLeisure();
+    List<DownStorageCageDetails> getCacheOut(int start, int end);
+    List<Map> getCacheInfo();
+
+
+    List<DownStorageCageDetails> getIsExistIntoCacheByflowcardid(String flowcardid, double width);
+
+    List<DownStorageCageDetails> CacheOut(int start, int end);
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java
index 343af18..a1e7c6c 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java
@@ -1,6 +1,7 @@
 package com.mes.downstorage.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.yulichang.base.MPJBaseService;
 import com.mes.downstorage.entity.DownStorageCage;
 import com.mes.downstorage.entity.DownStorageCageDetails;
 
@@ -15,15 +16,14 @@
  * @author zhoush
  * @since 2024-03-27
  */
-public interface DownStorageCageService extends IService<DownStorageCage> {
+public interface DownStorageCageService extends MPJBaseService<DownStorageCage> {
     public List<Map> gettask();
 
     //    List<Map<String, Object>> selectCacheLeisure();
-    List<DownStorageCageDetails> getCacheLeisure();
-    List<DownStorageCageDetails> getCacheOut(int start, int end);
-    List<Map> getCacheInfo();
-    List<DownStorageCageDetails> getIsExistIntoCacheByLayoutAndSequence(Integer tempering_layout_id, Integer tempering_feed_sequence, double width);
-    List<DownStorageCageDetails> getIsExistIntoCacheByLayout(Integer tempering_layout_id, double width);
-    List<DownStorageCageDetails> getIsExistIntoCacheByflowcardid(String flowcardid, double width);
-    List<DownStorageCageDetails> IsExistIntoCacheByflowcardid(String flowcardid, double width);
+
+    List<Map> selectCacheEmpty();
+    boolean processInto(String Number);
+    boolean processOut();
+
+
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java
index fb0e5b0..26d7f16 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java
@@ -2,35 +2,36 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.yulichang.query.MPJQueryWrapper;
-import com.github.yulichang.wrapper.MPJAbstractLambdaWrapper;
+
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.github.yulichang.query.MPJQueryWrapper;
+
 import com.mes.downstorage.entity.DownStorageCage;
 import com.mes.downstorage.entity.DownStorageCageDetails;
 import com.mes.downstorage.mapper.DownStorageCageDetailsMapper;
+
 import com.mes.downstorage.mapper.DownStorageCageMapper;
 import com.mes.downstorage.service.DownStorageCageDetailsService;
+import com.mes.glassinfo.entity.GlassInfo;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.util.List;
 import java.util.Map;
-
+@Slf4j
 @Service
 public class DownStorageCageDetailsServiceImpl extends ServiceImpl<DownStorageCageDetailsMapper, DownStorageCageDetails> implements DownStorageCageDetailsService {
 
-
-
+    @Autowired
+    private DownStorageCageMapper downStorageCageMapper;
+    @Autowired
+    private DownStorageCageDetailsMapper downStorageCageDetailsMapper;
     @Override
     public void addDownStorageCageDetails(DownStorageCageDetails details) {
         this.save(details);
     }
-
-
-
-
 
 
     @Override
@@ -41,11 +42,111 @@
     }
 
 
+    @Override
+    public List<DownStorageCageDetails> CacheOut(int start, int end) {
+        log.info("鍗曠墖鎯呭喌鏍规嵁浼犲叆鐨勫伐浣嶆煡璇㈢鍚堟寜鐓уぇ灏忓嚭鐗�,骞朵笖浼樺厛鍑烘弧鏋剁殑灏忕墖");
+        return downStorageCageDetailsMapper.selectJoinList(
+                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCageDetails>()
+                        .select("t.*")
+                        .leftJoin("(SELECT t1.* FROM down_storage_cage_details t1 "
+                                + "JOIN (SELECT flow_card_id, MAX(width) AS max_width FROM glass_info GROUP BY flow_card_id) t "
+                                + "ON t1.flow_card_id = t.flow_card_id WHERE t1.width = t.max_width) t3"
+                                + " ON t.glass_id = t3.glass_id")
+                        .leftJoin("down_workstation t4 ON t3.flow_card_id = t4.flow_card_id")
+                        .isNull(Boolean.parseBoolean("t.glass_id"), "SELECT glass_id FROM down_glass_info")
+                        .between("t4.workstation_id", start, end)
+                        // 鏍规嵁 racks_number 鎺掑簭
+                        .orderByDesc("t4.racks_number")
+
+        );
+    }
 
 
 
 
 
 
-    // Other business methods can be implemented here
+
+
+
+
+
+
+
+    @Override
+    public List<DownStorageCageDetails> getCacheOut(int start, int end) {
+        log.info("鏍规嵁浼犲叆鐨勫伐浣嶆煡璇㈢鍚堟寜鐓ч『搴忓拰澶у皬鍑虹墖鐨勫皬鐗�");
+        return  downStorageCageMapper.selectJoinList(
+                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>()
+                        .select("escd.*")
+                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
+                        .leftJoin("down_workstation dw on escd.flow_card_id = dw.flow_card_id")
+                        .leftJoin("glass_info gi on dw.flow_card_id = gi.flowcard_id  and gi.flowcard_id=escd.flow_card_id ")
+                        .isNotNull("escd.slot")
+                        .between("dw.workstation_id", start, end)
+                        .orderByDesc("escd.width")
+                        .orderByDesc("escd.height")
+        );
+    }
+
+
+
+
+
+    @Override
+    public List<Map> getCacheInfo() {
+        log.info(" 鏌ヨ绗煎瓙鍐呬俊鎭�");
+        return downStorageCageMapper.selectJoinList(
+                Map.class, new MPJQueryWrapper<DownStorageCage>()
+                        .select("escd.*")
+                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
+                        .orderByAsc("t.slot")
+        );
+
+    }
+
+
+
+    @Override
+    public List<DownStorageCageDetails> getCacheLeisure() {
+        log.info(" 鏌ヨ绗煎瓙鍐呯┖闂�");
+        List<DownStorageCageDetails> list = downStorageCageMapper.selectJoinList(
+                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>()
+                        .select("escd.*")
+                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
+                        .isNull("escd.slot")
+
+                        .orderByAsc("escd.slot")
+        );
+        return list;
+    }
+
+
+    @Override
+    public List<DownStorageCageDetails> getIsExistIntoCacheByflowcardid(String flowcardid, double width) {
+        log.info("  鏌ヨ鍙繘姝ょ墖鐜荤拑鐨勬爡鏍煎彿  鎵惧埌绌烘牸");
+
+        return downStorageCageMapper.selectJoinList(
+                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>()
+                        .select("escd.*")
+                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
+                        .isNull("escd.slot")
+                        .apply("t.remain_width - " + width + " > 0")
+                        .orderByAsc("escd.sequence")
+        );
+
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java
index ecceaf3..a3976f0 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java
@@ -1,11 +1,21 @@
 package com.mes.downstorage.service.impl;
 
 import com.github.yulichang.query.MPJQueryWrapper;
+import com.mes.common.PLCAutoMes;
+import com.mes.common.S7control;
+import com.mes.device.PlcParameterObject;
+import com.mes.downglassinfo.entity.DownGlassTask;
+import com.mes.downglassinfo.service.DownGlassTaskService;
 import com.mes.downstorage.entity.DownStorageCage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.mes.downstorage.entity.DownStorageCageDetails;
+import com.mes.downstorage.mapper.DownStorageCageDetailsMapper;
 import com.mes.downstorage.mapper.DownStorageCageMapper;
+import com.mes.downstorage.service.DownStorageCageDetailsService;
 import com.mes.downstorage.service.DownStorageCageService;
+import com.mes.glassinfo.entity.GlassInfo;
+import com.mes.glassinfo.service.GlassInfoService;
+import com.mes.tools.WebSocketServer;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -26,6 +36,14 @@
 public class DownStorageCageServiceImpl extends ServiceImpl<DownStorageCageMapper, DownStorageCage> implements DownStorageCageService {
     @Autowired
     private DownStorageCageMapper downStorageCageMapper;
+
+    @Autowired
+    private GlassInfoService glassInfoService;
+
+    @Autowired
+    private DownGlassTaskService downGlassTaskService;
+    @Autowired
+    private DownStorageCageDetailsService downStorageCageDetailsService;
     @Override
     public List<Map> gettask(){
         downStorageCageMapper.selectList(null);
@@ -34,53 +52,13 @@
     };
 
 
-
     @Override
-    public List<DownStorageCageDetails> getCacheLeisure() {
-        log.info(" 鏌ヨ绗煎瓙鍐呯┖闂�");
-        List<DownStorageCageDetails> list = downStorageCageMapper.selectJoinList(
-                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCageDetails>()
-                        .select("escd.*")
-                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
+    public List<Map> selectCacheEmpty(){
+        return baseMapper.selectJoinList(
+                Map.class,new MPJQueryWrapper<DownStorageCage>().selectAll(DownStorageCage.class)
+                        .select("escd.glass_id","escd.flow_card_id","escd.width","escd.height")
+                        .leftJoin("down_storage_cage_details escd on t.device_id=escd.device_id and t.slot=escd.slot")
                         .isNull("escd.slot")
-                        .orderByAsc("escd.slot")
-        );
-        return list;
-    }
-
-
-//    @Override
-//    public List<Map> getCacheOut(int start, int end) {
-//        log.info(" 鏍规嵁浼犲叆鐨勫伐浣嶆煡璇㈢鍚堟寜鐓ч『搴忓拰澶у皬鍑虹墖鐨勫皬鐗�");
-//        List<Map> map = downStorageCageMapper.selectJoinList(
-//                Map.class, new MPJQueryWrapper<DownStorageCageDetails>()
-//                        .select("escd.*")
-//                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
-//                        .leftJoin("down_workstation dw on escd.flow_card_id = dw.flow_card_id")
-//                        .isNotNull("escd.slot")
-//                        .between("dw.workstation_id", start, end)
-//                        .orderByAsc("escd.tempering_layout_id, escd.tempering_feed_sequence")
-//        );
-//        return map;
-//    }
-
-
-
-
-
-    @Override
-    public List<DownStorageCageDetails> getCacheOut(int start, int end) {
-        log.info("鏍规嵁浼犲叆鐨勫伐浣嶆煡璇㈢鍚堟寜鐓ч『搴忓拰澶у皬鍑虹墖鐨勫皬鐗�");
-        return  downStorageCageMapper.selectJoinList(
-                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCageDetails>()
-                        .select("escd.*")
-                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
-                        .leftJoin("down_workstation dw on escd.flow_card_id = dw.flow_card_id")
-                        .leftJoin("glass_info gi on dw.flow_card_id = gi.flowcard_id  and gi.flowcard_id=escd.flow_card_id ")
-                        .isNotNull("escd.slot")
-                        .between("dw.workstation_id", start, end)
-                        .orderByDesc("escd.width")
-                        .orderByDesc("escd.height")
         );
     }
 
@@ -88,91 +66,187 @@
 
 
 
-    @Override
-    public List<Map> getCacheInfo() {
-        log.info(" 鏌ヨ绗煎瓙鍐呬俊鎭�");
-        return downStorageCageMapper.selectJoinList(
-                Map.class, new MPJQueryWrapper<DownStorageCageDetails>()
-                        .select("escd.*")
-                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
-                        .orderByAsc("t.slot")
-        );
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    public DownGlassTask createDownGlassTask(GlassInfo glassInfo, String startCell, String endCell,String taskType ) {
+        DownGlassTask downGlassTask = new DownGlassTask();
+        downGlassTask.setId(glassInfo.getId());
+        downGlassTask.setStartCell(startCell);
+        downGlassTask.setTaskType(taskType);
+        downGlassTask.setEndCell(endCell);
+        downGlassTask.setWidth(glassInfo.getWidth());
+        downGlassTask.setHeight(glassInfo.getHeight());
+        downGlassTask.setFilmsid(String.valueOf(glassInfo.getFilmsid()));
+        downGlassTask.setThickness(glassInfo.getThickness());
+        downGlassTask.setFlowCardId(glassInfo.getFlowcardId());
+
+        return downGlassTask;
     }
 
 
+    public DownGlassTask createDownGlassTask(DownStorageCageDetails glassInfo, String startCell, String endCell,String taskType ) {
+        DownGlassTask downGlassTask = new DownGlassTask();
+        downGlassTask.setId(glassInfo.getId());
+        downGlassTask.setStartCell(startCell);
+        downGlassTask.setTaskType(taskType);
+        downGlassTask.setEndCell(endCell);
+        downGlassTask.setWidth(glassInfo.getWidth());
+        downGlassTask.setHeight(glassInfo.getHeight());
+        downGlassTask.setFilmsid(String.valueOf(glassInfo.getFilmsid()));
+        downGlassTask.setThickness(glassInfo.getThickness());
+        downGlassTask.setFlowCardId(glassInfo.getFlowCardId());
 
-    @Override
-    public List<DownStorageCageDetails> getIsExistIntoCacheByLayoutAndSequence(Integer tempering_layout_id, Integer tempering_feed_sequence, double width) {
-        log.info(" 鏌ヨ鍙繘姝ょ墖鐜荤拑鐨勬爡鏍煎彿  鎵惧埌鐩稿悓鐗堝浘id骞朵笖澶т簬鍓嶉潰鐨勯『搴忕殑绌烘牸");
-        List<DownStorageCageDetails> list = downStorageCageMapper.selectJoinList(
-                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCageDetails>()
-                        .select("escd.*")
-                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
-                        .isNotNull("escd.slot")
-                        .eq("escd.tempering_layout_id", tempering_layout_id)
-                        .lt("escd.tempering_feed_sequence", tempering_feed_sequence)
-                        .gt("t.remain_width", width)
-                        .orderByAsc("escd.tempering_feed_sequence")
-        );
-        return list;
-    }
-
-
-
-
-    @Override
-    public List<DownStorageCageDetails> getIsExistIntoCacheByflowcardid(String flowcardid, double width) {
-        log.info(" 鏌ヨ鍙繘姝ょ墖鐜荤拑鐨勬爡鏍煎彿  鎵惧埌鐩稿悓娴佺▼鍗″彿鐨勭┖鏍�");
-
-        return downStorageCageMapper.selectJoinList(
-                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCageDetails>()
-                        .select("escd.*")
-                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
-                        .isNotNull("escd.slot")
-                        .eq("escd.flow_card_id", flowcardid)
-                        .gt("t.remain_width", width)
-                        .orderByAsc("escd.tempering_feed_sequence")
-        );
-
-    }
-
-
-
-    @Override
-    public List<DownStorageCageDetails> IsExistIntoCacheByflowcardid(String flowcardid, double width) {
-        log.info(" 鏌ヨ鍙繘姝ょ墖鐜荤拑鐨勬爡鏍煎彿");
-        return downStorageCageMapper.selectJoinList(
-                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCageDetails>()
-                        .select("escd.*")
-                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
-                        .isNotNull("escd.slot")
-                        .lt("escd.flow_card_id", flowcardid)
-                        // 鏉′欢 t.remain_width - width > 0
-                        .apply("t.remain_width - " + width + " > 0")
-                        .orderByDesc("escd.tempering_layout_id, escd.tempering_feed_sequence")
-        );
-
+        return downGlassTask;
     }
 
 
     @Override
-    public List<DownStorageCageDetails> getIsExistIntoCacheByLayout(Integer tempering_layout_id, double width) {
-        log.info(" 鏌ヨ鍙繘姝ょ墖鐜荤拑鐨勬爡鏍煎彿");
-        return downStorageCageMapper.selectJoinList(
-                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCageDetails>()
-                        .select("escd.*")
-                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
-                        .isNotNull("escd.slot")
-                        .lt("escd.tempering_layout_id", tempering_layout_id)
-                        // 鏉′欢 t.remain_width - width > 0
-                        .apply("t.remain_width - " + width + " > 0")
-                        .orderByDesc("escd.tempering_layout_id, escd.tempering_feed_sequence")
-        );
+    public boolean processInto(String Number) {
 
+        //鎸塱d鏌ヨ鐜荤拑淇℃伅琛ㄩ噷鐨勭幓鐠�
+        GlassInfo GlassInfo = glassInfoService.selectGlassId(Number);
+     PlcParameterObject plcmes = PLCAutoMes.PlcMesObject;
+        //瀛樺湪姝ょ幓鐠冪紪鍙�
+        if (GlassInfo != null) {
+            //鍚屾壘鍒板悓娴佺▼鍗¢檮杩戠┖鏍�
+            List<DownStorageCageDetails> list = downStorageCageDetailsService.getIsExistIntoCacheByflowcardid(GlassInfo.getFlowcardId(),  GlassInfo.getWidth());
+
+            List<Map> selectCacheEmpty=selectCacheEmpty();
+
+            //            list<Map> list=selectCacheEmpty();
+//            list<Map> = downStorageCageService.selectCacheEmpty();
+            if (selectCacheEmpty.size() > 0) {
+                //瀛樺湪绌烘牸
+                //1.鐢熸垚浠诲姟锛�  璧峰浣嶇疆0   缁撴潫浣嶇疆this.slot  浠诲姟绫诲瀷 1   锛堣繘鐗囦换鍔★級
+                //2.鍥炲 1杩涚墖
+                DownStorageCageDetails item = list.get(0);
+
+                //selectInfo.insertCacheTask(GlassInfo.getId() + "", "0", item.getSlot() + "", "1", GlassInfo.getWidth(), GlassInfo.getHeight(), GlassInfo.getFilmsid(), GlassInfo.getThickness(), GlassInfo.getFlowcardId());
+
+                DownGlassTask downGlassTask =   createDownGlassTask(GlassInfo,"0",item.getSlot()+"","1");
+
+                downGlassTaskService.insertCacheTask(downGlassTask);
+
+               S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(), (short) 1);
+
+
+                //瀹屾垚鍚庢彃鍏ュ皬鐗囨暟鎹埌缂撳瓨琛�
+                return true;
+            }
+
+        } else {
+            // ID缂栧彿涓嶅瓨鍦�   涓嶅鐞�/鍥炲PLC  杩涜鎶ヨ鎻愮ず
+        }
+        //杩斿洖缁撴灉
+        return false;
     }
 
 
+    /**
+     * 鐞嗙墖 鍑�
+     * @return
+     */
+    //
+    @Override
+    public boolean processOut() {
+        // 鏌ヨ浠诲姟
+
+
+        PlcParameterObject plcmes = PLCAutoMes.PlcMesObject;
+
+        List<DownStorageCageDetails> list = downStorageCageDetailsService.CacheOut(1, 5);
+        List<DownStorageCageDetails> list2 = downStorageCageDetailsService.CacheOut(6, 10);
+        List<DownStorageCageDetails> list3 = downStorageCageDetailsService.CacheOut(1, 10);
+        //鑷姩缁戝畾鏋跺瓙
+
+
+
+
+        // 浼樺厛 瓒呭嚭灏哄浼樺厛浜哄伐鍑虹墖 浜哄伐澶勭悊
+
+        if (!list3.isEmpty()) {
+            DownStorageCageDetails item3 = list3.get(0);
+            if (item3.getHeight() >= 1 && item3.getWidth() >= 1) {
+
+                String endcell = "13";
+                String SendEndcell = "1";
+
+//                selectInfo.insertCacheTask(item3.getGlassId() + "", "0", endcell, "2", item3.getWidth(), item3.getHeight(), item3.getFilmsid(), item3.getThickness(), item3.getFlowCardId());
+
+                DownGlassTask downGlassTask =createDownGlassTask(item3,"0",endcell,"2");
+
+                downGlassTaskService.insertCacheTask(downGlassTask);
+                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), SendEndcell);
+                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
+                return true;
+            }
+        }
+
+
+        //濡傛灉鍚屾椂鍓嶅悗绔兘绌洪棽 浼樺厛鍚庣鍑虹墖骞朵笖浼樺厛婊℃灦
+        else if (!list2.isEmpty()&&!list3.isEmpty()) {
+
+            DownStorageCageDetails item3 = list2.get(0);
+            String endcell = "11";
+            String SendEndcell = "1";
+            // selectInfo.insertCacheTask(item3.getGlassId() + "", "0", endcell, "2", item3.getWidth(), item3.getHeight(), item3.getFilmsid(), item3.getThickness(), item3.getFlowCardId());
+            DownGlassTask downGlassTask =createDownGlassTask(item3,"0",endcell,"2");
+            downGlassTaskService.insertCacheTask(downGlassTask);
+
+            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), SendEndcell);
+            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
+            return true;
+
+        }
+        // 鎸夌収澶у皬绗﹀悎鍓嶇鍑虹墖
+        else if (!list.isEmpty()) {
+            DownStorageCageDetails item = list.get(0);
+
+            // 鍑哄埌 G06
+            //selectInfo.insertCacheTask(item.getGlassId() + "", "0", "06", "2", item.getWidth(), item.getHeight(), item.getFilmsid(), item.getThickness(), item.getFlowCardId());
+
+            DownGlassTask downGlassTask =createDownGlassTask(item,"0","06","2");
+            downGlassTaskService.insertCacheTask(downGlassTask);
+            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), "1");
+            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
+            return true;
+
+            // 鎸夌収澶у皬绗﹀悎鍚庣鍑虹墖
+        } else if (!list2.isEmpty()) {
+            DownStorageCageDetails item2 = list2.get(0);
+
+            // 鍑哄埌 G11
+            // selectInfo.insertCacheTask(item2.getGlassId() + "", "0", "11", "2", item2.getWidth(), item2.getHeight(), item2.getFilmsid(), item2.getThickness(), item2.getFlowCardId());
+            DownGlassTask downGlassTask =createDownGlassTask(item2,"0","11","2");
+            downGlassTaskService.insertCacheTask(downGlassTask);
+
+            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), "2");
+            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
+            return true;
+
+
+        }
+
+
+
+        // 杩斿洖缁撴灉
+        return false;
+    }
+
 
 
 
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java
index 6480461..6b0b547 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java
@@ -25,7 +25,7 @@
  */
 
 @RestController
-@Api(tags = "宸ヤ綅")
+@Api(description = "宸ヤ綅")
 @RequestMapping("/downWorkStation")
 public class DownWorkstationController {
 
@@ -131,6 +131,28 @@
 
 
 
+    @ApiOperation("鑾峰彇宸ヤ綅鏄剧ず鍥�")
+    @GetMapping("/getwo")
+    public ResponseEntity<Map<String, Object>> getwo() {
+        Map<String, Object> responseData = new HashMap<>();
+        try {
+            List<Map<String, Object>> data = downWorkstationService.getTotalGlassDimensionsByWorkstation();
+            responseData.put("code", 200);
+            responseData.put("msg", "鎴愬姛");
+            responseData.put("data", data);
+            return ResponseEntity.ok(responseData);
+        } catch (Exception e) {
+            responseData.put("code", 500);
+            responseData.put("msg", "澶辫触");
+            responseData.put("data", null);
+            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(responseData);
+        }
+    }
+
+
+
+
+
 
 
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstationTask.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstationTask.java
index adb87cf..d8df574 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstationTask.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstationTask.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.springframework.data.annotation.Id;
 
 import java.io.Serializable;
 
@@ -25,6 +26,7 @@
      * id
      */
     @TableId(value = "id", type = IdType.AUTO)
+    @Id
     private Long id;
 
     /**
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstionAndDownGlassinfo.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstionAndDownGlassinfo.java
new file mode 100644
index 0000000..0ebb340
--- /dev/null
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstionAndDownGlassinfo.java
@@ -0,0 +1,89 @@
+package com.mes.downworkstation.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-03-27
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+
+public class DownWorkstionAndDownGlassinfo
+{
+    /**
+     * 涓嬬墖宸ヤ綅琛╥d
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 宸ヤ綅id
+     */
+    private Integer workstationId;
+
+    /**
+     * 娴佺▼鍗″彿
+     */
+    private String flowCardId;
+
+    /**
+     * 璁惧id
+     */
+    private Integer deviceId;
+
+    /**
+     * 鍚敤鐘舵��
+     */
+    private Integer enableState;
+
+    /**
+     * 宸ヤ綔鐘舵��
+     */
+    private Integer workState;
+
+
+    @TableField("total_quantity")
+    private Integer totalquantity;
+
+    @TableField("racks_number")
+    private Integer Racksnumber;
+
+
+
+
+    /**
+     * 椤哄簭
+     */
+    private Integer sequence;
+
+    /**
+     * 瀹�
+     */
+    private Double width;
+
+    /**
+     * 楂�
+     */
+    private Double height;
+    private Double totalwidth;
+
+    private Double totalheight;
+    /**
+     * 鍘氬害
+     */
+    private Double thickness;
+
+
+    private String Filmsid;
+}
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationMapper.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationMapper.java
index 29165dd..75bcc83 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationMapper.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationMapper.java
@@ -3,6 +3,7 @@
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.downworkstation.entity.DownWorkstation;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Select;
@@ -24,53 +25,7 @@
 @InterceptorIgnore(tenantLine = "true")
 @DS("hangzhoumes") // 鎸囧畾浣跨敤 hangzhoumes 鏁版嵁婧�
 
-public interface DownWorkstationMapper extends BaseMapper<DownWorkstation> {
+public interface DownWorkstationMapper extends MPJBaseMapper<DownWorkstation> {
 
-
-    //鏌ヨ宸ヤ綅琛ㄥ拰浠诲姟琛ㄤ腑鐘舵�佷负1鐨勬祦绋嬪崱鍙峰拰宸茶惤鏋舵暟閲�
-    @Select("SELECT dwt.flow_card_id,dw.id,dw.racks_number FROM down_workstation_task dwt JOIN down_workstation dw ON dwt.flow_card_id = dw.flow_card_id WHERE dwt.state = 1 LIMIT 1")
-    List<DownWorkstation> selectdownWorkstationstate();
-
-
-//    @Select("SELECT flow_card_id,filmsid,width,height,thickness FROM down_glass_task WHERE task_stauts = 1;")
-//    List<DownGlassTask> selectunloadingtaskstate();
-    //鏇存柊钀芥灦鏁伴噺
-//    @Update("UPDATE down_workstation SET racks_number = #{racksNumber} " +
-//            "WHERE flow_card_id = #{flowCardId}")
-//    void  update_racks_number(@Param("flowCardId") String flowCardId,
-//                              @Param("racksNumber") Integer racksNumber);
-
-    //鎻掑叆鏈烘浠诲姟琛�
-//    @Insert("INSERT INTO down_workstation_task (flow_card_id, width, height, thickness, filmsid,state) " +
-//            "VALUES (#{flowCardId}, #{width}, #{height}, #{thickness}, #{filmsid},1)")
-//    void insertdownWorkstationtask(DownGlassInfo downGlassInfo);
-
-    //鏍规嵁宸ヤ綅id鏇存柊瀹炰綋绫绘帴鏀剁殑鏁版嵁
-//    @Update("UPDATE down_workstation SET width = #{width}, height = #{height}, flow_card_id = #{flowCardId} WHERE workstation_id = #{workstationId}")
-//    void updateFlowCardId(DownWorkstation downWorkstation);
-
-
-//    @Update("UPDATE down_workstation_task SET state = 0 WHERE flow_card_id = #{flowCardId}")
-//    void update_task_state_to_zero(@Param("flowCardId") String flowCardId);
-
-
-//    @Select("SELECT * FROM down_workstation WHERE workstation_id BETWEEN #{startId} AND #{endId}")
-//    List<DownWorkstation> getDownWorkstationsInRange(@Param("startId") int startId, @Param("endId") int endId);
-
-
-//    @Select("SELECT DISTINCT  flowcard_id from glass_info")
-//    @ResultType(Map.class)
-//    List<Map<String, Object>> getflowCardId();
-
-//    @Update("UPDATE down_workstation SET flow_card_id = NULL, total_quantity = 0, racks_number = 0 WHERE workstation_id = #{workstationId}")
-//    void clearFlowCardInfoByWorkstationId(@Param("workstationId") int workstationId);
-
-    // 鑾峰彇鎬绘暟閲�
-//    @Select("SELECT total_quantity FROM down_workstation WHERE workstation_id = #{workstationId}")
-//    int getTotalQuantity(@Param("workstationId") int workstationId);
-
-    // 鑾峰彇钀芥灦鏁伴噺
-//    @Select("SELECT racks_number FROM down_workstation WHERE workstation_id = #{workstationId}")
-//    int getRacksNumber(@Param("workstationId") int workstationId);
 
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationTaskMapper.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationTaskMapper.java
index b9209fc..3cdda74 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationTaskMapper.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationTaskMapper.java
@@ -1,5 +1,6 @@
 package com.mes.downworkstation.mapper;
 
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.mes.downworkstation.entity.DownWorkstation;
 import com.mes.downworkstation.entity.DownWorkstationTask;
@@ -14,6 +15,7 @@
  * @author zhoush
  * @since 2024-04-07
  */
+@DS("salve_hangzhoumes")
 public interface DownWorkstationTaskMapper extends BaseMapper<DownWorkstationTask> {
 
     List<DownWorkstationTask> selectList();
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownGlassLogic.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownGlassLogic.java
deleted file mode 100644
index e142356..0000000
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownGlassLogic.java
+++ /dev/null
@@ -1,122 +0,0 @@
-package com.mes.downworkstation.service;
-
-import com.mes.common.PLCAutoMes;
-import com.mes.device.PlcParameterObject;
-import com.mes.downglassinfo.entity.DownGlassInfo;
-import com.mes.downglassinfo.entity.DownGlassTask;
-import com.mes.downglassinfo.mapper.DownGlassInfoMapper;
-import com.mes.downglassinfo.service.DownGlassInfoService;
-import com.mes.downglassinfo.service.DownGlassTaskService;
-import com.mes.downstorage.entity.DownStorageCageDetails;
-import com.mes.downworkstation.entity.DownWorkstation;
-import com.mes.downworkstation.mapper.DownWorkstationMapper;
-import com.mes.tools.WebSocketServer;
-import lombok.Data;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-@Data
-@Service
-public class DownGlassLogic {
-    @Autowired
-
-
-    private DownGlassInfoService downGlassInfoService;
-    private DownGlassTaskService downGlassTaskService;
-    private DownWorkstationMapper downWorkstationMapper;
-    private DownWorkstationService downWorkstationService;
-    private DownWorkstationTaskService downWorkstationTaskService;
-    PlcParameterObject plcread = PLCAutoMes.PlcReadObject;
-
-
-
-    /**
-     * //褰撲笅鐗囦换鍔¤〃鐘舵�佷负1鏃跺�欏皢鏁版嵁鎻掑叆鍒颁笅鐗囩幓鐠冧俊鎭〃
-     */
-
-    public void insertdownglassinfo() {
-
-
-        downWorkstationMapper = WebSocketServer.applicationContext.getBean(DownWorkstationMapper.class);
-        downWorkstationService = WebSocketServer.applicationContext.getBean(DownWorkstationService.class);
-        downWorkstationTaskService = WebSocketServer.applicationContext.getBean(DownWorkstationTaskService.class);
-        downGlassInfoService = WebSocketServer.applicationContext.getBean(DownGlassInfoService.class);
-        downGlassTaskService = WebSocketServer.applicationContext.getBean(DownGlassTaskService.class);
-        List<DownGlassTask> taskdownGlassInf = downGlassTaskService.getUnloadingTaskState();
-//
-
-
-        if (taskdownGlassInf != null && !taskdownGlassInf.isEmpty()) {
-
-//
-
-            for (DownGlassTask downGlassInfo : taskdownGlassInf) {
-                // 鍒涘缓鏂扮殑 DownGlassInfo 瀵硅薄骞惰缃浉鍏冲睘鎬�
-                DownGlassInfo newdownGlassInfo = new DownGlassInfo();
-
-                newdownGlassInfo.setFlowCardId(downGlassInfo.getFlowCardId());
-                Integer maxSequence = downGlassInfoService.getMaxSequenceByFlowCardId(downGlassInfo.getFlowCardId());
-                // 鍒濆鍖栭『搴忓瓧娈靛��
-                int sequence = maxSequence != null ? maxSequence + 1 : 1;
-
-                newdownGlassInfo.setWidth(downGlassInfo.getWidth());
-                newdownGlassInfo.setHeight(downGlassInfo.getHeight());
-                newdownGlassInfo.setThickness(downGlassInfo.getThickness());
-                newdownGlassInfo.setFilmsid(downGlassInfo.getFilmsid());
-                // 璁剧疆椤哄簭瀛楁鍊�
-                newdownGlassInfo.setSequence(sequence);
-
-                // 鎻掑叆鏁版嵁鍒颁笅鐗囩幓鐠冧俊鎭〃
-                downGlassInfoService.insertDownGlassInfo(newdownGlassInfo);
-                //鎻掑叆鏁版嵁鍒版満姊版墜浠诲姟琛�
-
-                downWorkstationTaskService.insertdownWorkstationtask(newdownGlassInfo);
-                //鏇存柊涓嬬墖浠诲姟琛ㄧ姸鎬佷负0
-                downGlassTaskService.updateTaskStateToZero(downGlassInfo.getId());
-
-                sequence++; // 閫掑椤哄簭瀛楁鍊�
-
-
-            }
-        }
-    }
-
-
-    /**
-     * //褰撴満姊版墜浠诲姟琛ㄤ腑鐘舵�佷负1锛屽伐浣嶈〃娴佺▼鍗$粦瀹氫簡鏋跺瓙 鏇存柊宸茬粡钀芥灦鏁伴噺锛屽苟涓旀妸涓嬬墖浠诲姟琛ㄧ殑瀵瑰簲璁板綍鍒犳帀
-     */
-
-    public void downWorkstation() {
-
-
-        try {
-            //鏌ヨ涓嬬墖宸ヤ綅琛ㄤ腑鏋跺瓙鏄惁缁戝畾浜嗘祦绋嬪崱鍙� 宸ヤ綅琛ㄥ拰浠诲姟琛ㄤ腑鐘舵�佷负1鐨勬祦绋嬪崱鍙峰拰宸茶惤鏋舵暟閲�
-            List<DownWorkstation> taskdownWorkstation = downWorkstationMapper.selectdownWorkstationstate();
-            if (taskdownWorkstation != null && !taskdownWorkstation.isEmpty()) {
-                //锛屽鏋滃凡缁忕粦瀹氬垯鏇存柊宸茶惤鏋舵暟閲�,骞朵笖鍒犻櫎涓嬬墖浠诲姟琛ㄤ腑鐨勮褰�
-                for (DownWorkstation downWorkstation : taskdownWorkstation) {
-                    //鏇存柊涓嬬墖宸ヤ綅琛ㄤ腑宸茶惤鏋舵暟閲�
-                    downWorkstationService.updateracksnumber(downWorkstation.getFlowCardId(), downWorkstation.getRacksnumber() + 1);
-                    //鏇存柊鏈烘浠诲姟琛ㄤ腑鐘舵�佷负0
-                    downWorkstationTaskService.updateTaskStateToZero(downWorkstation.getId());
-
-                    //鍒犻櫎涓嬬墖浠诲姟琛ㄤ腑鐨勮褰�
-                    downGlassTaskService.deleteTask(downWorkstation.getId());
-
-                }
-            }
-        } catch (Exception e) {
-            // 鎵撳嵃寮傚父淇℃伅
-            e.printStackTrace();
-            // 鎴栬�呭彲浠ヨ繘琛屽叾浠栧紓甯稿鐞嗭紝姣斿璁板綍鏃ュ織鎴栬�呰繑鍥炵壒瀹氱殑閿欒淇℃伅
-        }
-
-
-    }
-
-
-
-
-}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java
index 76d3fb3..3487d4d 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java
@@ -4,6 +4,7 @@
 import com.mes.downworkstation.entity.DownWorkstation;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -27,6 +28,6 @@
 
 
     int updateFlowCardIdAndCount(String flowCardId, int glassInfoCount, int workstationId);
-
-
+    void insertdownglassinfo();
+  List<Map<String, Object>> getTotalGlassDimensionsByWorkstation();
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationTaskService.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationTaskService.java
index 94a7f16..887f165 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationTaskService.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationTaskService.java
@@ -4,6 +4,8 @@
 import com.mes.downglassinfo.entity.DownGlassInfo;
 import com.mes.downworkstation.entity.DownWorkstationTask;
 
+import java.util.List;
+
 /**
  * <p>
  * 鏈嶅姟绫�
@@ -16,4 +18,6 @@
     void insertdownWorkstationtask(DownGlassInfo downGlassInfo);
 
     void updateTaskStateToZero(long Id);
+
+    List<DownWorkstationTask> getTaskState();
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java
index 0c44dac..18d2def 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java
@@ -3,29 +3,49 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.query.MPJQueryWrapper;
+import com.mes.downglassinfo.entity.DownGlassInfo;
 import com.mes.downglassinfo.entity.DownGlassTask;
+import com.mes.downglassinfo.mapper.DownGlassInfoMapper;
+import com.mes.downglassinfo.service.DownGlassInfoService;
+import com.mes.downglassinfo.service.DownGlassTaskService;
 import com.mes.downworkstation.entity.DownWorkstation;
 import com.mes.downworkstation.entity.DownWorkstationTask;
+import com.mes.downworkstation.entity.DownWorkstionAndDownGlassinfo;
 import com.mes.downworkstation.mapper.DownWorkstationMapper;
 import com.mes.downworkstation.mapper.DownWorkstationTaskMapper;
 import com.mes.downworkstation.service.DownWorkstationService;
+import com.mes.downworkstation.service.DownWorkstationTaskService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+@Slf4j
 @Service
 public class DownWorkstationServiceImpl extends ServiceImpl<DownWorkstationMapper, DownWorkstation> implements DownWorkstationService {
 
     @Autowired
     private DownWorkstationMapper downWorkstationMapper;
+    @Autowired
     private DownWorkstationTaskMapper downWorkstationTaskMapper;
+    @Autowired
+    private DownGlassInfoService downGlassInfoService;
+    @Autowired
+    private DownGlassInfoMapper downGlassInfoMapper;
+    @Autowired
+    private DownGlassTaskService downGlassTaskService;
 
 
+    @Autowired
+    private DownWorkstationTaskService downWorkstationTaskService;
 
-//    @Override
+    //    @Override
 //    public List<DownWorkstation> gettwoDownWorkstations() {
 //        return downWorkstationMapper.getDownWorkstationsInRange(6,10);
 //    }
@@ -40,13 +60,44 @@
         return result != null ? result.getTotalquantity() : 0;
     }
 
+    //宸ヤ綅鏄剧ず
+    @Override
+    public List<Map<String, Object>> getTotalGlassDimensionsByWorkstation() {
+        MPJQueryWrapper<DownWorkstionAndDownGlassinfo> queryWrapper = new MPJQueryWrapper<>();
+        queryWrapper.select("t.workstation_id", "t.flow_card_id", "COALESCE(SUM(b.width), 0) AS totalwidth", "COALESCE(SUM(b.height), 0) AS totalheight")
+                .leftJoin("down_glass_info b on t.flow_card_id = b.flow_card_id")
+                .groupBy("t.workstation_id", "t.flow_card_id");
+
+//        List<DownWorkstionAndDownGlassinfo> workstationList = downWorkstationMapper.selectJoinList(DownWorkstionAndDownGlassinfo.class, queryWrapper);
+        List<DownWorkstionAndDownGlassinfo> workstationList = null;
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (DownWorkstionAndDownGlassinfo downWorkstionAndDownGlassinfo : workstationList) {
+            Map<String, Object> rack = new HashMap<>();
+
+            // 鍒涘缓瀛愰」锛坕tem锛夊璞�
+            Map<String, Object> item = new HashMap<>();
+            item.put("height", downWorkstionAndDownGlassinfo.getTotalheight()); // 璁剧疆瀛愰」楂樺害锛屾牴鎹疄闄呮儏鍐佃缃�
+            item.put("width", downWorkstionAndDownGlassinfo.getTotalwidth()); // 璁剧疆瀛愰」瀹藉害锛屾牴鎹疄闄呮儏鍐佃缃�
+            item.put("fillColor", "yellow"); // 璁剧疆瀛愰」棰滆壊
+            item.put("content", downWorkstionAndDownGlassinfo.getFlowCardId()); // 浣跨敤娴佺▼鍗″彿浣滀负瀛愰」鍐呭
+
+            rack.put("item", item); // 灏嗗瓙椤瑰璞℃斁鍏ヨ揣鏋跺璞′腑
+
+            result.add(rack); // 灏嗚揣鏋跺璞℃坊鍔犲埌缁撴灉鍒楄〃涓�
+            //log.info("璐ф灦瀵硅薄: {}", rack);
+        }
+
+        return result; // 杩斿洖鏈�缁堢粨鏋�
+    }
+
+
 //    @Override
 //    public int getTotalQuantity(int workstationId) {
 //        Integer totalQuantity = downWorkstationMapper.getTotalQuantity(workstationId);
 //        return totalQuantity != null ? totalQuantity : 0;
 //    }
 
-//    @Override
+    //    @Override
 //    public int getRacksNumber(int workstationId) {
 //        Integer racksNumber = downWorkstationMapper.getRacksNumber(workstationId);
 //        return racksNumber != null ? racksNumber : 0;
@@ -61,7 +112,8 @@
         DownWorkstation result = baseMapper.selectOne(queryWrapper);
         return result != null ? result.getRacksnumber() : 0;
     }
-//鏍规嵁鏉′欢鑾峰彇宸ヤ綅鐜荤拑淇℃伅
+
+    //鏍规嵁鏉′欢鑾峰彇宸ヤ綅鐜荤拑淇℃伅
     @Override
     public List<DownWorkstation> getoneDownWorkstations(int startId, int endId) {
         QueryWrapper<DownWorkstation> queryWrapper = new QueryWrapper<>();
@@ -77,10 +129,9 @@
     @Override
     public void updateracksnumber(String flowCardId, int racksNumber) {
         UpdateWrapper<DownWorkstation> updateWrapper = new UpdateWrapper<>();
-        updateWrapper.set("racks_number",racksNumber).eq("flow_card_id", flowCardId);
+        updateWrapper.set("racks_number", racksNumber).eq("flow_card_id", flowCardId);
         baseMapper.update(null, updateWrapper);
     }
-
 
 
     @Override
@@ -105,11 +156,12 @@
     }
 
 
+    public DownWorkstation selectByFlowCardId(String flowcardid) {
+        QueryWrapper<DownWorkstation> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("flow_card_id", flowcardid);
 
-
-
-
-
+        return baseMapper.selectOne(queryWrapper);
+    }
 
 
     @Transactional
@@ -123,7 +175,74 @@
     }
 
 
+    @Override
+    public void insertdownglassinfo() {
 
 
+        List<DownGlassTask> taskdownGlassInf = downGlassTaskService.getUnloadingTaskState();
+//
+
+
+        if (taskdownGlassInf != null && !taskdownGlassInf.isEmpty()) {
+
+//
+
+            for (DownGlassTask downGlassInfo : taskdownGlassInf) {
+                // 鍒涘缓鏂扮殑 DownGlassInfo 瀵硅薄骞惰缃浉鍏冲睘鎬�
+                DownGlassInfo newdownGlassInfo = new DownGlassInfo();
+
+                newdownGlassInfo.setFlowCardId(downGlassInfo.getFlowCardId());
+                Integer maxSequence = downGlassInfoService.getMaxSequenceByFlowCardId(downGlassInfo.getFlowCardId());
+                // 鍒濆鍖栭『搴忓瓧娈靛��
+                int sequence = maxSequence != null ? maxSequence + 1 : 1;
+//                newdownGlassInfo.setId(downGlassInfo.getId());
+                newdownGlassInfo.setWidth(downGlassInfo.getWidth());
+                newdownGlassInfo.setHeight(downGlassInfo.getHeight());
+                newdownGlassInfo.setThickness(downGlassInfo.getThickness());
+                newdownGlassInfo.setFilmsid(downGlassInfo.getFilmsid());
+                // 璁剧疆椤哄簭瀛楁鍊�
+                newdownGlassInfo.setSequence(sequence);
+
+                // 鎻掑叆鏁版嵁鍒颁笅鐗囩幓鐠冧俊鎭〃
+                downGlassInfoService.insertDownGlassInfo(newdownGlassInfo);
+                //鎻掑叆鏁版嵁鍒版満姊版墜浠诲姟琛�
+
+                downWorkstationTaskService.insertdownWorkstationtask(newdownGlassInfo);
+                //鏇存柊涓嬬墖浠诲姟琛ㄧ姸鎬佷负0
+                downGlassTaskService.updateTaskStateToZero(downGlassInfo.getId());
+                //鍒犻櫎涓嬬墖浠诲姟琛ㄤ腑鐨勮褰�
+                downGlassTaskService.deleteTask(downGlassInfo.getFlowCardId());
+
+                sequence++; // 閫掑椤哄簭瀛楁鍊�
+
+
+            }
+        }
+
+
+        try {
+            //鏌ヨ涓嬬墖宸ヤ綅琛ㄤ腑鏋跺瓙鏄惁缁戝畾浜嗘祦绋嬪崱鍙� 宸ヤ綅琛ㄥ拰浠诲姟琛ㄤ腑鐘舵�佷负1鐨勬祦绋嬪崱鍙峰拰宸茶惤鏋舵暟閲�
+            List<DownWorkstationTask> taskdownWorkstation = downWorkstationTaskService.getTaskState();
+            if (taskdownWorkstation != null && !taskdownWorkstation.isEmpty()) {
+                //锛屽鏋滃凡缁忕粦瀹氬垯鏇存柊宸茶惤鏋舵暟閲�,骞朵笖鍒犻櫎涓嬬墖浠诲姟琛ㄤ腑鐨勮褰�
+                for (DownWorkstationTask downWorkstation : taskdownWorkstation) {
+                    //鏇存柊涓嬬墖宸ヤ綅琛ㄤ腑宸茶惤鏋舵暟閲�
+                    DownWorkstation downWorkstation1 = selectByFlowCardId(downWorkstation.getFlowCardId());
+                    updateracksnumber(downWorkstation.getFlowCardId(), downWorkstation1.getRacksnumber() + 1);
+                    //鏇存柊鏈烘浠诲姟琛ㄤ腑鐘舵�佷负0
+                    downWorkstationTaskService.updateTaskStateToZero(downWorkstation.getId());
+                    //鍒犻櫎鏈烘浠诲姟琛�
+                    downWorkstationTaskService.removeById(downWorkstation.getId());
+
+
+                }
+            }
+        } catch (Exception e) {
+            // 鎵撳嵃寮傚父淇℃伅
+            e.printStackTrace();
+            // 鎴栬�呭彲浠ヨ繘琛屽叾浠栧紓甯稿鐞嗭紝姣斿璁板綍鏃ュ織鎴栬�呰繑鍥炵壒瀹氱殑閿欒淇℃伅
+        }
+    }
+
 
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationTaskServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationTaskServiceImpl.java
index 4c81b4e..1e67462 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationTaskServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationTaskServiceImpl.java
@@ -1,12 +1,16 @@
 package com.mes.downworkstation.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.mes.downglassinfo.entity.DownGlassInfo;
+import com.mes.downglassinfo.entity.DownGlassTask;
 import com.mes.downworkstation.entity.DownWorkstationTask;
 import com.mes.downworkstation.mapper.DownWorkstationTaskMapper;
 import com.mes.downworkstation.service.DownWorkstationTaskService;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 /**
  * <p>
@@ -22,6 +26,12 @@
 
     public void insertdownWorkstationtask(DownGlassInfo downGlassInfo) {
         DownWorkstationTask entity = new DownWorkstationTask();
+        // 鏌ヨ褰撳墠鏈�澶х殑 id 鍊�
+        Long maxId = getMaxId();
+        // 濡傛灉娌℃湁璁板綍锛屽垯灏� id 璁剧疆涓� 1锛涘惁鍒欙紝灏� id 璁剧疆涓哄綋鍓嶆渶澶� id 鍊煎姞 1
+        Long newId = (maxId == null) ? 1 : maxId + 1;
+
+        entity.setId(newId); // 璁剧疆鎵嬪姩閫掑鐨� id
         entity.setFlowCardId(downGlassInfo.getFlowCardId());
         entity.setWidth(downGlassInfo.getWidth());
         entity.setHeight(downGlassInfo.getHeight());
@@ -32,6 +42,29 @@
         baseMapper.insert(entity);
     }
 
+
+
+
+// 鏌ヨ鏈�澶х殑 ID
+    private Long getMaxId() {
+        QueryWrapper<DownWorkstationTask> wrapper = new QueryWrapper<>();
+        wrapper.select("MAX(id) as max_id");
+        List<Object> list = baseMapper.selectObjs(wrapper);
+        if (list != null && !list.isEmpty()) {
+            Object obj = list.get(0);
+            if (obj != null) {
+                return Long.parseLong(obj.toString());
+            }
+        }
+        // 濡傛灉娌℃湁鏌ヨ鍒扮粨鏋滐紝鍒欒繑鍥� 0
+        return 0L;
+    }
+    @Override
+    public List<DownWorkstationTask> getTaskState() {
+        QueryWrapper<DownWorkstationTask> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("state", 1);
+        return baseMapper.selectList(queryWrapper);
+    }
     @Override
     public void updateTaskStateToZero(long id) {
         UpdateWrapper<DownWorkstationTask> updateWrapper = new UpdateWrapper<>();
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/entity/GlassInfo.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/entity/GlassInfo.java
index dc023ed..46acc64 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/entity/GlassInfo.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/entity/GlassInfo.java
@@ -1,6 +1,7 @@
 package com.mes.glassinfo.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -30,6 +31,7 @@
     /**
      * 娴佺▼鍗�
      */
+    @TableField("flow_card_Id")
     private String flowcardId;
 
     /**
@@ -120,12 +122,14 @@
     /**
      * 宸ョ▼鍙�
      */
-    private Integer engineerId;
+    private String engineerId;
 
     /**
      * 鐢熶骇瑙勫垯id
      */
     private Integer ruleId;
-
-
+    /**
+     * 鐜荤拑id
+     */
+    private String glassId;
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/mapper/GlassInfoMapper.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/mapper/GlassInfoMapper.java
index 7f5b32c..27d9263 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/mapper/GlassInfoMapper.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/mapper/GlassInfoMapper.java
@@ -16,10 +16,5 @@
 public interface GlassInfoMapper extends BaseMapper<GlassInfo> {
 
 
-//    @Select("SELECT COUNT(*) FROM glass_info WHERE flowcard_id = #{flowCardId}")
-//    int getGlassInfoCountByFlowCardId(@Param("flowCardId") String flowCardId);
-
-//    @Update("UPDATE down_workstation SET  total_quantity = #{glassInfoCount},flow_card_id=#{flowCardId} WHERE workstation_id = #{workstationId}")
-//    int updateFlowCardIdAndCount(@Param("flowCardId") String flowCardId, @Param("glassInfoCount") int glassInfoCount,@Param("workstationId")int workstationId);
 
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
index b3d9cc9..ef1b9ca 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
@@ -32,14 +32,14 @@
     @Override
     public int getGlassInfoCountByFlowCardId(String flowCardId) {
         QueryWrapper<GlassInfo> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("flowcard_id", flowCardId);
+        queryWrapper.eq("flow_card_id", flowCardId);
 
         return baseMapper.selectCount(queryWrapper);
     }
 
     @Override
     public List<Map<String, Object>> getFlowCardId() {
-        return baseMapper.selectMaps(new QueryWrapper<GlassInfo>().select("DISTINCT flowcard_id"));
+        return baseMapper.selectMaps(new QueryWrapper<GlassInfo>().select("DISTINCT flow_card_id"));
     }
 
 
@@ -47,7 +47,7 @@
     @Override
     public GlassInfo selectGlassId(String id) {
         QueryWrapper<GlassInfo> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("id", id);
+        queryWrapper.eq("glass_id", id);
 
         return baseMapper.selectOne(queryWrapper);
     }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-dev.yml b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-dev.yml
new file mode 100644
index 0000000..3097382
--- /dev/null
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-dev.yml
@@ -0,0 +1,25 @@
+spring:
+  datasource:
+    dynamic:
+      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
+      datasource:
+        hangzhoumes:
+          url: jdbc:mysql://127.0.0.1:3306/hangzhoumes?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+        salve_hangzhoumes:
+          url: jdbc:sqlserver://127.0.0.1:1433;databasename=hangzhoumes
+          username: sa
+          password: beibo.123/
+          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 127.0.0.1:8848
+  redis:
+    database: 0
+    host: 127.0.0.1
+    port: 6379
+    password: 123456
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-loc.yml b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-loc.yml
new file mode 100644
index 0000000..fadf3bf
--- /dev/null
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-loc.yml
@@ -0,0 +1,25 @@
+spring:
+  datasource:
+    dynamic:
+      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
+      datasource:
+        hangzhoumes:
+          url: jdbc:mysql://192.168.56.10:3306/hangzhoumes?serverTimezone=GMT%2b8
+          username: root
+          password: root
+          driver-class-name: com.mysql.cj.jdbc.Driver
+        salve_hangzhoumes:
+          url: jdbc:sqlserver://192.168.56.10:1433;databasename=hangzhoumes
+          username: sa
+          password: beibo.123/
+          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 127.0.0.1:8848
+  redis:
+    database: 0
+    host: 127.0.0.1
+    port: 6379
+    password: 123456
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-prod.yml b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-prod.yml
new file mode 100644
index 0000000..2e6a12c
--- /dev/null
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-prod.yml
@@ -0,0 +1,25 @@
+spring:
+  datasource:
+    dynamic:
+      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
+      datasource:
+        hangzhoumes:
+          url: jdbc:mysql://10.153.19.150:3306/hangzhoumes?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+        salve_hangzhoumes:
+          url: jdbc:sqlserver://10.153.19.150:1433;databasename=hangzhoumes
+          username: sa
+          password: beibo.123/
+          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 10.153.19.150:8848
+  redis:
+    database: 0
+    host: 10.153.19.150
+    port: 6379
+    password: 123456
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
index 3b51bf1..90f92f5 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
@@ -2,32 +2,10 @@
   port: 8085
 
 spring:
-  datasource:
-    dynamic:
-      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
-      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
-      datasource:
-        hangzhoumes:
-          url: jdbc:mysql://10.153.19.150:3306/hangzhoumes?serverTimezone=GMT%2b8
-          username: root
-          password: beibo.123/
-          driver-class-name: com.mysql.cj.jdbc.Driver
-        salve_hangzhoumes:
-          url: jdbc:sqlserver://10.153.19.150:1433;databasename=hangzhoumes
-          username: sa
-          password: beibo.123/
-          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-  cloud:
-    nacos:
-      discovery:
-        server-addr: 10.153.19.150:8848
+  profiles:
+    active: prod
   application:
     name: unLoadGlass
-  redis:
-    database: 0
-    host: 10.153.19.150
-    port: 6379
-    password: 123456
 mybatis-plus:
   mapper-locations: classpath*:mapper/*.xml
   configuration:
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/logback-spring.xml b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/logback-spring.xml
new file mode 100644
index 0000000..582a0b3
--- /dev/null
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/logback-spring.xml
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="10 seconds">
+    <!-- logger涓婁笅鏂囧悕绉帮紙鏍规嵁涓氬姟淇敼锛� -->
+    <contextName>unLoadGlass</contextName>
+
+    <!-- 瀹氫箟浜嗕竴涓悕涓簊erverName鐨勫睘鎬э紝瀹冪殑鍊兼潵鑷簬logging.file.name锛屽鏋滄病鏈夋壘鍒拌灞炴�ч粯璁や负MyServerName锛堟牴鎹笟鍔′慨鏀癸級 -->
+    <springProperty name="serverName" source="logging.file.name" defaultValue="unLoadGlass"/>
+    <springProperty name="logging.path" source="logging.file.path" defaultValue="././logs/"/>
+
+    <!-- 褰╄壊鏃ュ織渚濊禆鐨勬覆鏌撶被 -->
+    <!-- 瀹氫箟浜嗕竴涓悕涓篶lr鐨勮浆鎹㈣鍒欙紝瀹冧娇鐢╫rg.springframework.boot.logging.logback.ColorConverter绫昏繘琛岃浆鎹紝杩欎釜鍏冪礌閫氬父鐢ㄤ簬灏嗘棩蹇楄緭鍑轰腑鐨勬枃鏈潃鑹诧紝浠ヤ究鏇村鏄撳湴鍖哄垎涓嶅悓鐨勬棩蹇楃骇鍒垨鍏朵粬淇℃伅 -->
+    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
+    <!-- WhitespaceThrowableProxyConverter鍜孍xtendedWhitespaceThrowableProxyConverter閮芥槸鐢ㄤ簬灏嗗紓甯镐俊鎭浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず鐨勭被銆傚畠浠箣闂寸殑鍖哄埆鍦ㄤ簬锛孍xtendedWhitespaceThrowableProxyConverter鍦ㄨ緭鍑哄紓甯镐俊鎭椂浼氬寘鍚洿澶氱殑璇︾粏淇℃伅锛屼緥濡傚紓甯哥殑绫诲悕銆佹柟娉曞悕鍜岃鍙风瓑 -->
+    <!-- 瀹氫箟浜嗕竴涓悕涓簑ex鐨勮浆鎹㈣鍒欙紝瀹冧娇鐢╫rg.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter绫昏繘琛岃浆鎹紝杩欎釜鍏冪礌閫氬父鐢ㄤ簬灏嗗紓甯镐俊鎭浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず -->
+    <conversionRule conversionWord="wex"
+                    converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
+    <!-- 瀹氫箟浜嗕竴涓悕涓簑Ex鐨勮浆鎹㈣鍒欙紝瀹冧娇鐢╫rg.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter绫昏繘琛岃浆鎹紝杩欎釜鍏冪礌閫氬父鐢ㄤ簬灏嗗紓甯镐俊鎭浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず -->
+    <conversionRule conversionWord="wEx"
+                    converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
+
+    <!-- 褰╄壊鏃ュ織鏍煎紡 -->
+    <!-- value鍊兼槸鏃ュ織杈撳嚭妯℃澘锛� :-鏄睘鎬у悕鍜屽叾榛樿鍊间箣闂寸殑鍒嗛殧绗︼紝浣滅敤涓�:鐩稿悓 -->
+    <!-- 瀹氫箟鏃ュ織杈撳嚭鏍煎紡鐨勮浆鎹㈣鍒欙紝%d{yyyy-MM-dd HH:mm:ss.SSS}琛ㄧず鏃ユ湡鍜屾椂闂达紝%clr琛ㄧず灏嗚緭鍑烘枃鏈潃鑹诧紝{faint}琛ㄧず浣跨敤娣¤壊 -->
+    <!-- %5p琛ㄧず鏃ュ織绾у埆杈撳嚭鍙冲榻愶紝宸﹁竟浠ョ┖鏍煎~鍏� -->
+    <!-- ${PID:- }琛ㄧず杩涚▼ID锛�%clr琛ㄧず灏嗚緭鍑烘枃鏈潃鑹诧紝{magenta}琛ㄧず浣跨敤娲嬬孩鑹� -->
+    <!-- 琛ㄧず涓�涓垎闅旂 -->
+    <!-- %t锛氭樉绀轰骇鐢熻鏃ュ織鐨勭嚎绋嬪悕锛�%15锛氳嫢瀛楃闀垮害灏忎簬15锛屽垯宸﹁竟鐢ㄧ┖鏍煎~鍏咃紱%.15锛氳嫢瀛楃闀垮害瓒呰繃15锛屾埅鍘诲浣欏瓧绗� -->
+    <!-- %-40锛氳嫢瀛楃闀垮害灏忎簬40锛屽垯鍙宠竟鐢ㄧ┖鏍煎~鍏咃紱%.40锛氳嫢瀛楃闀垮害瓒呰繃40锛屾埅鍘诲浣欏瓧绗︼紱logger{39}瀵瑰簲鐨勬槸鈥渓ogging.WARNING鈥濈骇鍒�傚叿浣撴潵璇达紝Python鐨刲ogging妯″潡瀹氫箟浜嗕互涓嬪嚑涓骇鍒紙浠庝綆鍒伴珮锛夛細NOTSET銆丏EBUG銆両NFO銆乄ARNING銆丒RROR銆丆RITICAL銆傚洜姝わ紝logger{39}琛ㄧず鐨勬槸WARNING绾у埆锛屽嵆鏃ュ織璁板綍鍣ㄤ細璁板綍鎵�鏈塛ARNING绾у埆鍙婁互涓婄殑鏃ュ織淇℃伅 -->
+    <!-- %m琛ㄧず鏃ュ織娑堟伅锛�%n琛ㄧず鎹㈣绗︼紱${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}琛ㄧず寮傚父淇℃伅銆傚鏋滄棩蹇楄緭鍑轰腑鍖呭惈寮傚父淇℃伅锛岃繖涓鍒欏皢浼氬皢鍏惰浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず -->
+    <property name="CONSOLE_LOG_PATTERN"
+              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
+
+    <!--1. 杈撳嚭鍒版帶鍒跺彴-->
+    <!-- 瀹氫箟鎺у埗鍙版棩蹇楄緭鍑虹殑appender锛宑lass="ch.qos.logback.core.ConsoleAppender"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凜onsoleAppender绫绘潵杈撳嚭鏃ュ織鍒版帶鍒跺彴 -->
+    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+        <!--姝ゆ棩蹇梐ppender鏄负寮�鍙戜娇鐢紝鍙厤缃渶搴曠骇鍒紝鎺у埗鍙拌緭鍑虹殑鏃ュ織绾у埆鏄ぇ浜庢垨绛変簬姝ょ骇鍒殑鏃ュ織淇℃伅-->
+        <!-- 瀹氫箟鏃ュ織杈撳嚭绾у埆鐨勮繃婊ゅ櫒锛宑lass="ch.qos.logback.classic.filter.ThresholdFilter"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凾hresholdFilter绫绘潵杩囨护鏃ュ織杈撳嚭锛�<level>debug</level>琛ㄧず鍙緭鍑篸ebug绾у埆鍙婁互涓婄殑鏃ュ織 -->
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>debug</level>
+        </filter>
+        <encoder>
+            <!-- ${CONSOLE_LOG_PATTERN}琛ㄧず鎺у埗鍙版棩蹇楄緭鍑烘牸寮忥紝UTF-8琛ㄧず缂栫爜鏍煎紡 -->
+            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
+            <!-- 璁剧疆瀛楃闆� -->
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+    <!--2. 杈撳嚭鍒版枃妗�-->
+    <!-- 2.1 level涓� DEBUG 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <!-- 瀹氫箟鏂囦欢鏃ュ織杈撳嚭鐨刟ppender锛宑lass="ch.qos.logback.core.rolling.RollingFileAppender"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凴ollingFileAppender绫绘潵杈撳嚭鏃ュ織鍒版枃浠� -->
+    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_debug.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 璁剧疆瀛楃闆� -->
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <!-- 瀹氫箟鏃ュ織鏂囦欢婊氬姩绛栫暐鐨勬爣绛撅紝class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凾imeBasedRollingPolicy绫绘潵瀹氫箟鏃ュ織鏂囦欢鐨勬粴鍔ㄧ瓥鐣� -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 鏃ュ織褰掓。 -->
+            <!-- 瀹氫箟鏃ュ織鏂囦欢鍚嶇殑妯″紡銆傚湪杩欎釜妯″紡涓紝${logging.path}琛ㄧず鏃ュ織鏂囦欢鐨勮矾寰勶紝%d{yyyy-MM-dd}琛ㄧず鏃ユ湡鏍煎紡锛�%i琛ㄧず鏂囦欢绱㈠紩 -->
+            <fileNamePattern>${logging.path}/${serverName}/web-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <!-- 瀹氫箟鏃ュ織鏂囦欢婊氬姩绛栫暐鐨勬爣绛撅紝class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凷izeAndTimeBasedFNATP绫绘潵瀹氫箟鏃ュ織鏂囦欢鐨勬粴鍔ㄧ瓥鐣ワ紝<maxFileSize>100MB</maxFileSize>琛ㄧず鏃ュ織鏂囦欢鐨勬渶澶уぇ灏忎负100MB銆傝繖涓粴鍔ㄧ瓥鐣ラ�氬父鐢ㄤ簬鎸夌収鏃堕棿鍜屾枃浠跺ぇ灏忔粴鍔ㄦ棩蹇楁枃浠讹紝浠ヤ究鏇村ソ鍦扮鐞嗘棩蹇楁枃浠剁殑澶у皬鍜屾暟閲� -->
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍debug绾у埆鐨� -->
+        <!-- 瀹氫箟鏃ュ織杈撳嚭绾у埆鐨勮繃婊ゅ櫒銆傚湪杩欎釜杩囨护鍣ㄤ腑锛宑lass="ch.qos.logback.classic.filter.LevelFilter"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凩evelFilter绫绘潵杩囨护鏃ュ織杈撳嚭锛�<level>debug</level>琛ㄧず鍙緭鍑篸ebug绾у埆鍙婁互涓婄殑鏃ュ織 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>debug</level>
+            <!-- <onMatch>ACCEPT</onMatch>琛ㄧず濡傛灉鏃ュ織浜嬩欢涓庤繃婊ゅ櫒鍖归厤锛屽垯鎺ュ彈璇ヤ簨浠讹紝<onMismatch>DENY</onMismatch>琛ㄧず濡傛灉鏃ュ織浜嬩欢涓庤繃婊ゅ櫒涓嶅尮閰嶏紝鍒欐嫆缁濊浜嬩欢 -->
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!-- 2.2 level涓� INFO 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_info.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 澶╁ぉ鏃ュ織褰掓。璺緞浠ュ強鏍煎紡 -->
+            <fileNamePattern>${logging.path}/${serverName}/web-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍info绾у埆鐨� -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>info</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!-- 2.3 level涓� WARN 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_warn.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 姝ゅ璁剧疆瀛楃闆� -->
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logging.path}/${serverName}/web-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍warn绾у埆鐨� -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>warn</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!-- 2.4 level涓� ERROR 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_error.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 姝ゅ璁剧疆瀛楃闆� -->
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logging.path}/${serverName}/web-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍ERROR绾у埆鐨� -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>ERROR</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!--     4.1 寮�鍙戠幆澧�:鎵撳嵃鎺у埗鍙�-->
+    <!-- 鐢ㄤ簬鍦⊿pring Boot搴旂敤绋嬪簭涓厤缃棩蹇楄褰曠殑鏍囩銆傚湪杩欎釜鏍囩涓紝name="dev"琛ㄧず杩欎釜閰嶇疆鏂囦欢鍙湪dev鐜涓敓鏁堬紝<logger name="com.myClass.controller" level="debug"/>琛ㄧず涓篶om.myClass.controller锛堟牴鎹笟鍔′慨鏀癸級杩欎釜鍖呬笅鐨勭被閰嶇疆鏃ュ織杈撳嚭绾у埆涓篸ebug -->
+    <!--    <springProfile name="dev">-->
+    <!--        <logger name="com.myClass.controller" level="debug"/>-->
+    <!--    </springProfile>-->
+    <!-- 鐢ㄤ簬閰嶇疆鏃ュ織杈撳嚭鐨勬爣绛俱�傚湪杩欎釜鏍囩涓紝level="info"琛ㄧず鏃ュ織杈撳嚭绾у埆涓篿nfo锛�<appender-ref ref="CONSOLE"/>銆�<appender-ref ref="DEBUG_FILE"/>銆�<appender-ref ref="INFO_FILE"/>銆�<appender-ref ref="WARN_FILE"/>銆�<appender-ref ref="ERROR_FILE"/>琛ㄧず灏嗘棩蹇楄緭鍑哄埌涓嶅悓鐨刟ppender涓紝鍒嗗埆涓烘帶鍒跺彴銆乨ebug鏂囦欢銆乮nfo鏂囦欢銆亀arn鏂囦欢鍜宔rror鏂囦欢 -->
+    <root level="info">
+        <appender-ref ref="CONSOLE"/>
+        <appender-ref ref="DEBUG_FILE"/>
+        <appender-ref ref="INFO_FILE"/>
+        <appender-ref ref="WARN_FILE"/>
+        <appender-ref ref="ERROR_FILE"/>
+    </root>
+</configuration>
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/com/mes/UnLoadGlassApplicationTest.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/com/mes/UnLoadGlassApplicationTest.java
new file mode 100644
index 0000000..69557c4
--- /dev/null
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/com/mes/UnLoadGlassApplicationTest.java
@@ -0,0 +1,42 @@
+package com.mes;
+
+import com.mes.downglassinfo.entity.DownGlassTask;
+import com.mes.downglassinfo.mapper.DownGlassTaskMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.Arrays;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/3/27 16:37
+ * @Description:
+ */
+@Slf4j
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = UnLoadGlassApplication.class)
+public class UnLoadGlassApplicationTest {
+
+    @Autowired
+    DownGlassTaskMapper downGlassTaskMapper;
+
+    @Test
+    public void testFindPath() {
+        log.info("瀹屾暣璺緞锛歿}", Arrays.asList("123"));
+    }
+
+    @Test
+    public void testCacheGlass() {
+        DownGlassTask glassTask = new DownGlassTask();
+        glassTask.setId(1L);
+        glassTask.setTaskType("1");
+        glassTask.setHeight(100.01);
+        glassTask.setWidth(200.02);
+        int i = downGlassTaskMapper.insert(glassTask);
+        log.info("鎻掑叆缁撴灉锛歿}", i);
+    }
+}
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java
index f64b4b3..4074725 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java
@@ -2,8 +2,12 @@
 
 import com.mes.UnLoadGlassApplication;
 import com.mes.downstorage.entity.DownStorageCageDetails;
+import com.mes.downstorage.service.DownStorageCageDetailsService;
+import com.mes.downstorage.service.impl.DownStorageCageDetailsServiceImpl;
 import com.mes.downstorage.service.impl.DownStorageCageServiceImpl;
 
+import com.mes.downworkstation.service.DownWorkstationService;
+import com.mes.downworkstation.service.impl.DownWorkstationServiceImpl;
 import lombok.extern.slf4j.Slf4j;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -27,6 +31,12 @@
 
     @Autowired
     DownStorageCageServiceImpl downStorageCageServiceImpl;
+    @Autowired
+    DownStorageCageDetailsServiceImpl downStorageCageDetailsServiceImpl;
+    @Autowired
+    DownStorageCageDetailsService downStorageCageDetailsService;
+    @Autowired
+    DownWorkstationServiceImpl downWorkstationServiceImpl;
 
     @Test
     public void testFindPath() {
@@ -35,20 +45,70 @@
 
     @Test
     public void testCacheGlass() {
-        List<Map> map= downStorageCageServiceImpl.getCacheInfo();
+        List<Map> map = downStorageCageDetailsServiceImpl.getCacheInfo();
         log.info("绗煎唴淇℃伅锛歿}", Arrays.asList(map));
     }
+
     @Test
     public void testselectCacheEmpty() {
-        List<DownStorageCageDetails> map= downStorageCageServiceImpl.getCacheLeisure();
+        List<DownStorageCageDetails> map = downStorageCageDetailsServiceImpl.getCacheLeisure();
         log.info("绗煎唴绌烘牸锛歿}", Arrays.asList(map));
     }
 
 
     @Test
     public void testgetCacheOut() {
-        List<DownStorageCageDetails> map= downStorageCageServiceImpl.getCacheOut(1,5);
+        List<DownStorageCageDetails> map = downStorageCageDetailsServiceImpl.getCacheOut(1, 5);
         log.info("鏍规嵁浼犲叆鐨勫伐浣嶆煡璇㈢鍚堟寜鐓ч『搴忓拰澶у皬鍑虹墖鐨勫皬鐗囷細{}", Arrays.asList(map));
     }
 
-}
+
+    @Test
+    public void testupdateFlowCardIdAndCount() {
+        log.info("缁戝畾娴佺▼鍗″彿鍜屾暟閲�");
+        downWorkstationServiceImpl.updateFlowCardIdAndCount("1", 1, 1);
+
+    }
+
+    @Test
+    public void testplc() {
+        log.info("娴嬭瘯");
+        downWorkstationServiceImpl.insertdownglassinfo();
+
+    }
+
+
+
+    @Test
+    public void testin2() {
+        log.info("娴嬭瘯杩涚墖");
+        downStorageCageDetailsServiceImpl.getIsExistIntoCacheByflowcardid("NG2023005",500);
+
+    }
+
+
+    @Test
+    public void selectCacheEmpty() {
+        log.info("娴嬭瘯杩涚墖");
+        downStorageCageDetailsServiceImpl.getCacheLeisure();
+
+    }
+
+    @Test
+    public void CacheEmpty() {
+        log.info("娴嬭瘯鍑虹墖");
+        downStorageCageDetailsService.CacheOut(1,10);
+
+    }
+
+
+    @Test
+    public void getTotalGlassDimensionsByWorkstation() {
+        log.info("宸ヤ綅鏄剧ず");
+        downWorkstationServiceImpl.getTotalGlassDimensionsByWorkstation();
+
+    }
+
+
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/pom.xml b/hangzhoumesParent/moduleService/pom.xml
index c3bf5ce..005b896 100644
--- a/hangzhoumesParent/moduleService/pom.xml
+++ b/hangzhoumesParent/moduleService/pom.xml
@@ -56,11 +56,11 @@
         </dependency>
 
         <!--寮�鍙戣�呭伐鍏�-->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-devtools</artifactId>
-            <optional>true</optional>
-        </dependency>
+        <!--        <dependency>-->
+        <!--            <groupId>org.springframework.boot</groupId>-->
+        <!--            <artifactId>spring-boot-devtools</artifactId>-->
+        <!--            <optional>true</optional>-->
+        <!--        </dependency>-->
 
         <dependency>
             <groupId>org.springframework.boot</groupId>

--
Gitblit v1.8.0