From 5c5405770a3d4c320c5a599396176ce191886ba1 Mon Sep 17 00:00:00 2001
From: ZengTao <2773468879@qq.com>
Date: 星期一, 15 四月 2024 10:56:13 +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                |   76 +
 LoadGlassModule/target/classes/application.yml                                                                               |   21 
 UI-Project/src/views/Returns/returns.vue                                                                                     |   23 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/mapper/TemperingMapper.java        |   35 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/InterceptorConfig.java                              |   26 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/LoginUser.java                                 |   94 +
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/SysMenuService.java                               |   19 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/SysRoleService.java                               |   16 
 UI-Project/src/views/LoginView.vue                                                                                           |  207 +-
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java                         |   20 
 hangzhoumesParent/moduleService/LoadGlassModule/pom.xml                                                                      |    2 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserService.java                           |   20 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleMenuController.java                     |   20 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/PlcBitObject.java                               |  142 ++
 UI-Project/src/views/TL/Temperedlayout/Temperedlayout.vue                                                                    |    2 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcBitObject.java                                          |    0 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/PlcBitInfo.java                                 |   77 +
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/entity/UpWorkSequence.java                 |   15 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PLCAutoMes.java                                            |    7 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/RedisUtil.java                                    |  220 +++
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/WebUtils.java                                     |   30 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/LoadGlassModuleApplication.java                        |    7 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterInfo.java                                      |    0 
 UI-Project/package.json                                                                                                      |    2 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownGlassLogic.java          |    6 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterObject.java                                    |    0 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml                                         |    4 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/UpWorkstationService.java          |   30 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java                          |    3 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/impl/UpWorkstationServiceImpl.java |   68 +
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/controller/UpWorkstationController.java    |   56 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/controller/SysMenuController.java                         |   39 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/config/MyCorsConfig.java                                |   46 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/AuthenticationEntryPointImpl.java               |   29 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/PLCAutoMes.java                                 |   95 +
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleMenuServiceImpl.java                  |   20 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/mapper/UpWorkstationMapper.java            |   21 
 LoadGlassModule/src/main/resources/application.yml                                                                           |   21 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserRoleMapper.java                         |   16 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/mapper/SysMenuMapper.java                                 |   19 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMenuMapper.java                             |   16 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/AccessDeniedHandlerImpl.java                    |   30 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/FastJsonRedisSerializer.java                      |   55 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMapper.java                                 |   16 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/entity/GlassInfo.java                      |  131 ++
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/entity/SysRole.java                                       |   50 
 hangzhoumesParent/moduleService/UnLoadGlassModule/pom.xml                                                                    |   14 
 hangzhoumesParent/common/springsecurity/src/main/resources/application.yml                                                   |   25 
 hangzhoumesParent/moduleService/pom.xml                                                                                      |   11 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/PlcParameterObject.java                         |  202 +++
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/SysUserRole.java                               |   36 
 UI-Project/src/layout/MainErpView.vue                                                                                        |  113 
 UI-Project/src/views/Identify/identify.vue                                                                                   |   12 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/entity/SysRoleMenu.java                                   |   36 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/JwtUtil.java                                      |  120 +
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java                      |   67 +
 hangzhoumesParent/common/springsecurity/src/main/resources/mapper/SysMenuMapper.xml                                          |   15 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationMapper.java    |    3 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/SysRoleMenuService.java                           |   16 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/InitUtil.java                                               |  256 +-
 UI-Project/src/utils/request.js                                                                                              |   13 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcBitInfo.java                                            |    0 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/SysUser.java                                   |   66 +
 hangzhoumesParent/moduleService/TemperingGlassModule/pom.xml                                                                 |    2 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/mapper/LoadGlassMapper.java                |   16 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/InitUtil.java                                   |  250 +-
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/config/RedisConfig.java                                 |   37 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserMapper.java                             |   16 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/S7object.java                                   |   36 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/config/TokenWebSecurityConfig.java                      |   53 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/xml/SysRoleMapper.xml                              |    5 
 UI-Project/config.js                                                                                                         |    4 
 hangzhoumesParent/common/pom.xml                                                                                             |   58 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/xml/SysUserMapper.xml                          |    5 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/service/TemperingService.java      |   28 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserRoleServiceImpl.java              |   20 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserRoleService.java                       |   16 
 /dev/null                                                                                                                    |   21 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/entity/SysMenu.java                                       |   82 +
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/xml/SysRoleMenuMapper.xml                          |    5 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/controller/SysUserController.java                     |   36 
 hangzhoumesParent/common/springsecurity/pom.xml                                                                              |   17 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/controller/SysUserRoleController.java                 |   20 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java                  |   89 +
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/entity/UpWorkstation.java                  |    2 
 UI-Project/package-lock.json                                                                                                 |   36 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java                      |   20 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/PlcParameterInfo.java                           |  128 +
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/xml/SysUserRoleMapper.xml                      |    5 
 UI-Project/vite.config.js                                                                                                    |    8 
 90 files changed, 3,255 insertions(+), 617 deletions(-)

diff --git a/LoadGlassModule/src/main/resources/application.yml b/LoadGlassModule/src/main/resources/application.yml
index d74069d..67844c9 100644
--- a/LoadGlassModule/src/main/resources/application.yml
+++ b/LoadGlassModule/src/main/resources/application.yml
@@ -7,26 +7,11 @@
 spring:
   datasource:
     dynamic:
-      primary: user_info #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
       strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
       datasource:
-        user_info:
-          url: jdbc:mysql://10.153.19.150:3306/erp_user_info?serverTimezone=GMT%2b8
+        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
-        sd:
-          url: jdbc:mysql://10.153.19.150:3306/sd?serverTimezone=GMT%2b8
-          username: root
-          password: beibo.123/
-          driver-class-name: com.mysql.cj.jdbc.Driver
-        mm:
-          url: jdbc:mysql://10.153.19.150:3306/mm?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
\ No newline at end of file
diff --git a/LoadGlassModule/target/classes/application.yml b/LoadGlassModule/target/classes/application.yml
index d74069d..67844c9 100644
--- a/LoadGlassModule/target/classes/application.yml
+++ b/LoadGlassModule/target/classes/application.yml
@@ -7,26 +7,11 @@
 spring:
   datasource:
     dynamic:
-      primary: user_info #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
       strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
       datasource:
-        user_info:
-          url: jdbc:mysql://10.153.19.150:3306/erp_user_info?serverTimezone=GMT%2b8
+        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
-        sd:
-          url: jdbc:mysql://10.153.19.150:3306/sd?serverTimezone=GMT%2b8
-          username: root
-          password: beibo.123/
-          driver-class-name: com.mysql.cj.jdbc.Driver
-        mm:
-          url: jdbc:mysql://10.153.19.150:3306/mm?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
\ No newline at end of file
diff --git a/UI-Project/config.js b/UI-Project/config.js
index ac9f2b1..fea947e 100644
--- a/UI-Project/config.js
+++ b/UI-Project/config.js
@@ -1,5 +1,5 @@
 export default {
-  serverUrl:"localhost:8080/mesModuleTools",
-  serverUrl2:"localhost:8081/mesModuleTools"
+  serverUrl: "localhost:8081",
+  serverUrl2: "localhost:8081/mesModuleTools"
   //serverUrl:"res.abeim.cn"
 }
\ No newline at end of file
diff --git a/UI-Project/package-lock.json b/UI-Project/package-lock.json
index 282cdfa..3a65897 100644
--- a/UI-Project/package-lock.json
+++ b/UI-Project/package-lock.json
@@ -10,7 +10,7 @@
       "dependencies": {
         "@element-plus/icons-vue": "^2.1.0",
         "@vue-macros/reactivity-transform": "^0.3.23",
-        "axios": "^1.5.1",
+        "axios": "^1.6.8",
         "element-plus": "^2.4.0",
         "moment": "^2.30.1",
         "pinia": "^2.1.6",
@@ -877,11 +877,11 @@
       "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
     },
     "node_modules/axios": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz",
-      "integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==",
+      "version": "1.6.8",
+      "resolved": "https://registry.npmmirror.com/axios/-/axios-1.6.8.tgz",
+      "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==",
       "dependencies": {
-        "follow-redirects": "^1.15.0",
+        "follow-redirects": "^1.15.6",
         "form-data": "^4.0.0",
         "proxy-from-env": "^1.1.0"
       }
@@ -1103,15 +1103,9 @@
       }
     },
     "node_modules/follow-redirects": {
-      "version": "1.15.3",
-      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
-      "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==",
-      "funding": [
-        {
-          "type": "individual",
-          "url": "https://github.com/sponsors/RubenVerborgh"
-        }
-      ],
+      "version": "1.15.6",
+      "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.6.tgz",
+      "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
       "engines": {
         "node": ">=4.0"
       },
@@ -2272,11 +2266,11 @@
       "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
     },
     "axios": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz",
-      "integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==",
+      "version": "1.6.8",
+      "resolved": "https://registry.npmmirror.com/axios/-/axios-1.6.8.tgz",
+      "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==",
       "requires": {
-        "follow-redirects": "^1.15.0",
+        "follow-redirects": "^1.15.6",
         "form-data": "^4.0.0",
         "proxy-from-env": "^1.1.0"
       }
@@ -2442,9 +2436,9 @@
       }
     },
     "follow-redirects": {
-      "version": "1.15.3",
-      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
-      "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q=="
+      "version": "1.15.6",
+      "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.6.tgz",
+      "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA=="
     },
     "form-data": {
       "version": "4.0.0",
diff --git a/UI-Project/package.json b/UI-Project/package.json
index afef130..b816c15 100644
--- a/UI-Project/package.json
+++ b/UI-Project/package.json
@@ -10,7 +10,7 @@
   "dependencies": {
     "@element-plus/icons-vue": "^2.1.0",
     "@vue-macros/reactivity-transform": "^0.3.23",
-    "axios": "^1.5.1",
+    "axios": "^1.6.8",
     "element-plus": "^2.4.0",
     "moment": "^2.30.1",
     "pinia": "^2.1.6",
diff --git a/UI-Project/src/layout/MainErpView.vue b/UI-Project/src/layout/MainErpView.vue
index 6c2e09c..bc44154 100644
--- a/UI-Project/src/layout/MainErpView.vue
+++ b/UI-Project/src/layout/MainErpView.vue
@@ -1,57 +1,60 @@
 <script setup>
-import { RouterLink,useRouter} from 'vue-router'
-import  useUserInfoStore from '@/stores/userInfo'
+import {useRouter} from 'vue-router'
+import useUserInfoStore from '@/stores/userInfo'
+import userInfo from '@/stores/userInfo'
 import request from "@/utils/request";
 import {ElMessage} from "element-plus";
-import {onMounted, reactive, ref, watch} from "vue"
+import {ref, watch} from "vue"
 import deepClone from "@/utils/deepClone"
-import userInfo from '@/stores/userInfo'
-import {Close, Grid, Histogram, MessageBox, SwitchButton} from "@element-plus/icons-vue";
-const store=userInfo()
+
+const store = userInfo()
 
 const router = useRouter()
 const userStore = useUserInfoStore()
 const user = userStore.user.userName
+
 // store.createWebSocket();
-function quit(){
+function quit() {
   userStore.$patch({
-    user:null
+    user: null
   })
   router.push("/login")
 }
 
 
 //鎻愬彇妯″潡鍒楄〃
-let menuList=$ref([])
-request.get("/menu").then((res) => {
-  if(res.code==200){
-    menuList= deepClone(res.data)
-  }else{
+let menuList = $ref([])
+request.get('/menu/sysMenu/list').then((res) => {
+  if (res.code == 200) {
+    menuList = deepClone(res.data)
+  } else {
     ElMessage.warning(res.msg)
-    router.push("/login")
+    router.push('/login')
   }
 })
 
 //鑾峰彇鑿滃崟鍒楄〃
-let menuItemList=$ref([])
-request.get("/menuItem").then((res) => {
-  if(res.code==200){
-    menuItemList= deepClone(res.data)
-  }else{
-    ElMessage.warning(res.msg)
-    router.push("/login")
-  }
-})
+// let menuItemList = $ref([])
+// request.get('/menuItem').then((res) => {
+//   if (res.code == 200) {
+//     menuItemList = deepClone(res.data)
+//   } else {
+//     ElMessage.warning(res.msg)
+//     router.push('/login')
+//   }
+// })
 
 const menu = ref(null)
 let indexKey = ref(null)
+
 function handleOpen(key) {
-  indexKey.value=key
+  indexKey.value = key
 }
-watch(indexKey,(newVal,oldVal) => {
-  if(oldVal !== newVal && oldVal !== null){
-    menu.value.close(oldVal)
-  }
+
+watch(indexKey, (newVal, oldVal) => {
+      if (oldVal !== newVal && oldVal !== null) {
+        menu.value.close(oldVal)
+      }
 },
     {deep:true}
 )
@@ -81,39 +84,39 @@
         <div style="height: 100%;width: 100%;display: flex;background-color: #fff;">
           <img src="../assets/northGlass.ico" alt="" style="max-width: 100%;max-height: 100%">
           <h3 style="margin: 1rem  ;font-weight: bold;width: 20vw;"> 娆㈣繋{{ user }}浣跨敤鍖楃幓MES绯荤粺锛�</h3>
-          <span style="height: 70%;width: 78vw;margin-top: 1rem;" >
-            <el-button  class="sys-quit" @click="quit" round>
-              <el-icon size="large"><SwitchButton  size=""/></el-icon>
+          <span style="height: 70%;width: 78vw;margin-top: 1rem;">
+            <el-button class="sys-quit" @click="quit" round>
+              <el-icon size="large"><SwitchButton size=""/></el-icon>
             </el-button>
           </span>
         </div>
       </el-header>
       <div id="line"></div>
-      <el-container >
-        <el-aside width="160px" style="height: 99%; background-color: #fff;" >
-          <div class="menu"  >
-             <div v-for="items in menuList">
-                <div class='menu_title' @click="openMenu(items.id)"  >
-              <!-- <span class='indicator' >鈱�</span> -->
-              <!-- <span class='indicator' >鈮�</span> -->
-              <!-- <img src="../assets/9.png" alt="" style="max-width: 50%;max-height: 50%;"> -->
-                  <span>鈽�</span>
-              {{items.menuName}}
-                </div>
-                <ul class='enter-x-left' v-show="openFlag==items.id">
-
-                  <li v-for="menuItem in menuItemList"
-                      v-show="items.id==menuItem.menuID"
-                      style="margin-bottom: 2px"
-                  >
-                    <router-link
-                        :to="{path:menuItem.url}">
-                      {{ menuItem.itemName}}
-                    </router-link>
-
-                  </li>
-                </ul>
+      <el-container>
+        <el-aside width="160px"
+                  style="height: 99%; background-color: #fff;">
+          <div class="menu">
+            <div v-for="items in menuList">
+              <div class='menu_title'
+                   @click="openMenu(items.id)">
+                <!-- <span class='indicator' >鈱�</span> -->
+                <!-- <span class='indicator' >鈮�</span> -->
+                <!-- <img src="../assets/9.png" alt="" style="max-width: 50%;max-height: 50%;"> -->
+                <span>鈽�</span>
+                {{ items.menuName }}
               </div>
+              <ul class='enter-x-left'
+                  v-show="openFlag==items.id">
+
+                <li v-for="menuItem in items.children"
+                    style="margin-bottom:2px">
+                  <router-link :to="{path:menuItem.url}">
+                    {{ menuItem.menuName }}
+                  </router-link>
+
+                </li>
+              </ul>
+            </div>
           </div>
         </el-aside>
 
diff --git a/UI-Project/src/utils/request.js b/UI-Project/src/utils/request.js
index e7abe99..2159de6 100644
--- a/UI-Project/src/utils/request.js
+++ b/UI-Project/src/utils/request.js
@@ -6,9 +6,9 @@
     baseURL: `http://${config.serverUrl}`,  // 娉ㄦ剰锛侊紒 杩欓噷鏄叏灞�缁熶竴鍔犱笂浜� 鍚庣鎺ュ彛鍓嶇紑 鍓嶇紑锛屽悗绔繀椤昏繘琛岃法鍩熼厤缃紒
     timeout: 5000
 })
-
+ 
 //
-
+ 
 // request 鎷︽埅鍣�
 // 鍙互鑷姹傚彂閫佸墠瀵硅姹傚仛涓�浜涘鐞�
 // 姣斿缁熶竴鍔爐oken锛屽璇锋眰鍙傛暟缁熶竴鍔犲瘑
@@ -22,7 +22,7 @@
 }, error => {
     return Promise.reject(error)
 });
-
+ 
 // response 鎷︽埅鍣�
 // 鍙互鍦ㄦ帴鍙e搷搴斿悗缁熶竴澶勭悊缁撴灉
 request.interceptors.response.use(
@@ -43,7 +43,6 @@
         return Promise.reject(error)
     }
 )
-
-
-export default request
-
+ 
+ 
+export default request
\ 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 92ec074..be0e99f 100644
--- a/UI-Project/src/views/Identify/identify.vue
+++ b/UI-Project/src/views/Identify/identify.vue
@@ -59,6 +59,18 @@
 
 <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 {
diff --git a/UI-Project/src/views/LoginView.vue b/UI-Project/src/views/LoginView.vue
index c1515b9..43eea2f 100644
--- a/UI-Project/src/views/LoginView.vue
+++ b/UI-Project/src/views/LoginView.vue
@@ -1,24 +1,22 @@
 <script lang="ts" setup>
-import {onMounted, onUnmounted, reactive, ref} from "vue"
-import {useRouter,useRoute } from 'vue-router'
+import {onMounted, onUnmounted, reactive, ref} from 'vue'
+import {useRoute, useRouter} from 'vue-router'
 import type {FormInstance, FormRules} from 'element-plus'
-import { ElMessage } from "element-plus";
-import { Lock,Avatar } from '@element-plus/icons-vue'
+import {ElMessage} from 'element-plus'
 import request from '@/utils/request'
 import userInfo from '@/stores/userInfo'
 
-
-const store=userInfo()
-let ruleFormRef  = ref<FormInstance>()
+const store = userInfo()
+let ruleFormRef = ref<FormInstance>()
 const router = useRouter()
 const route = useRoute()
 
 const userForm = reactive({
-  userId: '',
-  pass: ''
+  userName: '',
+  password: '',
 })
 
-if (typeof(route.query.id) != "undefined"){
+if (typeof route.query.id != 'undefined') {
   userForm.userId = <string>route.query.id
 }
 
@@ -39,8 +37,8 @@
 }
 
 const rules = reactive<FormRules<typeof userForm>>({
-  userId: [{ validator: validateUser, trigger: 'blur' }],
-  pass: [{ validator: validatePass, trigger: 'blur' }]
+  userId: [{validator: validateUser, trigger: 'blur'}],
+  pass: [{validator: validatePass, trigger: 'blur'}],
 })
 
 //鐧婚檰鏂规硶
@@ -48,37 +46,39 @@
   if (!formEl) return
   formEl.validate((valid) => {
     if (valid) {
-      loginLoadings.value=true
-      request.post('/user/login',
-          userForm).then((res) => {
-        if(res['code']==200){
-          store.$patch({user:res.data})
+      loginLoadings.value = true
+      request
+          .post('/userinfo/login', userForm)
+          .then((res) => {
+            if (res['code'] == 200) {
+              store.$patch({user: res.data})
+              console.log(res.data)
 
-          router.push('/main')
-          ElMessage.success(`鐧诲綍鎴愬姛`)
-        } else {
-          ElMessage.error(res['msg'])
-          loginLoadings.value=false
-          return false
-        }
-      }).catch(error => {
-        ElMessage.error("鏈嶅姟鍣ㄨ繛鎺ュけ璐�")
-        loginLoadings.value=false
-        return false
-      })
+              router.push('/main')
+              ElMessage.success(`鐧诲綍鎴愬姛`)
+            } else {
+              ElMessage.error(res['msg'])
+              loginLoadings.value = false
+              return false
+            }
+          })
+          .catch((error) => {
+            ElMessage.error('鏈嶅姟鍣ㄨ繛鎺ュけ璐�')
+            loginLoadings.value = false
+            return false
+          })
     }
   })
 }
 
 function register() {
-
   router.push({
-    path:'/register',
+    path: '/register',
   })
 }
 
-let loginLoadings= ref(false)
-let registerLoadings= ref(false)
+let loginLoadings = ref(false)
+let registerLoadings = ref(false)
 
 const keyDown = (e) => {
   // 鍥炶溅鍒欐墽琛岀櫥褰曟柟娉� enter閿殑ASCII鏄�13
@@ -86,82 +86,71 @@
     submitForm(ruleFormRef.value)
   }
 }
-onMounted(()=>{
+onMounted(() => {
   window.addEventListener('keydown', keyDown)
 })
 onUnmounted(() => {
   window.removeEventListener('keydown', keyDown)
 })
-
 </script>
 
 <template>
-  <div class="mainDiv" >
+  <div class="mainDiv">
     <div id="main-login">
       <!-- <img
         style="width: 100%; height: 99vh"
         src="../../src/assets/background.jpg"
       /> -->
       <div>
-      <div style="position: absolute; left: 8vw; top: 6vw; ">
-        <img src="../../src/assets/3.png">
-      </div> 
-       <div style="position: absolute; left: 15vw; top: 22vw; font-size: 55px;color: rgba(29, 33, 41, 1);">
-        鍖楃幓MES绯荤粺
-      </div>
-    </div>
-      <div id="div-login">
-        <el-form
-            @submit.native.prevent
-            ref="ruleFormRef"
-            :model="userForm"
-            status-icon
-            :rules="rules"
-        >
-        <div id="center">
-            <div style="color: rgba(78, 89, 105, 1);margin-bottom: 10px;">璐﹀彿</div>
-          <el-form-item prop="userId">
-            <el-input
-            style="width: 340px;"
-                v-model="userForm.userId"
-                type="text"
-                autocomplete="off"
-                :prefix-icon="Avatar"
-                placeholder="璇疯緭鍏ヨ处鍙�"
-            />
-          </el-form-item>
-            <div style="color: rgba(78, 89, 105, 1);margin-bottom: 10px;">瀵嗙爜</div>
-          <el-form-item prop="pass">
-            <el-input
-            style="width: 340px;"
-                v-model="userForm.pass"
-                type="password"
-                autocomplete="off"
-                :prefix-icon="Lock"
-                show-password
-                placeholder="璇疯緭鍏ュ瘑鐮�"
-            />
-          </el-form-item>
-          <el-form-item id="submitForm">
-            <el-button
-                :loading="loginLoadings"
-                type="primary"
-                native-type="submit"
-                @click="submitForm(ruleFormRef)"
-                @keyup.enter.native="keyDown(e)"
-                plain
-            >鐧诲綍
-            </el-button>
-            <el-button
-                :loading="registerLoadings"
-                type="primary"
-                @click="register"
-                plain
-            >娉ㄥ唽
-            </el-button>
-
-          </el-form-item>
+        <div style="position: absolute; left: 8vw; top: 6vw; ">
+          <img src="../../src/assets/3.png">
         </div>
+        <div style="position: absolute; left: 15vw; top: 22vw; font-size: 55px;color: rgba(29, 33, 41, 1);">
+          鍖楃幓MES绯荤粺
+        </div>
+      </div>
+      <div id="div-login">
+        <el-form @submit.native.prevent
+                 ref="ruleFormRef"
+                 :model="userForm"
+                 status-icon
+                 :rules="rules">
+          <div id="center">
+            <div style="color: rgba(78, 89, 105, 1);margin-bottom: 10px;">璐﹀彿</div>
+            <el-form-item prop="userId">
+              <el-input style="width: 340px;"
+                        v-model="userForm.userName"
+                        type="text"
+                        autocomplete="off"
+                        :prefix-icon="Avatar"
+                        placeholder="璇疯緭鍏ヨ处鍙�"/>
+            </el-form-item>
+            <div style="color: rgba(78, 89, 105, 1);margin-bottom: 10px;">瀵嗙爜</div>
+            <el-form-item prop="pass">
+              <el-input style="width: 340px;"
+                        v-model="userForm.password"
+                        type="password"
+                        autocomplete="off"
+                        :prefix-icon="Lock"
+                        show-password
+                        placeholder="璇疯緭鍏ュ瘑鐮�"/>
+            </el-form-item>
+            <el-form-item id="submitForm">
+              <el-button :loading="loginLoadings"
+                         type="primary"
+                         native-type="submit"
+                         @click="submitForm(ruleFormRef)"
+                         @keyup.enter.native="keyDown(e)"
+                         plain>鐧诲綍
+              </el-button>
+              <el-button :loading="registerLoadings"
+                         type="primary"
+                         @click="register"
+                         plain>娉ㄥ唽
+              </el-button>
+
+            </el-form-item>
+          </div>
         </el-form>
       </div>
     </div>
@@ -170,18 +159,19 @@
 </template>
 
 <style scoped>
-.mainDiv{
+.mainDiv {
   overflow: hidden;
   min-width: 718px;
-  background-image: url("../../src/assets/background.jpg");
-
+  background-image: url('../../src/assets/background.jpg');
 }
-#main-login{
+
+#main-login {
   margin: 150px auto 0 auto;
   height: 70vh;
   width: 80vw;
 }
-#img-div{
+
+#img-div {
   width: 55%;
   height: 100%;
   display: flex;
@@ -189,11 +179,13 @@
   align-items: center;
   float: left;
 }
-#img-pic{
+
+#img-pic {
   max-height: 90%;
   max-width: 100%;
 }
-#div-login{
+
+#div-login {
   margin-top: 5%;
   /* margin-top: 20%; */
   /* margin-left: 650px; */
@@ -203,22 +195,25 @@
   height: 60%;
   min-width: 318px;
   border-radius: 4px;
-  box-shadow: 0 8px 16px 0 rgba(0,0,0,0), 0 6px 5px 0 rgba(0,0,0,0.19);
+  box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0), 0 6px 5px 0 rgba(0, 0, 0, 0.19);
 }
-#center{
+
+#center {
   margin-top: -30px;
 }
-.el-form{
+
+.el-form {
   width: 60%;
   margin: 20% auto auto;
 }
+
 #submitForm {
   display: flex;
   justify-content: space-evenly;
   margin-top: 2rem;
 }
-:deep(.el-form-item__content){
-  flex: unset
 
+:deep(.el-form-item__content) {
+  flex: unset;
 }
 </style>
\ No newline at end of file
diff --git a/UI-Project/src/views/Returns/returns.vue b/UI-Project/src/views/Returns/returns.vue
index dacd22f..d757769 100644
--- a/UI-Project/src/views/Returns/returns.vue
+++ b/UI-Project/src/views/Returns/returns.vue
@@ -10,8 +10,28 @@
 const dialogFormVisible = ref(false)
 const add = ref(false)
 const adda = ref(false)
-
 const value = ref('')
+import request from "@/utils/request"
+
+request.post(`/LoadGlass/SelectAll`).then((res) => {
+  console.log(555555555555);
+ if (res.code == 200) {
+  console.log(1111);
+  // console.log(res.data);
+ } else {
+   ElMessage.warning(res.msg)
+          router.push("/login")
+ }
+});
+
+// request.get("/LoadGlass/SelectAll").then((res) => {
+//           if (res.code == 200) {
+//           console.log(res.data);
+//           } else {
+//           ElMessage.warning(res.msg)
+//           router.push("/login")
+//           }
+//           });
 
 interface User {
   id: string
@@ -404,6 +424,7 @@
 }
 #parent{
   position: relative;
+  width: 1500px;
 }
 #overlay{
   position: absolute;
diff --git a/UI-Project/src/views/TL/Temperedlayout/Temperedlayout.vue b/UI-Project/src/views/TL/Temperedlayout/Temperedlayout.vue
index 9a6c97a..e1edb80 100644
--- a/UI-Project/src/views/TL/Temperedlayout/Temperedlayout.vue
+++ b/UI-Project/src/views/TL/Temperedlayout/Temperedlayout.vue
@@ -60,7 +60,7 @@
     CanvaDraws(id,Datas,StoveCount) {
         //var StoveCount=43;//鐐夋暟
         var ArrangementMode='linefeed';//鎺掑竷鏂瑰紡锛歭inefeed(鎹㈣) /Wholeline  鏁磋
-        var RowMaxCount=4;//姣忚鏈�澶氭樉绀虹殑鍥炬暟
+        var RowMaxCount=3;//姣忚鏈�澶氭樉绀虹殑鍥炬暟
         var StoveWidth=3000; //瀹為檯鐐夊 2850
         var StoveLength=5500;//瀹為檯鐐夐暱 5000
         var StoveColor='#CFC8C5';//鐐夊瓙鑳屾櫙棰滆壊
diff --git a/UI-Project/vite.config.js b/UI-Project/vite.config.js
index d4d6ee2..fb950f2 100644
--- a/UI-Project/vite.config.js
+++ b/UI-Project/vite.config.js
@@ -1,6 +1,6 @@
-import { fileURLToPath, URL } from 'node:url'
+import {fileURLToPath, URL} from 'node:url'
 
-import { defineConfig } from 'vite'
+import {defineConfig} from 'vite'
 import vue from '@vitejs/plugin-vue'
 import ReactivityTransform from '@vue-macros/reactivity-transform/vite'
 
@@ -22,9 +22,9 @@
     https: false,
     proxy: {
       '/api': {
-        target: 'http://localhost:8080/mesModuleTools',
+        target: 'http://localhost:8081/',
         changeOrigin: true,
-        rewrite: (path) => path.replace(/^\/api/, '/mesModuleTools'),
+        rewrite: (path) => path.replace(/^\/api/, '/'),
       },
       '/api2': {
         target: 'http://localhost:8081/mesModuleTools',
diff --git a/hangzhoumesParent/common/pom.xml b/hangzhoumesParent/common/pom.xml
index 874e97e..82e9685 100644
--- a/hangzhoumesParent/common/pom.xml
+++ b/hangzhoumesParent/common/pom.xml
@@ -13,7 +13,7 @@
     <packaging>pom</packaging>
     <modules>
         <module>servicebase</module>
-<!--        <module>springsecurity</module>-->
+        <module>springsecurity</module>
     </modules>
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -43,6 +43,12 @@
         <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.2.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
             <version>3.2.0</version>
         </dependency>
 
@@ -98,6 +104,12 @@
             <groupId>org.apache.velocity</groupId>
             <artifactId>velocity-engine-core</artifactId>
             <version>2.0</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.alibaba</groupId>
+                    <artifactId>fastjson</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <dependency>
             <groupId>com.alibaba</groupId>
@@ -105,28 +117,17 @@
             <version>1.1.8</version>
         </dependency>
 
-        <!--        鏁版嵁搴撴枃妗�-->
-        <dependency>
-            <groupId>com.alibaba</groupId>
-            <artifactId>fastjson</artifactId>
-            <version>1.2.60</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.poi</groupId>
-            <artifactId>poi</artifactId>
-            <version>3.17</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.poi</groupId>
-            <artifactId>poi-ooxml</artifactId>
-            <version>3.17</version>
-        </dependency>
-
         <!--  鏁版嵁搴撹璁℃枃妗g敓鎴愬伐鍏�-->
         <dependency>
             <groupId>cn.smallbun.screw</groupId>
             <artifactId>screw-core</artifactId>
             <version>1.0.5</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.alibaba</groupId>
+                    <artifactId>fastjson</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <!--        2.0~2.2	Knife4j 2.0.0 ~ 2.0.6-->
         <!--        <dependency>-->
@@ -146,17 +147,6 @@
             <version>2.7.0</version>
         </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>
@@ -174,15 +164,13 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-redis</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.springframework.session</groupId>
-            <artifactId>spring-session-data-redis</artifactId>
-        </dependency>
 
         <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-security</artifactId>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.33</version>
         </dependency>
+
     </dependencies>
 
 
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/InterceptorConfig.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/InterceptorConfig.java
index 39ffa21..a5ad9af 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/InterceptorConfig.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/InterceptorConfig.java
@@ -2,16 +2,17 @@
 
 import com.mes.common.interceptor.JwtInterceptor;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
 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)
@@ -19,11 +20,26 @@
                 .excludePathPatterns("/user/login",
                         "/user/register",
                         "/swagger-resources/**"
-                        ,"/webjars/**"
-                        ,"/v2/**"
-                        ,"/swagger-ui.html/**"
-                        ,"/swagger-ui.html#/**");
+                        , "/webjars/**"
+                        , "/v2/**"
+                        , "/swagger-ui.html/**"
+                        , "/swagger-ui.html#/**");
     }
 
+    @Override
+    public void addCorsMappings(CorsRegistry registry) {
+        // 璁剧疆鍏佽璺ㄥ煙鐨勮矾寰�
+        registry.addMapping("/**")
+                // 璁剧疆鍏佽璺ㄥ煙璇锋眰鐨勫煙鍚�
+//                .allowedOriginPatterns("*")
+                // 鏄惁鍏佽cookie
+                .allowCredentials(true)
+                // 璁剧疆鍏佽鐨勮姹傛柟寮�
+                .allowedMethods("GET", "POST", "DELETE", "PUT")
+                // 璁剧疆鍏佽鐨刪eader灞炴��
+                .allowedHeaders("*")
+                // 璺ㄥ煙鍏佽鏃堕棿
+                .maxAge(3600);
+    }
 
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/RedisTemplateConfig.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/RedisTemplateConfig.java
deleted file mode 100644
index d5d4756..0000000
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/RedisTemplateConfig.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.mes.common.config;
-
-import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.PropertyAccessor;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.data.redis.connection.RedisConnectionFactory;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
-import org.springframework.data.redis.serializer.RedisSerializer;
-import org.springframework.data.redis.serializer.StringRedisSerializer;
-
-/**
- * @Author : zhoush
- * @Date: 2024/4/8 16:04
- * @Description:
- */
-@Configuration
-public class RedisTemplateConfig {
-    @Bean
-    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
-        RedisTemplate<String, Object> template = new RedisTemplate<>();
-        RedisSerializer<String> redisSerializer = new StringRedisSerializer();
-        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
-        ObjectMapper om = new ObjectMapper();
-        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
-        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
-        jackson2JsonRedisSerializer.setObjectMapper(om);
-        template.setConnectionFactory(factory);
-        //key搴忓垪鍖栨柟寮�
-        template.setKeySerializer(redisSerializer);
-        //value搴忓垪鍖�
-        template.setValueSerializer(jackson2JsonRedisSerializer);
-        //value hashmap搴忓垪鍖�
-        template.setHashValueSerializer(jackson2JsonRedisSerializer);
-        return template;
-    }
-}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/SessionConfig.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/SessionConfig.java
deleted file mode 100644
index 84bb05c..0000000
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/SessionConfig.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.mes.common.config;
-
-import com.alibaba.fastjson.support.spring.GenericFastJsonRedisSerializer;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.data.redis.serializer.RedisSerializer;
-
-/**
- * @Author : zhoush
- * @Date: 2024/4/1 13:16
- * @Description:spring session 浣跨敤 json 搴忓垪鍖栨満鍒�
- */
-@Configuration
-public class SessionConfig {
-    @Bean
-    public RedisSerializer<Object> springSessionDefaultRedisSerializer() {
-        return new GenericFastJsonRedisSerializer();
-    }
-}
-
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/PLCAutoMes.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PLCAutoMes.java
similarity index 94%
rename from hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/PLCAutoMes.java
rename to hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PLCAutoMes.java
index a21fed9..cd418c5 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/PLCAutoMes.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PLCAutoMes.java
@@ -1,14 +1,11 @@
-package com.mes.common;
+package com.mes.device;
 
-import com.mes.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 {
 
@@ -66,7 +63,7 @@
             // System.out.println(jsonFilePath);
 
           // readAndUpdateWordValues(PlcReadObject);
-            readAndUpdateWordValues(PlcMesObject);
+            InitUtil.readAndUpdateWordValues(PlcMesObject);
 //      readAndUpdateWordValues(PlcframeObject);
             // readAndUpdateWordValues(PlcframeObject);
 
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/device/PlcBitInfo.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcBitInfo.java
similarity index 100%
rename from hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/device/PlcBitInfo.java
rename to hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcBitInfo.java
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/device/PlcBitObject.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcBitObject.java
similarity index 100%
rename from hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/device/PlcBitObject.java
rename to hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcBitObject.java
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/device/PlcParameterInfo.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterInfo.java
similarity index 100%
rename from hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/device/PlcParameterInfo.java
rename to hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterInfo.java
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/device/PlcParameterObject.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterObject.java
similarity index 100%
rename from hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/device/PlcParameterObject.java
rename to hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterObject.java
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/ExportToWord.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/ExportToWord.java
deleted file mode 100644
index e380bcc..0000000
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/ExportToWord.java
+++ /dev/null
@@ -1,313 +0,0 @@
-package com.mes.tools;
-
-/**
- * @Author : zhoush
- * @Date: 2024/3/26 8:16
- * @Description:
- */
-import com.alibaba.fastjson.JSONObject;
-import org.apache.poi.xwpf.usermodel.XWPFDocument;
-import org.apache.poi.xwpf.usermodel.XWPFParagraph;
-import org.apache.poi.xwpf.usermodel.XWPFRun;
-import org.apache.poi.xwpf.usermodel.XWPFTable;
-
-import java.io.FileOutputStream;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.text.SimpleDateFormat;
-import java.util.*;
-
-/**
- * @Method: 鏁版嵁搴撹〃缁撴瀯word瀵煎嚭
- * @Description: 鏁版嵁搴撹〃缁撴瀯word瀵煎嚭
- **/
-public class ExportToWord {
-
-    //    private final String DRIVER = "com.mysql.jdbc.Driver";  //MySQL5.0
-    private final String DRIVER = "com.mysql.cj.jdbc.Driver";
-    private final String URL = "jdbc:mysql://10.153.19.150:3306/hangzhoumes"+"?serverTimezone=GMT%2B8";
-    //鏁版嵁搴撹处鍙�
-    private final String USER_NAME = "root";
-    //鏁版嵁搴撳瘑鐮�
-    private final String PASS_WORD = "beibo.123/";
-    //瀵瑰簲鏁版嵁搴�  姝ゅ鏄綘鏈湴瀵瑰簲鐨勬暟鎹簱鍚嶇О
-    private final String database = "hangzhoumes";
-    //瀵瑰簲杈撳嚭鍦板潃
-    private final String reportPath = "E:\\椤圭洰\\椤圭洰鏂囨。\\鏉窞鍒╂潵\\";
-
-    // 鍚姩鏂规硶
-    public static void main(String[] args) {
-
-        try {
-            ExportToWord rd = new ExportToWord ();
-            rd.report();
-        }catch (Exception e){
-            System.out.println("寮傚父锛氳嚜琛屽鐞嗘垨鑰呰仈绯绘垜閮介様浠�.");
-            e.printStackTrace();
-        }
-
-    }
-
-
-    Connection conn = null;
-    PreparedStatement pst = null;
-    ResultSet rs = null;
-
-    // 鑾峰彇鏌ヨ鏁版嵁
-    public Map<String,List<TableColumn>> getData() throws Exception{
-
-        System.out.println("鏁版嵁鐢熸垚涓紝璇风◢绛�...");
-        Map<String,List<TableColumn>> map = new HashMap<>();
-
-        List<Table> tables = getTables(database);
-
-        for (Table table : tables) {
-            List<TableColumn> columns = getColumns(database,table.getTableName());
-            map.put(table.getTableName(),columns);
-        }
-
-        return map;
-
-    }
-
-
-    // 鑾峰彇琛ㄥ瓧娈典俊鎭�
-    public List<TableColumn>  getColumns(String database,String tableName) throws Exception{
-
-        String sql = "select column_name,column_comment,column_type,is_nullable, column_key from information_schema.columns  where  table_schema=? and table_name=? ";// group by column_name
-        ResultSet rs = getConn(database,tableName,sql);
-
-        List<TableColumn> tableColumns = new ArrayList<>();
-
-        while (rs.next()){
-
-            TableColumn tc = new TableColumn();
-            tc.setTableName(tableName);
-            tc.setColumnName(rs.getString("column_name"));
-            tc.setColumnType(rs.getString("column_type"));
-            tc.setColumnKey(rs.getString("column_key"));
-            tc.setIsNullable(rs.getString("is_nullable"));
-            tc.setColumnComment(rs.getString("column_comment"));
-            tableColumns.add(tc);
-
-        }
-
-        releaseConn();
-
-        return tableColumns;
-
-    }
-
-
-    // 鑾峰彇鎵�鏈夎〃
-    public List<Table> getTables(String database) throws Exception{
-
-        String  sql = "select table_name,table_comment from information_schema.tables where table_schema=?";
-        ResultSet rs = getConn(database, "",sql);
-
-        List<Table> tables = new ArrayList<>();
-        while(rs.next()){
-            Table table = new Table();
-            table.setTableName(rs.getString( "table_name"));
-            table.setTableCommont(rs.getString("table_comment"));
-            tables.add(table);
-        }
-
-        releaseConn();
-        return  tables;
-
-    }
-
-    // 杩炴帴鏁版嵁搴�
-    private ResultSet getConn(String dataBase,String tableName,String sql){
-
-        try{
-
-            Class.forName(DRIVER);
-            conn = DriverManager.getConnection(URL,USER_NAME,PASS_WORD);
-            pst = conn.prepareStatement(sql);
-            pst.setString(1,dataBase);
-            if(!"".equals(tableName)){
-                pst.setString(2,tableName);
-            }
-            rs = pst.executeQuery();
-            return  rs;
-
-        }catch (Exception e){
-            e.printStackTrace();
-        }
-
-        return null;
-
-    }
-
-    // 閲婃斁杩炴帴
-    private void  releaseConn(){
-        try{
-            if(rs != null ){
-                rs.close();
-            }
-            if(pst != null){
-                pst.close();
-            }
-            if(conn != null){
-                conn.close();
-            }
-        }catch (Exception e){
-            e.printStackTrace();
-        }
-    }
-
-
-    // 瀵煎嚭鏁版嵁
-    public void report()  throws  Exception{
-
-        Map<String, List<TableColumn>> data = this.getData();       // 琛ㄥ悕锛氳〃浣�
-        List<Table> tables = this.getTables(this.database);         // 琛ㄤ綋(鍒楀悕銆佺被鍨嬨�佹敞閲�)
-        Map<String,String> tableMap = new HashMap<>();              // 琛ㄥ悕:涓枃鍚�
-
-        JSONObject json = new JSONObject((HashMap)data);
-
-        for (Table table : tables) {
-            tableMap.put(table.getTableName(),table.getTableCommont());
-        }
-
-        // 鏋勫缓琛ㄦ牸鏁版嵁
-        XWPFDocument document = new XWPFDocument();
-
-        Integer i = 1;
-        for (String tableName : data.keySet()) {
-
-            XWPFParagraph paragraph = document.createParagraph();                // 鍒涘缓鏍囬瀵硅薄
-            XWPFRun run = paragraph.createRun();                                 // 鍒涘缓鏂囨湰瀵硅薄
-            run.setText((i+"銆�"+tableName+"    "+tableMap.get(tableName)));      // 鏍囬鍚嶇О
-            run.setFontSize(14);                                                 // 瀛椾綋澶у皬
-            run.setBold(true);                                                   // 瀛椾綋鍔犵矖
-
-            int j = 0;
-            XWPFTable table = document.createTable(data.get(tableName).size()+1,5);
-            // 绗竴琛�
-            table.setCellMargins(50,400,50,400);
-            table.getRow(j).getCell(0).setText("瀛楁鍚嶇О");
-            table.getRow(j).getCell(1).setText("瀛楁绫诲瀷");
-            table.getRow(j).getCell(2).setText("绾︽潫");
-            table.getRow(j).getCell(3).setText("涓虹┖");
-            table.getRow(j).getCell(4).setText("瀛楁鍚箟");
-            j++;
-
-            for (TableColumn tableColumn : data.get(tableName)) {
-
-                table.getRow(j).getCell(0).setText(tableColumn.getColumnName());
-                table.getRow(j).getCell(1).setText(tableColumn.getColumnType());
-                table.getRow(j).getCell(2).setText(tableColumn.getColumnKey());
-                table.getRow(j).getCell(3).setText(tableColumn.getIsNullable());
-                table.getRow(j).getCell(4).setText(tableColumn.getColumnComment());
-                j++;
-
-            }
-            i++;
-        }
-
-        // 鏂囨。杈撳嚭
-        FileOutputStream out = new FileOutputStream(reportPath + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()).toString()+"_"+database +".docx");
-        document.write(out);
-        out.close();
-        System.out.println("Word鐢熸垚瀹屾垚!!!");
-
-    }
-
-    // 琛�
-    class Table{
-
-        private String tableName;
-
-        private String tableCommont;
-
-        public String getTableName() {
-            return tableName;
-        }
-
-        public void setTableName(String tableName) {
-            this.tableName = tableName;
-        }
-
-        public String getTableCommont() {
-            return tableCommont;
-        }
-
-        public void setTableCommont(String tableCommont) {
-            this.tableCommont = tableCommont;
-        }
-
-    }
-
-    // 琛ㄥ垪淇℃伅
-    class TableColumn{
-        // 琛ㄥ悕
-        private String tableName;
-        // 瀛楁鍚�
-        private String columnName;
-        // 瀛楁绫诲瀷
-        private String columnType;
-        // 瀛楁娉ㄩ噴
-        private String columnComment;
-        // 鍙惁涓虹┖
-        private String isNullable;
-        // 绾︽潫
-        private String columnKey;
-
-        public String getTableName() {
-            return tableName;
-        }
-
-        public void setTableName(String tableName) {
-            this.tableName = tableName;
-        }
-
-        public String getColumnName() {
-            return columnName;
-        }
-
-        public void setColumnName(String columnName) {
-            this.columnName = columnName;
-        }
-
-        public String getColumnType() {
-            return columnType;
-        }
-
-        public void setColumnType(String columnType) {
-            this.columnType = columnType;
-        }
-
-        public String getColumnComment() {
-            return columnComment;
-        }
-
-        public void setColumnComment(String columnComment) {
-            this.columnComment = columnComment;
-        }
-
-        public String getIsNullable() {
-            return isNullable;
-        }
-
-        public void setIsNullable(String isNullable) {
-            this.isNullable = isNullable;
-        }
-
-        public String getColumnKey() {
-            return columnKey;
-        }
-
-        public void setColumnKey(String columnKey) {
-            this.columnKey = columnKey;
-        }
-
-    }
-
-
-}
-
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/tools/InitUtil.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/InitUtil.java
similarity index 99%
rename from hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/tools/InitUtil.java
rename to hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/InitUtil.java
index 7cd4205..8888513 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/tools/InitUtil.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/InitUtil.java
@@ -1,128 +1,128 @@
-package com.mes.tools;
-
-import cn.hutool.json.JSONArray;
-import cn.hutool.json.JSONObject;
-import com.mes.device.PlcBitInfo;
-import com.mes.device.PlcBitObject;
-import com.mes.device.PlcParameterInfo;
-import com.mes.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);
-    }
-
-
-
-}
+package com.mes.tools;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import com.mes.device.PlcBitInfo;
+import com.mes.device.PlcBitObject;
+import com.mes.device.PlcParameterInfo;
+import com.mes.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/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/TokenTools.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/TokenTools.java
deleted file mode 100644
index bb35843..0000000
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/TokenTools.java
+++ /dev/null
@@ -1,22 +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/hangzhoumesParent/common/springsecurity/pom.xml b/hangzhoumesParent/common/springsecurity/pom.xml
index cca1425..f4e6eed 100644
--- a/hangzhoumesParent/common/springsecurity/pom.xml
+++ b/hangzhoumesParent/common/springsecurity/pom.xml
@@ -23,15 +23,16 @@
             <version>1.0-SNAPSHOT</version>
         </dependency>
         <!-- Spring Security渚濊禆 -->
-<!--        <dependency>-->
-<!--            <groupId>org.springframework.boot</groupId>-->
-<!--            <artifactId>spring-boot-starter-security</artifactId>-->
-<!--        </dependency>-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-security</artifactId>
+        </dependency>
 
-<!--        <dependency>-->
-<!--            <groupId>io.jsonwebtoken</groupId>-->
-<!--            <artifactId>jjwt</artifactId>-->
-<!--        </dependency>-->
+        <dependency>
+            <groupId>io.jsonwebtoken</groupId>
+            <artifactId>jjwt</artifactId>
+            <version>0.9.0</version>
+        </dependency>
     </dependencies>
 
 </project>
\ No newline at end of file
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/config/MyCorsConfig.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/config/MyCorsConfig.java
new file mode 100644
index 0000000..521c147
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/config/MyCorsConfig.java
@@ -0,0 +1,46 @@
+package com.mes.common.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.reactive.CorsWebFilter;
+import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/3/25 14:13
+ * @Description:
+ */
+@Configuration
+public class MyCorsConfig {
+
+    @Bean
+    public WebMvcConfigurer corsConfigurer() {
+        return new WebMvcConfigurer() {
+            @Override
+            public void addCorsMappings(CorsRegistry registry) {
+                registry.addMapping("/**");
+            }
+        };
+    }
+
+    @Bean
+    public CorsWebFilter corsWebFilter() {
+        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+
+        CorsConfiguration corsConfiguration = new CorsConfiguration();
+
+        //1銆侀厤缃法鍩�
+        corsConfiguration.addAllowedHeader("*");
+        corsConfiguration.addAllowedMethod("*");
+        corsConfiguration.addAllowedOrigin("*");
+        corsConfiguration.setAllowCredentials(true);
+
+        source.registerCorsConfiguration("/**", corsConfiguration);
+        return new CorsWebFilter(source);
+    }
+
+
+}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/config/RedisConfig.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/config/RedisConfig.java
new file mode 100644
index 0000000..e469272
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/config/RedisConfig.java
@@ -0,0 +1,37 @@
+package com.mes.common.config;
+
+import com.mes.common.utils.FastJsonRedisSerializer;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/4/9 19:13
+ * @Description:
+ */
+@Configuration
+public class RedisConfig {
+
+    @Bean
+    @SuppressWarnings(value = {"unchecked", "rawtypes"})
+    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
+        RedisTemplate<Object, Object> template = new RedisTemplate<>();
+        template.setConnectionFactory(connectionFactory);
+
+        FastJsonRedisSerializer serializer = new FastJsonRedisSerializer(Object.class);
+
+        // 浣跨敤StringRedisSerializer鏉ュ簭鍒楀寲鍜屽弽搴忓垪鍖杛edis鐨刱ey鍊�
+        template.setKeySerializer(new StringRedisSerializer());
+        template.setValueSerializer(serializer);
+
+        // Hash鐨刱ey涔熼噰鐢⊿tringRedisSerializer鐨勫簭鍒楀寲鏂瑰紡
+        template.setHashKeySerializer(new StringRedisSerializer());
+        template.setHashValueSerializer(serializer);
+
+        template.afterPropertiesSet();
+        return template;
+    }
+}
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
new file mode 100644
index 0000000..e4a543e
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/config/TokenWebSecurityConfig.java
@@ -0,0 +1,53 @@
+package com.mes.common.config;
+
+
+import com.mes.common.filter.JwtAuthenticationTokenFilter;
+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.WebSecurityConfigurerAdapter;
+import org.springframework.security.config.http.SessionCreationPolicy;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
+
+@Configuration
+//@EnableWebSecurity
+@EnableGlobalMethodSecurity(prePostEnabled = true)
+public class TokenWebSecurityConfig extends WebSecurityConfigurerAdapter {
+    @Autowired
+    private JwtAuthenticationTokenFilter jwtAuthenticationTokenFilter;
+
+    @Bean
+    public PasswordEncoder passwordEncoder() {
+        return new BCryptPasswordEncoder();
+    }
+
+    /**
+     * 閰嶇疆杩囨护瑙勫垯
+     */
+    @Override
+    protected void configure(HttpSecurity http) throws Exception {
+        http
+                //鍏抽棴csrf
+                .csrf().disable()
+                //涓嶉�氳繃Session鑾峰彇SecurityContext
+                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
+                .and()
+                .authorizeRequests()
+                // 瀵逛簬鐧诲綍鎺ュ彛 鍏佽鍖垮悕璁块棶
+                .antMatchers("/userinfo/login").anonymous()
+                .antMatchers("/hello").permitAll()
+                // 闄や笂闈㈠鐨勬墍鏈夎姹傚叏閮ㄩ渶瑕侀壌鏉冭璇�
+                .anyRequest().permitAll();
+//        http.addFilterBefore(jwtAuthenticationTokenFilter, UsernamePasswordAuthenticationFilter.class);
+    }
+
+    @Bean
+    @Override
+    public AuthenticationManager authenticationManagerBean() throws Exception {
+        return super.authenticationManagerBean();
+    }
+}
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
new file mode 100644
index 0000000..5be6d66
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java
@@ -0,0 +1,76 @@
+package com.mes.common.filter;
+
+import com.mes.common.utils.JwtUtil;
+import com.mes.common.utils.RedisUtil;
+import com.mes.menu.mapper.SysMenuMapper;
+import com.mes.userinfo.entity.LoginUser;
+import io.jsonwebtoken.Claims;
+import org.springframework.beans.factory.annotation.Autowired;
+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.stereotype.Component;
+import org.springframework.util.StringUtils;
+import org.springframework.web.filter.OncePerRequestFilter;
+
+import javax.annotation.Resource;
+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.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/4/10 9:42
+ * @Description:
+ */
+@Component
+public class JwtAuthenticationTokenFilter extends OncePerRequestFilter {
+    // 姝ゅ瑙i噴涓轰粈涔堜笉鍘诲疄鐜癋ilter鎺ュ彛锛屽洜涓哄湪鏌愪簺鎯呭喌涓嬩細杩囨护涓ゆ锛屾墽琛屼袱娆ilter閲岄潰鐨勬柟娉曪紝鎵�浠ユ垜浠�夋嫨缁ф壙SpringSecurity涓殑OncePerRequestFilter
+    @Autowired
+    private RedisUtil redisUtil;
+
+    @Resource
+    private SysMenuMapper menuMapper;
+
+    @Override
+    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
+        //鑾峰彇token
+        String token = request.getHeader("token");
+        if (!StringUtils.hasText(token)) {
+            //鏀捐
+            filterChain.doFilter(request, response);
+            return; // 姝ゅ鍔犱笂return濂藉鏄悗闈㈢粨鏋滆繑鍥炵殑鏃跺�欏氨涓嶄細鍐嶈蛋涓�閬嶆杩囨护鍣ㄧ殑鏂规硶浜�
+        }
+        //瑙f瀽token
+        String userid;
+        try {
+            Claims claims = JwtUtil.parseJWT(token);
+            userid = claims.getSubject();
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RuntimeException("token闈炴硶");
+        }
+        //浠巖edis涓幏鍙栫敤鎴蜂俊鎭�
+        String redisKey = "login:" + userid;
+        LoginUser loginUser = redisUtil.getCacheObject(redisKey);
+        if (Objects.isNull(loginUser)) {
+            throw new RuntimeException("鐢ㄦ埛鏈櫥褰�");
+        }
+        //瀛樺叆SecurityContextHolder锛屼互渚涘悗闈㈢殑杩囨护鍣ㄤ娇鐢�
+        List<String> permissionKeyList = menuMapper.selectPermsByUserId(Long.parseLong(userid));
+        List<GrantedAuthority> authorities = permissionKeyList.stream().
+                map(SimpleGrantedAuthority::new)
+                .collect(Collectors.toList());
+        UsernamePasswordAuthenticationToken authenticationToken =
+                new UsernamePasswordAuthenticationToken(loginUser, null, authorities);
+        SecurityContextHolder.getContext().setAuthentication(authenticationToken);
+        //鏀捐
+        filterChain.doFilter(request, response);
+    }
+}
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
new file mode 100644
index 0000000..302ff52
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/AccessDeniedHandlerImpl.java
@@ -0,0 +1,30 @@
+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
new file mode 100644
index 0000000..6cf146f
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/AuthenticationEntryPointImpl.java
@@ -0,0 +1,29 @@
+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/utils/FastJsonRedisSerializer.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/FastJsonRedisSerializer.java
new file mode 100644
index 0000000..f8ab417
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/FastJsonRedisSerializer.java
@@ -0,0 +1,55 @@
+package com.mes.common.utils;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.parser.ParserConfig;
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.fasterxml.jackson.databind.JavaType;
+import com.fasterxml.jackson.databind.type.TypeFactory;
+import org.springframework.data.redis.serializer.RedisSerializer;
+import org.springframework.data.redis.serializer.SerializationException;
+
+import java.nio.charset.Charset;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/4/11 15:28
+ * @Description:
+ */
+public class FastJsonRedisSerializer<T> implements RedisSerializer<T> {
+
+    public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
+
+    private Class<T> clazz;
+
+    static {
+        ParserConfig.getGlobalInstance().setAutoTypeSupport(true);
+    }
+
+    public FastJsonRedisSerializer(Class<T> clazz) {
+        super();
+        this.clazz = clazz;
+    }
+
+    @Override
+    public byte[] serialize(T t) throws SerializationException {
+        if (t == null) {
+            return new byte[0];
+        }
+        return JSON.toJSONString(t, SerializerFeature.WriteClassName).getBytes(DEFAULT_CHARSET);
+    }
+
+    @Override
+    public T deserialize(byte[] bytes) throws SerializationException {
+        if (bytes == null || bytes.length <= 0) {
+            return null;
+        }
+        String str = new String(bytes, DEFAULT_CHARSET);
+
+        return JSON.parseObject(str, clazz);
+    }
+
+
+    protected JavaType getJavaType(Class<?> clazz) {
+        return TypeFactory.defaultInstance().constructType(clazz);
+    }
+}
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
new file mode 100644
index 0000000..8c8f0d9
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/JwtUtil.java
@@ -0,0 +1,120 @@
+package com.mes.common.utils;
+
+
+import io.jsonwebtoken.Claims;
+import io.jsonwebtoken.JwtBuilder;
+import io.jsonwebtoken.Jwts;
+import io.jsonwebtoken.SignatureAlgorithm;
+
+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:
+ */
+public class JwtUtil {
+
+    //鏈夋晥鏈熶负
+    public static final Long JWT_TTL = 60 * 60 * 1000L;// 60 * 60 *1000  涓�涓皬鏃�
+    //璁剧疆绉橀挜鏄庢枃
+    public static final String JWT_KEY = "sangeng";
+
+    public static String getUUID() {
+        String token = UUID.randomUUID().toString().replaceAll("-", "");
+        return token;
+    }
+
+    /**
+     * 鐢熸垚jtw
+     *
+     * @param subject token涓瀛樻斁鐨勬暟鎹紙json鏍煎紡锛�
+     * @return
+     */
+    public static String createJWT(String subject) {
+        JwtBuilder builder = getJwtBuilder(subject, null, getUUID());// 璁剧疆杩囨湡鏃堕棿
+        return builder.compact();
+    }
+
+    /**
+     * 鐢熸垚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);
+    }
+
+    /**
+     * 鍒涘缓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();
+    }
+
+    public static void main(String[] args) throws Exception {
+        String token = "eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJjYWM2ZDVhZi1mNjVlLTQ0MDAtYjcxMi0zYWEwOGIyOTIwYjQiLCJzdWIiOiJzZyIsImlzcyI6InNnIiwiaWF0IjoxNjM4MTA2NzEyLCJleHAiOjE2MzgxMTAzMTJ9.JVsSbkP94wuczb4QryQbAke3ysBDIL5ou8fWsbt_ebg";
+        Claims claims = parseJWT(token);
+        System.out.println(claims);
+    }
+
+    /**
+     * 鐢熸垚鍔犲瘑鍚庣殑绉橀挜 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
new file mode 100644
index 0000000..e097010
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/RedisUtil.java
@@ -0,0 +1,220 @@
+package com.mes.common.utils;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.BoundSetOperations;
+import org.springframework.data.redis.core.HashOperations;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.ValueOperations;
+import org.springframework.stereotype.Component;
+
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * spring redis 宸ュ叿绫�
+ **/
+@Component
+public class RedisUtil {
+    @Autowired
+    public RedisTemplate redisTemplate;
+
+    /**
+     * 缂撳瓨鍩烘湰鐨勫璞★紝Integer銆丼tring銆佸疄浣撶被绛�
+     *
+     * @param key   缂撳瓨鐨勯敭鍊�
+     * @param value 缂撳瓨鐨勫��
+     */
+    public <T> void setCacheObject(final String key, final T value) {
+        redisTemplate.opsForValue().set(key, value);
+    }
+
+    /**
+     * 缂撳瓨鍩烘湰鐨勫璞★紝Integer銆丼tring銆佸疄浣撶被绛�
+     *
+     * @param key      缂撳瓨鐨勯敭鍊�
+     * @param value    缂撳瓨鐨勫��
+     * @param timeout  鏃堕棿
+     * @param timeUnit 鏃堕棿棰楃矑搴�
+     */
+    public <T> void setCacheObject(final String key, final T value, final Integer timeout, final TimeUnit timeUnit) {
+        redisTemplate.opsForValue().set(key, value, timeout, timeUnit);
+    }
+
+    /**
+     * 璁剧疆鏈夋晥鏃堕棿
+     *
+     * @param key     Redis閿�
+     * @param timeout 瓒呮椂鏃堕棿
+     * @return true=璁剧疆鎴愬姛锛沠alse=璁剧疆澶辫触
+     */
+    public boolean expire(final String key, final long timeout) {
+        return expire(key, timeout, TimeUnit.SECONDS);
+    }
+
+    /**
+     * 璁剧疆鏈夋晥鏃堕棿
+     *
+     * @param key     Redis閿�
+     * @param timeout 瓒呮椂鏃堕棿
+     * @param unit    鏃堕棿鍗曚綅
+     * @return true=璁剧疆鎴愬姛锛沠alse=璁剧疆澶辫触
+     */
+    public boolean expire(final String key, final long timeout, final TimeUnit unit) {
+        return redisTemplate.expire(key, timeout, unit);
+    }
+
+    /**
+     * 鑾峰緱缂撳瓨鐨勫熀鏈璞°��
+     *
+     * @param key 缂撳瓨閿��
+     * @return 缂撳瓨閿�煎搴旂殑鏁版嵁
+     */
+    public <T> T getCacheObject(final String key) {
+        ValueOperations<String, T> operation = redisTemplate.opsForValue();
+        return operation.get(key);
+    }
+
+    /**
+     * 鍒犻櫎鍗曚釜瀵硅薄
+     *
+     * @param key
+     */
+    public boolean deleteObject(final String key) {
+        return redisTemplate.delete(key);
+    }
+
+    /**
+     * 鍒犻櫎闆嗗悎瀵硅薄
+     *
+     * @param collection 澶氫釜瀵硅薄
+     * @return
+     */
+    public long deleteObject(final Collection collection) {
+        return redisTemplate.delete(collection);
+    }
+
+    /**
+     * 缂撳瓨List鏁版嵁
+     *
+     * @param key      缂撳瓨鐨勯敭鍊�
+     * @param dataList 寰呯紦瀛樼殑List鏁版嵁
+     * @return 缂撳瓨鐨勫璞�
+     */
+    public <T> long setCacheList(final String key, final List<T> dataList) {
+        Long count = redisTemplate.opsForList().rightPushAll(key, dataList);
+        return count == null ? 0 : count;
+    }
+
+    /**
+     * 鑾峰緱缂撳瓨鐨刲ist瀵硅薄
+     *
+     * @param key 缂撳瓨鐨勯敭鍊�
+     * @return 缂撳瓨閿�煎搴旂殑鏁版嵁
+     */
+    public <T> List<T> getCacheList(final String key) {
+        return redisTemplate.opsForList().range(key, 0, -1);
+    }
+
+    /**
+     * 缂撳瓨Set
+     *
+     * @param key     缂撳瓨閿��
+     * @param dataSet 缂撳瓨鐨勬暟鎹�
+     * @return 缂撳瓨鏁版嵁鐨勫璞�
+     */
+    public <T> BoundSetOperations<String, T> setCacheSet(final String key, final Set<T> dataSet) {
+        BoundSetOperations<String, T> setOperation = redisTemplate.boundSetOps(key);
+        Iterator<T> it = dataSet.iterator();
+        while (it.hasNext()) {
+            setOperation.add(it.next());
+        }
+        return setOperation;
+    }
+
+    /**
+     * 鑾峰緱缂撳瓨鐨剆et
+     *
+     * @param key
+     * @return
+     */
+    public <T> Set<T> getCacheSet(final String key) {
+        return redisTemplate.opsForSet().members(key);
+    }
+
+    /**
+     * 缂撳瓨Map
+     *
+     * @param key
+     * @param dataMap
+     */
+    public <T> void setCacheMap(final String key, final Map<String, T> dataMap) {
+        if (dataMap != null) {
+            redisTemplate.opsForHash().putAll(key, dataMap);
+        }
+    }
+
+    /**
+     * 鑾峰緱缂撳瓨鐨凪ap
+     *
+     * @param key
+     * @return
+     */
+    public <T> Map<String, T> getCacheMap(final String key) {
+        return redisTemplate.opsForHash().entries(key);
+    }
+
+    /**
+     * 寰�Hash涓瓨鍏ユ暟鎹�
+     *
+     * @param key   Redis閿�
+     * @param hKey  Hash閿�
+     * @param value 鍊�
+     */
+    public <T> void setCacheMapValue(final String key, final String hKey, final T value) {
+        redisTemplate.opsForHash().put(key, hKey, value);
+    }
+
+    /**
+     * 鑾峰彇Hash涓殑鏁版嵁
+     *
+     * @param key  Redis閿�
+     * @param hKey Hash閿�
+     * @return Hash涓殑瀵硅薄
+     */
+    public <T> T getCacheMapValue(final String key, final String hKey) {
+        HashOperations<String, String, T> opsForHash = redisTemplate.opsForHash();
+        return opsForHash.get(key, hKey);
+    }
+
+    /**
+     * 鍒犻櫎Hash涓殑鏁版嵁
+     *
+     * @param key
+     * @param hkey
+     */
+    public void delCacheMapValue(final String key, final String hkey) {
+        HashOperations hashOperations = redisTemplate.opsForHash();
+        hashOperations.delete(key, hkey);
+    }
+
+    /**
+     * 鑾峰彇澶氫釜Hash涓殑鏁版嵁
+     *
+     * @param key   Redis閿�
+     * @param hKeys Hash閿泦鍚�
+     * @return Hash瀵硅薄闆嗗悎
+     */
+    public <T> List<T> getMultiCacheMapValue(final String key, final Collection<Object> hKeys) {
+        return redisTemplate.opsForHash().multiGet(key, hKeys);
+    }
+
+    /**
+     * 鑾峰緱缂撳瓨鐨勫熀鏈璞″垪琛�
+     *
+     * @param pattern 瀛楃涓插墠缂�
+     * @return 瀵硅薄鍒楄〃
+     */
+    public Collection<String> keys(final String pattern) {
+        return redisTemplate.keys(pattern);
+    }
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/WebUtils.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/WebUtils.java
new file mode 100644
index 0000000..618144d
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/WebUtils.java
@@ -0,0 +1,30 @@
+package com.mes.common.utils;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/4/9 19:16
+ * @Description:
+ */
+public class WebUtils {
+    /**
+     * 灏嗗瓧绗︿覆娓叉煋鍒板鎴风
+     *
+     * @param response 娓叉煋瀵硅薄
+     * @param string   寰呮覆鏌撶殑瀛楃涓�
+     * @return null
+     */
+    public static String renderString(HttpServletResponse response, String string) {
+        try {
+            response.setStatus(200);
+            response.setContentType("application/json");
+            response.setCharacterEncoding("utf-8");
+            response.getWriter().print(string);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+}
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
new file mode 100644
index 0000000..131b179
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/controller/SysMenuController.java
@@ -0,0 +1,39 @@
+package com.mes.menu.controller;
+
+
+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.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 java.util.List;
+
+/**
+ * <p>
+ * 鑿滃崟琛�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+@ApiModel("鑾峰彇鑿滃崟淇℃伅")
+@RestController
+@RequestMapping("/menu/sysMenu")
+public class SysMenuController {
+
+    @Autowired
+    SysMenuService sysMenuService;
+
+    @ApiOperation("鑾峰彇鐢ㄦ埛鏈夋潈闄愮殑鎵�鏈夎彍鍗�")
+    @GetMapping("/list")
+    public Result<List<SysMenu>> getMenuTree() {
+        return Result.success(sysMenuService.getMenuTree());
+    }
+
+}
+
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
new file mode 100644
index 0000000..9ae6597
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/entity/SysMenu.java
@@ -0,0 +1,82 @@
+package com.mes.menu.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 lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SysMenu implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 鑷id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 鐖秈d
+     */
+    private Integer parentId;
+
+    /**
+     * 妯″潡鍚嶇О
+     */
+    private String menuName;
+
+    /**
+     * 鍥炬爣
+     */
+    private String icon;
+
+    /**
+     * 鍦板潃
+     */
+    private String url;
+
+    /**
+     * 璇█绫诲瀷
+     */
+    private String languageType;
+
+    /**
+     * 鐘舵��
+     */
+    private Integer status;
+
+    /**
+     * 鎺掑簭
+     */
+    private String listSort;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private Date createTime;
+
+    /**
+     * 瀛愯彍鍗�
+     */
+    @TableField(exist = false)
+    private List<SysMenu> children;
+
+
+}
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
new file mode 100644
index 0000000..c2fcea5
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/mapper/SysMenuMapper.java
@@ -0,0 +1,19 @@
+package com.mes.menu.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mes.menu.entity.SysMenu;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 鑿滃崟琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+public interface SysMenuMapper extends BaseMapper<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
new file mode 100644
index 0000000..3b77a2e
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/SysMenuService.java
@@ -0,0 +1,19 @@
+package com.mes.menu.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mes.menu.entity.SysMenu;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 鑿滃崟琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+public interface SysMenuService extends IService<SysMenu> {
+
+    List<SysMenu> getMenuTree();
+}
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
new file mode 100644
index 0000000..8527a36
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java
@@ -0,0 +1,67 @@
+package com.mes.menu.service.impl;
+
+import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mes.menu.entity.SysMenu;
+import com.mes.menu.mapper.SysMenuMapper;
+import com.mes.menu.service.SysMenuService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 鑿滃崟琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+@Service
+@Slf4j
+public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> implements SysMenuService {
+
+    @Override
+    public List<SysMenu> getMenuTree() {
+        List<SysMenu> menuList = this.baseMapper.selectList(null);
+        return create(menuList);
+    }
+
+
+    /**
+     * 灏嗘暟鎹簱涓煡璇㈠嚭鏉ョ殑list闆嗗悎浼犲叆姝ゆ柟娉曞嵆鍙幏寰楁帓鎴愭爲褰㈢粨鏋勭殑list闆嗗悎
+     *
+     * @param lists
+     * @return
+     */
+    public List<SysMenu> create(List<SysMenu> lists) {
+        List<SysMenu> deptTreeList = lists.stream()
+                .filter(item -> item.getParentId() == 0)
+                .map(item -> {
+                    item.setChildren(getChildren(item, lists));
+                    return item;
+                }).collect(Collectors.toList());
+        return deptTreeList;
+    }
+
+    /**
+     * 姝ゆ柟娉曞皢琚�掑綊璋冪敤
+     *
+     * @param menu
+     * @param menus
+     * @return
+     */
+    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());
+        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
new file mode 100644
index 0000000..943ff7d
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java
@@ -0,0 +1,20 @@
+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")
+public class SysRoleController {
+
+}
+
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
new file mode 100644
index 0000000..77b3175
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleMenuController.java
@@ -0,0 +1,20 @@
+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/SysRole.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/entity/SysRole.java
new file mode 100644
index 0000000..14fd4a3
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/entity/SysRole.java
@@ -0,0 +1,50 @@
+package com.mes.role.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 瑙掕壊琛�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class SysRole implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    private String name;
+
+    /**
+     * 瑙掕壊鏉冮檺瀛楃涓�
+     */
+    private String roleKey;
+
+    /**
+     * 瑙掕壊鐘舵�侊紙0姝e父 1鍋滅敤锛�
+     */
+    private String status;
+
+    /**
+     * 鍒犻櫎鏍囧織
+     */
+    private Integer delFlag;
+
+    /**
+     * 澶囨敞
+     */
+    private String remark;
+
+
+}
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
new file mode 100644
index 0000000..e69af40
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/entity/SysRoleMenu.java
@@ -0,0 +1,36 @@
+package com.mes.role.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class SysRoleMenu implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 瑙掕壊ID
+     */
+    @TableId(value = "role_id", type = IdType.AUTO)
+    private Long roleId;
+
+    /**
+     * 鑿滃崟id
+     */
+    private Long menuId;
+
+
+}
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
new file mode 100644
index 0000000..f90596c
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMapper.java
@@ -0,0 +1,16 @@
+package com.mes.role.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mes.role.entity.SysRole;
+
+/**
+ * <p>
+ * 瑙掕壊琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+public interface SysRoleMapper extends BaseMapper<SysRole> {
+
+}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMenuMapper.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMenuMapper.java
new file mode 100644
index 0000000..747f5ac
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMenuMapper.java
@@ -0,0 +1,16 @@
+package com.mes.role.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mes.role.entity.SysRoleMenu;
+
+/**
+ * <p>
+ * Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+public interface SysRoleMenuMapper extends BaseMapper<SysRoleMenu> {
+
+}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/xml/SysRoleMapper.xml b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/xml/SysRoleMapper.xml
new file mode 100644
index 0000000..9a0cd27
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/xml/SysRoleMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mes.role.mapper.SysRoleMapper">
+
+</mapper>
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/xml/SysRoleMenuMapper.xml b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/xml/SysRoleMenuMapper.xml
new file mode 100644
index 0000000..af0749b
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/xml/SysRoleMenuMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mes.role.mapper.SysRoleMenuMapper">
+
+</mapper>
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/SysRoleMenuService.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/SysRoleMenuService.java
new file mode 100644
index 0000000..e4d23dc
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/SysRoleMenuService.java
@@ -0,0 +1,16 @@
+package com.mes.role.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mes.role.entity.SysRoleMenu;
+
+/**
+ * <p>
+ * 鏈嶅姟绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+public interface SysRoleMenuService extends IService<SysRoleMenu> {
+
+}
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
new file mode 100644
index 0000000..6f89b19
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/SysRoleService.java
@@ -0,0 +1,16 @@
+package com.mes.role.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mes.role.entity.SysRole;
+
+/**
+ * <p>
+ * 瑙掕壊琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+public interface SysRoleService extends IService<SysRole> {
+
+}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleMenuServiceImpl.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleMenuServiceImpl.java
new file mode 100644
index 0000000..4c8a475
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleMenuServiceImpl.java
@@ -0,0 +1,20 @@
+package com.mes.role.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mes.role.entity.SysRoleMenu;
+import com.mes.role.mapper.SysRoleMenuMapper;
+import com.mes.role.service.SysRoleMenuService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+@Service
+public class SysRoleMenuServiceImpl extends ServiceImpl<SysRoleMenuMapper, SysRoleMenu> implements SysRoleMenuService {
+
+}
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
new file mode 100644
index 0000000..5b78836
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java
@@ -0,0 +1,20 @@
+package com.mes.role.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mes.role.entity.SysRole;
+import com.mes.role.mapper.SysRoleMapper;
+import com.mes.role.service.SysRoleService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 瑙掕壊琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+@Service
+public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements SysRoleService {
+
+}
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
new file mode 100644
index 0000000..aa99f77
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/controller/SysUserController.java
@@ -0,0 +1,36 @@
+package com.mes.userinfo.controller;
+
+
+import com.mes.userinfo.entity.SysUser;
+import com.mes.userinfo.service.SysUserService;
+import com.mes.utils.Result;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ * 鐢ㄦ埛琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+@RestController
+@CrossOrigin
+@RequestMapping("/userinfo")
+public class SysUserController {
+
+    @Autowired
+    private SysUserService sysUserService;
+
+    @PostMapping("/login")
+    public Result login(@RequestBody SysUser user) {
+        return sysUserService.login(user);
+    }
+
+    @GetMapping("/hello")
+    public Result hello() {
+        return Result.success("eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJlZjMyMjQ4NDcyODE0ZWFlYWRlOTBkYmZjYWFlZmNmZSIsInN1YiI6IjEiLCJpc3MiOiJzZyIsImlhdCI6MTcxMjkwMjI0NCwiZXhwIjoxNzEyOTA1ODQ0fQ.DlJkhkiwjZSqprdLzKaTB3yuyxGukerKeF0FbJK_6HY");
+    }
+}
+
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
new file mode 100644
index 0000000..8d6e6a7
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/controller/SysUserRoleController.java
@@ -0,0 +1,20 @@
+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/LoginUser.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/LoginUser.java
new file mode 100644
index 0000000..d60a05f
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/LoginUser.java
@@ -0,0 +1,94 @@
+package com.mes.userinfo.entity;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
+import org.springframework.security.core.userdetails.UserDetails;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/4/11 15:46
+ * @Description:
+ */
+public class LoginUser implements UserDetails {
+
+
+    private SysUser user;
+
+    /**
+     * 瀛樺偍鏉冮檺淇℃伅
+     */
+    @JSONField(serialize = false)
+    private List<String> permissions;
+
+    /**
+     * 瀛樺偍SpringSecurity璋冪敤getAuthorities()鏂规硶鑾峰彇鐨勬潈闄愪俊鎭殑闆嗗悎
+     */
+    @JSONField(serialize = false)
+    private List<GrantedAuthority> authorities;
+
+
+    public LoginUser() {
+    }
+
+    public LoginUser(SysUser user, List<String> permissions) {
+        this.user = user;
+        this.permissions = permissions;
+    }
+
+    public SysUser getUser() {
+        return user;
+    }
+
+    public void setUser(SysUser user) {
+        this.user = user;
+    }
+
+    @Override
+    public Collection<? extends GrantedAuthority> getAuthorities() {
+
+        // 浼樺寲涓哄彧闇�瑕佺涓�娆¤幏鍙栫殑鏃跺�欒繘琛岄亶鍘嗭紝鍚庨潰鍐嶇敤灏变細浠巃uthorities杩欎釜鎴愬憳鍙橀噺涓幏鍙栦簡锛屼笉浼氬啀杩涜Stream寰幆閬嶅巻浜�
+        if (authorities != null) {
+            return authorities;
+        }
+        //鎶妏ermissions涓瓧绗︿覆绫诲瀷鐨勬潈闄愪俊鎭浆鎹㈡垚GrantedAuthority瀵硅薄瀛樺叆authorities涓�
+        authorities = permissions.stream().
+                map(SimpleGrantedAuthority::new)
+                .collect(Collectors.toList());
+        return authorities;
+    }
+
+    @Override
+    public String getPassword() {
+        return user.getPassword();
+    }
+
+    @Override
+    public String getUsername() {
+        return user.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/userinfo/entity/SysUser.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/SysUser.java
new file mode 100644
index 0000000..dcb8384
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/SysUser.java
@@ -0,0 +1,66 @@
+package com.mes.userinfo.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 鐢ㄦ埛琛�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class SysUser implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 涓婚敭
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 鐢ㄦ埛鍚�
+     */
+    private String userName;
+
+    /**
+     * 鏄电О
+     */
+    private String nickName;
+
+    /**
+     * 瀵嗙爜
+     */
+    private String password;
+
+    /**
+     * 璐﹀彿鐘舵�侊紙0姝e父 1鍋滅敤锛�
+     */
+    private String status;
+
+    /**
+     * 澶村儚
+     */
+    private String avatar;
+
+    /**
+     * 鐢ㄦ埛绫诲瀷锛�0绠$悊鍛橈紝1鏅�氱敤鎴凤級
+     */
+    private String userType;
+
+    /**
+     * 鍒犻櫎鏍囧織
+     */
+    private Integer delFlag;
+
+
+}
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
new file mode 100644
index 0000000..4d76c57
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/SysUserRole.java
@@ -0,0 +1,36 @@
+package com.mes.userinfo.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class SysUserRole implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 鐢ㄦ埛id
+     */
+    @TableId(value = "user_id", type = IdType.AUTO)
+    private Long userId;
+
+    /**
+     * 瑙掕壊id
+     */
+    private Long roleId;
+
+
+}
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
new file mode 100644
index 0000000..ca3ef72
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserMapper.java
@@ -0,0 +1,16 @@
+package com.mes.userinfo.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mes.userinfo.entity.SysUser;
+
+/**
+ * <p>
+ * 鐢ㄦ埛琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+public interface SysUserMapper extends BaseMapper<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
new file mode 100644
index 0000000..d00106d
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserRoleMapper.java
@@ -0,0 +1,16 @@
+package com.mes.userinfo.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mes.userinfo.entity.SysUserRole;
+
+/**
+ * <p>
+ * Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+public interface SysUserRoleMapper extends BaseMapper<SysUserRole> {
+
+}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/xml/SysUserMapper.xml b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/xml/SysUserMapper.xml
new file mode 100644
index 0000000..300e913
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/xml/SysUserMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mes.userinfo.mapper.SysUserMapper">
+
+</mapper>
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/xml/SysUserRoleMapper.xml b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/xml/SysUserRoleMapper.xml
new file mode 100644
index 0000000..0fd2be9
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/xml/SysUserRoleMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mes.userinfo.mapper.SysUserRoleMapper">
+
+</mapper>
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
new file mode 100644
index 0000000..0992b6c
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserRoleService.java
@@ -0,0 +1,16 @@
+package com.mes.userinfo.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mes.userinfo.entity.SysUserRole;
+
+/**
+ * <p>
+ * 鏈嶅姟绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+public interface SysUserRoleService extends IService<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
new file mode 100644
index 0000000..ca49aa0
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserService.java
@@ -0,0 +1,20 @@
+package com.mes.userinfo.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mes.userinfo.entity.SysUser;
+import com.mes.utils.Result;
+
+/**
+ * <p>
+ * 鐢ㄦ埛琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+public interface SysUserService extends IService<SysUser> {
+
+    Result login(SysUser user);
+
+    Result logout();
+}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserRoleServiceImpl.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserRoleServiceImpl.java
new file mode 100644
index 0000000..baa93c2
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserRoleServiceImpl.java
@@ -0,0 +1,20 @@
+package com.mes.userinfo.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mes.userinfo.entity.SysUserRole;
+import com.mes.userinfo.mapper.SysUserRoleMapper;
+import com.mes.userinfo.service.SysUserRoleService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+@Service
+public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUserRole> implements SysUserRoleService {
+
+}
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
new file mode 100644
index 0000000..f6207b7
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java
@@ -0,0 +1,89 @@
+package com.mes.userinfo.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mes.common.utils.JwtUtil;
+import com.mes.common.utils.RedisUtil;
+import com.mes.menu.mapper.SysMenuMapper;
+import com.mes.userinfo.entity.LoginUser;
+import com.mes.userinfo.entity.SysUser;
+import com.mes.userinfo.mapper.SysUserMapper;
+import com.mes.userinfo.service.SysUserService;
+import com.mes.utils.Result;
+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.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * <p>
+ * 鐢ㄦ埛琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+@Service
+public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService, UserDetailsService {
+
+    @Autowired
+    private AuthenticationManager authenticationManager;
+    @Autowired
+    private RedisUtil redisUtil;
+
+    @Resource
+    private SysMenuMapper sysMenuMapper;
+
+    @Override
+    public Result login(SysUser user) {
+        UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(user.getUserName(), user.getPassword());
+        Authentication authenticate = authenticationManager.authenticate(authenticationToken);
+        if (Objects.isNull(authenticate)) {
+            throw new RuntimeException("鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒");
+        }
+        //浣跨敤userid鐢熸垚token
+        LoginUser loginUser = (LoginUser) authenticate.getPrincipal();
+        String userId = loginUser.getUser().getId().toString();
+        String jwt = JwtUtil.createJWT(userId);
+        //authenticate瀛樺叆redis
+        redisUtil.setCacheObject("login:" + userId, loginUser);
+        //鎶妕oken鍝嶅簲缁欏墠绔�
+        HashMap<String, String> map = new HashMap<>();
+        map.put("token", jwt);
+        return Result.success(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("閫�鍑烘垚鍔�");
+    }
+
+    @Override
+    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
+        LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<>();
+        lqw.eq(SysUser::getUserName, username);
+        SysUser user = this.baseMapper.selectOne(lqw);
+        //鍒ゆ柇鏄惁涓虹┖
+        if (Objects.isNull(user)) {
+            throw new RuntimeException("鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒");
+        }
+        //鏌ヨ鏉冮檺淇℃伅
+        List<String> perms = sysMenuMapper.selectPermsByUserId(user.getId());
+
+        return new LoginUser(user, perms);
+    }
+}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/resources/application.yml b/hangzhoumesParent/common/springsecurity/src/main/resources/application.yml
new file mode 100644
index 0000000..d5978be
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/resources/application.yml
@@ -0,0 +1,25 @@
+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/common/springsecurity/src/main/resources/mapper/SysMenuMapper.xml b/hangzhoumesParent/common/springsecurity/src/main/resources/mapper/SysMenuMapper.xml
new file mode 100644
index 0000000..38607e4
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/resources/mapper/SysMenuMapper.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mes.menu.mapper.SysMenuMapper">
+
+    <select id="selectPermsByUserId" resultType="java.lang.String">
+        SELECT DISTINCT m.perms
+        FROM sys_user_role ur
+                 LEFT JOIN sys_role r ON ur.role_id = r.id
+                 LEFT JOIN sys_role_menu rm ON ur.role_id = rm.role_id
+                 LEFT JOIN sys_menu m ON m.id = rm.menu_id
+        WHERE user_id = #{userid}
+          AND r.status = 0
+          AND m.status = 0
+    </select>
+</mapper>
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/pom.xml b/hangzhoumesParent/moduleService/LoadGlassModule/pom.xml
index e1ec70c..0f8bb2e 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/pom.xml
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/pom.xml
@@ -9,7 +9,7 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>cacheGlass</artifactId>
+    <artifactId>loadGlass</artifactId>
     <dependencies>
         <dependency>
             <groupId>junit</groupId>
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/LoadGlassModuleApplication.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/LoadGlassModuleApplication.java
index b47e3e7..2634690 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/LoadGlassModuleApplication.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/LoadGlassModuleApplication.java
@@ -19,11 +19,6 @@
 @MapperScan(basePackages = "com.mes.*.mapper")
 public class LoadGlassModuleApplication {
     public static void main(String[] args) {
-        try {
-            SpringApplication.run(LoadGlassModuleApplication.class, args);
-        } catch (Exception e) {
-            log.error(e.getMessage());
-        }
-
+        SpringApplication.run(LoadGlassModuleApplication.class, args);
     }
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/tools/InitUtil.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/InitUtil.java
similarity index 85%
copy from hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/tools/InitUtil.java
copy to hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/InitUtil.java
index 7cd4205..d15c72d 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/tools/InitUtil.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/InitUtil.java
@@ -1,128 +1,122 @@
-package com.mes.tools;
-
-import cn.hutool.json.JSONArray;
-import cn.hutool.json.JSONObject;
-import com.mes.device.PlcBitInfo;
-import com.mes.device.PlcBitObject;
-import com.mes.device.PlcParameterInfo;
-import com.mes.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);
-    }
-
-
-
-}
+package com.mes.common;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.IOException;
+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 = S7object.getinstance().plccontrol.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, 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 = S7object.getinstance().plccontrol.ReadByte(plcParameterObject.getPlcAddressBegin(), plcParameterObject.getPlcAddressLength());
+        plcParameterObject.setPlcParameterList(getplcvlues);
+    }
+
+
+
+}
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/PLCAutoMes.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/PLCAutoMes.java
new file mode 100644
index 0000000..7429f4e
--- /dev/null
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/PLCAutoMes.java
@@ -0,0 +1,95 @@
+package com.mes.common;
+
+
+import java.io.IOException;
+
+import static com.mes.common.InitUtil.readAndUpdateWordValues;
+
+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/PlcLoadGlass.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();
+    }
+
+    // 鑾峰彇鍗曚緥瀹炰緥
+    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/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/PlcBitInfo.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/PlcBitInfo.java
new file mode 100644
index 0000000..0c0f241
--- /dev/null
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/PlcBitInfo.java
@@ -0,0 +1,77 @@
+package com.mes.common;
+
+
+
+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/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/PlcBitObject.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/PlcBitObject.java
new file mode 100644
index 0000000..e01cb3c
--- /dev/null
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/PlcBitObject.java
@@ -0,0 +1,142 @@
+package com.mes.common;
+
+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/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/PlcParameterInfo.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/PlcParameterInfo.java
new file mode 100644
index 0000000..2ae2998
--- /dev/null
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/PlcParameterInfo.java
@@ -0,0 +1,128 @@
+package com.mes.common;
+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 ;
+        }
+        return null;
+    }
+
+    public int getPlcAddress() {
+
+        return addressIndex;
+    }
+    public String getAddress() {
+       return getAddress(this.addressIndex);
+    }
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/PlcParameterObject.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/PlcParameterObject.java
new file mode 100644
index 0000000..26736c3
--- /dev/null
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/PlcParameterObject.java
@@ -0,0 +1,202 @@
+package com.mes.common;
+
+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/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/S7object.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/S7object.java
new file mode 100644
index 0000000..4111dfe
--- /dev/null
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/S7object.java
@@ -0,0 +1,36 @@
+package com.mes.common;
+
+import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
+import com.mes.tools.S7control;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/4/9 15:13
+ * @Description:
+ */
+public class S7object {
+    public S7control plccontrol; // PLC閫氳绫诲疄渚�
+    private EPlcType plcType = EPlcType.S1500; // 瑗块棬瀛怭LC绫诲瀷
+    private String ip = "192.168.10.1"; // plc ip鍦板潃
+    private int port = 102; // plc 绔彛鍙�
+
+    private static volatile S7object instance = null;
+
+    private S7object() {
+        if (plccontrol == null) {
+            plccontrol = new S7control(plcType, ip, port,0,0);
+        }
+    }
+
+    // 鍗曚緥妯″紡 鑾峰彇绫荤殑鍞竴瀹炰緥
+    public static S7object getinstance() {
+        if (instance == null) {
+            synchronized (S7object.class) {
+                if (instance == null) {
+                    instance = new S7object();
+                }
+            }
+        }
+        return instance;
+    }
+}
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/upworkstation/controller/LoadGlassController.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/upworkstation/controller/LoadGlassController.java
deleted file mode 100644
index 3988b80..0000000
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/upworkstation/controller/LoadGlassController.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.mes.upworkstation.controller;
-import java.util.List;
-import java.util.Map;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import com.mes.upworkstation.entity.UpWorkstation;
-import com.mes.upworkstation.service.LoadGlassService;
-import com.mes.utils.Result;
-
-@RestController
-@RequestMapping("/LoadGlass")
-
-// TidyUpGlassModule 閽㈠寲妯″潡
-public class LoadGlassController {
-
-    @Autowired
-    private LoadGlassService loadGlassService;
-
-    @PostMapping("/SelectAll") //鏌ヨ鐜板湪涓婄墖鏈虹殑鐜荤拑淇℃伅
-    @ResponseBody
-    public Result SelectGlassInfo() {
-        List<UpWorkstation> glass = loadGlassService.selectAll();
-        System.out.println(glass);
-        return Result.build(200,"", glass);
-    }
-
-    @PostMapping("/insertGlass") //淇敼涓�鏉″伐浣嶄俊鎭�,鎺ユ敹瀹炰緥绫诲瓧娈典负瀹介珮鍘氳啘绯绘暟閲忓伐浣峣d
-    @ResponseBody
-    public void insertGlassinfo(@RequestBody UpWorkstation upwork) {
-        loadGlassService.insertGlass(upwork);
-      
-    }
-
-    @PostMapping("/deleteGlass") //淇敼涓�鏉″伐浣嶇殑鐜荤拑淇℃伅锛屼紶杈撳伐浣峣d灏嗙幓鐠冧俊鎭浉鍏冲瓧娈垫洿鏀逛负null
-    @ResponseBody
-    public void SelectCutTerritory(int upworkid) {
-        loadGlassService.deleteGlass(upworkid);
-    }
-    
-    @PostMapping("/selectPriority") //寮�濮嬩笂鐗囦换鍔�
-    @ResponseBody
-    public void selectPriority() {
-        boolean result = loadGlassService.isCanLoadGlass();
-        if(result==true){
-            loadGlassService.selectPriority();
-        }
-    }
-
-  
-
-}
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/upworkstation/controller/UpWorkstationController.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/upworkstation/controller/UpWorkstationController.java
deleted file mode 100644
index 9a41288..0000000
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/upworkstation/controller/UpWorkstationController.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.mes.upworkstation.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- *  鍓嶇鎺у埗鍣�
- * </p>
- *
- * @author zhoush
- * @since 2024-04-07
- */
-@RestController
-@RequestMapping("/upWorkstation")
-public class UpWorkstationController {
-
-}
-
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/upworkstation/mapper/LoadGlassMapper.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/upworkstation/mapper/LoadGlassMapper.java
deleted file mode 100644
index 8a47dfa..0000000
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/upworkstation/mapper/LoadGlassMapper.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.mes.upworkstation.mapper;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import java.util.List;
-import org.apache.ibatis.annotations.*;
-import com.mes.upworkstation.entity.UpWorkstation;
-@Mapper
-public interface LoadGlassMapper extends BaseMapper<UpWorkstation> {
-    //鏄剧ず鐩墠宸ヤ綅鐜荤拑淇℃伅
-    @Select("SELECT * FROM up_workstation")
-    List<UpWorkstation> selectALL();
-    //鍒犻櫎宸ヤ綅鐨勭幓鐠冧俊鎭�
-    @Update("UPDATE `hangzhoumes`.`up_workstation` SET   `pattern_width` =NULL, `pattern_heigth` = NULL, `pattern_thickness` = NULL, `films_id` = NULL, `number` = NULL WHERE `workstation_id`=#{id}")
-    void deleteGlass(int id );
-    //澧炲姞涓婄墖淇℃伅
-    @Update ("UPDATE `hangzhoumes`.`up_workstation` SET   `pattern_width` = #{upwork.patternwidth}, `pattern_heigth` = #{upwork.patternheigth}, `pattern_thickness` =#{upwork.patternthickness}, `films_id` =#{upwork.filmsid}, `number` = #{upwork.number} WHERE `id` = #{upwork.workstationid}; ")
-    void insertGlass(UpWorkstation upwork);
-    //鏄惁鍙戣捣鍚哥墖
-    @Select("SELECT * FROM up_workstation where  workstation_id=#{id}")
-    UpWorkstation selectAdd(int id);
-    //鍒ゆ柇浼樺厛宸ヤ綅鍚哥墖
-    @Select("select b.layout_sequence from up_workstation a left join up_patten_usage b on a.pattern_width=b.width and a.pattern_heigth=b.width and a.pattern_thickness=b.thickness where a.workstation_id=#{id}")
-    int selectPriority(int id);
-    
-}
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/upworkstation/mapper/UpWorkstationMapper.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/upworkstation/mapper/UpWorkstationMapper.java
deleted file mode 100644
index 333d195..0000000
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/upworkstation/mapper/UpWorkstationMapper.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.mes.upworkstation.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.mes.upworkstation.entity.UpWorkstation;
-
-/**
- * <p>
- *  Mapper 鎺ュ彛
- * </p>
- *
- * @author zhoush
- * @since 2024-04-07
- */
-public interface UpWorkstationMapper extends BaseMapper<UpWorkstation> {
-
-}
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/upworkstation/service/LoadGlassService.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/upworkstation/service/LoadGlassService.java
deleted file mode 100644
index ae34d3d..0000000
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/upworkstation/service/LoadGlassService.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.mes.upworkstation.service;
-import java.util.List;
-import org.springframework.stereotype.Service;
-import com.mes.common.PLCAutoMes;
-import com.mes.common.PlcParameterObject;
-import com.mes.upworkstation.entity.UpWorkstation;
-import com.mes.upworkstation.mapper.LoadGlassMapper;
-
-@Service
-public class LoadGlassService {
-    
-
-    private LoadGlassMapper LoadGlassMapper;
-    PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
-    //鏄剧ず宸ヤ綅涓婄殑鐜荤拑淇℃伅
-    public List<UpWorkstation> selectAll() {
-        List<UpWorkstation> glassInfo= LoadGlassMapper.selectALL();
-        return glassInfo;
-    }
-    //澧炲姞浜哄伐杈撳叆鐨勫伐浣嶇幓鐠冧俊鎭�
-    public void insertGlass(UpWorkstation upwork) { 
-        LoadGlassMapper.insertGlass(upwork);
-    }  
-    //鍒犻櫎浜哄伐鎼蛋鐨勭幓鐠冧俊鎭�
-    public void deleteGlass(int id) {
-        LoadGlassMapper.deleteGlass(id);
-    }
-    //鍒ゆ柇鏄惁鍙互鍚哥墖杩涜浠诲姟
-    public boolean isCanLoadGlass() {
-        String loadstate=plcmes.getPlcParameter("鍚哥墖淇″彿").getValue();
-        if(loadstate.equals("1")) {
-            return true;
-        }else{
-            return false;
-        }
-        
-    }
-    //鍒ゆ柇浼樺厛鍚哥墖浣嶇疆鍚庡彂閫佸嚭鐗囦换鍔�
-    public void selectPriority() {
-        int loadid1=LoadGlassMapper.selectPriority(1);
-        int loadid2=LoadGlassMapper.selectPriority(2);
-        //鍒ゆ柇涓�浜屽彿宸ヤ綅鍝竟鐨勯『搴忔洿鍏�
-        if(loadid1>loadid2) {
-            //s7control.WriteWord("DB100.10", (short)2);
-        }else if(loadid1==loadid2){
-            //褰撲袱涓伐浣嶄笂鐨勭幓鐠冩暟鐩稿悓鏃讹紝鍒ゆ柇鍝釜宸ヤ綅涓婄殑鐜荤拑鏁版洿灏�,浼樺厛娓呯┖涓�涓灦瀛�
-            int glassnum1=Integer.parseInt(plcmes.getPlcParameter("鐜荤拑鏁�").getValue());
-            int glassnum2=Integer.parseInt(plcmes.getPlcParameter("鐜荤拑鏁�").getValue());
-            if(glassnum1>glassnum2){
-               // s7control.WriteWord("DB100.10", (short)2);
-            }else{
-                //s7control.WriteWord("DB100.10", (short)1);
-            }
-        }else{
-            //s7control.WriteWord("DB100.10", (short)1);
-        }
-    }
-   
-
-
-
-
-}
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/upworkstation/service/UpWorkstationService.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/upworkstation/service/UpWorkstationService.java
deleted file mode 100644
index 369db83..0000000
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/upworkstation/service/UpWorkstationService.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.mes.upworkstation.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.mes.upworkstation.entity.UpWorkstation;
-
-/**
- * <p>
- *  鏈嶅姟绫�
- * </p>
- *
- * @author zhoush
- * @since 2024-04-07
- */
-public interface UpWorkstationService extends IService<UpWorkstation> {
-
-}
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/upworkstation/service/impl/UpWorkstationServiceImpl.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/upworkstation/service/impl/UpWorkstationServiceImpl.java
deleted file mode 100644
index 22ed61b..0000000
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/upworkstation/service/impl/UpWorkstationServiceImpl.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.mes.upworkstation.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.mes.upworkstation.entity.UpWorkstation;
-import com.mes.upworkstation.mapper.UpWorkstationMapper;
-import com.mes.upworkstation.service.UpWorkstationService;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- *  鏈嶅姟瀹炵幇绫�
- * </p>
- *
- * @author zhoush
- * @since 2024-04-07
- */
-@Service
-public class UpWorkstationServiceImpl extends ServiceImpl<UpWorkstationMapper, UpWorkstation> implements UpWorkstationService {
-
-}
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/controller/UpWorkstationController.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/controller/UpWorkstationController.java
new file mode 100644
index 0000000..34ea858
--- /dev/null
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/controller/UpWorkstationController.java
@@ -0,0 +1,56 @@
+package com.mes.workstation.controller;
+
+
+import com.mes.workstation.entity.UpWorkstation;
+import com.mes.workstation.service.UpWorkstationService;
+import com.mes.utils.Result;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-07
+ */
+@RestController
+@RequestMapping("/LoadGlass")
+@Slf4j
+public class UpWorkstationController {
+    @Autowired
+    private UpWorkstationService upWorkstationService;
+
+    @ApiOperation("鏄剧ず宸ヤ綅涓婄殑鐜荤拑淇℃伅")
+    @GetMapping("/list") //鏌ヨ鐜板湪涓婄墖鏈虹殑鐜荤拑淇℃伅
+    public Result<List<UpWorkstation>> list() {
+        List<UpWorkstation> glass = upWorkstationService.list();
+        log.info("鏄剧ず宸ヤ綅涓婄殑鐜荤拑淇℃伅:{}", glass);
+        return Result.build(200, "", glass);
+    }
+
+    @PostMapping("/updateGlassMessage") //淇敼涓�鏉″伐浣嶄俊鎭�,鎺ユ敹瀹炰緥绫诲瓧娈典负瀹介珮鍘氳啘绯绘暟閲忓伐浣峣d
+    @ResponseBody
+    public void updateGlassMessage(@RequestBody UpWorkstation upwork) {
+        upWorkstationService.updateGlassMessage(upwork);
+    }
+
+    //todo: 鍜寀pdateGlassMessage绫讳技
+//    @PostMapping("/deleteGlass") //淇敼涓�鏉″伐浣嶇殑鐜荤拑淇℃伅锛屼紶杈撳伐浣峣d灏嗙幓鐠冧俊鎭浉鍏冲瓧娈垫洿鏀逛负null
+//    @ResponseBody
+//    public void selectCutTerritory(int upworkid) {
+//        loadGlassService.deleteGlass(upworkid);
+//    }
+
+    @PostMapping("/selectPriority") //寮�濮嬩笂鐗囦换鍔�
+    @ResponseBody
+    public void selectPriority() {
+        upWorkstationService.selectPriority();
+    }
+}
+
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/entity/GlassInfo.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/entity/GlassInfo.java
new file mode 100644
index 0000000..3e0b335
--- /dev/null
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/entity/GlassInfo.java
@@ -0,0 +1,131 @@
+package com.mes.workstation.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class GlassInfo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 鐜荤拑淇℃伅琛╥d
+     */
+      @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 娴佺▼鍗�
+     */
+    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;
+
+    /**
+     * 閽㈠寲鐗堝浘id
+     */
+    private Integer temperingLayoutId;
+
+    /**
+     * 閽㈠寲鐗堝浘鐗囧簭
+     */
+    private Integer temperingFeedSequence;
+
+    /**
+     * x鍧愭爣
+     */
+    private Integer xCoordinate;
+
+    /**
+     * y鍧愭爣
+     */
+    private Integer yCoordinate;
+
+    /**
+     * 鏃嬭浆瑙掑害锛堥�嗘椂閽堬級
+     */
+    private Integer angle;
+
+    /**
+     * 宸ョ▼鍙�
+     */
+    private Integer engineerId;
+
+    /**
+     * 鐢熶骇瑙勫垯id
+     */
+    private Integer ruleId;
+
+
+}
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/entity/UpWorkSequence.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/entity/UpWorkSequence.java
new file mode 100644
index 0000000..ca1d3a2
--- /dev/null
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/entity/UpWorkSequence.java
@@ -0,0 +1,15 @@
+package com.mes.workstation.entity;
+
+import lombok.Data;
+
+/**
+ * @author wu
+ */
+@Data
+public class UpWorkSequence {
+
+    private int sequence;
+
+    private int number;
+
+}
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/upworkstation/entity/UpWorkstation.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/entity/UpWorkstation.java
similarity index 96%
rename from hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/upworkstation/entity/UpWorkstation.java
rename to hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/entity/UpWorkstation.java
index 88e5523..66a5c48 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/upworkstation/entity/UpWorkstation.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/entity/UpWorkstation.java
@@ -1,4 +1,4 @@
-package com.mes.upworkstation.entity;
+package com.mes.workstation.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/mapper/LoadGlassMapper.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/mapper/LoadGlassMapper.java
new file mode 100644
index 0000000..83bc50b
--- /dev/null
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/mapper/LoadGlassMapper.java
@@ -0,0 +1,16 @@
+package com.mes.workstation.mapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+import java.util.Map;
+
+import org.apache.ibatis.annotations.*;
+import com.mes.workstation.entity.UpWorkstation;
+@Mapper
+public interface LoadGlassMapper extends BaseMapper<UpWorkstation> {
+    //鍒ゆ柇浼樺厛宸ヤ綅鍚哥墖
+    @Select("select b.layout_sequence,a.number from up_workstation a left join up_patten_usage b " +
+            "on a.pattern_width=b.width and a.pattern_heigth=b.width " +
+            "and a.pattern_thickness=b.thickness where a.workstation_id=#{id}")
+    Map<String,Object> selectPriority(int id);
+    
+}
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/mapper/UpWorkstationMapper.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/mapper/UpWorkstationMapper.java
new file mode 100644
index 0000000..5731173
--- /dev/null
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/mapper/UpWorkstationMapper.java
@@ -0,0 +1,21 @@
+package com.mes.workstation.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mes.workstation.entity.UpWorkSequence;
+import com.mes.workstation.entity.UpWorkstation;
+import io.lettuce.core.dynamic.annotation.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-07
+ */
+public interface UpWorkstationMapper extends BaseMapper<UpWorkstation> {
+
+    List<UpWorkSequence> selectPriority(@Param("id") int id);
+}
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/UpWorkstationService.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/UpWorkstationService.java
new file mode 100644
index 0000000..7a03568
--- /dev/null
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/UpWorkstationService.java
@@ -0,0 +1,30 @@
+package com.mes.workstation.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mes.workstation.entity.UpWorkstation;
+
+/**
+ * <p>
+ *  鏈嶅姟绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-07
+ */
+public interface UpWorkstationService extends IService<UpWorkstation> {
+    //PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
+
+    //鍒犻櫎浜哄伐鎼蛋鐨勭幓鐠冧俊鎭�
+//    public void deleteGlass(int id);
+    //鍒ゆ柇鏄惁鍙互鍚哥墖杩涜浠诲姟
+
+    //鍒ゆ柇浼樺厛鍚哥墖浣嶇疆鍚庡彂閫佸嚭鐗囦换鍔�
+    public void selectPriority() ;
+
+
+    /**
+     * 澧炲姞浜哄伐杈撳叆鐨勫伐浣嶇幓鐠冧俊鎭�
+     * @param upwork
+     */
+    void updateGlassMessage(UpWorkstation upwork);
+}
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/impl/UpWorkstationServiceImpl.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/impl/UpWorkstationServiceImpl.java
new file mode 100644
index 0000000..7e891f6
--- /dev/null
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/impl/UpWorkstationServiceImpl.java
@@ -0,0 +1,68 @@
+package com.mes.workstation.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mes.common.S7object;
+import com.mes.workstation.entity.UpWorkSequence;
+import com.mes.workstation.entity.UpWorkstation;
+import com.mes.workstation.mapper.UpWorkstationMapper;
+import com.mes.workstation.service.UpWorkstationService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-07
+ */
+@Service
+public class UpWorkstationServiceImpl extends ServiceImpl<UpWorkstationMapper, UpWorkstation> implements UpWorkstationService {
+
+    public static final String DB_100_10 = "DB_100_10";
+
+    //鍒ゆ柇鏄惁鍙互鍚哥墖杩涜浠诲姟
+    public boolean isCanLoadGlass() {
+        String loadstart="鍚哥墖淇″彿";//plcmes.getPlcParameter("鍚哥墖淇″彿").getValue();
+        return "1".equals(loadstart);
+
+    }
+    //鍒ゆ柇浼樺厛鍚哥墖浣嶇疆鍚庡彂閫佸嚭鐗囦换鍔�
+    public void selectPriority() {
+        //todo:鍒ゆ柇鏄惁鍙互鍚哥墖杩涜浠诲姟
+//        String loadstart="鍚哥墖淇″彿";//plcmes.getPlcParameter("鍚哥墖淇″彿").getValue();
+//        if (!"1".equals(loadstart)) {
+//            return;
+//        }
+        UpWorkSequence loadid1 = this.baseMapper.selectPriority(1).get(0);
+        UpWorkSequence loadid2 = this.baseMapper.selectPriority(2).get(0);
+        //鍒ゆ柇涓�浜屽彿宸ヤ綅鍝竟鐨勯『搴忔洿鍏�
+        if(loadid1.getSequence()>loadid2.getSequence()) {
+            S7object.getinstance().plccontrol.WriteWord(DB_100_10, (short)2);
+        }else if(loadid1.getSequence()==loadid2.getSequence()){
+            //褰撲袱涓伐浣嶄笂鐨勭幓鐠冩暟鐩稿悓鏃讹紝鍒ゆ柇鍝釜宸ヤ綅涓婄殑鐜荤拑鏁版洿灏�,浼樺厛娓呯┖涓�涓灦瀛�
+            int glassnum1=loadid1.getNumber();//Integer.parseInt(plcmes.getPlcParameter("鐜荤拑鏁�").getValue());
+            int glassnum2=loadid2.getNumber();//Integer.parseInt(plcmes.getPlcParameter("鐜荤拑鏁�").getValue());
+            if(glassnum1>glassnum2){
+                S7object.getinstance().plccontrol.WriteWord(DB_100_10, (short)2);
+            }else{
+                S7object.getinstance().plccontrol.WriteWord(DB_100_10, (short)1);
+            }
+        }else{
+            S7object.getinstance().plccontrol.WriteWord(DB_100_10, (short)1);
+        }
+    }
+
+    /**
+     * 澧炲姞浜哄伐杈撳叆鐨勫伐浣嶇幓鐠冧俊鎭�/鍒犻櫎浜哄伐鎼蛋鐨勭幓鐠冧俊鎭�
+     * @param upwork
+     */
+    @Override
+    public void updateGlassMessage(UpWorkstation upwork) {
+        UpdateWrapper<UpWorkstation> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.eq("workstation_id", upwork.getWorkstationId());
+        int update = this.baseMapper.update(upwork, updateWrapper);
+    }
+
+}
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/pom.xml b/hangzhoumesParent/moduleService/TemperingGlassModule/pom.xml
index 3de91ab..2c23116 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/pom.xml
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/pom.xml
@@ -9,7 +9,7 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>cacheGlass</artifactId>
+    <artifactId>temperingGlass</artifactId>
     <dependencies>
         <dependency>
             <groupId>junit</groupId>
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/mapper/TemperingMapper.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/mapper/TemperingMapper.java
index 6461969..3b66b46 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/mapper/TemperingMapper.java
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/mapper/TemperingMapper.java
@@ -1,33 +1,34 @@
 package com.mes.temperingglass.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.mes.temperingglass.entity.GlassInfo;
 import com.mes.temperingglass.entity.TemperingGlassInfo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
 
 import java.util.List;
-
-import org.apache.ibatis.annotations.*;
 
 @Mapper
 public interface TemperingMapper extends BaseMapper<TemperingGlassInfo> {
 
 
-//鏌ヨ璇ョ幓鐠冪殑灏哄鍜屽潗鏍�
-@Select("select *from glass_info where id=#{glassid};")
-GlassInfo SelectGlass(String glassid);
+    //鏌ヨ璇ョ幓鐠冪殑灏哄鍜屽潗鏍�
+//@Select("select *from glass_info where id=#{glassid};")
+//GlassInfo SelectGlass(String glassid);
 //鏄惁鍙互鍙戦�佽繘鐐変俊鍙�
-@Select("select count(*) from glass_info where id=#{glassid};")
-int SelectTempering(String glassid);
-//鏌ヨ绛夊緟涓殑閽㈠寲鐗堝浘鐜荤拑淇℃伅
-@Select("select*from tempering_glass_info a left join (select flowcard_id,count(state)state from tempering_glass_info GROUP BY flowcard_id,state)b on a.flowcard_id=b.flowcard_id where b.state=2")
-List<TemperingGlassInfo> SelectWaitingGlass();
-//鏌ヨ杩涚倝涓殑閽㈠寲鐗堝浘鐜荤拑淇℃伅
-@Select("select*from tempering_glass_info a left join (select flowcard_id,min(state)state1 from tempering_glass_info GROUP BY flowcard_id having state1=1)b on a.flowcard_id=b.flowcard_id where b.state1=1")
-List<TemperingGlassInfo> SelectInGlass();
-//鏌ヨ閽㈠寲鍚庣殑閽㈠寲鐗堝浘淇℃伅
-@Select("select*from tempering_glass_info a left join (select flowcard_id,min(state)state1 from tempering_glass_info GROUP BY flowcard_id having state1=2)b on a.flowcard_id=b.flowcard_id where b.state1=2")
-List <TemperingGlassInfo> SelectOutGlass();
+    @Select("select count(*) from glass_info where id=#{glassid};")
+    int SelectTempering(String glassid);
 
+    //鏌ヨ绛夊緟涓殑閽㈠寲鐗堝浘鐜荤拑淇℃伅
+    @Select("select*from tempering_glass_info a left join (select flowcard_id,count(state)state from tempering_glass_info GROUP BY flowcard_id,state)b on a.flowcard_id=b.flowcard_id where b.state=2")
+    List<TemperingGlassInfo> SelectWaitingGlass();
+
+    //鏌ヨ杩涚倝涓殑閽㈠寲鐗堝浘鐜荤拑淇℃伅
+    @Select("select*from tempering_glass_info a left join (select flowcard_id,min(state)state1 from tempering_glass_info GROUP BY flowcard_id having state1=1)b on a.flowcard_id=b.flowcard_id where b.state1=1")
+    List<TemperingGlassInfo> SelectInGlass();
+
+    //鏌ヨ閽㈠寲鍚庣殑閽㈠寲鐗堝浘淇℃伅
+    @Select("select*from tempering_glass_info a left join (select flowcard_id,min(state)state1 from tempering_glass_info GROUP BY flowcard_id having state1=2)b on a.flowcard_id=b.flowcard_id where b.state1=2")
+    List<TemperingGlassInfo> SelectOutGlass();
 
 
 }
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/service/TemperingService.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/service/TemperingService.java
index e4b89aa..bac2fa6 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/service/TemperingService.java
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/service/TemperingService.java
@@ -1,32 +1,36 @@
 package com.mes.temperingglass.service;
-import com.mes.temperingglass.entity.GlassInfo;
+//import com.mes.temperingglass.entity.GlassInfo;
+
 import com.mes.temperingglass.entity.TemperingGlassInfo;
-import com.mes.tools.S7control;
 import com.mes.temperingglass.mapper.TemperingMapper;
-import java.util.List;
+import com.mes.tools.S7control;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 @Service
 public class TemperingService {
-   
+
     private final TemperingMapper temperingMapper;
     private S7control s7control;
 
     public TemperingService(TemperingMapper temperingMapper) {
-        this.temperingMapper =temperingMapper;
+        this.temperingMapper = temperingMapper;
     }
-    //鎺ユ敹id杩斿洖鍧愭爣鍜屾暟鎹�
-    public GlassInfo SelectOutGlass (String glassid) {
-        GlassInfo GlassInfo = temperingMapper.SelectGlass(glassid);
-        return GlassInfo;
-    }
+
+    //    //鎺ユ敹id杩斿洖鍧愭爣鍜屾暟鎹�
+//    public GlassInfo SelectOutGlass (String glassid) {
+//        GlassInfo GlassInfo = temperingMapper.SelectGlass(glassid);
+//        return GlassInfo;
+//    }
     //鍙戦�佸潗鏍囦俊鎭�
-    public void SendCoordinate (short glassX,short glassY) {
+    public void SendCoordinate(short glassX, short glassY) {
         s7control.WriteWord("DB100.10", glassX);
         s7control.WriteWord("DB100.10", glassY);
     }
+
     //鍒ゆ柇鏄惁鍙互鍙戦�佽繘鐐変俊鍙�
-    public int SelectTempering (String glassid) {
+    public int SelectTempering(String glassid) {
         int tempering = temperingMapper.SelectTempering(glassid);
         if (tempering == 1) {
             return 1;
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/pom.xml b/hangzhoumesParent/moduleService/UnLoadGlassModule/pom.xml
index 2c49e6f..d3327cf 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/pom.xml
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/pom.xml
@@ -12,14 +12,16 @@
     <artifactId>unLoadGlass</artifactId>
     <dependencies>
         <dependency>
-            <groupId>com.google.code.gson</groupId>
-            <artifactId>gson</artifactId>
-            <version>2.9.0</version>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>5.2.4</version>
+            <scope>compile</scope>
         </dependency>
         <dependency>
-            <groupId>com.baomidou</groupId>
-            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
-            <version>3.5.2</version>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+            <version>2.8.9</version>
+            <scope>compile</scope>
         </dependency>
     </dependencies>
 
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 a99b8ab..4fdb170 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,8 +1,7 @@
 package com.mes.config;
 
-import com.mes.common.PLCAutoMes;
 import com.mes.common.Plchome;
-
+import com.mes.device.PLCAutoMes;
 import org.springframework.boot.ApplicationArguments;
 import org.springframework.boot.ApplicationRunner;
 import org.springframework.core.annotation.Order;
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 0ebb1bd..c862190 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
@@ -6,7 +6,6 @@
 import com.mes.downglassinfo.entity.DownGlassInfo;
 import com.mes.downworkstation.entity.DownWorkstation;
 import org.apache.ibatis.annotations.*;
-import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
@@ -23,7 +22,7 @@
 @Mapper
 @Repository
 @InterceptorIgnore(tenantLine = "true")
-@DS("hangzhoumes") // 鎸囧畾浣跨敤 hangzhoumes 鏁版嵁婧�
+@DS("salve_1") // 鎸囧畾浣跨敤 hangzhoumes 鏁版嵁婧�
 public interface DownWorkstationMapper extends BaseMapper<DownWorkstation> {
 
 
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
index b7cd761..309ac2f 100644
--- 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
@@ -1,12 +1,12 @@
 package com.mes.downworkstation.service;
 
-import com.mes.common.PLCAutoMes;
+import com.mes.device.PLCAutoMes;
+import com.mes.device.PlcParameterObject;
 import com.mes.downglassinfo.entity.DownGlassInfo;
+import com.mes.downglassinfo.mapper.DownGlassInfoMapper;
 import com.mes.downglassinfo.service.DownGlassInfoService;
 import com.mes.downstorage.entity.DownStorageCageDetails;
 import com.mes.downworkstation.entity.DownWorkstation;
-import com.mes.device.PlcParameterObject;
-import com.mes.downglassinfo.mapper.DownGlassInfoMapper;
 import com.mes.downworkstation.mapper.DownWorkstationMapper;
 import com.mes.tools.WebSocketServer;
 import lombok.Data;
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/tools/TokenTools.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/tools/TokenTools.java
deleted file mode 100644
index 1cb6dc2..0000000
--- a/hangzhoumesParent/moduleService/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/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
index b42ad64..d7bee72 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
@@ -26,8 +26,8 @@
 mybatis-plus:
   mapper-locations: classpath*:mapper/*.xml
 
-#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
-    # 璁剧疆 MyBatis 鏃ュ織绾у埆涓� ERROR
+  #    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+  # 璁剧疆 MyBatis 鏃ュ織绾у埆涓� ERROR
 logging:
   level:
     com:
diff --git a/hangzhoumesParent/moduleService/pom.xml b/hangzhoumesParent/moduleService/pom.xml
index c5d8ab6..1ae04ab 100644
--- a/hangzhoumesParent/moduleService/pom.xml
+++ b/hangzhoumesParent/moduleService/pom.xml
@@ -43,6 +43,17 @@
             <version>1.0-SNAPSHOT</version>
         </dependency>
 
+        <dependency>
+            <artifactId>servicebase</artifactId>
+            <groupId>com.mes</groupId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <artifactId>springsecurity</artifactId>
+            <groupId>com.mes</groupId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+
         <!--寮�鍙戣�呭伐鍏�-->
         <dependency>
             <groupId>org.springframework.boot</groupId>

--
Gitblit v1.8.0