From 7da8422f45751fffd5666a0260196a3d9605b7dc Mon Sep 17 00:00:00 2001
From: 严智鑫 <test>
Date: 星期四, 05 九月 2024 21:23:00 +0800
Subject: [PATCH] 前后端基础框架带(登录,账户管理,角色权限)

---
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/OrderOriginalPieceController.java                      |   21 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/EquipmentLogMapper.xml                                 |    5 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/LoginUser.java                                                       |   94 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/service/PlcParameter.java                                                               |  108 
 logs/deviceInteraction/web-warn-2024-09-04.0.log                                                                                                |  115 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/common/config/MybatisPlusConfig.java                                                    |   30 
 UI-Project/src/views/UnLoadGlass.zip                                                                                                            |    0 
 JiuMuMesParent/moduleService/DeviceInteractionModule/target/deviceInteraction-1.0-SNAPSHOT.jar.original                                         |    0 
 UI-Project/src/utils/api.js                                                                                                                     |  205 
 .idea/misc.xml                                                                                                                                  |   15 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/xml/SysUserMapper.xml                                                |    5 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/RoleMenuMapper.java                                        |   17 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/WorkTaskDetailServiceImpl.java                       |   21 
 UI-Project/src/utils/deepClone.js                                                                                                               |   16 
 UI-Project/.vscode/extensions.json                                                                                                              |    3 
 UI-Project/src/assets/ypccche.png                                                                                                               |    0 
 JiuMuMesParent/JsonFile/PlcdownGlass.json                                                                                                       |  144 
 UI-Project/src/assets/lp.png                                                                                                                    |    0 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtAccessDeniedHandler.java                                           |   35 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/AccountMapper.xml                                      |    5 
 JiuMuMesParent/common/springsecurity/src/main/resources/mapper/SysMenuMapper.xml                                                                |   15 
 logs/deviceInteraction/web_warn.log                                                                                                             |  280 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/TaskingMapper.xml                                      |    5 
 UI-Project/src/stores/userInfo.js                                                                                                               |   19 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/EdgeGrindingLog.java                                       |   56 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/PrimitiveTask.java                                         |  105 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/OrderOriginalPieceMapper.java                              |   17 
 UI-Project/src/assets/s.png                                                                                                                     |    0 
 JiuMuMesParent/common/springsecurity/target/maven-archiver/pom.properties                                                                       |    3 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/utils/ResponseUtil.java                                                                 |   28 
 UI-Project/src/assets/dlpl.png                                                                                                                  |    0 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/WorkTaskDetail.java                                        |  120 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/engineering/entity/Engineering.java                                                     |    4 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/RoleMenuController.java                                |   66 
 JiuMuMesParent/.idea/jarRepositories.xml                                                                                                        |   35 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/tools/CodeGet.java                                                                      |   84 
 UI-Project/src/views/mm/purchaseOrder/Details.vue                                                                                               |  453 
 JiuMuMesParent/common/springsecurity/target/classes/application-prod.yml                                                                        |   15 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java                                      |   80 
 UI-Project/.gitignore                                                                                                                           |   28 
 JiuMuMesParent/common/servicebase/servicebase1.iml                                                                                              |   11 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/ProjectLogServiceImpl.java                           |   21 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/entity/request/GeneralRequest.java                                                      |   17 
 UI-Project/src/views/User/user.vue                                                                                                              |   49 
 JiuMuMesParent/gateway/target/gateway-1.0-SNAPSHOT.jar.original                                                                                 |    0 
 JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web-warn-2024-09-03.0.log                                           |  325 
 UI-Project/src/views/mm/purchaseOrder/Select.vue                                                                                                |  917 +
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/TaskLogMapper.xml                                      |    5 
 UI-Project/src/views/mm/purchaseOrder/PurchaseOrder.vue                                                                                         |   39 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/AccountService.java                                       |   33 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/common/handler/MyMetaObjectHandler.java                                                 |   22 
 UI-Project/src/views/User/menu.vue                                                                                                              |  264 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/device/PlcBitInfo.java                                                                  |   85 
 JiuMuMesParent/common/servicebase/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst                            |   31 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/PrimitiveTaskMapper.java                                   |   17 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/config/RedisConfig.java                                                       |   37 
 JiuMuMesParent/common/springsecurity/springsecurity1.iml                                                                                        |   13 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/TaskingService.java                                       |   17 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/PageMapper.java                                            |   17 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/menu/entity/SysMenu.java                                                             |   87 
 UI-Project/src/views/mm/purchaseOrder/Storage.vue                                                                                               |  603 +
 UI-Project/src/views/mm/purchaseOrder/Create.vue                                                                                                |  724 +
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/utils/FastJsonRedisSerializer.java                                            |   55 
 UI-Project/src/assets/aaa.png                                                                                                                   |    0 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/TaskingController.java                                 |   21 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/device/PlcBitObject.java                                                                |  124 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/ProjectLogService.java                                    |   17 
 UI-Project/src/assets/emi.png                                                                                                                   |    0 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/application-dev.yml                                                     |   32 
 UI-Project/src/assets/user.png                                                                                                                  |    0 
 UI-Project/src/hook/index.js                                                                                                                    |    0 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/Role.java                                                  |   45 
 UI-Project/src/assets/cp.png                                                                                                                    |    0 
 JiuMuMesParent/common/pom.xml                                                                                                                   |  217 
 JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web-warn-2024-09-04.0.log                                           |  220 
 JiuMuMesParent/JsonFile/PlcCacheVerticalGlass.json                                                                                              |  377 
 JiuMuMesParent/.idea/vcs.xml                                                                                                                    |    6 
 JiuMuMesParent/common/servicebase/target/maven-archiver/pom.properties                                                                          |    3 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/service/SysRoleService.java                                                     |   51 
 UI-Project/config.js                                                                                                                            |   10 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/entity/SysRoleMenu.java                                                         |   36 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/MenuMapper.java                                            |   17 
 JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst           |   86 
 UI-Project/src/assets/9.png                                                                                                                     |    0 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/SysUserRole.java                                                     |   38 
 JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst   |    1 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/utils/Result.java                                                                       |   56 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java                                               |   67 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/EquipmentLogService.java                                  |   17 
 UI-Project/src/assets/base.css                                                                                                                  |  119 
 JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web-error-2024-09-04.0.log                                          |   33 
 JiuMuMesParent/JsonFile/PlcLoadGlass.json                                                                                                       |   78 
 JiuMuMesParent/common/springsecurity/target/classes/mapper/SysMenuMapper.xml                                                                    |   15 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/utils/HexUtil.java                                                                      |  322 
 UI-Project/src/assets/2.png                                                                                                                     |    0 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/PrimitiveTaskServiceImpl.java                        |   21 
 UI-Project/src/assets/xmjc.png                                                                                                                  |    0 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/GlassInfo.java                                             |  105 
 .idea/encodings.xml                                                                                                                             |   15 
 JiuMuMesParent/moduleService/DeviceInteractionModule/logs/cacheGlass/web_info.log                                                               |  611 +
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/common/SmbTool.java                                                  |   71 
 JiuMuMesParent/moduleService/DeviceInteractionModule/logs/cacheGlass/web_error.log                                                              |  695 +
 UI-Project/public/vuefavicon.ico                                                                                                                |    0 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/CacheGlassTask.java                                              |   25 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/AccountMapper.java                                         |   17 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/menu/mapper/SysMenuMapper.java                                                       |   20 
 UI-Project/src/views/TL/Temperedlayout/Temperedlayout.vue                                                                                       |  212 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/Page.java                                                  |   45 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/SysUser.java                                                         |   67 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/WorkTaskDetailMapper.xml                               |    5 
 JiuMuMesParent/common/servicebase/target/classes/banner.txt                                                                                     |   32 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/RoleMenuMapper.xml                                     |    5 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/service/PlcAgreement.java                                                               |  136 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/Account.java                                               |   50 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/WorkTaskDetailMapper.java                                  |   17 
 UI-Project/src/views/RegisterView.vue                                                                                                           |  235 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/utils/RedisUtil.java                                                          |  235 
 JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/application-prod.yml                                                        |   22 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/ProjectServiceImpl.java                              |   21 
 UI-Project/src/assets/dlpl9.png                                                                                                                 |    0 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageServiceImpl.java           |   24 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/test/java/com/mes/DeviceInteractionModuleApplicationTest.java                          |   50 
 .idea/.gitignore                                                                                                                                |    8 
 UI-Project/src/assets/dlpla.png                                                                                                                 |    0 
 JiuMuMesParent/common/springsecurity/pom.xml                                                                                                    |   40 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/vo/SysUserVO.java                                                    |   63 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/AppRunnerConfig.java                                                 |   23 
 logs/deviceInteraction/web_error.log                                                                                                            |   42 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/MenuService.java                                          |   42 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/PrimitiveTaskController.java                           |   21 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/ProjectMapper.java                                         |   17 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/TaskingServiceImpl.java                              |   21 
 UI-Project/src/views/mm/purchaseOrder/Payment.vue                                                                                               |  354 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/edgstoragecage/entity/EdgStorageCage.java                            |   51 
 logs/deviceInteraction/web_info.log                                                                                                             |  695 +
 UI-Project/src/lang/index.js                                                                                                                    |   18 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/common/config/Swagger2Config.java                                                       |   78 
 JiuMuMesParent/pom.xml                                                                                                                          |   74 
 UI-Project/src/views/User/page.vue                                                                                                              |  286 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/OrderOriginalPiece.java                                    |   55 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/common/config/WebSocketConfig.java                                                      |   21 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/DeviceInteractionModuleApplication.java                              |   31 
 UI-Project/src/assets/11.png                                                                                                                    |    0 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/ProjectMapper.xml                                      |    5 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/EquipmentLogController.java                            |   21 
 .idea/vcs.xml                                                                                                                                   |    7 
 .idea/modules.xml                                                                                                                               |    8 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/service/SysRoleMenuService.java                                                 |   16 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/TaskLogMapper.java                                         |   17 
 UI-Project/src/assets/background.jpg                                                                                                            |    0 
 JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web_debug.log                                                       |    0 
 UI-Project/src/utils/request.js                                                                                                                 |   48 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/OrderOriginalPieceServiceImpl.java                   |   21 
 UI-Project/src/assets/d3.png                                                                                                                    |    0 
 UI-Project/src/assets/northGlass.ico                                                                                                            |    0 
 UI-Project/src/views/mm/purchaseOrder/Return.vue                                                                                                |  593 +
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/Project.java                                               |   56 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/PrimitiveTaskMapper.xml                                |    5 
 UI-Project/src/assets/woshihuancun.png                                                                                                          |    0 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/MenuMapper.xml                                         |    5 
 JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst |    1 
 UI-Project/src/views/User/userlist.vue                                                                                                          |  355 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/utils/JwtUtil.java                                                            |   55 
 JiuMuMesParent/common/springsecurity/src/main/resources/application-loc.yml                                                                     |   15 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/controller/SysUserController.java                                           |   93 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserRoleServiceImpl.java                                    |   20 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java                                                                |  172 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/TaskLogController.java                                 |   21 
 UI-Project/src/assets/3.png                                                                                                                     |    0 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/ProjectLog.java                                            |   51 
 UI-Project/src/assets/lpl.jpg                                                                                                                   |    0 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/EdgeGrindingLogController.java                         |   21 
 JiuMuMesParent/.idea/libraries/springsecurity_1_0_SNAPSHOT.xml                                                                                  |    9 
 UI-Project/src/views/HomeView.vue                                                                                                               |   27 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java                                            |  139 
 JiuMuMesParent/gateway/src/main/resources/application.yml                                                                                       |   20 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/WorkTaskDetailController.java                          |   21 
 UI-Project/vite.config.js                                                                                                                       |   61 
 JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/application-cz.yml                                                          |   32 
 UI-Project/src/App.vue                                                                                                                          |   14 
 UI-Project/src/stores/counter.js                                                                                                                |   12 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/PrimitiveTaskService.java                                 |   17 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/handler/LoginSuccessHandler.java                                              |   38 
 JiuMuMesParent/common/springsecurity/target/classes/application-dev.yml                                                                         |   15 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java                                            |  148 
 UI-Project/src/views/UnLoadGlass.rar                                                                                                            |    0 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java              |   34 
 UI-Project/src/views/LoginView.vue                                                                                                              |  243 
 JiuMuMesParent/.idea/misc.xml                                                                                                                   |   17 
 JiuMuMesParent/common/servicebase/pom.xml                                                                                                       |   27 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketServer.java                                                              |  175 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/GlassInfoService.java                                     |   17 
 UI-Project/vue.config.js                                                                                                                        |    5 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/GlassInfoMapper.xml                                    |    5 
 JiuMuMesParent/.idea/uiDesigner.xml                                                                                                             |  124 
 JiuMuMesParent/common/springsecurity/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst                           |   39 
 UI-Project/src/assets/bigcar01.png                                                                                                              |    0 
 UI-Project/src/lang/companyInfo.js                                                                                                              |   85 
 UI-Project/auto-imports.d.ts                                                                                                                    |    9 
 JiuMuMesParent/.idea/compiler.xml                                                                                                               |   37 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserService.java                                                 |  110 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtLogoutSuccessHandler.java                                          |   40 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/TaskLog.java                                               |   56 
 .idea/jarRepositories.xml                                                                                                                       |   30 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/menu/service/SysMenuService.java                                                     |   66 
 JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web_warn.log                                                        |   60 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/EdgeGrindingLogMapper.xml                              |    5 
 .idea/uiDesigner.xml                                                                                                                            |  124 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java                                        |  271 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/edgstoragecage/mapper/EdgStorageCageMapper.java                      |   17 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/application.yml                                                         |   28 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/GlassInfoMapper.java                                       |   17 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/test/test.iml                                                                          |   11 
 UI-Project/src/assets/xmjclzh.png                                                                                                               |    0 
 UI-Project/src/utils/unloadrequest.js                                                                                                           |   49 
 UI-Project/src/assets/d2.png                                                                                                                    |    0 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/service/ModbusTcp.java                                                                  |   43 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/RoleMenu.java                                              |   50 
 UI-Project/src/assets/d1a.png                                                                                                                   |    0 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/RoleMapper.java                                            |   17 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/GlassInfoServiceImpl.java                            |   21 
 JiuMuMesParent/common/springsecurity/src/main/resources/application-prod.yml                                                                    |   15 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/MenuController.java                                    |   68 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/RoleMenuService.java                                      |   44 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/service/Communication.java                                                              |   36 
 UI-Project/src/assets/logo.svg                                                                                                                  |    1 
 .idea/compiler.xml                                                                                                                              |   25 
 UI-Project/src/assets/shangpian.png                                                                                                             |    0 
 JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web-error-2024-09-03.0.log                                          |   39 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleMenuServiceImpl.java                                        |   20 
 UI-Project/index.html                                                                                                                           |   13 
 UI-Project/src/views/Permissions/permissionslist.vue                                                                                            |  419 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/TaskingMapper.java                                         |   17 
 UI-Project/src/assets/main.css                                                                                                                  |   54 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/AccountController.java                                 |   96 
 JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/application.yml                                                             |   28 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/RoleController.java                                    |   64 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/EdgeGrindingLogService.java                               |   17 
 UI-Project/src/assets/lpla.jpg                                                                                                                  |    0 
 JiuMuMesParent/moduleService/pom.xml                                                                                                            |   80 
 JiuMuMesParent/readMe.md                                                                                                                        |   18 
 logs/deviceInteraction/web-error-2024-09-04.0.log                                                                                               |   15 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/MenuServiceImpl.java                                 |   55 
 JiuMuMesParent/gateway/target/maven-archiver/pom.properties                                                                                     |    3 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/JsonFile/PlcCacheGlass.json                                             |   64 
 UI-Project/src/views/User/permissions.vue                                                                                                       |  455 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/ProjectController.java                                 |   21 
 UI-Project/src/assets/dipan.png                                                                                                                 |    0 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/entity/SysRole.java                                                             |   50 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/main.iml                                                                          |   14 
 UI-Project/src/stores/tableData.js                                                                                                              |  225 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/utils/UserInfoUtils.java                                                      |   26 
 JiuMuMesParent/.idea/libraries/servicebase_1_0_SNAPSHOT.xml                                                                                     |    9 
 JiuMuMesParent/JsonFile/PlcCacheGlass.json                                                                                                      |   64 
 UI-Project/src/lang/zh.js                                                                                                                       |  120 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/edgstoragecage/entity/EdgStorageCageDetails.java                     |  122 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/PageServiceImpl.java                                 |   54 
 JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/logback-spring.xml                                                          |  170 
 JiuMuMesParent/common/springsecurity/target/classes/application-loc.yml                                                                         |   15 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMenuMapper.java                                                   |   17 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/EquipmentLog.java                                          |   56 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java                                    |   23 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/menu/controller/SysMenuController.java                                               |   83 
 UI-Project/src/assets/sz.png                                                                                                                    |    0 
 logs/deviceInteraction/web_debug.log                                                                                                            |    0 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/utils/MD5.java                                                                          |   36 
 UI-Project/src/main.js                                                                                                                          |   36 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/PageController.java                                    |   66 
 JiuMuMesParent/common/servicebase/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst                              |   31 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/ProjectLogMapper.java                                      |   17 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/Tasking.java                                               |  120 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/EdgeGrindingLogServiceImpl.java                      |   21 
 JiuMuMesParent/gateway/gateway1.iml                                                                                                             |   11 
 JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web-info-2024-09-03.0.log                                           |  672 +
 JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web_error.log                                                       |    9 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/tools/DatabaseDesignDocUtil.java                                                        |   97 
 JiuMuMesParent/common/servicebase/src/main/resources/banner.txt                                                                                 |   32 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java                    |   21 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterObject.java                                                          |  274 
 JiuMuMesParent/gateway/target/classes/application.yml                                                                                           |   20 
 JiuMuMesParent/moduleService/DeviceInteractionModule/pom.xml                                                                                    |   39 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserRoleService.java                                             |   17 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/EquipmentLogServiceImpl.java                         |   21 
 JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web-info-2024-09-04.0.log                                           |  493 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/EquipmentLogMapper.java                                    |   17 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterInfo.java                                                            |  126 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/Menu.java                                                  |   45 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/AccountServiceImpl.java                              |  179 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/application-cz.yml                                                      |   32 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/GlassInfoController.java                               |   21 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/application-prod.yml                                                    |   22 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/tools/HexConversion.java                                                                |   55 
 UI-Project/package.json                                                                                                                         |   41 
 logs/deviceInteraction/web-info-2024-09-04.0.log                                                                                                |  643 +
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/common/exception/ServiceException.java                                                  |   14 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/engineering/mapper/EngineeringMapper.java                                               |   16 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/ProjectLogController.java                              |   21 
 .idea/JiuMuMES.iml                                                                                                                              |    9 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/engineering/service/EngineeringService.java                                             |   16 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/common/S7object.java                                                 |   62 
 UI-Project/src/assets/lpa.png                                                                                                                   |    0 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/utils/WebUtils.java                                                           |   30 
 JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-archiver/pom.properties                                                       |    3 
 JiuMuMesParent/.idea/.gitignore                                                                                                                 |    8 
 JiuMuMesParent/gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst                                       |    2 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/RoleServiceImpl.java                                 |   56 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/PageMapper.xml                                         |    5 
 UI-Project/src/assets/d1.png                                                                                                                    |    0 
 UI-Project/src/assets/lp9.png                                                                                                                   |    0 
 UI-Project/src/assets/taimian.png                                                                                                               |    0 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/mapper/xml/SysRoleMenuMapper.xml                                                |    5 
 JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web_info.log                                                        |  135 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/RoleMapper.xml                                         |    5 
 UI-Project/src/assets/dpxsa.png                                                                                                                 |    0 
 UI-Project/src/router/index.js                                                                                                                  |   90 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/mapper/xml/SysRoleMapper.xml                                                    |    5 
 JiuMuMesParent/common/springsecurity/src/main/resources/application-dev.yml                                                                     |   15 
 UI-Project/README.md                                                                                                                            |   29 
 UI-Project/src/assets/88.png                                                                                                                    |    0 
 UI-Project/src/utils/WebSocketService.js                                                                                                        |   50 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/TaskLogServiceImpl.java                              |   21 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/handler/LoginFailureHandler.java                                              |   31 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/WorkTaskDetailService.java                                |   17 
 JiuMuMesParent/gateway/pom.xml                                                                                                                  |   40 
 UI-Project/src/layout/MainErpView.vue                                                                                                           |  377 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/entity/vo/SysRoleVO.java                                                        |   44 
 JiuMuMesParent/gateway/src/main/java/com/mes/GateWayApplication.java                                                                            |   20 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtAuthenticationEntryPoint.java                                      |   33 
 UI-Project/src/views/mm/purchaseOrder/CreateHeader.vue                                                                                          |  739 +
 JiuMuMesParent/.idea/encodings.xml                                                                                                              |   21 
 UI-Project/src/assets/img.png                                                                                                                   |    0 
 JiuMuMesParent/gateway/src/main/java/com/mes/config/MyCorsConfig.java                                                                           |   34 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/RoleService.java                                          |   42 
 UI-Project/src/assets/shangpianji.png                                                                                                           |    0 
 UI-Project/src/assets/1.png                                                                                                                     |    0 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/config/TokenWebSecurityConfig.java                                            |   94 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/RoleMenuServiceImpl.java                             |   87 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/OrderOriginalPieceMapper.xml                           |    5 
 JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/application-dev.yml                                                         |   32 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/tools/S7control.java                                                                    |  465 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/common/exception/GlobalExceptionHandler.java                                            |   32 
 JiuMuMesParent/moduleService/DeviceInteractionModule/logs/cacheGlass/web_debug.log                                                              |    0 
 UI-Project/src/assets/ypcc.png                                                                                                                  |    0 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/EdgeGrindingLogMapper.java                                 |   17 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/ProjectLogMapper.xml                                   |    5 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMapper.java                                                       |   16 
 JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst         |   86 
 UI-Project/public/favicon.ico                                                                                                                   |    0 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/utils/ResultCodeEnum.java                                                               |   33 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserRoleMapper.java                                               |   17 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/ProjectService.java                                       |   17 
 UI-Project/src/stores/sd/product/productGlassType.js                                                                                            |   11 
 JiuMuMesParent/common/servicebase/src/main/java/com/mes/tools/InitUtil.java                                                                     |  107 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/logback-spring.xml                                                      |  170 
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserMapper.java                                                   |   18 
 UI-Project/src/lang/en.js                                                                                                                       |  302 
 UI-Project/src/utils/constants.js                                                                                                               |    4 
 JiuMuMesParent/common/springsecurity/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst                         |   39 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/PageService.java                                          |   39 
 JiuMuMesParent/gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst                                         |    2 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/OrderOriginalPieceService.java                            |   17 
 JiuMuMesParent/moduleService/DeviceInteractionModule/logs/cacheGlass/web_warn.log                                                               |  194 
 JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/JsonFile/PlcCacheGlass.json                                                 |   64 
 UI-Project/package-lock.json                                                                                                                    | 3682 +++++++
 JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/xml/SysUserRoleMapper.xml                                            |    5 
 UI-Project/src/assets/lpa9.png                                                                                                                  |    0 
 JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/TaskLogService.java                                       |   17 
 367 files changed, 29,817 insertions(+), 0 deletions(-)

diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..35410ca
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# 榛樿蹇界暐鐨勬枃浠�
+/shelf/
+/workspace.xml
+# 鍩轰簬缂栬緫鍣ㄧ殑 HTTP 瀹㈡埛绔姹�
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/JiuMuMES.iml b/.idea/JiuMuMES.iml
new file mode 100644
index 0000000..d6ebd48
--- /dev/null
+++ b/.idea/JiuMuMES.iml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..517a200
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CompilerConfiguration">
+    <annotationProcessing>
+      <profile default="true" name="Default" enabled="true" />
+      <profile name="Maven default annotation processors profile" enabled="true">
+        <sourceOutputDir name="target/generated-sources/annotations" />
+        <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
+        <outputRelativeToContentRoot value="true" />
+        <module name="springsecurity" />
+        <module name="servicebase" />
+        <module name="deviceInteraction" />
+        <module name="gateway" />
+      </profile>
+    </annotationProcessing>
+  </component>
+  <component name="JavacSettings">
+    <option name="ADDITIONAL_OPTIONS_OVERRIDE">
+      <module name="deviceInteraction" options="-parameters" />
+      <module name="gateway" options="-parameters" />
+      <module name="servicebase" options="-parameters" />
+      <module name="springsecurity" options="-parameters" />
+    </option>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 0000000..746b686
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding">
+    <file url="file://$PROJECT_DIR$/JiuMuMesParent/common/servicebase/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/JiuMuMesParent/common/springsecurity/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/JiuMuMesParent/common/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/JiuMuMesParent/common/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/JiuMuMesParent/gateway/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/JiuMuMesParent/moduleService/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/JiuMuMesParent/moduleService/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/JiuMuMesParent/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/JiuMuMesParent/src/main/resources" charset="UTF-8" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 0000000..8c84b40
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="RemoteRepositoriesConfiguration">
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Central Repository" />
+      <option name="url" value="https://repo.maven.apache.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Maven Central repository" />
+      <option name="url" value="https://repo1.maven.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="jboss.community" />
+      <option name="name" value="JBoss Community repository" />
+      <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="nexus-aliyun" />
+      <option name="name" value="Nexus aliyun" />
+      <option name="url" value="https://maven.aliyun.com/repository/public" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="spring" />
+      <option name="name" value="spring" />
+      <option name="url" value="https://maven.aliyun.com/repository/spring" />
+    </remote-repository>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..6c9241d
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ExternalStorageConfigurationManager" enabled="true" />
+  <component name="MavenProjectsManager">
+    <option name="originalFiles">
+      <list>
+        <option value="$PROJECT_DIR$/JiuMuMesParent/pom.xml" />
+        <option value="$PROJECT_DIR$/JiuMuMesParent/common/springsecurity/pom.xml" />
+      </list>
+    </option>
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+    <output url="file://$PROJECT_DIR$/out" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..26aa059
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/JiuMuMES.iml" filepath="$PROJECT_DIR$/.idea/JiuMuMES.iml" />
+    </modules>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
new file mode 100644
index 0000000..2b63946
--- /dev/null
+++ b/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Palette2">
+    <group name="Swing">
+      <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
+      </item>
+      <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
+        <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
+        <initial-values>
+          <property name="text" value="Button" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="RadioButton" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="CheckBox" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="Label" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
+          <preferred-size width="-1" height="20" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
+      </item>
+    </group>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..8f56832
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="Git" />
+    <mapping directory="$PROJECT_DIR$/jiumu" vcs="Git" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/JiuMuMesParent/.idea/.gitignore b/JiuMuMesParent/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/JiuMuMesParent/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/JiuMuMesParent/.idea/compiler.xml b/JiuMuMesParent/.idea/compiler.xml
new file mode 100644
index 0000000..d20a0db
--- /dev/null
+++ b/JiuMuMesParent/.idea/compiler.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CompilerConfiguration">
+    <annotationProcessing>
+      <profile default="true" name="Default" enabled="true" />
+      <profile name="Maven default annotation processors profile" enabled="true">
+        <sourceOutputDir name="target/generated-sources/annotations" />
+        <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
+        <outputRelativeToContentRoot value="true" />
+        <module name="servicebase" />
+        <module name="springsecurity" />
+        <module name="gateway" />
+        <module name="cacheGlass" />
+      </profile>
+    </annotationProcessing>
+    <bytecodeTargetLevel>
+      <module name="cacheVerticalGlass" target="1.8" />
+      <module name="glassStorage" target="1.8" />
+      <module name="loadGlass" target="1.8" />
+      <module name="temperingGlass" target="1.8" />
+      <module name="unLoadGlass" target="1.8" />
+    </bytecodeTargetLevel>
+  </component>
+  <component name="JavacSettings">
+    <option name="ADDITIONAL_OPTIONS_OVERRIDE">
+      <module name="cacheGlass" options="-parameters" />
+      <module name="cacheVerticalGlass" options="-parameters" />
+      <module name="gateway" options="-parameters" />
+      <module name="glassStorage" options="-parameters" />
+      <module name="loadGlass" options="-parameters" />
+      <module name="servicebase" options="-parameters" />
+      <module name="springsecurity" options="-parameters" />
+      <module name="temperingGlass" options="-parameters" />
+      <module name="unLoadGlass" options="-parameters" />
+    </option>
+  </component>
+</project>
\ No newline at end of file
diff --git a/JiuMuMesParent/.idea/encodings.xml b/JiuMuMesParent/.idea/encodings.xml
new file mode 100644
index 0000000..b18a0c7
--- /dev/null
+++ b/JiuMuMesParent/.idea/encodings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding">
+    <file url="file://$PROJECT_DIR$/common/servicebase/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/common/springsecurity/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/common/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/common/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/gateway/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/moduleService/CacheGlassModule/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/moduleService/CacheVerticalGlassModule/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/moduleService/GlassStorageModule/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/moduleService/LoadGlassModule/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/moduleService/TemperingGlassModule/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/moduleService/UnLoadGlassModule/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/moduleService/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/moduleService/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/../../Work/鍖楃幓/apache-maven-3.3.9/repository/org/springframework/boot/spring-boot-starter-parent/2.1.8.RELEASE/src/main/resources" charset="UTF-8" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/JiuMuMesParent/.idea/jarRepositories.xml b/JiuMuMesParent/.idea/jarRepositories.xml
new file mode 100644
index 0000000..159ba94
--- /dev/null
+++ b/JiuMuMesParent/.idea/jarRepositories.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="RemoteRepositoriesConfiguration">
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Central Repository" />
+      <option name="url" value="https://repo.maven.apache.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Maven Central repository" />
+      <option name="url" value="https://repo1.maven.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Central Repository" />
+      <option name="url" value="http://maven.aliyun.com/nexus/content/groups/public" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="jboss.community" />
+      <option name="name" value="JBoss Community repository" />
+      <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="nexus-aliyun" />
+      <option name="name" value="Nexus aliyun" />
+      <option name="url" value="https://maven.aliyun.com/repository/public" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="spring" />
+      <option name="name" value="spring" />
+      <option name="url" value="https://maven.aliyun.com/repository/spring" />
+    </remote-repository>
+  </component>
+</project>
\ No newline at end of file
diff --git a/JiuMuMesParent/.idea/libraries/servicebase_1_0_SNAPSHOT.xml b/JiuMuMesParent/.idea/libraries/servicebase_1_0_SNAPSHOT.xml
new file mode 100644
index 0000000..0d5faa0
--- /dev/null
+++ b/JiuMuMesParent/.idea/libraries/servicebase_1_0_SNAPSHOT.xml
@@ -0,0 +1,9 @@
+<component name="libraryTable">
+  <library name="servicebase-1.0-SNAPSHOT">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/common/servicebase/target/servicebase-1.0-SNAPSHOT.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>
\ No newline at end of file
diff --git a/JiuMuMesParent/.idea/libraries/springsecurity_1_0_SNAPSHOT.xml b/JiuMuMesParent/.idea/libraries/springsecurity_1_0_SNAPSHOT.xml
new file mode 100644
index 0000000..37bbab6
--- /dev/null
+++ b/JiuMuMesParent/.idea/libraries/springsecurity_1_0_SNAPSHOT.xml
@@ -0,0 +1,9 @@
+<component name="libraryTable">
+  <library name="springsecurity-1.0-SNAPSHOT">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/common/springsecurity/target/springsecurity-1.0-SNAPSHOT.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>
\ No newline at end of file
diff --git a/JiuMuMesParent/.idea/misc.xml b/JiuMuMesParent/.idea/misc.xml
new file mode 100644
index 0000000..5b1c858
--- /dev/null
+++ b/JiuMuMesParent/.idea/misc.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ExternalStorageConfigurationManager" enabled="true" />
+  <component name="MavenProjectsManager">
+    <option name="originalFiles">
+      <list>
+        <option value="$PROJECT_DIR$/pom.xml" />
+      </list>
+    </option>
+    <option name="ignoredFiles">
+      <set>
+        <option value="$PROJECT_DIR$/moduleService/CacheVerticalGlassModule/pom.xml" />
+      </set>
+    </option>
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK" />
+</project>
\ No newline at end of file
diff --git a/JiuMuMesParent/.idea/uiDesigner.xml b/JiuMuMesParent/.idea/uiDesigner.xml
new file mode 100644
index 0000000..2b63946
--- /dev/null
+++ b/JiuMuMesParent/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Palette2">
+    <group name="Swing">
+      <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
+      </item>
+      <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
+        <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
+        <initial-values>
+          <property name="text" value="Button" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="RadioButton" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="CheckBox" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="Label" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
+          <preferred-size width="-1" height="20" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
+      </item>
+    </group>
+  </component>
+</project>
\ No newline at end of file
diff --git a/JiuMuMesParent/.idea/vcs.xml b/JiuMuMesParent/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/JiuMuMesParent/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/JiuMuMesParent/JsonFile/PlcCacheGlass.json b/JiuMuMesParent/JsonFile/PlcCacheGlass.json
new file mode 100644
index 0000000..01969b7
--- /dev/null
+++ b/JiuMuMesParent/JsonFile/PlcCacheGlass.json
@@ -0,0 +1,64 @@
+{
+   "plcAddressBegin":"DB11.0",
+   "plcAddressLenght":"80",
+   "dataType":"word",
+   "parameteInfor":[
+      {
+         "codeId": "A06_request_word",
+         "addressIndex":"0",
+         "addressLenght":"2", 
+         "ratio":"1", 
+         "unit":"m/min"    
+      },
+      {
+          "codeId": "A05_scanning_ID",
+          "addressIndex":"2",
+          "addressLenght":"30",
+          "ratio":"1",
+          "unit":""
+       },
+       {
+          "codeId": "Current_slot",
+          "addressIndex":"36",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       },
+        {
+          "codeId": "MES_confirmation_word",
+          "addressIndex":"38",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       },
+       {
+          "codeId": "A08_glass_status",
+          "addressIndex":"68",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       },
+       {
+          "codeId": "A10_glass_status",
+          "addressIndex":"70",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       },
+       {
+          "codeId": "A09_prohibit_film_production",
+          "addressIndex":"72",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       }
+       ,
+       {
+          "codeId": "A10_prohibit_film_production",
+          "addressIndex":"74",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       }
+   ]
+}
diff --git a/JiuMuMesParent/JsonFile/PlcCacheVerticalGlass.json b/JiuMuMesParent/JsonFile/PlcCacheVerticalGlass.json
new file mode 100644
index 0000000..10e8e33
--- /dev/null
+++ b/JiuMuMesParent/JsonFile/PlcCacheVerticalGlass.json
@@ -0,0 +1,377 @@
+{
+	"plcAddressBegin": "DB14.0",
+	"plcAddressLenght": "938",
+	"dataType": "word",
+	"parameteInfor": [{
+			"codeId": "D01ID",
+			"addressIndex": "0",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D02ID",
+			"addressIndex": "32",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D03ID1",
+			"addressIndex": "64",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D03ID2",
+			"addressIndex": "96",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D03ID3",
+			"addressIndex": "128",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D03ID4",
+			"addressIndex": "160",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D03ID5",
+			"addressIndex": "192",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D03ID6",
+			"addressIndex": "224",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D04ID",
+			"addressIndex": "256",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D05ID1",
+			"addressIndex": "288",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D05ID2",
+			"addressIndex": "328",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D05ID3",
+			"addressIndex": "352",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D05ID4",
+			"addressIndex": "384",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D05ID5",
+			"addressIndex": "416",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D05ID6",
+			"addressIndex": "448",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "E01ID1",
+			"addressIndex": "480",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "E01ID2",
+			"addressIndex": "512",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "E01ID3",
+			"addressIndex": "544",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "E01ID4",
+			"addressIndex": "576",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "E01ID5",
+			"addressIndex": "608",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "E01ID6",
+			"addressIndex": "640",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "E02ID1",
+			"addressIndex": "672",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "E02ID2",
+			"addressIndex": "704",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "E02ID3",
+			"addressIndex": "736",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "E02ID4",
+			"addressIndex": "768",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "E02ID5",
+			"addressIndex": "800",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "E02ID6",
+			"addressIndex": "832",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D03ToMES",
+			"addressIndex": "874",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D05ToMES",
+			"addressIndex": "876",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D01ToMES",
+			"addressIndex": "878",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D04ToMES",
+			"addressIndex": "880",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "MESToD03",
+			"addressIndex": "888",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "MESToD05",
+			"addressIndex": "890",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "MESToPLC",
+			"addressIndex": "892",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "StartAddToImport1",
+			"addressIndex": "914",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "StartAddToImport2",
+			"addressIndex": "916",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "StartAddToImport3",
+			"addressIndex": "918",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "StartAddToImport4",
+			"addressIndex": "920",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "StartAddToImport5",
+			"addressIndex": "922",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "StartAddToImport6",
+			"addressIndex": "924",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "TargetAddToImport1",
+			"addressIndex": "926",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "TargetAddToImport2",
+			"addressIndex": "928",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "TargetAddToImport3",
+			"addressIndex": "930",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "TargetAddToImport4",
+			"addressIndex": "932",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "TargetAddToImport5",
+			"addressIndex": "934",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "TargetAddToImport6",
+			"addressIndex": "936",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "deviceState",
+			"addressIndex": "864",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "E01State",
+			"addressIndex": "866",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "E02State",
+			"addressIndex": "868",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D03State",
+			"addressIndex": "870",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D05State",
+			"addressIndex": "872",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "MESToD01",
+			"addressIndex": "894",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "MESToD04",
+			"addressIndex": "896",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		}
+	]
+}
\ No newline at end of file
diff --git a/JiuMuMesParent/JsonFile/PlcLoadGlass.json b/JiuMuMesParent/JsonFile/PlcLoadGlass.json
new file mode 100644
index 0000000..9b0432b
--- /dev/null
+++ b/JiuMuMesParent/JsonFile/PlcLoadGlass.json
@@ -0,0 +1,78 @@
+{
+  "plcAddressBegin":"DB1.2000",
+  "plcAddressLenght":"100",
+  "dataType":"word",
+  "parameteInfor":[
+    {
+      "codeId": "loadRequest",
+      "addressIndex":"0",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":"m/min"
+    },
+    {
+      "codeId": "PlcStatus",
+      "addressIndex":"10",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":""
+    },
+    {
+      "codeId": "MesToPlc",
+      "addressIndex":"20",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":""
+    },
+    {
+      "codeId": "InkageStatus",
+      "addressIndex":"22",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":""
+    },
+    {
+      "codeId": "WorkId",
+      "addressIndex":"24",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":""
+    },
+    {
+      "codeId": "GlassWidth",
+      "addressIndex":"26",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":""
+    },
+    {
+      "codeId": "GlassHeight",
+      "addressIndex":"28",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":""
+    }
+  ,
+    {
+      "codeId": "MesToPlcStatus",
+      "addressIndex":"40",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":""
+    },
+    {
+      "codeId": "MesToPlcStatusId",
+      "addressIndex":"42",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":""
+    },
+    {
+      "codeId": "MesTaskStatus",
+      "addressIndex":"56",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":""
+    }
+  ]
+}
\ No newline at end of file
diff --git a/JiuMuMesParent/JsonFile/PlcdownGlass.json b/JiuMuMesParent/JsonFile/PlcdownGlass.json
new file mode 100644
index 0000000..979dc66
--- /dev/null
+++ b/JiuMuMesParent/JsonFile/PlcdownGlass.json
@@ -0,0 +1,144 @@
+{
+	"plcAddressBegin": "DB11.0",
+	"plcAddressLenght": "100",
+	"dataType": "word",
+	"parameteInfor": [
+
+		{
+			"codeId": "requestWord",
+			"addressIndex": "0",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "requestID",
+			"addressIndex": "2",
+			"addressLenght": "30"
+		},
+		{
+			"codeId": "currentCell",
+			"addressIndex": "32",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "glassStatus08",
+			"addressIndex": "36",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G06_glass_status",
+			"addressIndex": "40",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G11_glass_status",
+			"addressIndex": "42",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G13_glass_status",
+			"addressIndex": "44",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G04_error_status",
+			"addressIndex": "48",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G05_error_status",
+			"addressIndex": "50",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G06_error_status",
+			"addressIndex": "52",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "robot_error_status",
+			"addressIndex": "54",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G08_error_status",
+			"addressIndex": "56",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G09_error_status",
+			"addressIndex": "58",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G10_error_status",
+			"addressIndex": "60",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G11_error_status",
+			"addressIndex": "62",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "robot_error_status",
+			"addressIndex": "64",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G13_error_status",
+			"addressIndex": "66",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "confirmationWord",
+			"addressIndex": "72",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G06_prohibit_film_production",
+			"addressIndex": "74",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G11_prohibit_film_production",
+			"addressIndex": "76",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G13_prohibit_film_production",
+			"addressIndex": "78",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "Glass_width",
+			"addressIndex": "82",
+			"addressLenght": "4"
+		},
+		{
+			"codeId": "Glass_height",
+			"addressIndex": "86",
+			"addressLenght": "4"
+		},
+		{
+			"codeId": "Glass_thickness",
+			"addressIndex": "90",
+			"addressLenght": "4"
+		},
+		{
+			"codeId": "Start_cell",
+			"addressIndex": "94",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "End_cell",
+			"addressIndex": "96",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "task_type",
+			"addressIndex": "98",
+			"addressLenght": "2"
+		}
+
+	]
+}
\ No newline at end of file
diff --git a/JiuMuMesParent/common/pom.xml b/JiuMuMesParent/common/pom.xml
new file mode 100644
index 0000000..d6ca10d
--- /dev/null
+++ b/JiuMuMesParent/common/pom.xml
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>JiuMuMesParent</artifactId>
+        <groupId>com.mes</groupId>
+        <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>common</artifactId>
+    <packaging>pom</packaging>
+    <modules>
+        <module>servicebase</module>
+<!--        <module>springsecurity</module>-->
+    </modules>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+    <dependencies>
+
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <!--        mybatis-plus-->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.3.1</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.github.yulichang</groupId>
+            <artifactId>mybatis-plus-join-boot-starter</artifactId>
+            <version>1.4.8</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
+            <version>3.3.1</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.18.8</version>
+        </dependency>
+
+        <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore -->
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpcore</artifactId>
+            <version>4.4.12</version>
+        </dependency>
+
+
+        <dependency>
+            <groupId>commons-lang</groupId>
+            <artifactId>commons-lang</artifactId>
+            <version>2.6</version>
+        </dependency>
+
+        <!--    瀵煎叆mysql椹卞姩    -->
+        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>8.0.17</version>
+        </dependency>
+
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>servlet-api</artifactId>
+            <version>2.5</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>javax.validation</groupId>
+            <artifactId>validation-api</artifactId>
+            <version>2.0.1.Final</version>
+        </dependency>
+
+        <!--浠g爜鐢熸垚宸ュ叿-->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-generator</artifactId>
+            <version>3.4.1</version>
+        </dependency>
+
+        <dependency>
+            <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>
+            <artifactId>druid</artifactId>
+            <version>1.1.8</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>-->
+        <!--            <groupId>com.github.xiaoymin</groupId>-->
+        <!--            <artifactId>knife4j-spring-boot-starter</artifactId>-->
+        <!--            <version>2.0.6</version>-->
+        <!--        </dependency>-->
+
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+            <version>2.7.0</version>
+        </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+            <version>2.7.0</version>
+        </dependency>
+
+        <!--hutool java楠岃瘉鏂规硶绫�-->
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.4.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.github.xingshuangs</groupId>
+            <artifactId>iot-communication</artifactId>
+            <version>1.4.2</version>
+        </dependency>
+
+        <!--寮曞叆redis,鎺掗櫎lettuce鐨勫紩鐢�-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-redis</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.lettuce</groupId>
+                    <artifactId>lettuce-core</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <!-- 寮曞叆Jedis瀹㈡埗绔�-->
+        <dependency>
+            <groupId>redis.clients</groupId>
+            <artifactId>jedis</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.33</version>
+        </dependency>
+
+        <!--        <dependency>-->
+        <!--            <groupId>com.github.yulichang</groupId>-->
+        <!--            <artifactId>mybatis-plus-join</artifactId>-->
+        <!--            <version>1.2.4</version>-->
+        <!--        </dependency>-->
+        <dependency>
+            <groupId>com.github.yulichang</groupId>
+            <artifactId>mybatis-plus-join-boot-starter</artifactId>
+            <version>1.4.12</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-websocket</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-thymeleaf</artifactId>
+        </dependency>
+    </dependencies>
+
+
+</project>
\ No newline at end of file
diff --git a/JiuMuMesParent/common/servicebase/pom.xml b/JiuMuMesParent/common/servicebase/pom.xml
new file mode 100644
index 0000000..4f1f015
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/pom.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>common</artifactId>
+        <groupId>com.mes</groupId>
+        <version>1.0-SNAPSHOT</version>
+
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>servicebase</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>com.microsoft.sqlserver</groupId>
+            <artifactId>mssql-jdbc</artifactId>
+            <version>6.4.0.jre8</version>
+        </dependency>
+    </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/JiuMuMesParent/common/servicebase/servicebase1.iml b/JiuMuMesParent/common/servicebase/servicebase1.iml
new file mode 100644
index 0000000..f76df2b
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/servicebase1.iml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
new file mode 100644
index 0000000..2ea5807
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
@@ -0,0 +1,172 @@
+package com.mes.common.config;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/4/24 10:33
+ * @Description:
+ */
+public class Const {
+    //榛樿瀵嗙爜
+    public static final String DEFULT_PASSWORD = "123456";
+    //榛樿瑙掕壊
+    public static final Long DEFULT_ROLE = 1L;
+
+    /**
+     * 纾ㄨ竟娓呮礂鍓�
+     */
+    /**
+     * A09鍑虹墖鐩爣浣嶇疆  d02鍗ц浆绔�    2001
+     * A10鍑虹墖鐩爣浣嶇疆  d05鍗ц浆绔�    2002
+     */
+    public static final Integer OUT_TARGET_POSITION_ZERO = 0;
+    public static final Integer A09_OUT_TARGET_POSITION = 2001;
+    public static final Integer A10_OUT_TARGET_POSITION = 2002;
+
+
+    /**
+     * A09鍑虹墖鐩爣浣嶇疆  d02鍗ц浆绔� 閽㈠寲鍑虹墖    3001
+     * A10鍑虹墖鐩爣浣嶇疆  d05鍗ц浆绔� 浜哄伐鍑虹墖    3002
+     */
+    public static final Integer TEMPERING_OUT_TARGET_POSITION = 3001;
+    public static final Integer ARTIFICIAL_OUT_TARGET_POSITION = 3002;
+
+    /**
+     * 鍗у紡鐞嗙墖绗艰鎯呰〃鐜荤拑鐘舵��
+     * 璇嗗埆鍚庢垚鍔熺姸鎬�0
+     * 璇嗗埆鍚庢垚鍔熻繘绗肩殑鐘舵��100
+     * 鍑虹墖浠诲姟101
+     * 浜哄伐涓嬬墖102
+     * 鍑虹墖涓�103
+     * 璋冨害涓�104
+     * 鎷胯蛋200
+     * 鐮存崯201
+     */
+    public static final Integer GLASS_STATE_NEW = 0;
+    public static final Integer GLASS_STATE_IN = 100;
+    public static final Integer GLASS_STATE_OUT = 101;
+    public static final Integer GLASS_STATE_ARTIFICIAL = 102;
+    public static final Integer GLASS_STATE_OUT_ING = 103;
+    public static final Integer GLASS_STATE_SCHEDULE_ING = 104;
+    public static final Integer GLASS_STATE_TAKE = 200;
+    public static final Integer GLASS_STATE_DAMAGE = 201;
+    public static final List<Integer> GLASS_STATE_IN_ALL = Arrays.asList(100, 102, 103, 104);
+    public static final List<Integer> GLASS_STATE_IN_ALL_ZERO = Arrays.asList(0, 100, 102, 103, 104);
+
+    /**
+     * 鍗у紡鐞嗙墖绗艰鎯呰〃鐜荤拑鐘舵��
+     * 杩涚墖浠诲姟1
+     * 鍑虹墖浠诲姟2
+     */
+    public static final Integer GLASS_CACHE_TYPE_IN = 1;
+    public static final Integer GLASS_CACHE_TYPE_OUT = 2;
+    public static final Integer GLASS_CACHE_TYPE_THROUGH = 3;
+    public static final List<Integer> GLASS_CACHE_TYPE_OUT_ALL = Arrays.asList(2, 3);
+
+    /**
+     * 纾ㄨ竟浠诲姟鐜荤拑鐘舵��
+     * 杩涚墖浠诲姟1
+     * 鍑虹墖浠诲姟2
+     */
+    public static final Integer EDG_GLASS_BEFORE = 0;
+    public static final Integer EDG_GLASS_START = 1;
+    public static final Integer EDG_GLASS_SUCCESS = 2;
+
+    /**
+     * 纾ㄨ竟浠诲姟鐜荤拑鐘舵��
+     * 1鍗曟満鑷姩鐘舵��
+     * 2鑱旀満鑷姩鐘舵��
+     * 3鎵嬪姩鐘舵��
+     */
+    public static final Integer BIG_STORAGE_STAND_ALONE = 1;
+    public static final Integer BIG_STORAGE_ONLINE = 2;
+    public static final Integer BIG_STORAGE_MT = 3;
+
+    /**
+     * 澶х悊鐗囩璇锋眰
+     * 0 澶х悊鐗囩鏃犺姹�
+     * 1 澶х悊鐗囩杩涚墖璇锋眰
+     */
+    public static final String BIG_STORAGE_REQUEST = "0";
+    public static final String BIG_STORAGE_REQUEST_IN = "1";
+
+    /**
+     * 鍗ц浆绔嬭繘鐗囪姹�
+     * 1 浠诲姟鐢熸垚
+     * 2 鍗ц浆绔嬭繘鐗囧畬鎴�
+     * 3 澶ц溅杩涚墖瀹屾垚
+     * 4 澶х悊鐗囩杩涚墖瀹屾垚
+     * 5 澶х悊鐗囩杩涚墖澶辫触
+     * 6 澶х悊鐗囩杩涚墖鐮存崯
+     */
+    public static final Integer BIG_STORAGE_IN_NEW = 1;
+    public static final Integer BIG_STORAGE_IN_UP = 2;
+    public static final Integer BIG_STORAGE_IN_CAR = 3;
+    public static final Integer BIG_STORAGE_IN_SLOT = 4;
+    public static final Integer BIG_STORAGE_IN_ERROR = 5;
+    public static final Integer BIG_STORAGE_IN_DAMAGE = 6;
+    public static final List<Integer> BIG_STORAGE_IN_UP_ALL = Arrays.asList(1, 2);
+    /**
+     * 鍗ц浆绔嬪嚭鐗囪姹�
+     * 1 浠诲姟鐢熸垚
+     * 2 鐜荤拑杩涘ぇ杞﹀畬鎴�
+     * 3 澶ц溅鍑虹墖瀹屾垚
+     * 4 澶х悊鐗囩杩涚墖澶辫触
+     * 5 澶х悊鐗囩杩涚墖鐮存崯
+     */
+    public static final Integer BIG_STORAGE_OUT_NEW = 1;
+    public static final Integer BIG_STORAGE_OUT_CAR = 2;
+    public static final Integer BIG_STORAGE_OUT_SUCCESS = 3;
+    public static final Integer BIG_STORAGE_OUT_ERROR = 4;
+    public static final Integer BIG_STORAGE_OUT_DAMAGE = 5;
+    public static final List<Integer> BIG_STORAGE_OUT_ALL = Arrays.asList(2, 3);
+
+    /**
+     * 鍗ц浆绔嬪嚭鐗囪姹�
+     * 1 涓婅溅绛夊緟
+     * 2 涓婅溅鍚姩
+     */
+    public static final Integer BIG_STORAGE_IN_WAIT = 1;
+    public static final Integer BIG_STORAGE_IN_RUN = 2;
+
+    /**
+     * 閽㈠寲灏忕墖琛�
+     * -1 鐢熸垚浠诲姟
+     * 0  鍑虹墖瀹屾垚
+     * 1  鎽嗙墖瀹屾垚
+     * 2  杩涚倝瀹屾垚
+     * 3  閽㈠寲瀹屾垚
+     * 4  鍑虹墖瀹屾垚
+     * 5  鐮存崯
+     * 6  鎷胯蛋
+     */
+
+    public static final Integer TEMPERING_NEW = -1;
+    public static final Integer TEMPERING_OUT = 0;
+    public static final Integer TEMPERING_DROP = 1;
+    public static final Integer TEMPERING_START = 2;
+    public static final Integer TEMPERING_SUCCESS = 3;
+    public static final Integer TEMPERING_END = 4;
+    public static final Integer TEMPERING_DAMAGE = 5;
+    public static final Integer TEMPERING_TAKE = 6;
+
+    /**
+     * 涓嬬墖
+     */
+    /**
+     * 鎵ц绾胯矾鏍煎瓙淇℃伅
+     */
+    public static final List<Integer> G06_WORK_STATION = Arrays.asList(1, 2, 3);
+    public static final List<Integer> G11_WORK_STATION = Arrays.asList(4, 5, 6);
+    public static final int G13_WORK_STATION = 7;
+
+    /**
+     * 鍚敤 1
+     * 绂佺敤 0
+     */
+    public static final Integer SLOT_ON = 1;
+    public static final Integer SLOT_OFF = 0;
+
+}
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/common/config/MybatisPlusConfig.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/common/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..94e02f0
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/common/config/MybatisPlusConfig.java
@@ -0,0 +1,30 @@
+package com.mes.common.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+
+/**
+ * @author zhoush
+ * @Date 2024/1/26 13:44
+ */
+
+@MapperScan(basePackages = "com.mes.*.mapper")
+@Configuration
+public class MybatisPlusConfig {
+
+    /**
+     * 娣诲姞鍒嗛〉鎻掍欢
+     */
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor() {
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+        return interceptor;
+    }
+
+}
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/common/config/Swagger2Config.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/common/config/Swagger2Config.java
new file mode 100644
index 0000000..0062ed2
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/common/config/Swagger2Config.java
@@ -0,0 +1,78 @@
+package com.mes.common.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.ParameterBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.schema.ModelRef;
+import springfox.documentation.service.*;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spi.service.contexts.SecurityContext;
+import springfox.documentation.spring.web.plugins.Docket;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * @author zhan_py
+ * @Date 2024/1/26 16:11
+ * Swagger2閰嶇疆淇℃伅
+ */
+@Configuration
+public class Swagger2Config {
+
+    @Bean
+    public Docket webApiConfig() {
+        List<Parameter> pars = new ArrayList<>();
+        ParameterBuilder tokenPar = new ParameterBuilder();
+        tokenPar.name("userId")
+                .description("鐢ㄦ埛token")
+                //.defaultValue(JwtHelper.createToken(1L, "admin"))
+                .defaultValue("1")
+                .modelRef(new ModelRef("string"))
+                .parameterType("header")
+                .required(false)
+                .build();
+        pars.add(tokenPar.build());
+
+        return new Docket(DocumentationType.SWAGGER_2)
+                .groupName("webApi")
+                .apiInfo(webApiInfo())
+                .select()
+                //鍙樉绀篴pi璺緞涓嬬殑椤甸潰
+                .apis(RequestHandlerSelectors.basePackage("com.mes"))
+                .paths(PathSelectors.any())
+                .build()
+                .globalOperationParameters(pars)
+                .securitySchemes(Collections.EMPTY_LIST)
+                .securityContexts(Arrays.asList(securityContext()));
+    }
+
+    private SecurityContext securityContext() {
+        return SecurityContext.builder()
+                .securityReferences(defaultAuth())
+                .forPaths(PathSelectors.any())
+                .build();
+    }
+
+    private List<SecurityReference> defaultAuth() {
+        AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
+        AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
+        authorizationScopes[0] = authorizationScope;
+        return Arrays.asList(new SecurityReference("Authorization", authorizationScopes));
+    }
+
+
+    private ApiInfo webApiInfo() {
+        return new ApiInfoBuilder()
+                .title("缃戠珯-API鏂囨。")
+                .description("鏈枃妗f弿杩颁簡mes缃戠珯寰湇鍔℃帴鍙e畾涔�")
+                .version("1.0")
+                .contact(new Contact("zhan_py", "", ""))
+                .build();
+    }
+}
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/common/config/WebSocketConfig.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/common/config/WebSocketConfig.java
new file mode 100644
index 0000000..f5d16bf
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/common/config/WebSocketConfig.java
@@ -0,0 +1,21 @@
+package com.mes.common.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.socket.server.standard.ServerEndpointExporter;
+
+/**
+ * @author SNG-010
+ */
+@Configuration
+public class WebSocketConfig {
+    /**
+     * bean娉ㄥ唽锛氫細鑷姩鎵弿甯︽湁@ServerEndpoint娉ㄨВ澹版槑鐨刉ebsocket Endpoint(绔偣)锛屾敞鍐屾垚涓篧ebsocket bean銆�
+     * 瑕佹敞鎰忥紝濡傛灉椤圭洰浣跨敤澶栫疆鐨剆ervlet瀹瑰櫒锛岃�屼笉鏄洿鎺ヤ娇鐢╯pringboot鍐呯疆瀹瑰櫒鐨勮瘽锛屽氨涓嶈娉ㄥ叆ServerEndpointExporter锛屽洜涓哄畠灏嗙敱瀹瑰櫒鑷繁鎻愪緵鍜岀鐞嗐��
+     */
+    @Bean
+    public ServerEndpointExporter serverEndpointExporter() {
+        return new ServerEndpointExporter();
+    }
+
+}
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/common/exception/GlobalExceptionHandler.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/common/exception/GlobalExceptionHandler.java
new file mode 100644
index 0000000..2d10ece
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/common/exception/GlobalExceptionHandler.java
@@ -0,0 +1,32 @@
+package com.mes.common.exception;
+
+import com.mes.utils.Result;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+/**
+ * @author zhoush
+ * @Date 2024/1/26 15:31
+ */
+@ControllerAdvice
+@Slf4j
+public class GlobalExceptionHandler {
+    /**
+     * 濡傛灉鏄痵erviceExcaption锛屽垯璋冪敤璇ユ柟娉�
+     */
+    @ExceptionHandler(ServiceException.class)
+    @ResponseBody
+    public Result handle(ServiceException se) {
+        return Result.error(se.getCode(), se.getMessage());
+    }
+
+    @ExceptionHandler(Exception.class)
+    @ResponseBody
+    public Result<Object> error(Exception e) {
+        e.printStackTrace();
+        return Result.error();
+    }
+
+}
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/common/exception/ServiceException.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/common/exception/ServiceException.java
new file mode 100644
index 0000000..0c9ddbc
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/common/exception/ServiceException.java
@@ -0,0 +1,14 @@
+package com.mes.common.exception;
+
+import com.mes.utils.ResultCodeEnum;
+import lombok.Getter;
+
+@Getter
+public class ServiceException extends RuntimeException {
+    private Integer code;
+
+    public ServiceException(ResultCodeEnum resultCodeEnum, String msg) {
+        super(msg);
+        this.code = resultCodeEnum.getCode();
+    }
+}
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/common/handler/MyMetaObjectHandler.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/common/handler/MyMetaObjectHandler.java
new file mode 100644
index 0000000..fb96335
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/common/handler/MyMetaObjectHandler.java
@@ -0,0 +1,22 @@
+package com.mes.common.handler;
+
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import org.apache.ibatis.reflection.MetaObject;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+@Component
+public class MyMetaObjectHandler implements MetaObjectHandler {
+    @Override
+    public void insertFill(MetaObject metaObject) {
+        //灞炴�у悕绉帮紝涓嶆槸瀛楁鍚嶇О
+        this.setFieldValByName("gmtCreate", new Date(), metaObject);
+        this.setFieldValByName("gmtModified", new Date(), metaObject);
+    }
+
+    @Override
+    public void updateFill(MetaObject metaObject) {
+        this.setFieldValByName("gmtModified", new Date(), metaObject);
+    }
+}
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/device/PlcBitInfo.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/device/PlcBitInfo.java
new file mode 100644
index 0000000..bc14c50
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/device/PlcBitInfo.java
@@ -0,0 +1,85 @@
+package com.mes.device;
+
+public class PlcBitInfo {
+
+    public PlcBitInfo(String startAddress) {
+        this.startAddress = startAddress;
+    }
+
+    private String startAddress;
+    // 鍙傛暟鏍囪瘑
+    private String codeId;
+
+    // 鍙傛暟鍚嶇О
+    private String name;
+
+    // 璇诲彇 鍙傛暟鍊�
+    private Boolean value;
+    // 鍙傛暟鍦板潃
+    private int addressIndex;
+
+    public String getCodeId() {
+        return this.codeId;
+    }
+
+    public void setCodeId(String codeId) {
+        this.codeId = codeId;
+    }
+
+    public String getName() {
+        return this.name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Boolean getValue() {
+        return this.value;
+    }
+
+    public void setValue(Boolean value) {
+        this.value = value;
+    }
+
+
+    public int getAddressIndex() {
+        return this.addressIndex;
+    }
+
+    /**
+     * 鑾峰彇鍦板潃
+     *
+     * @param index 绱㈠紩鍦板潃
+     */
+    public String getAddress(int index) {
+        String[] stringdatas = this.startAddress.trim().split("\\.");
+        if (stringdatas.length < 2) {
+            return null;
+        }
+        int dbwindex = 0;
+        int bitindex = 0;
+        if (stringdatas.length == 3) {
+            dbwindex = Integer.parseInt(stringdatas[1]);
+            bitindex = Integer.parseInt(stringdatas[2]);
+        } else
+        {
+            return null;
+        }
+        dbwindex += index / 8;
+        bitindex += index % 8;
+        return stringdatas[0] + "." + dbwindex + "." + bitindex;
+    }
+    /**
+     * 鑾峰彇鍦板潃
+     *
+     */
+    public String getAddress() {
+      return   getAddress(this.addressIndex);
+    }
+
+
+    public void setAddressIndex(int addressindex) {
+        this.addressIndex = addressindex;
+    }
+}
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/device/PlcBitObject.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/device/PlcBitObject.java
new file mode 100644
index 0000000..9f7cd3f
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/device/PlcBitObject.java
@@ -0,0 +1,124 @@
+package com.mes.device;
+
+import java.util.*;
+
+public class PlcBitObject {
+
+    // 璇ユā鍧楁暟鎹被鍨嬶紝鏁版嵁璧峰浣嶇疆
+    private String plcAddressBegin;
+    // 鏁版嵁鍦板潃闀垮害锛氱涓�鍙傛暟鍒版渶鍚庝竴涓弬鏁扮殑闀垮害
+    private int plcAddressLength;
+    //private ArrayList<PlcBitInfo> plcBitList;
+    private LinkedHashMap<String,PlcBitInfo> plcBitMap;
+
+    /**
+     * @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 LinkedHashMap<String,PlcBitInfo> getBitMap() {
+        return plcBitMap;
+    }
+
+    /**
+     * 鏍规嵁鍙傛暟鏍囪瘑 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     *
+     * @param codeid 鍙傛暟鏍囪瘑
+     * @return 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     */
+    public PlcBitInfo getPlcBit(String codeid) {
+        if (plcBitMap != null) {
+            /*for (PlcBitInfo plcbitInfo : plcBitList) {
+                if (plcbitInfo.getCodeId().equals(codeid))
+                    return plcbitInfo;
+            }*/
+            return plcBitMap.get(codeid);
+        } else
+        {
+            return null;
+        }
+    }
+
+    /**
+     * 鏍规嵁鍙傛暟鏍囪瘑 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     *
+     * @param codeids 鍙傛暟鏍囪瘑
+     * @return 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     */
+    public List<Boolean> getPlcBitValues(List<String> codeids) {
+        List<Boolean> arrayList = new ArrayList<>();
+        if (plcBitMap != null) {
+            for (String codeId : codeids) { // 鎸夌収浼犲叆鍙傛暟鐨勯『搴忛亶鍘�
+                    arrayList.add(plcBitMap.get(codeId).getValue());
+            }
+        }
+        return arrayList;
+    }
+
+
+    public List<String> getAddressListByCodeId(List<String> codeIdList) {
+        List<String> addressList = new ArrayList<>();
+        for (String codeId : codeIdList) {
+            addressList.add(plcBitMap.get(codeId).getAddress());
+        }
+        return addressList;
+    }
+
+
+    /**
+     * 娣诲姞鍙傛暟瀹炰緥
+     *
+     * @param param 鍙傛暟瀹炰緥
+     */
+    public void addPlcBit(PlcBitInfo param) {
+        if (plcBitMap != null) {
+            plcBitMap.put(param.getCodeId(), param);
+        }
+        else {
+            plcBitMap = new LinkedHashMap<String,PlcBitInfo>();
+            plcBitMap.put(param.getCodeId(),param);
+        }
+    }
+
+    /**
+     * 鏍规嵁PLC杩斿洖鐨勬暟鎹� 缁欏弬鏁板疄渚嬭祴鍊�
+     *
+     * @param plcValueArray PLC璇诲彇鍥炴潵鐨刡yte绫诲瀷鏁版嵁闆嗗悎
+     */
+    public void setPlcBitList(List<Boolean> plcValueArray) {
+        if (plcBitMap != null) {
+            Collection<PlcBitInfo> values=plcBitMap.values();
+            for (PlcBitInfo plcbitInfo : values) {
+                plcbitInfo.setValue(plcValueArray.get(plcbitInfo.getAddressIndex()));
+            }
+        }
+    }
+
+
+}
\ No newline at end of file
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterInfo.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterInfo.java
new file mode 100644
index 0000000..313adc2
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterInfo.java
@@ -0,0 +1,126 @@
+package com.mes.device;
+
+public class PlcParameterInfo {
+    public PlcParameterInfo(String startAddress) {
+        this.startAddress = startAddress;
+    }
+
+    private String startAddress;
+    // 鍙傛暟鏍囪瘑
+    private String codeId;
+
+    // 鍙傛暟鍚嶇О
+    private String name;
+
+    // 璇诲彇 鍙傛暟鍊�
+    private String value;
+
+    // // 鍐欏叆 鍙傛暟鍊�
+    // private String writeValue;
+
+    // 鍙傛暟鍗曚綅
+    private String unit;
+
+    // 鍙傛暟鍊艰浆鎹㈢郴鏁�
+    private int ratio;
+
+    // 鍙傛暟鍦板潃
+    private int addressIndex;
+
+    // 鍙傛暟鍦板潃浣嶉暱搴�
+    private int addressLength;
+
+    public String getCodeId() {
+        return this.codeId;
+    }
+
+    public void setCodeId(String codeId) {
+        this.codeId = codeId;
+    }
+
+    public String getName() {
+        return this.name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getValue() {
+        return this.value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    // public String getWriteValue() {
+    //     return this.writeValue;
+    // }
+
+    // public void setWriteValue(String writeValue) {
+    //     this.writeValue = writeValue;
+    // }
+
+    public String getUnit() {
+        return this.unit;
+    }
+
+    public void setUnit(String unit) {
+        this.unit = unit;
+    }
+
+    public int getAddressIndex() {
+        return this.addressIndex;
+    }
+
+    public void setAddressIndex(int addressindex) {
+        this.addressIndex = addressindex;
+    }
+
+    public int getAddressLength() {
+        return this.addressLength;
+    }
+
+    public void setAddressLength(int addresslength) {
+        this.addressLength = addresslength;
+    }
+
+    public int getRatio() {
+        return this.ratio;
+    }
+
+    public void setRatio(int ratio) {
+        this.ratio = ratio;
+    }
+
+    /**
+     * 鑾峰彇鍦板潃
+     *
+     * @param index 绱㈠紩鍦板潃
+     */
+    public String getAddress(int index) {
+        String[] stringdatas = this.startAddress.trim().split("\\.");
+        int addressLength = this.addressLength;
+        if (addressLength < 2) {
+            return null;
+        }
+        int wordindex = Integer.parseInt(stringdatas[1]) + index;
+        return stringdatas[0] + "." + wordindex;
+      /*  if (addressLength == 2) {
+
+
+            return stringdatas[0] + "." + wordindex;
+        }
+        if (addressLength == 14) {
+            int wordindex = index;
+            int newIndex = wordindex + 13;
+            return stringdatas[0] + "." + wordindex + "-" + newIndex;
+        }*/
+//        return null;
+    }
+
+    public String getAddress() {
+        return getAddress(this.addressIndex);
+    }
+}
\ No newline at end of file
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterObject.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterObject.java
new file mode 100644
index 0000000..e8bfd42
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterObject.java
@@ -0,0 +1,274 @@
+package com.mes.device;
+
+import com.github.xingshuangs.iot.utils.IntegerUtil;
+import com.github.xingshuangs.iot.utils.ShortUtil;
+
+import java.lang.reflect.Array;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+import java.util.*;
+
+public class PlcParameterObject {
+
+    // 璇ユā鍧楁暟鎹被鍨嬶紝鏁版嵁璧峰浣嶇疆
+    private String plcAddressBegin;
+    // 鏁版嵁鍦板潃闀垮害锛氱涓�鍙傛暟鍒版渶鍚庝竴涓弬鏁扮殑闀垮害
+    private int plcAddressLength;
+    //private ArrayList<PlcParameterInfo> plcParameterList;
+    private LinkedHashMap<String,PlcParameterInfo> plcParameterMap;
+
+
+    /**
+     * @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 LinkedHashMap<String,PlcParameterInfo> getPlcParameterMap() {
+        return plcParameterMap;
+    }
+
+    /**
+     * 鏍规嵁鍙傛暟鏍囪瘑 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     *
+     * @param codeid 鍙傛暟鏍囪瘑
+     * @return 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     */
+    public PlcParameterInfo getPlcParameter(String codeid) {
+        if (plcParameterMap != null) {
+                    return plcParameterMap.get(codeid);
+        } else {
+            return null;
+        }
+        /*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 (plcParameterMap != 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 = plcParameterMap.get(codeId);
+                if (plcParameterInfo != null) {
+                    arrayList.add(plcParameterInfo.getValue());
+                } else {
+                    arrayList.add(null); // 濡傛灉鎵句笉鍒板搴旂殑鍊硷紝娣诲姞 null
+                }
+            }
+        }
+        return arrayList;
+    }
+
+    /**
+     * 鏍规嵁鍙傛暟鏍囪瘑 鑾峰彇浼犲叆鍙傛暟鐨刾lc鍦板潃
+     *
+     * @param codeIdList 鍙傛暟鏍囪瘑
+     * @return 浼犲叆鍙傛暟鐨刾lc鍦板潃
+     */
+    public List<String> getAddressListByCodeId(List<String> codeIdList) {
+        List<String> addressList = new ArrayList<>();
+        if (plcParameterMap!=null)
+        {
+            for (String codeId : codeIdList) {
+                    String address = plcParameterMap.get(codeId).getAddress();
+                    if (address != null) {
+                        addressList.add(address);
+                    }
+        }
+        }
+        return addressList;
+    }
+
+
+    /**
+     * 娣诲姞鍙傛暟瀹炰緥
+     *
+     * @param param 鍙傛暟瀹炰緥
+     */
+    public void addPlcParameter(PlcParameterInfo param) {
+        if (plcParameterMap != null) {
+            plcParameterMap.put(param.getCodeId(), param);
+        }
+        else {
+            plcParameterMap =new  LinkedHashMap<String,PlcParameterInfo>();
+            plcParameterMap.put(param.getCodeId(), 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 (plcParameterMap != null) {
+            Collection<PlcParameterInfo> values=  plcParameterMap.values();
+            for (PlcParameterInfo plcParameterInfo :values) {
+                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(ShortUtil.toUInt16(valueList)));
+                } else if (plcParameterInfo.getAddressLength() == 4) {
+                    plcParameterInfo.setValue(String.valueOf(IntegerUtil.toUInt32(valueList)));
+                }
+                else if (plcParameterInfo.getAddressLength() >10) {
+                    plcParameterInfo.setValue((byteToHexString(valueList)));
+                } else {
+                    plcParameterInfo.setValue((byteToHexString(valueList)));
+                }
+            }
+        }
+/*        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() == 4) {
+                    plcParameterInfo.setValue(String.valueOf(byte2int(valueList)));
+                }
+                else if (plcParameterInfo.getAddressLength() >10) {
+                    plcParameterInfo.setValue((byteToHexString(valueList)));
+                } else {
+                    String valuestr = new String(valueList);
+                    plcParameterInfo.setValue(valuestr);
+                }
+            }
+        }*/
+    }
+    /**
+     * 鎶婂啓鍏ュ�艰浆鍖栦负byte[]
+     * @param param 鍙傛暟瀹炰緥
+     * @param data 鍐欏叆鍊肩殑瀛楃绫诲瀷
+     */
+    public byte[] setValueToBytes(PlcParameterInfo param, String data) {
+        if (param.getAddressLength() == 2) {
+            return ShortUtil.toByteArray(Integer.parseInt(data));
+
+        } else if (param.getAddressLength() == 4) {
+
+            return IntegerUtil.toByteArray(Long.parseLong(data));
+        }
+        else if (param.getAddressLength() >10) {
+           return data.getBytes();
+        } else {
+            return data.getBytes();
+        }
+    }
+
+    /**
+     * 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; //璁$畻鍋忕Щ閲�
+            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;
+    }
+
+    /**
+     * byte[]绫诲瀷杞瑂hort
+     *
+     * @param b byte[]绫诲瀷鍊�
+     */
+    public static int byte2int(byte[] b) {
+        int l = 0;
+        for (int i = 0; i < 4; i++) {
+            l <<= 8; //<<=鍜屾垜浠殑 +=鏄竴鏍风殑锛屾剰鎬濆氨鏄� l = l << 8
+            l |= (b[3-i] & 0xff); //鍜屼笂闈篃鏄竴鏍风殑  l = l | (b[i]&0xff)
+        }
+        return l;
+    }
+    public static byte[] int2byte(int s){
+        byte[] b = new byte[2];
+        for(int i = 0; i < 4; i++){
+            int offset = 16 - (i+1)*8; //鍥犱负byte鍗�4涓瓧鑺傦紝鎵�浠ヨ璁$畻鍋忕Щ閲�
+            b[i] = (byte)((s >> offset)&0xff); //鎶�32浣嶅垎涓�4涓�8浣嶈繘琛屽垎鍒瓨鍌�
+        }
+        return b;
+    }
+    public static String byteToHexString(byte[] bytes) {
+        String str = new String(bytes, StandardCharsets.UTF_8).trim();
+        return str;
+    }
+}
\ No newline at end of file
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/engineering/entity/Engineering.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/engineering/entity/Engineering.java
new file mode 100644
index 0000000..7d29ab6
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/engineering/entity/Engineering.java
@@ -0,0 +1,4 @@
+package com.mes.engineering.entity;
+
+public class Engineering {
+}
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/engineering/mapper/EngineeringMapper.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/engineering/mapper/EngineeringMapper.java
new file mode 100644
index 0000000..5581d4e
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/engineering/mapper/EngineeringMapper.java
@@ -0,0 +1,16 @@
+package com.mes.engineering.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.mes.engineering.entity.Engineering;
+
+/**
+ * <p>
+ *  Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author wu
+ * @since 2024-05-11
+ */
+public interface EngineeringMapper extends MPJBaseMapper<Engineering> {
+
+}
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/engineering/service/EngineeringService.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/engineering/service/EngineeringService.java
new file mode 100644
index 0000000..8807b04
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/engineering/service/EngineeringService.java
@@ -0,0 +1,16 @@
+package com.mes.engineering.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.mes.engineering.entity.Engineering;
+
+/**
+ * <p>
+ *  鏈嶅姟绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-07
+ */
+public interface EngineeringService extends MPJBaseService<Engineering> {
+
+}
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java
new file mode 100644
index 0000000..79e9de6
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java
@@ -0,0 +1,23 @@
+package com.mes.engineering.service.impl;
+
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.mes.engineering.entity.Engineering;
+import com.mes.engineering.mapper.EngineeringMapper;
+import com.mes.engineering.service.EngineeringService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-07
+ */
+@Service
+@Slf4j
+public class EngineeringServiceImpl extends MPJBaseServiceImpl<EngineeringMapper, Engineering> implements EngineeringService {
+
+
+}
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/entity/request/GeneralRequest.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/entity/request/GeneralRequest.java
new file mode 100644
index 0000000..d70b171
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/entity/request/GeneralRequest.java
@@ -0,0 +1,17 @@
+package com.mes.entity.request;
+
+import cn.hutool.db.Page;
+import lombok.Data;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/4/22 11:21
+ * @Description:
+ */
+@Data
+public class GeneralRequest {
+
+    private String key;
+
+    private Page page;
+}
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/service/Communication.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/service/Communication.java
new file mode 100644
index 0000000..4286df3
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/service/Communication.java
@@ -0,0 +1,36 @@
+package com.mes.service;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import com.mes.device.PlcParameterInfo;
+import com.mes.tools.HexConversion;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.io.*;
+import java.net.Socket;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Plc閫氳鏂瑰紡 [S7/ModbusTcp]
+ */
+@Component
+@Slf4j
+public class Communication {
+
+    /**
+     * 鏂瑰紡鏍囪瘑 [S7/ModbusTcp]
+     */
+    private String type;
+
+    Communication(){
+        if("ModbusTcp".equals(type)){
+
+        }else if("S7".equals(type)){
+
+        }
+    }
+
+}
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/service/ModbusTcp.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/service/ModbusTcp.java
new file mode 100644
index 0000000..698c5bb
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/service/ModbusTcp.java
@@ -0,0 +1,43 @@
+package com.mes.service;
+
+import com.mes.tools.HexConversion;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.net.Socket;
+import java.text.SimpleDateFormat;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+@Component
+@Slf4j
+public class ModbusTcp {
+
+    //鍚孖P涓嬩細鏈夊涓崗璁湴鍧�  key=鍦板潃鍖�   PlcAgreement涓哄崗璁唴瀹�  plcAgreements涓哄崗璁粍
+    private Map<String,PlcAgreement> plcAgreement=new LinkedHashMap<String,PlcAgreement>();
+    private String Ip;
+    private int Port;
+    public Socket socket =null;//閫氳
+    ModbusTcp(){}
+    ModbusTcp(String Ip,int Port){
+        this.Ip=Ip;
+        this.Port=Port;
+    }
+
+    //杩炴帴
+    //@Scheduled(fixedDelay = 1000)
+    public void a()throws Exception{
+        log.info("123");
+    }
+
+    public int getValueInt(){
+        return 0;
+    }
+    public double getValueDouble(){
+        return 0;
+    }
+}
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/service/PlcAgreement.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/service/PlcAgreement.java
new file mode 100644
index 0000000..8b4a87c
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/service/PlcAgreement.java
@@ -0,0 +1,136 @@
+package com.mes.service;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import com.mes.device.PlcParameterInfo;
+import com.mes.tools.HexConversion;
+import com.mes.utils.HexUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.io.*;
+import java.net.Socket;
+import java.util.*;
+
+/**
+ * Plc鍗忚锛氬崗璁弬鏁帮紝鍗忚閰嶇疆锛屽崗璁姹傚ご锛屽崗璁被鍨�
+ */
+@Component
+@Slf4j
+public class PlcAgreement {
+
+    public Socket socket =null;//閫氳
+    /**
+     * 鍗忚鍙傛暟
+     */
+    private List<String> parameterKeys=null;
+    private Map<String,PlcParameter> parameters=null;
+    /**
+     * 鍗忚璺緞
+     */
+    private String jsonFilePath=null;
+    /**
+     * 璇诲彇璧峰鍦板潃
+     */
+    public String plcAddressBegin=null;
+    /**
+     * 璇诲彇闀垮害
+     */
+    public int plcAddressLength=0;
+    //绫讳技搴忓垪鍙凤紙4锛�+鍗忚鏍囧織锛�4锛�+闀垮害锛�4锛�+浠庣珯鍦板潃锛�2锛�+鍔熻兘浠g爜锛�2锛�+璧峰鍦板潃锛�4锛�+璇诲彇鏁伴噺锛�4锛� "000100000006010300000032"
+    public String requestHead=null;
+
+    PlcAgreement(){
+        jsonFilePath = System.getProperty("user.dir") + "../../JsonFile/PlcCacheGlass.json";
+        boolean initSuccess=initword();
+        log.info("鍒濆鍖朠lcCacheGlass锛�"+initSuccess);
+    }
+    //鍒濆鍖杦ord
+    public boolean initword() {
+        try {
+            parameters=new LinkedHashMap<String,PlcParameter>();
+            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 jsonFile = new JSONObject(content.toString());
+
+            JSONArray jsonArray = jsonFile.getJSONArray("parameterInfo");
+
+            this.plcAddressBegin=jsonFile.getStr("plcAddressBegin");//璁剧疆璧峰浣嶅湴鍧�
+            this.plcAddressLength=Integer.valueOf(jsonFile.getStr("plcAddressLength"));//璁剧疆鍦板潃闀垮害
+            this.requestHead=jsonFile.getStr("requestHead");//璁剧疆璇锋眰澶撮儴
+
+            for (int i = 0; i < jsonArray.size(); i++) {
+                JSONObject parameterObj = jsonArray.getJSONObject(i);
+                String code = parameterObj.getStr("code");
+                PlcParameter plcParameter = new PlcParameter(
+                        code,
+                        Integer.valueOf(parameterObj.getStr("addressIndex")),
+                        Integer.valueOf(parameterObj.getStr("addressLength")),""); //鍙傛暟瀹炰緥
+                parameterKeys.add(code);
+                parameters.put(code,plcParameter);
+            }
+            return true;
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return false;
+    }
+
+    //璇诲彇鏁版嵁
+    public void read()throws Exception{
+        int bufSizes = 0;
+        byte[] msgs = new byte[2048];
+        //鍐欏叆璇诲彇鍦板潃
+        DataOutputStream outToServer = new DataOutputStream(socket.getOutputStream());
+        outToServer.write(HexConversion.stringToInt(this.requestHead));
+        outToServer.flush();
+        //璇诲彇鍐呭
+        DataInputStream in = new DataInputStream(socket.getInputStream());
+        bufSizes = in.read(msgs);
+        String message = HexConversion.byteToHexString(bufSizes, msgs);//鍗佽繘鍒跺瓧鑺傛暟缁勮浆鍗佸叚杩涘埗瀛楃涓�
+        //鑾峰彇鍙傛暟鍊�
+        for (String key:parameters.keySet()){
+            parameters.get(key).setReadValue(message);
+        }
+    }
+    //鍐欏叆鏁版嵁
+    public void write(String key,String writeValue)throws Exception{
+        parameters.get(key);
+        if (writeValue != null && !"".equals(writeValue)) {
+            //鍐欏叆鍙戦�佹暟鎹�
+            DataOutputStream out = new DataOutputStream(socket.getOutputStream());
+            out.write(HexConversion.stringToInt(writeValue));
+            out.flush();
+        }
+    }
+    //鍐�
+    public String message(String senddate, String address) {
+        String Herd = "0110" + address;
+        int length = senddate.length() / 4;
+        String dates = Herd + HexUtil.intTo2ByteHex(length) + HexUtil.intTo1ByteHex(length * 2) + senddate;
+        int lengths = dates.length() / 2;
+        String date = "00000000" + HexUtil.intTo2ByteHex(lengths) + dates;
+        return date;
+    }
+
+    public String getValueString(String key){
+        return parameters.get(key).toString();
+    }
+    public int getValueInt(){
+        return 0;
+    }
+    public double getValueDouble(){
+        return 0;
+    }
+}
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/service/PlcParameter.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/service/PlcParameter.java
new file mode 100644
index 0000000..e8b539f
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/service/PlcParameter.java
@@ -0,0 +1,108 @@
+package com.mes.service;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import com.mes.device.PlcParameterInfo;
+import com.mes.tools.HexConversion;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.io.*;
+import java.net.Socket;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Plc鍙傛暟
+ */
+@Component
+@Slf4j
+public class PlcParameter {
+
+
+    /**
+     * 缂栧彿
+     */
+    private String CodeId;
+    /**
+     * 璧峰鍦板潃
+     */
+    private int addressIndex=0;
+    /**
+     * 闀垮害
+     */
+    private int addressLength=0;
+    /**
+     * 绫诲瀷
+     */
+    private String type="int";
+
+    /**
+     * 瀹炴椂璇诲彇鐨勫��
+     */
+    private Object readValue=null;
+
+    /**
+     * 闇�瑕佸啓鍏ョ殑鍊�
+     */
+    private Object writeValue=null;
+
+    PlcParameter(){
+
+    }
+    PlcParameter(String codeId, int addressIndex, int addressLength, String type){
+        this.CodeId=codeId;
+        this.addressIndex=addressIndex;
+        this.addressLength=addressLength;
+        this.type=type;
+    }
+
+    public String getCodeId() {
+        return CodeId;
+    }
+
+    public void setCodeId(String codeId) {
+        CodeId = codeId;
+    }
+
+    public int getAddressIndex() {
+        return addressIndex;
+    }
+
+    public void setAddressIndex(int addressIndex) {
+        this.addressIndex = addressIndex;
+    }
+
+    public int getAddressLength() {
+        return addressLength;
+    }
+
+    public void setAddressLength(int addressLength) {
+        this.addressLength = addressLength;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public Object getReadValue() {
+        return readValue;
+    }
+
+    public void setReadValue(Object readValue) {
+        this.readValue = readValue;
+    }
+
+    public Object getWriteValue() {
+        return writeValue;
+    }
+
+    public void setWriteValue(Object writeValue) {
+        this.writeValue = writeValue;
+    }
+}
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/tools/CodeGet.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/tools/CodeGet.java
new file mode 100644
index 0000000..006c8f9
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/tools/CodeGet.java
@@ -0,0 +1,84 @@
+package com.mes.tools;
+
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.generator.AutoGenerator;
+import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+import com.baomidou.mybatisplus.generator.config.PackageConfig;
+import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+
+/**
+ * @author mybatis-plus
+ */
+public class CodeGet {
+
+    public static void main(String[] args) {
+
+        // 1銆佸垱寤轰唬鐮佺敓鎴愬櫒
+        AutoGenerator mpg = new AutoGenerator();
+
+        // 2銆佸叏灞�閰嶇疆
+        // 鍏ㄥ眬閰嶇疆
+        GlobalConfig gc = new GlobalConfig();
+        gc.setOutputDir("D:\\Documents\\hangzhoumesParent5\\");
+
+        gc.setServiceName("%sService");	//鍘绘帀Service鎺ュ彛鐨勯瀛楁瘝I
+        gc.setAuthor("wu");
+        gc.setOpen(false);
+        mpg.setGlobalConfig(gc);
+
+        // 3銆佹暟鎹簮閰嶇疆
+        DataSourceConfig dsc = new DataSourceConfig();
+        dsc.setUrl("jdbc:mysql://10.153.19.150:3306/hangzhoumes?serverTimezone=GMT%2b8");
+        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+        dsc.setUsername("root");
+        dsc.setPassword("beibo.123/");
+        dsc.setDbType(DbType.MYSQL);
+        mpg.setDataSource(dsc);
+
+        // 4銆佸寘閰嶇疆
+        PackageConfig pc = new PackageConfig();
+        pc.setParent("com.mes");
+        pc.setModuleName("work_assignment"); //妯″潡鍚�
+        pc.setController("controller");
+        pc.setService("service");
+        pc.setMapper("mapper");
+        mpg.setPackageInfo(pc);
+
+        // 5銆佺瓥鐣ラ厤缃�
+        StrategyConfig strategy = new StrategyConfig();
+
+        strategy.setInclude("work_assignment");
+
+        strategy.setNaming(NamingStrategy.underline_to_camel);//鏁版嵁搴撹〃鏄犲皠鍒板疄浣撶殑鍛藉悕绛栫暐
+
+        strategy.setColumnNaming(NamingStrategy.underline_to_camel);//鏁版嵁搴撹〃瀛楁鏄犲皠鍒板疄浣撶殑鍛藉悕绛栫暐
+        strategy.setEntityLombokModel(true); // lombok 妯″瀷 @Accessors(chain = true) setter閾惧紡鎿嶄綔
+
+        strategy.setRestControllerStyle(true); //restful api椋庢牸鎺у埗鍣�
+        strategy.setControllerMappingHyphenStyle(true); //url涓┘宄拌浆杩炲瓧绗�
+
+        mpg.setStrategy(strategy);
+
+        // 6銆佹墽琛�
+        mpg.execute();
+
+        System.out.println("鎵ц瀹屾垚");
+    }
+}
+
+/*
+<dependency>
+    <groupId>com.baomidou</groupId>
+    <artifactId>mybatis-plus-generator</artifactId>
+    <version>3.4.1</version>
+</dependency>
+
+<dependency>
+    <groupId>org.apache.velocity</groupId>
+    <artifactId>velocity-engine-core</artifactId>
+    <version>2.0</version>
+</dependency>
+ */
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/tools/DatabaseDesignDocUtil.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/tools/DatabaseDesignDocUtil.java
new file mode 100644
index 0000000..2b31d34
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/tools/DatabaseDesignDocUtil.java
@@ -0,0 +1,97 @@
+package com.mes.tools;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/3/26 9:01
+ * @Description:
+ */
+
+import cn.smallbun.screw.core.Configuration;
+import cn.smallbun.screw.core.engine.EngineConfig;
+import cn.smallbun.screw.core.engine.EngineFileType;
+import cn.smallbun.screw.core.engine.EngineTemplateType;
+import cn.smallbun.screw.core.execute.DocumentationExecute;
+import cn.smallbun.screw.core.process.ProcessConfig;
+import com.zaxxer.hikari.HikariConfig;
+import com.zaxxer.hikari.HikariDataSource;
+
+import javax.sql.DataSource;
+import java.util.ArrayList;
+import java.util.List;
+
+public class DatabaseDesignDocUtil {
+
+    public static void main(String[] args) {
+        documentGeneration();
+    }
+
+    /**
+     * 鏂囨。鐢熸垚
+     */
+    public static void documentGeneration() {
+        //鏁版嵁婧�
+        HikariConfig hikariConfig = new HikariConfig();
+        hikariConfig.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
+        hikariConfig.setJdbcUrl("jdbc:sqlserver://10.153.19.150:1433;databasename=hangzhoumes");
+        hikariConfig.setUsername("sa");
+        hikariConfig.setPassword("beibo.123/");
+        //璁剧疆鍙互鑾峰彇tables remarks淇℃伅
+        hikariConfig.addDataSourceProperty("useInformationSchema", "true");
+        hikariConfig.setMinimumIdle(2);
+        hikariConfig.setMaximumPoolSize(5);
+        DataSource dataSource = new HikariDataSource(hikariConfig);
+        //鐢熸垚閰嶇疆
+        EngineConfig engineConfig = EngineConfig.builder()
+                //鐢熸垚鏂囦欢璺緞
+                .fileOutputDir("E:\\椤圭洰\\椤圭洰鏂囨。\\鏉窞鍒╂潵2")
+                //鎵撳紑鐩綍
+                .openOutputDir(true)
+                //鏂囦欢绫诲瀷
+                .fileType(EngineFileType.WORD)
+                //鐢熸垚妯℃澘瀹炵幇
+                .produceType(EngineTemplateType.freemarker)
+                //鑷畾涔夋枃浠跺悕绉�
+                .fileName("鏉窞鍒╂潵鏁版嵁搴撴枃妗�").build();
+
+        //蹇界暐琛�
+        List<String> ignoreTableName = new ArrayList<>();
+        ignoreTableName.add("test_user");
+        ignoreTableName.add("test_group");
+        //蹇界暐琛ㄥ墠缂�
+        ArrayList<String> ignorePrefix = new ArrayList<>();
+        ignorePrefix.add("test_");
+        //蹇界暐琛ㄥ悗缂�
+        ArrayList<String> ignoreSuffix = new ArrayList<>();
+        ignoreSuffix.add("_test");
+        ProcessConfig processConfig = ProcessConfig.builder()
+                //鎸囧畾鐢熸垚閫昏緫銆佸綋瀛樺湪鎸囧畾琛ㄣ�佹寚瀹氳〃鍓嶇紑銆佹寚瀹氳〃鍚庣紑鏃讹紝灏嗙敓鎴愭寚瀹氳〃锛屽叾浣欒〃涓嶇敓鎴愩�佸苟璺宠繃蹇界暐琛ㄩ厤缃�
+                //鏍规嵁鍚嶇О鎸囧畾琛ㄧ敓鎴�
+                .designatedTableName(new ArrayList<>())
+                //鏍规嵁琛ㄥ墠缂�鐢熸垚
+                .designatedTablePrefix(new ArrayList<>())
+                //鏍规嵁琛ㄥ悗缂�鐢熸垚
+                .designatedTableSuffix(new ArrayList<>())
+                //蹇界暐琛ㄥ悕
+                .ignoreTableName(ignoreTableName)
+                //蹇界暐琛ㄥ墠缂�
+                .ignoreTablePrefix(ignorePrefix)
+                //蹇界暐琛ㄥ悗缂�
+                .ignoreTableSuffix(ignoreSuffix).build();
+        //閰嶇疆
+        Configuration config = Configuration.builder()
+                //鐗堟湰
+                .version("1.0.0")
+                //鎻忚堪
+                .description("鏁版嵁搴撹璁℃枃妗g敓鎴�")
+                //鏁版嵁婧�
+                .dataSource(dataSource)
+                //鐢熸垚閰嶇疆
+                .engineConfig(engineConfig)
+                //鐢熸垚閰嶇疆
+                .produceConfig(processConfig)
+                .build();
+        //鎵ц鐢熸垚
+        new DocumentationExecute(config).execute();
+    }
+
+}
\ No newline at end of file
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/tools/HexConversion.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/tools/HexConversion.java
new file mode 100644
index 0000000..6191d85
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/tools/HexConversion.java
@@ -0,0 +1,55 @@
+package com.mes.tools;
+
+public class HexConversion {
+    /**
+     * @param a shuzi
+     * @return shuzu
+     */
+    public static byte[] stringToInt(String a){
+        byte[] byt = new byte[a.length()/2];
+        for (int i = 0; i < a.length() - 1; i+=2) {
+            String output = a.substring(i, i + 2);
+            byt[i/2]=(byte)Integer.parseInt(output, 16);
+        }
+        return byt;
+    }
+    public static String byteToHexString(int bufSize,byte[] msg){
+        String tempHex = "";
+        String command = "";
+        if (bufSize != -1) {
+            for (int i = 0; i < bufSize; i++) {
+                tempHex = Integer.toHexString(msg[i] & 0xFF);
+                if (tempHex.length() == 1) {
+                    tempHex = "0" + tempHex;
+                }
+                command += tempHex;
+            }
+        }
+        return command;
+    }
+    public static String intToHex(int number) {
+        return Integer.toHexString(number);
+    }
+    /**
+     * 灏嗘暣鏁拌浆鎹负4浣�16杩涘埗锛屽1杞崲涓�0001锛�10杞崲涓�000a
+     *
+     * @param number
+     * @return
+     */
+    public static String intTo2ByteHex(int number) {
+        String numberHex = intToHex(number);
+        numberHex = String.format("%4s", numberHex).replace(' ', '0');
+        return numberHex;
+    }
+    /**
+     * 灏嗘暣鏁拌浆鎹负2浣�16杩涘埗锛屽1杞崲涓�01锛�10杞崲涓�0a
+     *
+     * @param
+     * @return
+     */
+    public static String intTo1ByteHex(int number) {
+        String numberHex = intToHex(number);
+        numberHex = String.format("%2s", numberHex).replace(' ', '0');
+        return numberHex;
+    }
+}
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/tools/InitUtil.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/tools/InitUtil.java
new file mode 100644
index 0000000..733b805
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/tools/InitUtil.java
@@ -0,0 +1,107 @@
+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;
+    }
+}
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/tools/S7control.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/tools/S7control.java
new file mode 100644
index 0000000..45bf01e
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/tools/S7control.java
@@ -0,0 +1,465 @@
+package com.mes.tools;
+
+import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
+import com.github.xingshuangs.iot.protocol.s7.service.MultiAddressWrite;
+import com.github.xingshuangs.iot.protocol.s7.service.S7PLC;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class S7control {
+
+    S7PLC s7PLC; // PLC閫氳绫诲疄渚�
+
+    public S7control(EPlcType plcType, String ip, int port, int rack, int slot) {
+        if (s7PLC == null) {
+            s7PLC = new S7PLC(plcType, ip, port, 0, 0);
+        }
+    }
+
+    /**
+     * 鍏抽棴瑗块棬瀛恠7閫氳杩炴帴
+     */
+    public void closeS7client() {
+        if (s7PLC != null) {
+            s7PLC.close();
+        }
+    }
+
+    /**
+     * 閲嶅惎瑗块棬瀛恠7閫氳杩炴帴
+     */
+    public boolean reStartS7client() {
+        if (s7PLC != null) {
+            try {
+                s7PLC.hotRestart();
+                return true;
+            } catch (Exception ex) {
+                return false;
+            }
+        }
+        return false;
+    }
+
+
+    /**
+     * s7閫氳杩炴帴鐘舵��
+     */
+    public boolean checkConnected() {
+        return s7PLC.checkConnected();
+    }
+
+    /**
+     * 鎸夋寚瀹氱殑鍦板潃 鍐欏叆涓�涓獁ord
+     *
+     * @param address 鍦板潃
+     * @param data    word鐨勫��
+     */
+    public boolean writeWord(String address, int data) {
+        if (s7PLC == null) {
+            return false;
+        }
+        boolean result = false;
+        int tryCount = 2;
+        do {
+            try {
+                s7PLC.writeUInt16(address, data);
+                result = true;
+            } catch (Exception ex) {
+                System.out.println("鍚憄lc鍐欏懡浠よ繃绋嬩腑鍙戠敓寮傚父锛屽師鍥犱负锛�" + ex.getMessage());
+                reStartS7client();
+            } finally {
+                tryCount -= 1;
+            }
+        }
+        while (!result && tryCount > 0);
+        return result;
+    }
+
+    /**
+     * 浠庢煇鍦板潃杩炵画 鍐欏叆澶氫釜word
+     *
+     * @param address 鍦板潃
+     * @param datas   word鐨勫��
+     */
+    public boolean writeWord(String address, List<Integer> datas) {
+        if (s7PLC == null) {
+            return false;
+        }
+        boolean result = false;
+        int tryCount = 2;
+        // s7PLC.write(address, data);
+        List<String> addresslist = getAddressList(address, datas.size(), 16);
+        MultiAddressWrite addressWrite = new MultiAddressWrite();
+        for (int i = 0; i < datas.size(); i++) {
+            addressWrite.addUInt16(addresslist.get(i), datas.get(i));
+        }
+        do {
+            try {
+                s7PLC.writeMultiData(addressWrite);
+                result = true;
+            } catch (Exception ex) {
+                reStartS7client();
+            } finally {
+                tryCount -= 1;
+            }
+        }
+        while (!result && tryCount > 0);
+        return result;
+
+    }
+
+    /**
+     * 鎸夋寚瀹氱殑鍦板潃 鍐欏叆澶氫釜word
+     *
+     * @param address 鍦板潃
+     * @param datas   word鐨勫��
+     */
+
+
+    /**
+     * 鎸夋寚瀹氱殑鍦板潃 鍐欏叆涓�涓狟it
+     *
+     * @param address 鍦板潃
+     * @param data    Bit鐨勫��
+     */
+    public boolean writeBit(String address, Boolean data) {
+        if (s7PLC == null) {
+            return false;
+        }
+        boolean result = false;
+        int tryCount = 2;
+        do {
+            try {
+                s7PLC.writeBoolean(address, data);
+                result = true;
+            } catch (Exception ex) {
+                reStartS7client();
+            } finally {
+                tryCount -= 1;
+            }
+        }
+        while (!result && tryCount > 0);
+        return result;
+    }
+
+    /**
+     * 鎸夋寚瀹氱殑鍦板潃 鍐欏叆澶氫釜bit
+     *
+     * @param address 鍦板潃
+     * @param datas   bit鐨勫��
+     */
+    public boolean writeBit(List<String> address, List<Boolean> datas) {
+        if (s7PLC == null) {
+            return false;
+        }
+
+        MultiAddressWrite addressWrite = new MultiAddressWrite();
+        for (int i = 0; i < address.size(); i++) {
+            addressWrite.addBoolean(address.get(i), datas.get(i));
+        }
+        boolean result = false;
+        int tryCount = 2;
+        do {
+            try {
+                s7PLC.writeMultiData(addressWrite);
+                result = true;
+            } catch (Exception ex) {
+                reStartS7client();
+            } finally {
+                tryCount -= 1;
+            }
+        }
+        while (!result && tryCount > 0);
+        return result;
+
+    }
+
+    /**
+     * 浠庢煇鍦板潃杩炵画 鍐欏叆澶氫釜bit
+     *
+     * @param address 鍦板潃
+     * @param datas   word鐨勫��
+     */
+    public boolean writeBit(String address, List<Boolean> datas) {
+        if (s7PLC == null) {
+            return false;
+        }
+
+        // s7PLC.write(address, data);
+        List<String> addresslist = getAddressList(address, datas.size(), 1);
+        MultiAddressWrite addressWrite = new MultiAddressWrite();
+        for (int i = 0; i < datas.size(); i++) {
+            addressWrite.addBoolean(addresslist.get(i), datas.get(i));
+        }
+        boolean result = false;
+        int tryCount = 2;
+        do {
+            try {
+                s7PLC.writeMultiData(addressWrite);
+                result = true;
+            } catch (Exception ex) {
+                reStartS7client();
+            } finally {
+                tryCount -= 1;
+            }
+        }
+        while (!result && tryCount > 0);
+        return result;
+    }
+
+    /**
+     * 鎸夋寚瀹氱殑鍦板潃 鍐欏叆澶氫釜byte
+     *
+     * @param address 鍦板潃
+     * @param datas   byte鐨勫��
+     */
+    public boolean writeByte(String address, byte[] datas) {
+        if (s7PLC == null) {
+            return false;
+        }
+        boolean result = false;
+        int tryCount = 2;
+        do {
+            try {
+                s7PLC.writeByte(address, datas);
+                result = true;
+            } catch (Exception ex) {
+                reStartS7client();
+            } finally {
+                tryCount -= 1;
+            }
+        }
+        while (!result && tryCount > 0);
+        return result;
+    }
+
+    /**
+     * 鎸夋寚瀹氱殑鍦板潃 璇诲彇word缁撴灉闆�
+     *
+     * @param address 鍦板潃
+     * @return 缁撴灉
+     */
+    public List<Integer> readWord(List<String> address) {
+        if (s7PLC == null) {
+            return null;
+        }
+        List<Integer> result = null;
+        try {
+            result = s7PLC.readUInt16(address);
+        } catch (Exception e) {
+            s7PLC.hotRestart();
+            System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
+
+        } finally {
+            return result;
+        }
+    }
+
+
+    /**
+     * 鎸夋寚瀹氱殑鍦板潃 璇诲彇word缁撴灉闆�
+     *
+     * @param address 鍦板潃
+     * @param count   杩炵画璇诲灏戜釜word
+     * @return 缁撴灉
+     */
+    public List<Integer> readWord(String address, int count) {
+        if (s7PLC == null) {
+            return null;
+        }
+        List<Integer> result = null;
+        List<String> addresslist = getAddressList(address, count, 16);
+        try {
+            result = s7PLC.readUInt16(addresslist);
+        } catch (Exception e) {
+            s7PLC.hotRestart();
+            System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
+        } finally {
+            return result;
+        }
+    }
+
+    /**
+     * 鎸夋寚瀹氱殑鍦板潃 璇诲彇byte缁撴灉闆�
+     *
+     * @param address 鍦板潃
+     * @param count   杩炵画璇诲灏戜釜byte
+     * @return 缁撴灉
+     */
+    public byte[] readByte(String address, int count) {
+        if (s7PLC == null) {
+            return null;
+        }
+        // List<String> addresslist = GetAddressList(address, count, 16);
+        byte[] bytes = null;
+        try {
+            bytes = s7PLC.readByte(address, count);
+        } catch (Exception e) {
+            // 澶勭悊寮傚父
+            s7PLC.hotRestart();
+            System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
+        } finally {
+            return bytes;
+        }
+
+    }
+
+    /**
+     * 鎸夋寚瀹氱殑鍦板潃 鎸塨it浣� 0 flase 1 true 璇诲彇缁撴灉
+     *
+     * @param addresslist 鍦板潃闆�
+     * @return Boolean缁撴灉
+     */
+    public List<Boolean> readBits(List<String> addresslist) {
+        if (s7PLC == null) {
+            return null;
+        }
+        List<Boolean> values = new ArrayList<>();
+        try {
+            values = s7PLC.readBoolean(addresslist);
+        } catch (Exception e) {
+            // 澶勭悊寮傚父
+            s7PLC.hotRestart();
+        } finally {
+            return values;
+        }
+    }
+
+   /* //璇诲彇涓嶈繛缁湴鍧�bit
+    public List<Boolean> readBits(List<String> addressList) {
+        if (s7PLC == null || addressList.isEmpty()) {
+            return null;
+        }
+
+        List<Boolean> values = new ArrayList<>();
+        for (String address : addressList) {
+            try {
+                boolean value = s7PLC.readBoolean(address);
+                values.add(value);
+            } catch (Exception e) {
+                // 澶勭悊寮傚父
+                System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
+            }
+        }
+
+        return values;
+    }*/
+
+
+    //璇诲彇瀛楃涓�
+    public String readString(String address) {
+        if (s7PLC == null) {
+            return null;
+        }
+        String result = null;
+        try {
+            result = s7PLC.readString(address);
+        } catch (Exception e) {
+            s7PLC.hotRestart();
+            System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
+        } finally {
+            return result;
+        }
+    }
+
+
+    //璇诲彇鏃堕棿
+    public Long readtime(String address) {
+        if (s7PLC == null) {
+            return null;
+        }
+        Long result = null;
+        try {
+            result = s7PLC.readTime(address);
+        } catch (Exception e) {
+            s7PLC.hotRestart();
+            System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
+        } finally {
+            return result;
+        }
+    }
+
+
+    public boolean writetime(String address, long datas) {
+        if (s7PLC == null) {
+            return false;
+        }
+        boolean result = false;
+        int tryCount = 2;
+        do {
+            try {
+                s7PLC.writeTime(address, datas); // 灏嗘暟鎹啓鍏ュ崟涓湴鍧�
+                result = true;
+            } catch (Exception ex) {
+                reStartS7client();
+            } finally {
+                tryCount -= 1;
+            }
+        }
+        while (!result && tryCount > 0);
+        return result;
+    }
+
+
+    /**
+     * 浠庢寚瀹氱殑鍦板潃寮�濮� 杩炵画鎸塨it浣嶈鍙�
+     *
+     * @param address 鍦板潃
+     * @param count   闀垮害
+     * @return Boolean缁撴灉
+     */
+    public List<Boolean> readBits(String address, int count) {
+        if (s7PLC == null) {
+            return null;
+        }
+        List<Boolean> values = new ArrayList<>();
+        List<String> addresslist = getAddressList(address, count, 1);
+        try {
+            values = s7PLC.readBoolean(addresslist);
+        } catch (Exception e) {
+            s7PLC.hotRestart();
+            System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
+        } finally {
+            return values;
+        }
+    }
+
+    ;
+
+
+    private List<String> getAddressList(String address, int count, int addedbit) {
+        List<String> addresslist = new ArrayList<String>();
+
+        String[] stringdatas = address.trim().split("\\.");
+        if (stringdatas.length < 2 || !address.startsWith("DB")) {
+            return null;
+        }
+        int dbwindex = 0;
+        int bitindex = 0;
+        if (stringdatas.length == 2) {
+            dbwindex = Integer.parseInt(stringdatas[1]);
+        } else if (stringdatas.length == 3) {
+            dbwindex = Integer.parseInt(stringdatas[1]);
+            bitindex = Integer.parseInt(stringdatas[2]);
+        } else {
+            return null;
+        }
+
+        addresslist.add(address);
+        for (int i = 0; i < count - 1; i++) {
+
+            int bitcurrent = bitindex + addedbit;
+            if (bitcurrent > 7) {
+                dbwindex += bitcurrent / 8;
+                bitindex = 0;
+            } else {
+                bitindex = bitcurrent;
+            }
+
+            String endstr = stringdatas.length == 3 ? "." + bitindex : "";
+            addresslist.add(stringdatas[0] + "." + dbwindex + endstr);
+        }
+        return addresslist;
+    }
+}
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketServer.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketServer.java
new file mode 100644
index 0000000..480921c
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketServer.java
@@ -0,0 +1,175 @@
+package com.mes.tools;
+
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.stereotype.Component;
+
+import javax.websocket.*;
+import javax.websocket.server.PathParam;
+import javax.websocket.server.ServerEndpoint;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+@ServerEndpoint(value = "/api/talk/{username}")
+@Component("webSocketServer")
+public class WebSocketServer {
+
+
+    public static ConfigurableApplicationContext applicationContext;
+
+    private static final Logger log = LoggerFactory.getLogger(WebSocketServer.class);
+    private List<String> messages;
+    /**
+     * 璁板綍褰撳墠鍦ㄧ嚎杩炴帴鏁�
+     */
+    public static final Map<String, ArrayList<WebSocketServer>> sessionMap = new ConcurrentHashMap<>();
+
+    public String username;
+    public Session session;
+
+    public WebSocketServer() {
+        this.messages = new ArrayList<>();
+    }
+
+    /**
+     * 杩炴帴寤虹珛鎴愬姛璋冪敤鐨勬柟娉�
+     */
+    @OnOpen
+    public void onOpen(Session session, @PathParam("username") String username) {
+        this.username = username;
+        this.session = session;
+        List<WebSocketServer> webSocketServers = sessionMap.get(username);
+        if (webSocketServers == null) {
+            ArrayList<WebSocketServer> arrayListwebserver = new ArrayList<WebSocketServer>();
+            arrayListwebserver.add(this);
+            sessionMap.put(username, arrayListwebserver);
+        } else {
+            webSocketServers.add(this);
+        }
+
+        log.info("鏈夋柊鐢ㄦ埛鍔犲叆锛寀sername={}, 褰撳墠鍦ㄧ嚎浜烘暟涓猴細{}", username, sessionMap.get(username).size());
+
+        // JSONObject result = new JSONObject();
+        // JSONArray array = new JSONArray();
+        // result.set("users", array);
+        // for (Object key : sessionMap.keySet()) {
+        // JSONObject jsonObject = new JSONObject();
+        // jsonObject.set("username", key);
+        // array.add(jsonObject);
+        // }
+
+        // sendAllMessage(JSONUtil.toJsonStr(result)); // 鍚庡彴鍙戦�佹秷鎭粰鎵�鏈夌殑瀹㈡埛绔�
+    }
+
+    /**
+     * 杩炴帴鍏抽棴璋冪敤鐨勬柟娉�
+     */
+    @OnClose
+    public void onClose(Session session, @PathParam("username") String username) {
+        List<WebSocketServer> webSocketServers = sessionMap.get(username);
+        ArrayList<WebSocketServer> arrayListwebserver = new ArrayList<WebSocketServer>();
+        if (webSocketServers.size() > 1) {
+            for (WebSocketServer webSocketServer : webSocketServers) {
+                if (webSocketServer != this) {
+                    arrayListwebserver.add(webSocketServer);
+                }
+            }
+            sessionMap.put(username, arrayListwebserver);
+            log.info("绉婚櫎username={}涓�鍚嶇敤鎴穝ession, {}鐨勫綋鍓嶅湪绾夸汉鏁颁负锛歿}", username, username, sessionMap.get(username).size());
+        } else {
+            sessionMap.remove(username);
+            log.info("绉婚櫎username={}涓�鍚嶇敤鎴穝ession, {}杩炴帴鍏抽棴, 褰撳墠杩炴帴鏁颁负锛歿}", username, username, sessionMap.size());
+        }
+
+    }
+
+    /**
+     * 鏀跺埌瀹㈡埛绔秷鎭悗璋冪敤鐨勬柟娉�
+     * 鍚庡彴鏀跺埌瀹㈡埛绔彂閫佽繃鏉ョ殑娑堟伅
+     * onMessage 鏄竴涓秷鎭殑涓浆绔�
+     * 鎺ュ彈 娴忚鍣ㄧ socket.send 鍙戦�佽繃鏉ョ殑 json鏁版嵁
+     *
+     * @param message 瀹㈡埛绔彂閫佽繃鏉ョ殑娑堟伅
+     */
+    @OnMessage
+    public void onMessage(String message, Session session, @PathParam("username") String username) {
+        log.info("鏈嶅姟绔敹鍒扮敤鎴穟sername={}鐨勬秷鎭�:{}", username, message);
+        JSONObject obj = JSONUtil.parseObj(message);
+        String text = obj.getStr("data");
+
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.set("message", text);
+        this.messages.add(text);
+    }
+
+    @OnError
+    public void onError(Session session, Throwable error) {
+        log.error("鍙戠敓閿欒");
+        error.printStackTrace();
+    }
+
+    /**
+     * 鏈嶅姟绔彂閫佹秷鎭粰瀹㈡埛绔�
+     */
+    public void sendMessage(String message) {
+        try {
+            // log.info("鏈嶅姟绔粰瀹㈡埛绔痆{}]鍙戦�佹秷鎭瘂}", this.session.getId(), message);
+            if(this.session.isOpen()){
+                int maxChunkSize = 50000; // 瀹氫箟鏈�澶х殑鍒嗗潡澶у皬
+                int length = message.length();
+                if(length>50000){
+                    int chunks = (int) Math.ceil((double) length / maxChunkSize);
+                    //鍒嗗潡鍙戦�佹秷鎭�
+                    for (int i = 0; i < chunks; i++) {
+                        int startIndex = i * maxChunkSize;
+                        int endIndex = Math.min(startIndex + maxChunkSize, length);
+                        String chunk = message.substring(startIndex, endIndex);
+
+                        // 鍒ゆ柇鏄惁鏄渶鍚庝竴鍧楁秷鎭�
+                        boolean isLastChunk = (i == chunks - 1);
+                        if(isLastChunk==true){
+                            chunk+="<END>";
+                        }
+                        // 鍙戦�佸垎鍧楁秷鎭紝骞朵紶閫掓槸鍚︽槸鏈�鍚庝竴鍧楁秷鎭殑鏍囪瘑
+                        this.session.getBasicRemote().sendText(chunk);
+                    }
+                }else{
+                    this.session.getBasicRemote().sendText(message);
+                }
+
+            }
+        } catch (Exception e) {
+            log.error("鍙戦�佹秷鎭粰瀹㈡埛绔け璐ワ細{}", e.getMessage(), e);
+        }
+    }
+
+    // /**
+    //  * 鏈嶅姟绔彂閫佹秷鎭粰鎵�鏈夊鎴风
+    //  */
+    // public void sendAllMessage(String message) {
+    //     try {
+    //         for (WebSocketServer webSocketServer : sessionMap.values()) {
+    //             // log.info("鏈嶅姟绔粰瀹㈡埛绔痆{}]鍙戦�佹秷鎭瘂}", this.session.getId(), message);
+    //             webSocketServer.sendMessage(message);
+    //         }
+    //     } catch (Exception e) {
+    //         log.error("鏈嶅姟绔彂閫佹秷鎭粰瀹㈡埛绔け璐�", e);
+    //     }
+    // }
+
+    public List<String> getMessages() {
+        return messages;
+
+    }
+
+    public void clearMessages() {
+        messages.clear();
+    }
+
+
+}
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/utils/HexUtil.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/utils/HexUtil.java
new file mode 100644
index 0000000..861aaa7
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/utils/HexUtil.java
@@ -0,0 +1,322 @@
+package com.mes.utils;
+
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+
+public class HexUtil {
+    
+    public static String formatHex(String hex) {
+        String result = "";
+        
+        for (int i = 0; i < hex.length() - 1; i+=2) {
+            String output = hex.substring(i, i + 2);
+            result += ("0x" + output + " ");
+        }
+        
+        if (result.length() > 0) {
+            result = result.substring(0, result.lastIndexOf(" "));
+        }
+        
+        return result;
+    }
+    
+    //姝e父鐨勫瓧姣嶆暟瀛楀彉鎴愬瓧鑺傛暟鍙戦�佺粰鐩掑瓙
+    public static String asciiToHex(String str) {
+        char[] chars = str.toCharArray();
+        
+        StringBuffer hex = new StringBuffer();
+        for (int i = 0; i < chars.length; i++) {
+            hex.append(Integer.toHexString(chars[i]));
+        }
+        
+        return hex.toString();
+    }
+    
+    public static String hexToAscii(String hex) {
+        StringBuffer result = new StringBuffer();
+        
+        for (int i = 0; i < hex.length() - 1; i+= 2) {
+            String output = hex.substring(i, i + 2);
+            int decimal = Integer.parseInt(output, 16);
+            result.append((char) decimal);
+        }
+        
+        return result.toString();
+    }//12300    //00321
+    //浜岃繘鍒惰浆鍗佽繘鍒�
+    public static int int2ToHex(String number) {
+        return Integer.parseInt(number, 2);
+    }
+    //浜岃繘鍒惰浆16杩涘埗 4浣�
+    public static String intBinaryTo16(String number) {
+    	int num=int2ToHex(number);
+        return intTo2ByteHex(num);
+    }
+    //鍗佸叚杩涘埗杞崄杩涘埗
+    public static int int16ToHex(String number) {
+        return Integer.parseInt(number, 16);
+    }
+    //鍗佽繘鍒惰浆浜岃繘鍒�
+    public static String intToBinary(int number) {
+        return Integer.toBinaryString(number);
+    }
+    //鍗佸叚杩涘埗杞簩杩涘埗 
+    public static String int16ToBinary(String number) {
+        return intToBinary(int16ToHex(number));
+    }
+    //鍗佸叚杩涘埗杞簩杩涘埗  
+    public static String int16ToBinaryEight(String number,int count) {
+    	String binary=int16ToBinary(number);
+    	String zero="";
+    	for (int i = 0; i <count-binary.length(); i++) {
+    		zero+="0";
+		}
+    	binary=zero+binary;
+        return binary;
+    }
+    
+    public static String intToHex(int number) {
+        return Integer.toHexString(number);
+    }
+    
+    /**
+     * 灏嗘暣鏁拌浆鎹负2浣�16杩涘埗锛屽1杞崲涓�01锛�10杞崲涓�0a
+     * 
+     * @param number
+     * @return
+     */
+    public static String intTo1ByteHex(int number) {
+        String numberHex = HexUtil.intToHex(number);
+        
+        numberHex = String.format("%2s", numberHex).replace(' ', '0');
+        
+        return numberHex;
+    }
+    
+    /**
+     * 灏嗘暣鏁拌浆鎹负4浣�16杩涘埗锛屽1杞崲涓�0001锛�10杞崲涓�000a
+     * 
+     * @param number
+     * @return
+     */
+    public static String intTo2ByteHex(int number) {
+        String numberHex = HexUtil.intToHex(number);
+        
+        numberHex = String.format("%4s", numberHex).replace(' ', '0');
+        
+        return numberHex;
+    }
+    
+    /**
+     * 灏嗘暣鏁拌浆鎹负8浣�16杩涘埗锛屽1杞崲涓�00000001锛�10杞崲涓�0000000a
+     * 
+     * @param number
+     * @return
+     */
+    public static String intTo4ByteHex(int number) {
+        String numberHex = HexUtil.intToHex(number);       
+        numberHex = String.format("%8s", numberHex).replace(' ', '0');       
+        return numberHex;
+    }
+    
+    /**
+     * 灏嗘椂闂磋浆鎹负16杩涘埗鏍煎紡锛屽勾锛�2瀛楄妭锛� + 鏈堬紙1瀛楄妭锛� + 鏃ワ紙1瀛楄妭锛� + 鏃讹紙1瀛楄妭锛� + 鍒嗭紙1瀛楄妭锛� + 绉掞紙1瀛楄妭锛�
+     * 
+     * @param time
+     * @return
+     */
+    public static String timeToHex(Date time) {
+        Calendar c = Calendar.getInstance();
+        c.setTime(time);
+        
+        String yearHex = intTo2ByteHex(c.get(Calendar.YEAR));
+        String monthHex = intTo1ByteHex(c.get(Calendar.MONTH) + 1);
+        String dayHex = intTo1ByteHex(c.get(Calendar.DAY_OF_MONTH));
+        String hourHex = intTo1ByteHex(c.get(Calendar.HOUR_OF_DAY));
+        String minuteHex = intTo1ByteHex(c.get(Calendar.MINUTE));
+        String secondHex = intTo1ByteHex(c.get(Calendar.SECOND));
+        
+        return yearHex + monthHex + dayHex + hourHex + minuteHex + secondHex;
+    }
+    
+    /**
+     * 灏�16杩涘埗鐨勬椂闂磋浆鎹负yyyy-MM-dd HH:mm:ss鐨勬牸寮�
+     * 
+     * @param hexTime
+     * @return
+     */
+    public static String hexToTime(String hexTime) {
+        String year = hexTo4DigitInt(hexTime.substring(0, 4));
+        String month = hexTo2DigitInt(hexTime.substring(4, 6));
+        String day = hexTo2DigitInt(hexTime.substring(6, 8));
+        String hour = hexTo2DigitInt(hexTime.substring(8, 10));
+        String minute = hexTo2DigitInt(hexTime.substring(10, 12));
+        String second = hexTo2DigitInt(hexTime.substring(12, 14));
+        
+        return year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;
+    }
+    //鍗佸叚杩涘埗杞�10杩涘埗
+    public static int hexToInt(String hex) {
+        return Integer.parseInt(hex, 16);
+    }
+    //鍗佸叚杩涘埗杞垚10杩涘埗鍥涗綅
+    public static String hexTo4DigitInt(String hex) {
+        return new DecimalFormat("0000").format(hexToInt(hex));
+    }
+    //鍗佸叚杩涘埗杞垚10杩涘埗涓や綅
+    public static String hexTo2DigitInt(String hex) {
+        return new DecimalFormat("00").format(hexToInt(hex));
+    }
+    
+    public static byte[] stringToInt(String a){
+        byte[] byt = new byte[a.length()/2];
+        for (int i = 0; i < a.length() - 1; i+=2) {
+            String output = a.substring(i, i + 2);
+            byt[i/2]=(byte)Integer.parseInt(output, 16);
+        }
+
+        return byt;
+    }
+    
+    /**
+     * 灏嗗瓧鑺傝浆鎹负涓や綅鍗佸叚杩涘埗瀛楃涓诧紝涓嶅浣嶅墠鍔�0
+     * 
+     * @param b
+     * @return
+     */
+    public static String byteToHexString(byte b) {
+        String hex = Integer.toHexString(b & 0xFF);
+        
+        if (hex.length() == 1) {
+            hex = "0" + hex;
+        }
+        
+        return hex;
+    }
+    
+    /**
+     * 灏嗗崄鍏繘鍒跺瓧绗︼紝杞崲鎴愪簩杩涘埗鐨勫瓧绗�
+     * 
+     * @param b
+     * @return
+     */
+	 public static String getBin(String hex){
+		String[] hexs = new String[]{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
+				 "a", "b", "c", "d", "e", "f"};
+		String[] bins = new String[]{"0000", "0001", "0010", "0011", "0100", "0101",
+				 "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"};
+		int i;
+		for(i=0; i<hexs.length && !hex.toLowerCase().equals(hexs[i]); i++);
+			return bins[i];
+	 	}
+    
+	   /**
+	     * 灏嗗崄鍏繘鍒跺瓧绗︼紝杞崲鎴愪簩杩涘埗鐨勫瓧绗�
+	     * 
+	     * @param b
+	     * @return
+	     */
+		 public static String gethex(String hex){
+			String[] hexs = new String[]{"0000", "0001", "0002", "0003", "0004", "0005", "0006", "0007", "0008", "0009",
+					 "000a", "000b", "000c", "000d", "000e", "000f"};
+			String[] bins = new String[]{"0000", "0001", "0010", "0011", "0100", "0101",
+					 "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"};
+			int i;
+			for(i=0; i<bins.length && !hex.toLowerCase().equals(bins[i]); i++);
+				return hexs[i];
+		 	}
+	 
+	 
+    
+    /**
+     * 鍗佽繘鍒跺瓧鑺傛暟缁勮浆鍗佸叚杩涘埗瀛楃涓�
+     * @param bufSize
+     * @param msg
+     * @return
+     */
+    public static String byteToHexString(int bufSize,byte[] msg){
+        String tempHex = "";
+        String command = "";
+        if (bufSize != -1) {
+            for (int i = 0; i < bufSize; i++) {
+                tempHex = Integer.toHexString(msg[i] & 0xFF);
+
+                if (tempHex.length() == 1) {
+                    tempHex = "0" + tempHex;
+                }
+                command += tempHex;
+            }
+        }
+        return command;
+    }
+    
+    public static String hexToBinary(String hexString) {
+        String binaryString = Integer.toBinaryString(hexToInt(hexString));
+        return String.format("%16s", binaryString).replace(' ', '0');
+    }
+    
+    public static String binaryTo2ByteHex(String binaryString) {
+        String HexString = Integer.toHexString(Integer.parseInt(binaryString, 2));
+        return String.format("%4s", HexString).replace(' ', '0');
+    }
+    
+    public static void main(String[] args) {
+//        System.out.println(HexUtil.hexToAscii("3c5354413e48656c6c6f20576f726c64217c5468697320697320746865206669727374207369676e616c2066726f6d20646576696365213c454f463e"));
+//        System.out.println(HexUtil.asciiToHex("<STA>Hello World!|This is the first signal from device!<EOF>"));
+//        
+//        System.out.println(String.format("%4S", HexUtil.intToHex(55)).replace(' ', '0'));
+//        System.out.println(HexUtil.hexToInt("00d2"));
+//        
+//        System.out.println(HexUtil.formatHex("3c5354413e"));
+        String message = "Hello World!|This is the first signal from device!";
+        int length = message.length() * 2 + 10; // 闀垮害鍖呮嫭缁撳熬鐨�<EOF>锛屼竴涓瓧绗﹀湪淇″彿涓敱涓や釜瀛楄妭琛ㄧず銆�
+        
+        String command = HexUtil.asciiToHex("<STA>"); // 娣诲姞寮�濮嬫爣璇�
+        
+        command += (String.format("%4s", HexUtil.intToHex(length)).replace(' ', '0')); // 娣诲姞闀垮害鏍囪瘑
+        command += "01"; // 娣诲姞璁惧绫诲瀷 0x01琛ㄧず鍒囧壊鏈猴紝0x02琛ㄧず閽㈠寲鐐�
+        command += "0001"; // 娣诲姞璁惧鍨嬪彿锛�0x0001琛ㄧず鍩烘湰娆撅紝0x0002琛ㄧず涓骇娆�
+        command += "0000"; // 鍔熻兘鍙凤紝0x0000鏄笅浣嶆満涓诲姩鍙戠粰涓婁綅鏈猴紱0x0001鏄笂浣嶆満淇敼涓嬩綅鏈篟TC
+        command += "00"; // 鍔犲瘑鏂瑰紡锛�0x00琛ㄧず涓嶅姞瀵�
+        
+        Calendar c = Calendar.getInstance();
+        
+        // 娣诲姞鏃堕棿锛屽苟灏嗘椂闂磋浆鎹负16杩涘埗琛ㄧず
+        command += (String.format("%4s", HexUtil.intToHex(c.get(Calendar.YEAR))).replace(' ', '0'));
+        command += (String.format("%2s", HexUtil.intToHex(c.get(Calendar.MONTH) + 1)).replace(' ', '0'));
+        command += (String.format("%2s", HexUtil.intToHex(c.get(Calendar.DAY_OF_MONTH))).replace(' ', '0'));
+        command += (String.format("%2s", HexUtil.intToHex(c.get(Calendar.HOUR_OF_DAY))).replace(' ', '0'));
+        command += (String.format("%2s", HexUtil.intToHex(c.get(Calendar.MINUTE))).replace(' ', '0'));
+        command += (String.format("%2s", HexUtil.intToHex(c.get(Calendar.SECOND))).replace(' ', '0'));
+        
+        command += ("00000001"); // 鍞竴鏍囪瘑锛屼娇鐢ㄥ簭鍒楀彿
+        
+        command += (HexUtil.asciiToHex(message)); // 娣诲姞涓昏淇℃伅鍐呭
+        
+        command += (HexUtil.asciiToHex("<EOF>")); // 娣诲姞缁撳熬鏍囪瘑
+        
+        System.out.println(command);
+        
+        System.out.println(String.format("%4s", "1"));
+        
+        Date time = new Date();
+        System.out.println(new SimpleDateFormat("yyyy-MM-dd-hh-mm-ss").format(time));
+        
+        String timeHex = timeToHex(time);
+        System.out.println(timeHex);
+        System.out.println(hexToTime(timeHex));
+        
+        System.out.println("3c5354413e001a00000000000000000000000000010007e0021500152800000000000000005041001d017c017c01017c3c454f463e".length());
+        
+        System.out.println(hexToBinary("0c0a"));
+        
+        System.out.println(Integer.MAX_VALUE);
+    }
+    
+    public static String hexTo2Binary(String hexString) {
+        String binaryString = Integer.toBinaryString(hexToInt(hexString));
+        return String.format("%8s", binaryString).replace(' ', '0');
+    }
+}
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/utils/MD5.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/utils/MD5.java
new file mode 100644
index 0000000..e0153d2
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/utils/MD5.java
@@ -0,0 +1,36 @@
+package com.mes.utils;
+
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+
+public final class MD5 {
+
+    public static String encrypt(String strSrc) {
+        try {
+            char hexChars[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8',
+                    '9', 'a', 'b', 'c', 'd', 'e', 'f'};
+            byte[] bytes = strSrc.getBytes();
+            MessageDigest md = MessageDigest.getInstance("MD5");
+            md.update(bytes);
+            bytes = md.digest();
+            int j = bytes.length;
+            char[] chars = new char[j * 2];
+            int k = 0;
+            for (int i = 0; i < bytes.length; i++) {
+                byte b = bytes[i];
+                chars[k++] = hexChars[b >>> 4 & 0xf];
+                chars[k++] = hexChars[b & 0xf];
+            }
+            return new String(chars);
+        } catch (NoSuchAlgorithmException e) {
+            e.printStackTrace();
+            throw new RuntimeException("MD5鍔犲瘑鍑洪敊锛侊紒+" + e);
+        }
+    }
+
+    public static void main(String[] args) {
+        System.out.println(MD5.encrypt("111111"));
+    }
+
+}
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/utils/ResponseUtil.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/utils/ResponseUtil.java
new file mode 100644
index 0000000..ad4f177
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/utils/ResponseUtil.java
@@ -0,0 +1,28 @@
+package com.mes.utils;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.springframework.http.HttpStatus;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/4/8 15:46
+ * @Description:
+ */
+public class ResponseUtil {
+
+    public static final String APPLICATION_JSON_UTF8_VALUE = "application/json;charset=UTF-8";
+
+    public static void out(HttpServletResponse response, Result r) {
+        ObjectMapper mapper = new ObjectMapper();
+        response.setStatus(HttpStatus.OK.value());
+        response.setContentType(APPLICATION_JSON_UTF8_VALUE);
+        try {
+            mapper.writeValue(response.getWriter(), r);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+}
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/utils/Result.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/utils/Result.java
new file mode 100644
index 0000000..9b9a681
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/utils/Result.java
@@ -0,0 +1,56 @@
+package com.mes.utils;
+
+import lombok.Data;
+
+
+@Data
+public class Result<T> {
+    private Integer code;
+    private String message;
+    private T data;
+
+    private Result() {
+
+    }
+
+    public static <T> Result<T> build(Integer code, String message, T data) {
+        Result<T> result = new Result<T>();
+        result.setCode(code);
+        result.setMessage(message);
+        if (data != null) {
+            result.setData(data);
+        }
+        return result;
+    }
+
+    public static <T> Result<T> build(ResultCodeEnum resultCodeEnum, T data) {
+        Result<T> result = new Result<T>();
+        result.setCode(resultCodeEnum.getCode());
+        result.setMessage(resultCodeEnum.getMessage());
+        if (data != null) {
+            result.setData(data);
+        }
+        return result;
+    }
+
+    public static <T> Result<T> success() {
+        return build(ResultCodeEnum.SUCCESS, null);
+    }
+
+    public static <T> Result<T> success(T data) {
+        return build(ResultCodeEnum.SUCCESS.getCode(), "", data);
+    }
+
+
+    public static Result error(Integer code, String msg) {
+        return build(code, msg, null);
+    }
+
+    public static <T> Result<T> error(T data) {
+        return build(ResultCodeEnum.FAIL.getCode(), "", data);
+    }
+
+    public static <T> Result<T> error() {
+        return build(ResultCodeEnum.FAIL.getCode(), "鏈嶅姟鍣ㄥ彂鐢熷紓甯�", null);
+    }
+}
diff --git a/JiuMuMesParent/common/servicebase/src/main/java/com/mes/utils/ResultCodeEnum.java b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/utils/ResultCodeEnum.java
new file mode 100644
index 0000000..f29b532
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/java/com/mes/utils/ResultCodeEnum.java
@@ -0,0 +1,33 @@
+package com.mes.utils;
+
+import lombok.Getter;
+
+/**
+ * @author zhoush
+ */
+
+@Getter
+public enum ResultCodeEnum {
+
+    SUCCESS(200, "鎴愬姛"),
+    FAIL(201, "澶辫触"),
+    SERVICE_ERROR(2012, "鏈嶅姟寮傚父"),
+    DATA_ERROR(204, "鏁版嵁寮傚父"),
+    ILLEGAL_REQUEST(205, "闈炴硶璇锋眰"),
+    REPEAT_SUBMIT(206, "閲嶅鎻愪氦"),
+
+    LOGIN_AUTH(208, "鏈櫥闄�"),
+    PERMISSION(209, "娌℃湁鏉冮檺"),
+
+
+    ;
+
+    private Integer code;
+
+    private String message;
+
+    ResultCodeEnum(Integer code, String message) {
+        this.code = code;
+        this.message = message;
+    }
+}
diff --git a/JiuMuMesParent/common/servicebase/src/main/resources/banner.txt b/JiuMuMesParent/common/servicebase/src/main/resources/banner.txt
new file mode 100644
index 0000000..b4027f0
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/src/main/resources/banner.txt
@@ -0,0 +1,32 @@
+________                ________                 ___       _____________   ____
+`MMMMMMMb.          68b `MMMMMMMb.               `MMb     dMM'`MMMMMMMMM  6MMMMb\
+ MM    `Mb          Y89  MM    `Mb                MMM.   ,PMM  MM      \ 6M'    `
+ MM     MM   ____   ___  MM     MM   _____        M`Mb   d'MM  MM        MM
+ MM    .M9  6MMMMb  `MM  MM    .M9  6MMMMMb       M YM. ,P MM  MM    ,   YM.
+ MMMMMMM(  6M'  `Mb  MM  MMMMMMM(  6M'   `Mb      M `Mb d' MM  MMMMMMM    YMMMMb
+ MM    `Mb MM    MM  MM  MM    `Mb MM     MM      M  YM.P  MM  MM    `        `Mb
+ MM     MM MMMMMMMM  MM  MM     MM MM     MM      M  `Mb'  MM  MM              MM
+ MM     MM MM        MM  MM     MM MM     MM      M   YP   MM  MM              MM
+ MM    .M9 YM    d9  MM  MM    .M9 YM.   ,M9 68b  M   `'   MM  MM      / L    ,M9
+_MMMMMMM9'  YMMMM9  _MM__MMMMMMM9'  YMMMMM9  Y89 _M_      _MM__MMMMMMMMM MYMMMM9
+
+//                          _ooOoo_                               //
+//                         o8888888o                              //
+//                         88" . "88                              //
+//                         (| ^_^ |)                              //
+//                         O\  =  /O                              //
+//                      ____/`---'\____                           //
+//                    .'  \\|     |//  `.                         //
+//                   /  \\|||  :  |||//  \                        //
+//                  /  _||||| -:- |||||-  \                       //
+//                  |   | \\\  -  /// |   |                       //
+//                  | \_|  ''\---/''  |   |                       //
+//                  \  .-\__  `-`  ___/-. /                       //
+//                ___`. .'  /--.--\  `. . ___                     //
+//              ."" '<  `.___\_<|>_/___.'  >'"".                  //
+//            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 //
+//            \  \ `-.   \_ __\ /__ _/   .-` /  /                 //
+//      ========`-.____`-.___\_____/___.-`____.-'========         //
+//                           `=---='                              //
+//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        //
+//            浣涚淇濅綉       姘镐笉瀹曟満      姘告棤BUG                銆�銆�//
\ No newline at end of file
diff --git a/JiuMuMesParent/common/servicebase/target/classes/banner.txt b/JiuMuMesParent/common/servicebase/target/classes/banner.txt
new file mode 100644
index 0000000..b4027f0
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/target/classes/banner.txt
@@ -0,0 +1,32 @@
+________                ________                 ___       _____________   ____
+`MMMMMMMb.          68b `MMMMMMMb.               `MMb     dMM'`MMMMMMMMM  6MMMMb\
+ MM    `Mb          Y89  MM    `Mb                MMM.   ,PMM  MM      \ 6M'    `
+ MM     MM   ____   ___  MM     MM   _____        M`Mb   d'MM  MM        MM
+ MM    .M9  6MMMMb  `MM  MM    .M9  6MMMMMb       M YM. ,P MM  MM    ,   YM.
+ MMMMMMM(  6M'  `Mb  MM  MMMMMMM(  6M'   `Mb      M `Mb d' MM  MMMMMMM    YMMMMb
+ MM    `Mb MM    MM  MM  MM    `Mb MM     MM      M  YM.P  MM  MM    `        `Mb
+ MM     MM MMMMMMMM  MM  MM     MM MM     MM      M  `Mb'  MM  MM              MM
+ MM     MM MM        MM  MM     MM MM     MM      M   YP   MM  MM              MM
+ MM    .M9 YM    d9  MM  MM    .M9 YM.   ,M9 68b  M   `'   MM  MM      / L    ,M9
+_MMMMMMM9'  YMMMM9  _MM__MMMMMMM9'  YMMMMM9  Y89 _M_      _MM__MMMMMMMMM MYMMMM9
+
+//                          _ooOoo_                               //
+//                         o8888888o                              //
+//                         88" . "88                              //
+//                         (| ^_^ |)                              //
+//                         O\  =  /O                              //
+//                      ____/`---'\____                           //
+//                    .'  \\|     |//  `.                         //
+//                   /  \\|||  :  |||//  \                        //
+//                  /  _||||| -:- |||||-  \                       //
+//                  |   | \\\  -  /// |   |                       //
+//                  | \_|  ''\---/''  |   |                       //
+//                  \  .-\__  `-`  ___/-. /                       //
+//                ___`. .'  /--.--\  `. . ___                     //
+//              ."" '<  `.___\_<|>_/___.'  >'"".                  //
+//            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 //
+//            \  \ `-.   \_ __\ /__ _/   .-` /  /                 //
+//      ========`-.____`-.___\_____/___.-`____.-'========         //
+//                           `=---='                              //
+//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        //
+//            浣涚淇濅綉       姘镐笉瀹曟満      姘告棤BUG                銆�銆�//
\ No newline at end of file
diff --git a/JiuMuMesParent/common/servicebase/target/maven-archiver/pom.properties b/JiuMuMesParent/common/servicebase/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..49285f3
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/target/maven-archiver/pom.properties
@@ -0,0 +1,3 @@
+version=1.0-SNAPSHOT
+groupId=com.mes
+artifactId=servicebase
diff --git a/JiuMuMesParent/common/servicebase/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/JiuMuMesParent/common/servicebase/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..249030b
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,31 @@
+com\mes\engineering\service\EngineeringService.class
+com\mes\utils\ResultCodeEnum.class
+com\mes\service\Communication.class
+com\mes\device\PlcParameterInfo.class
+com\mes\device\PlcBitInfo.class
+com\mes\device\PlcBitObject.class
+com\mes\utils\MD5.class
+com\mes\tools\WebSocketServer.class
+com\mes\common\config\Const.class
+com\mes\service\PlcAgreement.class
+com\mes\engineering\mapper\EngineeringMapper.class
+com\mes\tools\DatabaseDesignDocUtil.class
+com\mes\engineering\entity\Engineering.class
+com\mes\utils\Result.class
+com\mes\common\config\MybatisPlusConfig.class
+com\mes\common\exception\ServiceException.class
+com\mes\service\ModbusTcp.class
+com\mes\utils\ResponseUtil.class
+com\mes\common\handler\MyMetaObjectHandler.class
+com\mes\device\PlcParameterObject.class
+com\mes\entity\request\GeneralRequest.class
+com\mes\tools\InitUtil.class
+com\mes\engineering\service\impl\EngineeringServiceImpl.class
+com\mes\utils\HexUtil.class
+com\mes\tools\HexConversion.class
+com\mes\tools\S7control.class
+com\mes\common\exception\GlobalExceptionHandler.class
+com\mes\common\config\Swagger2Config.class
+com\mes\common\config\WebSocketConfig.class
+com\mes\service\PlcParameter.class
+com\mes\tools\CodeGet.class
diff --git a/JiuMuMesParent/common/servicebase/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/JiuMuMesParent/common/servicebase/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..68e8e96
--- /dev/null
+++ b/JiuMuMesParent/common/servicebase/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,31 @@
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\tools\WebSocketServer.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\service\ModbusTcp.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\common\handler\MyMetaObjectHandler.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\common\config\Swagger2Config.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\service\Communication.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\utils\MD5.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\engineering\service\impl\EngineeringServiceImpl.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\common\exception\ServiceException.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\device\PlcParameterObject.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\common\config\WebSocketConfig.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\tools\DatabaseDesignDocUtil.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\utils\HexUtil.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\engineering\entity\Engineering.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\engineering\mapper\EngineeringMapper.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\tools\CodeGet.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\common\config\MybatisPlusConfig.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\service\PlcAgreement.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\tools\HexConversion.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\common\config\Const.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\entity\request\GeneralRequest.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\device\PlcBitInfo.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\utils\ResponseUtil.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\utils\ResultCodeEnum.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\device\PlcParameterInfo.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\tools\InitUtil.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\service\PlcParameter.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\device\PlcBitObject.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\common\exception\GlobalExceptionHandler.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\utils\Result.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\tools\S7control.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\servicebase\src\main\java\com\mes\engineering\service\EngineeringService.java
diff --git a/JiuMuMesParent/common/springsecurity/pom.xml b/JiuMuMesParent/common/springsecurity/pom.xml
new file mode 100644
index 0000000..9278822
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/pom.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>common</artifactId>
+        <groupId>com.mes</groupId>
+        <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>springsecurity</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.mes</groupId>
+            <artifactId>servicebase</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+
+        <!-- Spring Security渚濊禆 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-security</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/JiuMuMesParent/common/springsecurity/springsecurity1.iml b/JiuMuMesParent/common/springsecurity/springsecurity1.iml
new file mode 100644
index 0000000..06737b0
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/springsecurity1.iml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="servicebase-1.0-SNAPSHOT" level="project" />
+    <orderEntry type="module" module-name="servicebase1" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/config/RedisConfig.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/config/RedisConfig.java
new file mode 100644
index 0000000..e469272
--- /dev/null
+++ b/JiuMuMesParent/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/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/config/TokenWebSecurityConfig.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/config/TokenWebSecurityConfig.java
new file mode 100644
index 0000000..a130533
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/config/TokenWebSecurityConfig.java
@@ -0,0 +1,94 @@
+package com.mes.common.config;
+
+
+import com.mes.common.filter.JwtAuthenticationTokenFilter;
+import com.mes.common.handler.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+import org.springframework.security.config.http.SessionCreationPolicy;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
+
+@Configuration
+@EnableWebSecurity
+@EnableGlobalMethodSecurity(prePostEnabled = true)
+public class TokenWebSecurityConfig extends WebSecurityConfigurerAdapter {
+    @Autowired
+    private JwtAuthenticationTokenFilter jwtAuthenticationTokenFilter;
+    @Autowired
+    LoginFailureHandler loginFailureHandler;
+
+    @Autowired
+    LoginSuccessHandler loginSuccessHandler;
+
+    @Autowired
+    JwtAuthenticationEntryPoint jwtAuthenticationEntryPoint;
+
+    @Autowired
+    JwtAccessDeniedHandler jwtAccessDeniedHandler;
+
+    @Autowired
+    JwtLogoutSuccessHandler jwtLogoutSuccessHandler;
+
+    @Bean
+    public PasswordEncoder passwordEncoder() {
+        return new BCryptPasswordEncoder();
+    }
+
+    /**
+     * 閰嶇疆杩囨护瑙勫垯
+     */
+    @Override
+    protected void configure(HttpSecurity http) throws Exception {
+
+        http.cors().and().csrf().disable()
+
+                // 鐧诲綍閰嶇疆
+                .formLogin()
+                .successHandler(loginSuccessHandler)
+                .failureHandler(loginFailureHandler)
+
+                .and()
+                .logout()
+                .logoutSuccessHandler(jwtLogoutSuccessHandler)
+
+                // 绂佺敤session
+                .and()
+                .sessionManagement()
+                .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
+
+                // 閰嶇疆鎷︽埅瑙勫垯
+                .and()
+                .authorizeRequests()
+                .antMatchers("/sys/user/login").anonymous()
+                .antMatchers("/swagger-ui.html").permitAll()
+                .antMatchers("/webjars/**").permitAll()
+                .antMatchers("/v2/**").permitAll()
+                .antMatchers("/swagger-resources/**").permitAll()
+                .antMatchers("/**").permitAll()
+                .anyRequest().authenticated()
+
+                // 寮傚父澶勭悊鍣�
+                .and()
+                .exceptionHandling()
+                .authenticationEntryPoint(jwtAuthenticationEntryPoint)
+                .accessDeniedHandler(jwtAccessDeniedHandler)
+
+                // 閰嶇疆鑷畾涔夌殑杩囨护鍣�
+                .and()
+                .addFilterBefore(jwtAuthenticationTokenFilter, UsernamePasswordAuthenticationFilter.class);
+    }
+
+    @Bean
+    @Override
+    public AuthenticationManager authenticationManagerBean() throws Exception {
+        return super.authenticationManagerBean();
+    }
+}
diff --git a/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java
new file mode 100644
index 0000000..1505d1b
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java
@@ -0,0 +1,80 @@
+package com.mes.common.filter;
+
+import com.mes.common.utils.JwtUtil;
+import com.mes.common.utils.RedisUtil;
+import com.mes.common.utils.UserInfoUtils;
+import com.mes.userinfo.entity.LoginUser;
+import com.mes.userinfo.service.SysUserService;
+import io.jsonwebtoken.Claims;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+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 SysUserService sysUserService;
+
+    @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.getClaimByToken(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)) {
+            response.setHeader("token", "");
+            throw new RuntimeException("鐢ㄦ埛鏈櫥褰�");
+        }
+        //灏嗙敤鎴蜂俊鎭斁鍏ュ綋鍓嶇嚎绋�
+        UserInfoUtils.set(loginUser.getUser());
+        //瀛樺叆SecurityContextHolder锛屼互渚涘悗闈㈢殑杩囨护鍣ㄤ娇鐢�
+        List<String> permissionKeyList = sysUserService.getUserAuthorityInfo(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);
+    }
+}
\ No newline at end of file
diff --git a/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtAccessDeniedHandler.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtAccessDeniedHandler.java
new file mode 100644
index 0000000..aad53aa
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtAccessDeniedHandler.java
@@ -0,0 +1,35 @@
+package com.mes.common.handler;
+
+import cn.hutool.json.JSONUtil;
+import com.mes.utils.Result;
+import org.springframework.http.HttpStatus;
+import org.springframework.security.access.AccessDeniedException;
+import org.springframework.security.web.access.AccessDeniedHandler;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+@Component
+public class JwtAccessDeniedHandler implements AccessDeniedHandler {
+
+	@Override
+	public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException, ServletException {
+
+		response.setContentType("application/json;charset=UTF-8");
+		response.setStatus(HttpServletResponse.SC_FORBIDDEN);
+
+		ServletOutputStream outputStream = response.getOutputStream();
+
+		Result result = Result.error(HttpStatus.FORBIDDEN.value(), "鏉冮檺涓嶈冻");
+
+		outputStream.write(JSONUtil.toJsonStr(result).getBytes("UTF-8"));
+
+		outputStream.flush();
+		outputStream.close();
+
+	}
+}
diff --git a/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtAuthenticationEntryPoint.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtAuthenticationEntryPoint.java
new file mode 100644
index 0000000..a95ca0c
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtAuthenticationEntryPoint.java
@@ -0,0 +1,33 @@
+package com.mes.common.handler;
+
+import cn.hutool.json.JSONUtil;
+import com.mes.utils.Result;
+import org.springframework.http.HttpStatus;
+import org.springframework.security.core.AuthenticationException;
+import org.springframework.security.web.AuthenticationEntryPoint;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+@Component
+public class JwtAuthenticationEntryPoint implements AuthenticationEntryPoint {
+
+	@Override
+	public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException {
+
+		response.setContentType("application/json;charset=UTF-8");
+		response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
+		ServletOutputStream outputStream = response.getOutputStream();
+
+		Result result = Result.error(HttpStatus.UNAUTHORIZED.value(), "璁よ瘉澶辫触璇烽噸鏂扮櫥褰�");
+
+		outputStream.write(JSONUtil.toJsonStr(result).getBytes("UTF-8"));
+
+		outputStream.flush();
+		outputStream.close();
+	}
+}
diff --git a/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtLogoutSuccessHandler.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtLogoutSuccessHandler.java
new file mode 100644
index 0000000..3757d4d
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtLogoutSuccessHandler.java
@@ -0,0 +1,40 @@
+package com.mes.common.handler;
+
+import cn.hutool.json.JSONUtil;
+import com.mes.utils.Result;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
+import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+@Component
+public class JwtLogoutSuccessHandler implements LogoutSuccessHandler {
+
+	private static final String header = "Authorization";
+
+	@Override
+	public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
+
+		if (authentication != null) {
+			new SecurityContextLogoutHandler().logout(request, response, authentication);
+		}
+
+		response.setContentType("application/json;charset=UTF-8");
+		ServletOutputStream outputStream = response.getOutputStream();
+
+		response.setHeader(header, "");
+
+		Result result = Result.success("");
+
+		outputStream.write(JSONUtil.toJsonStr(result).getBytes("UTF-8"));
+
+		outputStream.flush();
+		outputStream.close();
+	}
+}
diff --git a/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/handler/LoginFailureHandler.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/handler/LoginFailureHandler.java
new file mode 100644
index 0000000..72abdbe
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/handler/LoginFailureHandler.java
@@ -0,0 +1,31 @@
+package com.mes.common.handler;
+
+import cn.hutool.json.JSONUtil;
+import com.mes.utils.Result;
+import org.springframework.security.core.AuthenticationException;
+import org.springframework.security.web.authentication.AuthenticationFailureHandler;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+@Component
+public class LoginFailureHandler implements AuthenticationFailureHandler {
+
+	@Override
+	public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException {
+
+		response.setContentType("application/json;charset=UTF-8");
+		ServletOutputStream outputStream = response.getOutputStream();
+
+		Result result = Result.error("鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒");
+
+		outputStream.write(JSONUtil.toJsonStr(result).getBytes("UTF-8"));
+
+		outputStream.flush();
+		outputStream.close();
+	}
+}
diff --git a/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/handler/LoginSuccessHandler.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/handler/LoginSuccessHandler.java
new file mode 100644
index 0000000..c5458bb
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/handler/LoginSuccessHandler.java
@@ -0,0 +1,38 @@
+package com.mes.common.handler;
+
+import cn.hutool.json.JSONUtil;
+import com.mes.common.utils.JwtUtil;
+import com.mes.utils.Result;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+@Component
+public class LoginSuccessHandler implements AuthenticationSuccessHandler {
+
+	private static final String header = "Authorization";
+
+	@Override
+	public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
+		response.setContentType("application/json;charset=UTF-8");
+		ServletOutputStream outputStream = response.getOutputStream();
+
+		// 鐢熸垚jwt锛屽苟鏀剧疆鍒拌姹傚ご涓�
+		String jwt = JwtUtil.generateToken(authentication.getName());
+		response.setHeader(header, jwt);
+
+		Result result = Result.success("");
+
+		outputStream.write(JSONUtil.toJsonStr(result).getBytes("UTF-8"));
+
+		outputStream.flush();
+		outputStream.close();
+	}
+
+}
diff --git a/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/utils/FastJsonRedisSerializer.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/utils/FastJsonRedisSerializer.java
new file mode 100644
index 0000000..f8ab417
--- /dev/null
+++ b/JiuMuMesParent/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/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/utils/JwtUtil.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/utils/JwtUtil.java
new file mode 100644
index 0000000..f7af90a
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/utils/JwtUtil.java
@@ -0,0 +1,55 @@
+package com.mes.common.utils;
+
+
+import io.jsonwebtoken.Claims;
+import io.jsonwebtoken.Jwts;
+import io.jsonwebtoken.SignatureAlgorithm;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/4/9 19:15
+ * @Description:
+ */
+@Data
+public class JwtUtil {
+
+    private static final long expire = 60 * 60 * 1000L;
+    private static final String secret = "beibo";
+    private static final String header = "Authorization";
+
+    // 鐢熸垚jwt
+    public static String generateToken(String username) {
+
+        Date nowDate = new Date();
+        Date expireDate = new Date(nowDate.getTime() + 1000 * expire);
+
+        return Jwts.builder()
+                .setHeaderParam("typ", "JWT")
+                .setSubject(username)
+                .setIssuedAt(nowDate)
+                .setExpiration(expireDate)// 7澶╅亷鏈�
+                .signWith(SignatureAlgorithm.HS512, secret)
+                .compact();
+    }
+
+    // 瑙f瀽jwt
+    public static Claims getClaimByToken(String jwt) {
+        try {
+            return Jwts.parser()
+                    .setSigningKey(secret)
+                    .parseClaimsJws(jwt)
+                    .getBody();
+        } catch (Exception e) {
+            return null;
+        }
+    }
+
+    // jwt鏄惁杩囨湡
+    public boolean isTokenExpired(Claims claims) {
+        return claims.getExpiration().before(new Date());
+    }
+
+}
diff --git a/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/utils/RedisUtil.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/utils/RedisUtil.java
new file mode 100644
index 0000000..d11f2bc
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/utils/RedisUtil.java
@@ -0,0 +1,235 @@
+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);
+    }
+
+    /**
+     * 鍒ゆ柇key鏄惁瀛樺湪
+     *
+     * @param key 閿�
+     * @return true 瀛樺湪 false涓嶅瓨鍦�
+     */
+    public boolean hasKey(String key) {
+        try {
+            return redisTemplate.hasKey(key);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+}
\ No newline at end of file
diff --git a/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/utils/UserInfoUtils.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/utils/UserInfoUtils.java
new file mode 100644
index 0000000..292797c
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/utils/UserInfoUtils.java
@@ -0,0 +1,26 @@
+package com.mes.common.utils;
+
+import com.mes.userinfo.entity.SysUser;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/4/25 15:41
+ * @Description:
+ */
+public class UserInfoUtils {
+    private static InheritableThreadLocal<SysUser> tokenPool = new InheritableThreadLocal<SysUser>();
+
+    public static SysUser get() {
+        return tokenPool.get();
+    }
+
+    public static void set(SysUser user) {
+        tokenPool.set(user);
+    }
+
+    public static void remove() {
+        if (get() != null) {
+            tokenPool.remove();
+        }
+    }
+}
diff --git a/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/utils/WebUtils.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/common/utils/WebUtils.java
new file mode 100644
index 0000000..618144d
--- /dev/null
+++ b/JiuMuMesParent/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/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/menu/controller/SysMenuController.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/menu/controller/SysMenuController.java
new file mode 100644
index 0000000..b507a45
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/menu/controller/SysMenuController.java
@@ -0,0 +1,83 @@
+package com.mes.menu.controller;
+
+import com.mes.entity.request.GeneralRequest;
+import com.mes.menu.entity.SysMenu;
+import com.mes.menu.service.SysMenuService;
+import com.mes.utils.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author zhoush
+ * @since 2024-04-11
+ */
+@Api(description = "鑿滃崟绠$悊")
+@RestController
+@RequestMapping("/sys/menu")
+public class SysMenuController {
+
+    @Autowired
+    private SysMenuService sysMenuService;
+
+    @ApiOperation("鏂板鑿滃崟")
+    @PostMapping("/save")
+//    @PreAuthorize("hasAuthority('sys:menu:save')")
+    public Result save(@Validated @RequestBody SysMenu sysMenu) {
+        sysMenuService.save(sysMenu);
+        GeneralRequest request=new GeneralRequest();
+        return Result.success(sysMenuService.getMenuTree(request));
+
+    }
+
+    @ApiOperation("淇敼鑿滃崟淇℃伅")
+    @PostMapping("/updateMenu")
+//    @PreAuthorize("hasAuthority('sys:menu:update')")
+    public Result<List<SysMenu>> updateMenu(@Validated @RequestBody SysMenu sysMenu) {
+        //return Result.success(sysMenu);
+        sysMenuService.updateMenu(sysMenu);
+        GeneralRequest request=new GeneralRequest();
+        return Result.build(200,"淇敼鎴愬姛",sysMenuService.getMenuTree(request));
+    }
+
+    @ApiOperation("鑾峰彇鐢ㄦ埛鏈夋潈闄愮殑鎵�鏈夎彍鍗�")
+    @GetMapping("/getMenuTree")
+    public Result<List<SysMenu>> getMenuTree(GeneralRequest request) {
+        return Result.success(sysMenuService.getMenuTree(request));
+    }
+
+    @ApiOperation("鑾峰彇鐢ㄦ埛鐨勬潈闄�")
+    @GetMapping("/getAuthorityInfo")
+    public Result<List<String>> getAuthorityInfo() {
+        return Result.success(sysMenuService.getAuthorityInfo());
+    }
+
+
+    @ApiOperation("鐢ㄦ埛褰撳墠鐢ㄦ埛鐨勮彍鍗曞拰鏉冮檺淇℃伅")
+    @GetMapping("/nav")
+    public Result<Map<Object, Object>> nav() {
+        return Result.success(sysMenuService.nav());
+    }
+
+    @ApiOperation("鍒犻櫎鑿滃崟")
+    @PostMapping("/deleteMenu")
+//    @PreAuthorize("hasAuthority('sys:menu:delete')")
+    public Result<List<SysMenu>> deleteMenu(Long menuId) {
+        GeneralRequest request=new GeneralRequest();
+        return Result.build(200, sysMenuService.deleteMenu(menuId),sysMenuService.getMenuTree(request));
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎鑿滃崟")
+    @PostMapping("/batchDeleteMenu")
+//    @PreAuthorize("hasAuthority('sys:menu:delete')")
+    public Result<String> batchDeleteMenu(@RequestBody List<Long> menuIds) {
+        return Result.success(sysMenuService.batchDeleteMenu(menuIds));
+    }
+
+}
+
diff --git a/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/menu/entity/SysMenu.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/menu/entity/SysMenu.java
new file mode 100644
index 0000000..37476c6
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/menu/entity/SysMenu.java
@@ -0,0 +1,87 @@
+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 Long id;
+
+    /**
+     * 鐖秈d
+     */
+    private Long parentId;
+
+    /**
+     * 妯″潡鍚嶇О
+     */
+    private String menuName;
+
+    /**
+     * 鍥炬爣
+     */
+    private String icon;
+
+    /**
+     * 鍦板潃
+     */
+    private String url;
+
+    /**
+     * 璇█绫诲瀷
+     */
+    private String languageType;
+
+    /**
+     * 鐘舵��
+     */
+    private Integer status;
+
+    /**
+     * 鎺掑簭
+     */
+    private String listSort;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private Date createTime;
+
+    /**
+     * 鏉冮檺
+     */
+    private String perms;
+
+    /**
+     * 瀛愯彍鍗�
+     */
+    @TableField(exist = false)
+    private List<SysMenu> children;
+
+
+}
diff --git a/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/menu/mapper/SysMenuMapper.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/menu/mapper/SysMenuMapper.java
new file mode 100644
index 0000000..ae06d40
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/menu/mapper/SysMenuMapper.java
@@ -0,0 +1,20 @@
+package com.mes.menu.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.mes.menu.entity.SysMenu;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 鑿滃崟琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+
+public interface SysMenuMapper extends MPJBaseMapper<SysMenu> {
+
+    List<String> selectPermsByUserId(long parseLong);
+}
diff --git a/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/menu/service/SysMenuService.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/menu/service/SysMenuService.java
new file mode 100644
index 0000000..014d1cd
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/menu/service/SysMenuService.java
@@ -0,0 +1,66 @@
+package com.mes.menu.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mes.entity.request.GeneralRequest;
+import com.mes.menu.entity.SysMenu;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 鑿滃崟琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+public interface SysMenuService extends IService<SysMenu> {
+
+    /**
+     * 鏇存柊鑿滃崟淇℃伅
+     *
+     * @param menu
+     * @return
+     */
+    SysMenu updateMenu(SysMenu menu);
+
+    /**
+     * 鑾峰彇鐢ㄦ埛鏈夋潈闄愮殑鑿滃崟鏍�
+     *
+     * @return
+     */
+    List<SysMenu> getMenuTree(GeneralRequest request);
+
+    /**
+     * 鑾峰彇鐢ㄦ埛鐨勬潈闄�
+     *
+     * @return
+     */
+    List<String> getAuthorityInfo();
+
+
+    /**
+     * 鑾峰彇鐢ㄦ埛鑿滃崟鍙婃潈闄愪俊鎭�
+     *
+     * @return
+     */
+    Map<Object, Object> nav();
+
+    /**
+     * 鍒犻櫎鑿滃崟淇℃伅
+     *
+     * @param menuId
+     * @return
+     */
+    String deleteMenu(Long menuId);
+
+    /**
+     * 鎵归噺鍒犻櫎鑿滃崟淇℃伅
+     *
+     * @param menuIds
+     * @return
+     */
+    String batchDeleteMenu(List<Long> menuIds);
+
+}
diff --git a/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java
new file mode 100644
index 0000000..597f93c
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java
@@ -0,0 +1,148 @@
+package com.mes.menu.service.impl;
+
+import cn.hutool.core.map.MapUtil;
+import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.mes.common.utils.UserInfoUtils;
+import com.mes.entity.request.GeneralRequest;
+import com.mes.menu.entity.SysMenu;
+import com.mes.menu.mapper.SysMenuMapper;
+import com.mes.menu.service.SysMenuService;
+import com.mes.role.entity.SysRoleMenu;
+import com.mes.role.service.SysRoleMenuService;
+import com.mes.userinfo.entity.SysUser;
+import com.mes.userinfo.entity.SysUserRole;
+import com.mes.userinfo.mapper.SysUserRoleMapper;
+import com.mes.userinfo.service.SysUserService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 鑿滃崟琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+@Service
+@Slf4j
+public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> implements SysMenuService {
+
+    @Autowired
+    SysUserService sysUserService;
+
+    @Autowired
+    SysUserRoleMapper sysUserRoleMapper;
+
+    @Autowired
+    SysRoleMenuService sysRoleMenuService;
+
+    @Override
+    public SysMenu updateMenu(SysMenu menu) {
+        baseMapper.updateById(menu);
+        // 娓呴櫎鎵�鏈変笌璇ヨ彍鍗曠浉鍏崇殑鏉冮檺缂撳瓨
+        sysUserService.clearUserAuthorityInfoByMenuId(menu.getId());
+        return menu;
+    }
+
+    @Override
+    public List<SysMenu> getMenuTree(GeneralRequest request) {
+        //todo:闇�瑕佸厛鑾峰彇鐢ㄦ埛鐨勮鑹诧紝瑙掕壊涓嬬殑鑿滃崟鏉冮檺锛屾嬁鍒拌彍鍗昳d鑾峰彇鎵�鏈夎彍鍗�
+        SysUser user = UserInfoUtils.get();
+        MPJLambdaWrapper<SysUserRole> wrapper = new MPJLambdaWrapper<>();
+
+        wrapper.selectAll(SysMenu.class).distinct()
+                .innerJoin(SysUser.class, SysUser::getId, SysUserRole::getUserId)
+                .innerJoin(SysRoleMenu.class, SysRoleMenu::getRoleId, SysUserRole::getRoleId)
+                .innerJoin(SysMenu.class, SysMenu::getId, SysRoleMenu::getMenuId)
+                .eq(SysUser::getId, user.getId())
+                .like(StringUtils.isNotBlank(request.getKey()), SysMenu::getMenuName, request.getKey());
+
+        //
+        List<SysMenu> menuList = sysUserRoleMapper.selectJoinList(SysMenu.class, wrapper);
+        log.info("userinfos:{}",menuList);
+        return create(menuList);
+    }
+
+    @Override
+    public List<String> getAuthorityInfo() {
+        SysUser user = UserInfoUtils.get();
+        log.info("鑾峰彇鐢ㄦ埛淇℃伅锛岀敤鎴峰悕涓簕}", user);
+        // 鑾峰彇鏉冮檺淇℃伅
+        // ROLE_admin,ROLE_normal,sys:user:list,....
+        return sysUserService.getUserAuthorityInfo(user.getId());
+    }
+
+    @Override
+    public Map<Object, Object> nav() {
+        List<SysMenu> menuTree = getMenuTree(new GeneralRequest());
+        List<String> authorityInfo = getAuthorityInfo();
+        return MapUtil.builder().put("authoritys", authorityInfo)
+                .put("tree", menuTree).map();
+    }
+
+    @Override
+    public String deleteMenu(Long menuId) {
+        int count = this.count(new LambdaQueryWrapper<SysMenu>().eq(SysMenu::getParentId, menuId));
+        if (count > 0) {
+            return "鏃犳硶鍒犻櫎,璇峰厛鍒犻櫎瀛愯彍鍗�";
+        }
+
+        // 娓呴櫎鎵�鏈変笌璇ヨ彍鍗曠浉鍏崇殑鏉冮檺缂撳瓨
+        sysUserService.clearUserAuthorityInfoByMenuId(menuId);
+
+        this.removeById(menuId);
+
+        // 鍚屾鍒犻櫎涓棿鍏宠仈琛�
+        sysRoleMenuService.remove(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getMenuId, menuId));
+        return "鍒犻櫎鎴愬姛";
+    }
+
+    @Override
+    public String batchDeleteMenu(List<Long> menuIds) {
+        menuIds.stream().forEach(e -> deleteMenu(e));
+        return "鎵归噺鍒犻櫎鎴愬姛";
+    }
+
+
+    /**
+     * 灏嗘暟鎹簱涓煡璇㈠嚭鏉ョ殑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()))
+                .collect(Collectors.toList());
+        log.info("鑿滃崟鏍�:{}", JSONUtil.toJsonStr(res));
+        return res;
+    }
+
+}
diff --git a/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java
new file mode 100644
index 0000000..f752b45
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java
@@ -0,0 +1,67 @@
+package com.mes.role.controller;
+
+
+import com.mes.entity.request.GeneralRequest;
+import com.mes.role.entity.SysRole;
+import com.mes.role.entity.vo.SysRoleVO;
+import com.mes.role.service.SysRoleService;
+import com.mes.utils.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @author zhoush
+ * @since 2024-04-11
+ */
+@Api(description = "瑙掕壊绠$悊")
+@RestController
+@RequestMapping("/sys/role")
+public class SysRoleController {
+
+    @Autowired
+    private SysRoleService sysRoleService;
+
+    @ApiOperation("鏂板瑙掕壊鍙婅鑹蹭笅鐨勬潈闄愪俊鎭�")
+    @PostMapping("/saveRole")
+//    @PreAuthorize("hasAuthority('sys:role:save')")
+    public Result<SysRoleVO> saveRole(@Validated @RequestBody SysRoleVO sysRoleVO) {
+        //return Result.success(sysRoleService.saveRole(sysRoleVO));
+        sysRoleService.saveRole(sysRoleVO);
+        return Result.build(200,"鏂板鎴愬姛",sysRoleVO);
+    }
+
+    @ApiOperation("缂栬緫瑙掕壊鍙婅鑹蹭笅鐨勬潈闄愪俊鎭�")
+    @PostMapping("/updateRole")
+//    @PreAuthorize("hasAuthority('sys:role:save')")
+    public Result<SysRoleVO> updateRole(@Validated @RequestBody SysRoleVO sysRoleVO) {
+       // return Result.success(sysRoleService.updateRole(sysRoleVO));
+        sysRoleService.updateRole(sysRoleVO);
+        return Result.build(200,"鏂板鎴愬姛",sysRoleVO);
+    }
+
+    @ApiOperation("鏌ヨ瑙掕壊鍙婅鑹蹭笅鐨勬潈闄愪俊鎭�")
+    @PostMapping("/queryRole")
+//    @PreAuthorize("hasAuthority('sys:role:save')")
+    public Result<List<SysRoleVO>> queryRole(@Validated @RequestBody GeneralRequest request) {
+        return Result.success(sysRoleService.queryRole(request));
+    }
+
+
+    @ApiOperation("鍒犻櫎瑙掕壊鍙婅鑹蹭笅鐨勬潈闄愪俊鎭�")
+    @PostMapping("/delete")
+//    @PreAuthorize("hasAuthority('sys:role:delete')")
+    @Transactional
+    public Result<String> deleteRole(@RequestBody List<Long> ids) {
+        return Result.build(200,"鍒犻櫎鎴愬姛",sysRoleService.deleteRole(ids));
+    }
+
+}
\ No newline at end of file
diff --git a/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/entity/SysRole.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/entity/SysRole.java
new file mode 100644
index 0000000..14fd4a3
--- /dev/null
+++ b/JiuMuMesParent/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/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/entity/SysRoleMenu.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/entity/SysRoleMenu.java
new file mode 100644
index 0000000..aae2aed
--- /dev/null
+++ b/JiuMuMesParent/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(type = IdType.NONE)
+    private Long roleId;
+
+    /**
+     * 鑿滃崟id
+     */
+    private Long menuId;
+
+
+}
diff --git a/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/entity/vo/SysRoleVO.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/entity/vo/SysRoleVO.java
new file mode 100644
index 0000000..45efd61
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/entity/vo/SysRoleVO.java
@@ -0,0 +1,44 @@
+package com.mes.role.entity.vo;
+
+import com.mes.menu.entity.SysMenu;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/4/26 13:57
+ * @Description:
+ */
+@Api(description = "瑙掕壊淇℃伅")
+@Data
+public class SysRoleVO implements Serializable {
+
+    @ApiModelProperty(hidden = true)
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "瑙掕壊ID", position = 2)
+    private Long id;
+
+    @ApiModelProperty(value = "瑙掕壊鍚嶇О", position = 3)
+    private String name;
+
+    @ApiModelProperty(value = "瑙掕壊鏉冮檺瀛楃涓�", position = 4)
+    private String roleKey;
+
+    @ApiModelProperty(value = "瑙掕壊鐘舵�侊紙0姝e父 1鍋滅敤锛�", position = 5)
+    private String status;
+
+    @ApiModelProperty(value = "鍒犻櫎鏍囧織", position = 6)
+    private Integer delFlag;
+
+    @ApiModelProperty(value = "澶囨敞", position = 7)
+    private String remark;
+
+    @ApiModelProperty(value = "瑙掕壊鑿滃崟淇℃伅", position = 8)
+    private List<SysMenu> menuList;
+
+}
diff --git a/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMapper.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMapper.java
new file mode 100644
index 0000000..bf1bf6d
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMapper.java
@@ -0,0 +1,16 @@
+package com.mes.role.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.mes.role.entity.SysRole;
+
+/**
+ * <p>
+ * 瑙掕壊琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+public interface SysRoleMapper extends MPJBaseMapper<SysRole> {
+
+}
diff --git a/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMenuMapper.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMenuMapper.java
new file mode 100644
index 0000000..0cfc7df
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMenuMapper.java
@@ -0,0 +1,17 @@
+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/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/mapper/xml/SysRoleMapper.xml b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/mapper/xml/SysRoleMapper.xml
new file mode 100644
index 0000000..9a0cd27
--- /dev/null
+++ b/JiuMuMesParent/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/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/mapper/xml/SysRoleMenuMapper.xml b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/mapper/xml/SysRoleMenuMapper.xml
new file mode 100644
index 0000000..af0749b
--- /dev/null
+++ b/JiuMuMesParent/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/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/service/SysRoleMenuService.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/service/SysRoleMenuService.java
new file mode 100644
index 0000000..e4d23dc
--- /dev/null
+++ b/JiuMuMesParent/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/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/service/SysRoleService.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/service/SysRoleService.java
new file mode 100644
index 0000000..9592106
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/service/SysRoleService.java
@@ -0,0 +1,51 @@
+package com.mes.role.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mes.entity.request.GeneralRequest;
+import com.mes.role.entity.SysRole;
+import com.mes.role.entity.vo.SysRoleVO;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 瑙掕壊琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+public interface SysRoleService extends IService<SysRole> {
+
+    /**
+     * 鍒涘缓瑙掕壊淇℃伅
+     *
+     * @param sysRoleVO
+     * @return
+     */
+    SysRole saveRole(SysRoleVO sysRoleVO);
+
+    /**
+     * 淇敼瑙掕壊淇℃伅鍙婃潈闄�
+     *
+     * @param sysRoleVO
+     * @return
+     */
+    String updateRole(SysRoleVO sysRoleVO);
+
+    /**
+     * 鎸夌収瑙掕壊鍚嶆煡璇㈣鑹蹭俊鎭�
+     *
+     * @param request
+     * @return
+     */
+    List<SysRoleVO> queryRole(GeneralRequest request);
+
+    /**
+     * 鏌ヨ瑙掕壊鍙婅鑹蹭笅鐨勬潈闄愪俊鎭�
+     *
+     * @param ids
+     * @return
+     */
+    String deleteRole(List<Long> ids);
+}
diff --git a/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleMenuServiceImpl.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleMenuServiceImpl.java
new file mode 100644
index 0000000..4c8a475
--- /dev/null
+++ b/JiuMuMesParent/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/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java
new file mode 100644
index 0000000..a787182
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java
@@ -0,0 +1,139 @@
+package com.mes.role.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.mes.entity.request.GeneralRequest;
+import com.mes.menu.entity.SysMenu;
+import com.mes.role.entity.SysRole;
+import com.mes.role.entity.SysRoleMenu;
+import com.mes.role.entity.vo.SysRoleVO;
+import com.mes.role.mapper.SysRoleMapper;
+import com.mes.role.service.SysRoleMenuService;
+import com.mes.role.service.SysRoleService;
+import com.mes.userinfo.entity.SysUserRole;
+import com.mes.userinfo.service.SysUserRoleService;
+import com.mes.userinfo.service.SysUserService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 瑙掕壊琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+@Service
+@Slf4j
+public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements SysRoleService {
+
+    @Autowired
+    SysRoleMenuService sysRoleMenuService;
+
+    @Autowired
+    SysUserService sysUserService;
+
+    @Autowired
+    SysUserRoleService sysUserRoleService;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public SysRole saveRole(SysRoleVO sysRoleVO) {
+        log.info("淇濆瓨瑙掕壊淇℃伅锛岀敓鎴愬搴旂殑瑙掕壊id");
+        SysRole sysRole = new SysRole();
+        BeanUtils.copyProperties(sysRoleVO, sysRole);
+        this.save(sysRole);
+        //淇濆瓨瑙掕壊鏉冮檺淇℃伅
+        saveRoleMenu(sysRole.getId(), sysRoleVO.getMenuList());
+        return sysRole;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String updateRole(SysRoleVO sysRoleVO) {
+        log.info("淇濆瓨瑙掕壊淇℃伅锛岀敓鎴愬搴旂殑瑙掕壊id");
+        SysRole sysRole = new SysRole();
+        BeanUtils.copyProperties(sysRoleVO, sysRole);
+        this.updateById(sysRole);
+        //淇濆瓨瑙掕壊鏉冮檺淇℃伅
+        return saveRoleMenu(sysRole.getId(), sysRoleVO.getMenuList());
+    }
+
+    @Override
+    public List<SysRoleVO> queryRole(GeneralRequest request) {
+        MPJLambdaWrapper<SysRole> wrapper = new MPJLambdaWrapper<>();
+        wrapper.selectAll(SysRole.class)
+                .selectCollection(SysMenu.class, SysRoleVO::getMenuList)
+                .leftJoin(SysRoleMenu.class, SysRoleMenu::getRoleId, SysRole::getId)
+                .leftJoin(SysMenu.class, SysMenu::getId, SysRoleMenu::getMenuId)
+                .like(StringUtils.hasText(request.getKey()), SysRole::getName, request.getKey());
+        return baseMapper.selectJoinList(SysRoleVO.class, wrapper);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String deleteRole(List<Long> ids) {
+        log.info("鍒犻櫎瑙掕壊淇℃伅");
+        this.removeByIds(ids);
+
+        log.info("鍒犻櫎涓棿琛ㄤ俊鎭�");
+        sysUserRoleService.remove(new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getRoleId, ids));
+        sysRoleMenuService.remove(new LambdaQueryWrapper<SysRoleMenu>().in(SysRoleMenu::getRoleId, ids));
+
+        log.info("娓呯┖缂撳瓨涓殑鏉冮檺淇℃伅");
+        ids.stream().forEach(id -> sysUserService.clearUserAuthorityInfoByRoleId(id));
+        return "success";
+    }
+
+    /**
+     * 淇濆瓨瑙掕壊鏉冮檺淇℃伅
+     *
+     * @param roleId
+     * @param menuList
+     * @return
+     */
+    private String saveRoleMenu(Long roleId, List<SysMenu> menuList) {
+        log.info("閰嶇疆瑙掕壊鑿滃崟鍏崇郴");
+        if (CollectionUtils.isEmpty(menuList)) {
+            // 鍏堝垹闄ゅ師鏉ョ殑璁板綍锛屽啀淇濆瓨鏂扮殑
+            sysRoleMenuService.remove(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, roleId));
+            // 鍒犻櫎缂撳瓨
+            sysUserService.clearUserAuthorityInfoByRoleId(roleId);
+            return "success";
+        }
+        List<SysRoleMenu> roleMenuList = menuList.stream().map(menu -> {
+            SysRoleMenu roleMenu = new SysRoleMenu();
+            roleMenu.setRoleId(roleId);
+            roleMenu.setMenuId(menu.getId());
+            return roleMenu;
+        }).collect(Collectors.toList());
+        // 浣跨敤娴佸鐞嗚彍鍗曞垪琛紝鎻愬彇 children 鐨� id锛屽苟璁剧疆鍒� SysRoleMenu 涓�
+        List<SysRoleMenu> childrenList = menuList.stream()
+                .flatMap(menu -> menu.getChildren().stream()) // 鎵佸钩鍖栧鐞� children 鍒楄〃
+                .map(child -> {
+                    SysRoleMenu roleMenu = new SysRoleMenu();
+                    roleMenu.setRoleId(roleId);
+                    roleMenu.setMenuId(child.getId()); // 璁剧疆 child 鐨� id 鍒� menuId
+                    return roleMenu;
+                })
+                .collect(Collectors.toList());
+        log.info("娓呯┖瑙掕壊鏉冮檺琛ㄤ腑璇ヨ鑹蹭俊鎭�");
+        // 鍏堝垹闄ゅ師鏉ョ殑璁板綍锛屽啀淇濆瓨鏂扮殑
+        sysRoleMenuService.remove(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, roleId));
+        sysRoleMenuService.saveBatch(roleMenuList);
+        sysRoleMenuService.saveBatch(childrenList);
+        // 鍒犻櫎缂撳瓨
+        sysUserService.clearUserAuthorityInfoByRoleId(roleId);
+        return "success";
+    }
+}
diff --git a/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/controller/SysUserController.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/controller/SysUserController.java
new file mode 100644
index 0000000..e897e65
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/controller/SysUserController.java
@@ -0,0 +1,93 @@
+package com.mes.userinfo.controller;
+
+
+import com.mes.entity.request.GeneralRequest;
+import com.mes.userinfo.entity.SysUser;
+import com.mes.userinfo.entity.vo.SysUserVO;
+import com.mes.userinfo.service.SysUserService;
+import com.mes.utils.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 鐢ㄦ埛琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+@Api(description = "鐢ㄦ埛绠$悊")
+@RestController
+@RequestMapping("/sys/user")
+public class SysUserController {
+
+    @Autowired
+    private SysUserService sysUserService;
+
+    @ApiOperation("鐢ㄦ埛鐧诲綍")
+    @PostMapping("/login")
+    public Result<Map<String, String>> login(@RequestBody SysUser user) {
+        return Result.success(sysUserService.login(user));
+    }
+
+    @ApiOperation("閫�鍑虹櫥褰�")
+    @PostMapping("/logout")
+    @PreAuthorize("hasAuthority('xt:yh')")
+    public Result<String> logout() {
+        return Result.success(sysUserService.logout());
+    }
+
+    @ApiOperation("鏂板鐢ㄦ埛淇℃伅")
+    @PostMapping("/saveUser")
+//    @PreAuthorize("hasAuthority('sys:user:save')")
+    public Result<String> saveUser(@Validated @RequestBody SysUserVO sysUser) {
+        return Result.success(sysUserService.saveUser(sysUser));
+    }
+
+
+    @ApiOperation("鏇存柊鐢ㄦ埛淇℃伅")
+    @PostMapping("/updateUser")
+//    @PreAuthorize("hasAuthority('sys:user:update')")
+    public Result<List<SysUserVO>> updateUser(@Validated @RequestBody SysUserVO sysUser) {
+        sysUserService.updateUser(sysUser);
+        GeneralRequest request=new GeneralRequest();
+        //request.setKey("");
+        return Result.success(sysUserService.listByUserName(request));
+        //鏇存敼浜嗕慨鏀逛箣鍚庤繑鍥炴墍鏈夌敤鎴峰垪琛�
+    }
+
+    @ApiOperation("閲嶇疆瀵嗙爜")
+    @PostMapping("/resetPassword")
+//    @PreAuthorize("hasAuthority('sys:user:resetPassword')")
+    public Result resetPassword(String userId) {
+        return Result.success(sysUserService.resetPassword(Long.parseLong(userId)));
+    }
+
+
+    @ApiOperation("鑾峰彇鐢ㄦ埛鍒楄〃")
+    @PostMapping("/listByUserName")
+//    @PreAuthorize("hasAuthority('sys:user:list')")
+    public Result<List<SysUserVO>> listByUserName(@RequestBody GeneralRequest request) {
+        return Result.success(sysUserService.listByUserName(request));
+    }
+
+    @ApiOperation("鍒犻櫎鐢ㄦ埛淇℃伅")
+    @PostMapping("/deleteUser")
+//    @PreAuthorize("hasAuthority('sys:user:delete')")
+    public Result<String> deleteUser(@RequestBody List<Long> ids) {
+        return Result.success(sysUserService.deleteUser(ids));
+    }
+
+}
+
diff --git a/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/LoginUser.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/LoginUser.java
new file mode 100644
index 0000000..d60a05f
--- /dev/null
+++ b/JiuMuMesParent/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/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/SysUser.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/SysUser.java
new file mode 100644
index 0000000..ca1c861
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/SysUser.java
@@ -0,0 +1,67 @@
+package com.mes.userinfo.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+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/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/SysUserRole.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/SysUserRole.java
new file mode 100644
index 0000000..9aa76b4
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/SysUserRole.java
@@ -0,0 +1,38 @@
+package com.mes.userinfo.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@AllArgsConstructor
+public class SysUserRole implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 鐢ㄦ埛id
+     */
+    @TableId(type = IdType.NONE)
+    private Long userId;
+
+    /**
+     * 瑙掕壊id
+     */
+    private Long roleId;
+
+
+}
diff --git a/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/vo/SysUserVO.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/vo/SysUserVO.java
new file mode 100644
index 0000000..f43f8c7
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/vo/SysUserVO.java
@@ -0,0 +1,63 @@
+package com.mes.userinfo.entity.vo;
+
+import com.mes.role.entity.SysRole;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * <p>
+ * 鐢ㄦ埛琛�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+@Api(description = "鐢ㄦ埛淇℃伅")
+@Data
+public class SysUserVO implements Serializable {
+
+    @ApiModelProperty(hidden = true)
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 涓婚敭
+     */
+    @ApiModelProperty(value = "涓婚敭", position = 2)
+    private Long id;
+
+    /**
+     * 鐢ㄦ埛鍚�
+     */
+    @ApiModelProperty(value = "鐢ㄦ埛鍚�", position = 3)
+    private String userName;
+
+    /**
+     * 鏄电О
+     */
+    @ApiModelProperty(value = "鏄电О", position = 4)
+    private String nickName;
+
+    /**
+     * 瀵嗙爜
+     */
+    @ApiModelProperty(value = "瀵嗙爜", position = 5)
+    private String password;
+
+    /**
+     * 澶村儚
+     */
+    @ApiModelProperty(value = "澶村儚", position = 6)
+    private String avatar;
+
+    /**
+     * 鐢ㄦ埛鐨勮鑹蹭俊鎭�
+     */
+    @ApiModelProperty(value = "鐢ㄦ埛鐨勮鑹蹭俊鎭�", position = 7)
+    private List<SysRole> roleList;
+
+
+}
diff --git a/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserMapper.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserMapper.java
new file mode 100644
index 0000000..b9c491c
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserMapper.java
@@ -0,0 +1,18 @@
+package com.mes.userinfo.mapper;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.mes.userinfo.entity.SysUser;
+
+/**
+ * <p>
+ * 鐢ㄦ埛琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+@DS("hangzhoumes")
+public interface SysUserMapper extends MPJBaseMapper<SysUser> {
+
+}
diff --git a/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserRoleMapper.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserRoleMapper.java
new file mode 100644
index 0000000..697ca74
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserRoleMapper.java
@@ -0,0 +1,17 @@
+package com.mes.userinfo.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.mes.userinfo.entity.SysUserRole;
+
+/**
+ * <p>
+ * Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+
+public interface SysUserRoleMapper extends MPJBaseMapper<SysUserRole> {
+
+}
diff --git a/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/xml/SysUserMapper.xml b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/xml/SysUserMapper.xml
new file mode 100644
index 0000000..300e913
--- /dev/null
+++ b/JiuMuMesParent/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/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/xml/SysUserRoleMapper.xml b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/xml/SysUserRoleMapper.xml
new file mode 100644
index 0000000..0fd2be9
--- /dev/null
+++ b/JiuMuMesParent/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/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserRoleService.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserRoleService.java
new file mode 100644
index 0000000..9351f47
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserRoleService.java
@@ -0,0 +1,17 @@
+package com.mes.userinfo.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.mes.userinfo.entity.SysUserRole;
+
+/**
+ * <p>
+ * 鏈嶅姟绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+public interface SysUserRoleService extends MPJBaseService<SysUserRole> {
+
+
+}
diff --git a/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserService.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserService.java
new file mode 100644
index 0000000..467a88a
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserService.java
@@ -0,0 +1,110 @@
+package com.mes.userinfo.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mes.entity.request.GeneralRequest;
+import com.mes.userinfo.entity.SysUser;
+import com.mes.userinfo.entity.vo.SysUserVO;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 鐢ㄦ埛琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+public interface SysUserService extends IService<SysUser> {
+
+    /**
+     * 鐢ㄦ埛鐧诲綍
+     *
+     * @param user
+     * @return
+     */
+    Map<String, String> login(SysUser user);
+
+    /**
+     * 閫�鍑虹櫥褰�
+     *
+     * @return
+     */
+    String logout();
+
+    /**
+     * 鏂板鐢ㄦ埛淇℃伅
+     *
+     * @param user
+     * @return
+     */
+    String saveUser(SysUserVO user);
+
+    /**
+     * 鏇存柊鐢ㄦ埛淇℃伅
+     *
+     * @param sysUser
+     * @return
+     */
+    SysUserVO updateUser(SysUserVO sysUser);
+
+    /**
+     * 閲嶇疆瀵嗙爜
+     *
+     * @param userId
+     * @return
+     */
+    String resetPassword(Long userId);
+
+    /**
+     * 鎸夊悕绉拌幏鍙栫敤鎴蜂俊鎭�
+     *
+     * @param userName
+     * @return
+     */
+    SysUser queryByUserName(String userName);
+
+    /**
+     * 鎸夊叧閿瓧鑾峰彇鐢ㄦ埛淇℃伅鍒楄〃
+     *
+     * @param request
+     * @return
+     */
+    List<SysUserVO> listByUserName(GeneralRequest request);
+
+    /**
+     * 鍒犻櫎鐢ㄦ埛淇℃伅
+     *
+     * @param ids
+     * @return
+     */
+    String deleteUser(List<Long> ids);
+
+    /**
+     * 鑾峰彇鐢ㄦ埛瑙掕壊鏉冮檺淇℃伅
+     *
+     * @param userId
+     * @return
+     */
+    List<String> getUserAuthorityInfo(Long userId);
+
+    /**
+     * 娓呯┖鐢ㄦ埛鏉冮檺淇℃伅閫氳繃鐢ㄦ埛淇℃伅
+     */
+    void clearUserAuthorityInfo(String userName);
+
+    /**
+     * 娓呯┖鐢ㄦ埛鏉冮檺淇℃伅閫氳繃瑙掕壊id
+     *
+     * @param roleId
+     */
+    void clearUserAuthorityInfoByRoleId(Long roleId);
+
+    /**
+     * 娓呯┖鐢ㄦ埛鏉冮檺淇℃伅閫氳繃鑿滃崟id
+     *
+     * @param menuId
+     */
+    void clearUserAuthorityInfoByMenuId(Long menuId);
+}
diff --git a/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserRoleServiceImpl.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserRoleServiceImpl.java
new file mode 100644
index 0000000..baa93c2
--- /dev/null
+++ b/JiuMuMesParent/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/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java
new file mode 100644
index 0000000..1e4a478
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java
@@ -0,0 +1,271 @@
+package com.mes.userinfo.service.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.mes.common.config.Const;
+import com.mes.common.utils.JwtUtil;
+import com.mes.common.utils.RedisUtil;
+import com.mes.common.utils.UserInfoUtils;
+import com.mes.entity.request.GeneralRequest;
+import com.mes.menu.mapper.SysMenuMapper;
+import com.mes.role.entity.SysRole;
+import com.mes.role.entity.SysRoleMenu;
+import com.mes.role.service.SysRoleService;
+import com.mes.userinfo.entity.LoginUser;
+import com.mes.userinfo.entity.SysUser;
+import com.mes.userinfo.entity.SysUserRole;
+import com.mes.userinfo.entity.vo.SysUserVO;
+import com.mes.userinfo.mapper.SysUserMapper;
+import com.mes.userinfo.mapper.SysUserRoleMapper;
+import com.mes.userinfo.service.SysUserRoleService;
+import com.mes.userinfo.service.SysUserService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.security.core.userdetails.UserDetailsService;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 鐢ㄦ埛琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-11
+ */
+@Service
+@Slf4j
+public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService, UserDetailsService {
+
+    @Autowired
+    private AuthenticationManager authenticationManager;
+
+    @Autowired
+    private RedisUtil redisUtil;
+
+    @Resource
+    private SysMenuMapper sysMenuMapper;
+
+    @Resource
+    private SysUserRoleService sysUserRoleService;
+
+    @Resource
+    private SysRoleService sysRoleService;
+
+    @Resource
+    BCryptPasswordEncoder passwordEncoder;
+    @Autowired
+    private SysUserRoleMapper sysUserRoleMapper;
+
+    @Override
+    public Map<String, String> 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.generateToken(userId);
+
+        //鏌ヨ鏉冮檺淇℃伅
+//        List<String> perms = sysMenuMapper.selectPermsByUserId(userId);
+        //authenticate瀛樺叆redis
+        redisUtil.setCacheObject("login:" + userId, loginUser);
+        //鎶妕oken鍝嶅簲缁欏墠绔�
+        HashMap<String, String> map = new HashMap<>();
+        map.put("token", jwt);
+        return map;
+    }
+
+    @Override
+    public String logout() {
+        log.info("鐢ㄦ埛閫�鍑�");
+        SysUser user = UserInfoUtils.get();
+        redisUtil.deleteObject("login:" + user.getId());
+        return "娉ㄩ攢鎴愬姛";
+    }
+
+    @Transactional
+    @Override
+    public String saveUser(SysUserVO user) {
+        log.info("淇濆瓨鐢ㄦ埛淇℃伅");
+        // 榛樿瀵嗙爜
+        String password = passwordEncoder.encode(Const.DEFULT_PASSWORD);
+        user.setPassword(password);
+        SysUser sysUser = new SysUser();
+        BeanUtils.copyProperties(user, sysUser);
+        this.save(sysUser);
+        saveUserRole(user.getRoleList(), sysUser.getId());
+        return "success";
+    }
+
+    @Transactional
+    @Override
+    public SysUserVO updateUser(SysUserVO user) {
+        log.info("鏇存柊鐢ㄦ埛淇℃伅");
+        SysUser sysUser = new SysUser();
+        BeanUtils.copyProperties(user, sysUser);
+        this.updateById(sysUser);
+        log.info("鍒犻櫎鐢ㄦ埛瑙掕壊淇℃伅");
+        List<Long> roleIds = user.getRoleList().stream().map(SysRole::getId).collect(Collectors.toList());
+//        sysUserRoleService.remove(new LambdaQueryWrapper<SysUserRole>()
+//                .eq(SysUserRole::getUserId, sysUser.getId()).in(CollectionUtil.isNotEmpty(roleIds), SysUserRole::getRoleId, roleIds));
+        SysUserRole sysUserRole = new SysUserRole(sysUser.getId(),roleIds.get(0));
+        sysUserRoleMapper.updateById(sysUserRole);
+//        log.info("淇濆瓨鐢ㄦ埛瑙掕壊淇℃伅");
+//        saveUserRole(user.getRoleList(), sysUser.getId());
+        return user;
+    }
+
+    @Override
+    public String resetPassword(Long userId) {
+        log.info("閲嶇疆瀵嗙爜涓簕}", Const.DEFULT_PASSWORD);
+        SysUser sysUser = new SysUser();
+        sysUser.setId(userId);
+        String password = passwordEncoder.encode(Const.DEFULT_PASSWORD);
+        sysUser.setPassword(password);
+        this.updateById(sysUser);
+        return "success";
+    }
+
+    @Override
+    public SysUser queryByUserName(String userName) {
+        return baseMapper.selectOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUserName, userName));
+    }
+
+    @Override
+    public List<SysUserVO> listByUserName(GeneralRequest request) {
+        MPJLambdaWrapper<SysUser> wrapper = new MPJLambdaWrapper<>();
+        wrapper.selectAll(SysUser.class)
+                .selectCollection(SysRole.class, SysUserVO::getRoleList)
+                .leftJoin(SysUserRole.class, SysUserRole::getUserId, SysUser::getId)
+                .leftJoin(SysRole.class, SysRole::getId, SysUserRole::getRoleId)
+                .like(StringUtils.hasText(request.getKey()), SysUser::getUserName, request.getKey());
+        return baseMapper.selectJoinList(SysUserVO.class, wrapper);
+    }
+
+    @Transactional
+    @Override
+    public String deleteUser(List<Long> ids) {
+        this.removeByIds(ids);
+        sysUserRoleService.remove(new QueryWrapper<SysUserRole>().in("user_id", ids));
+        return "success";
+
+    }
+
+    @Override
+    public List<String> getUserAuthorityInfo(Long userId) {
+        SysUser sysUser = baseMapper.selectById(userId);
+
+        //  ROLE_admin,ROLE_normal,sys:user:list,....
+        String authority = "";
+        if (redisUtil.hasKey("GrantedAuthority:" + sysUser.getUserName())) {
+            authority = redisUtil.getCacheObject("GrantedAuthority:" + sysUser.getUserName());
+
+        } else {
+            // 鑾峰彇瑙掕壊缂栫爜
+            List<SysRole> roles = sysRoleService.list(new QueryWrapper<SysRole>()
+                    .inSql("id", "select role_id from sys_user_role where user_id = " + userId));
+
+            if (roles.size() > 0) {
+                String roleCodes = roles.stream().map(r -> "ROLE_" + r.getRoleKey()).collect(Collectors.joining(","));
+                authority = roleCodes.concat(",");
+            }
+
+            // 鑾峰彇鑿滃崟鎿嶄綔缂栫爜
+            List<String> perms = sysMenuMapper.selectPermsByUserId(userId);
+            if (perms.size() > 0) {
+                String menuPerms = String.join(",", perms);
+                authority = authority.concat(menuPerms);
+            }
+
+            redisUtil.setCacheObject("GrantedAuthority:" + sysUser.getUserName(), authority, 60 * 60, TimeUnit.SECONDS);
+        }
+        return Arrays.stream(authority.split(",")).collect(Collectors.toList());
+    }
+
+    @Override
+    public void clearUserAuthorityInfo(String userName) {
+        redisUtil.deleteObject("GrantedAuthority:" + userName);
+    }
+
+    @Override
+    public void clearUserAuthorityInfoByRoleId(Long roleId) {
+        List<SysUser> sysUsers = this.list(new QueryWrapper<SysUser>()
+                .inSql("id", "select user_id from sys_user_role where role_id = " + roleId));
+
+        sysUsers.forEach(u -> {
+            this.clearUserAuthorityInfo(u.getUserName());
+        });
+
+    }
+
+    @Override
+    public void clearUserAuthorityInfoByMenuId(Long menuId) {
+        MPJLambdaWrapper<SysUserRole> wrapper = new MPJLambdaWrapper<SysUserRole>().selectAll(SysUser.class).distinct()
+                .leftJoin(SysUser.class, SysUser::getId, SysUserRole::getUserId)
+                .leftJoin(SysRoleMenu.class, SysRoleMenu::getRoleId, SysUserRole::getRoleId)
+                .eq(SysRoleMenu::getMenuId, menuId);
+        List<SysUser> sysUsers = sysUserRoleService.selectJoinList(SysUser.class, wrapper);
+        sysUsers.forEach(u -> {
+            this.clearUserAuthorityInfo(u.getUserName());
+        });
+    }
+
+    /**
+     * 瀹炵幇UserDetailsService鎺ュ彛锛屼粠鏁版嵁搴撳唴鑾峰彇鐢ㄦ埛鍙婃潈闄愪俊鎭�
+     *
+     * @param username
+     * @return
+     * @throws UsernameNotFoundException
+     */
+    @Override
+    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
+        LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<>();
+        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);
+    }
+
+
+    private void saveUserRole(List<SysRole> roles, Long userId) {
+        log.info("淇濆瓨鐢ㄦ埛瑙掕壊淇℃伅");
+        List<SysUserRole> userRoles = new ArrayList<>();
+        if (CollectionUtils.isEmpty(roles)) {
+            log.info("淇濆瓨鐢ㄦ埛瑙掕壊淇℃伅涓虹┖锛岀粰榛樿鏅�氱敤鎴疯鑹�");
+            userRoles.add(new SysUserRole(userId, Const.DEFULT_ROLE));
+        } else {
+            log.info("淇濆瓨鐢ㄦ埛瑙掕壊淇℃伅");
+            userRoles = roles.stream().map(e -> new SysUserRole(userId, e.getId())).collect(Collectors.toList());
+        }
+        sysUserRoleService.saveBatch(userRoles);
+    }
+
+}
diff --git a/JiuMuMesParent/common/springsecurity/src/main/resources/application-dev.yml b/JiuMuMesParent/common/springsecurity/src/main/resources/application-dev.yml
new file mode 100644
index 0000000..a0983dc
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/resources/application-dev.yml
@@ -0,0 +1,15 @@
+spring:
+  datasource:
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    url: jdbc:mysql://10.153.19.150:3306/jiumumes?serverTimezone=GMT%2b8&characterEncoding=utf-8&useSSL=false
+    username: root
+    password: beibo.123/
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 10.153.19.29:8848
+  redis:
+    database: 0
+    host: 10.153.19.150
+    port: 6379
+    password: 123456
\ No newline at end of file
diff --git a/JiuMuMesParent/common/springsecurity/src/main/resources/application-loc.yml b/JiuMuMesParent/common/springsecurity/src/main/resources/application-loc.yml
new file mode 100644
index 0000000..c11587a
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/resources/application-loc.yml
@@ -0,0 +1,15 @@
+spring:
+  datasource:
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    url: jdbc:mysql://192.168.56.10:3306/jiumumes?serverTimezone=GMT%2b8&characterEncoding=utf-8&useSSL=false
+    username: root
+    password: root
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 127.0.0.1:8848
+  redis:
+    database: 0
+    host: 127.0.0.1
+    port: 6379
+    password: 123456
\ No newline at end of file
diff --git a/JiuMuMesParent/common/springsecurity/src/main/resources/application-prod.yml b/JiuMuMesParent/common/springsecurity/src/main/resources/application-prod.yml
new file mode 100644
index 0000000..a0983dc
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/src/main/resources/application-prod.yml
@@ -0,0 +1,15 @@
+spring:
+  datasource:
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    url: jdbc:mysql://10.153.19.150:3306/jiumumes?serverTimezone=GMT%2b8&characterEncoding=utf-8&useSSL=false
+    username: root
+    password: beibo.123/
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 10.153.19.29:8848
+  redis:
+    database: 0
+    host: 10.153.19.150
+    port: 6379
+    password: 123456
\ No newline at end of file
diff --git a/JiuMuMesParent/common/springsecurity/src/main/resources/mapper/SysMenuMapper.xml b/JiuMuMesParent/common/springsecurity/src/main/resources/mapper/SysMenuMapper.xml
new file mode 100644
index 0000000..38607e4
--- /dev/null
+++ b/JiuMuMesParent/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/JiuMuMesParent/common/springsecurity/target/classes/application-dev.yml b/JiuMuMesParent/common/springsecurity/target/classes/application-dev.yml
new file mode 100644
index 0000000..ae94110
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/target/classes/application-dev.yml
@@ -0,0 +1,15 @@
+spring:
+  datasource:
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    url: jdbc:mysql://10.153.19.150:3306/jiumumes?serverTimezone=GMT%2b8&characterEncoding=utf-8&useSSL=false
+    username: root
+    password: beibo.123/
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 10.153.19.150:8848
+  redis:
+    database: 0
+    host: 10.153.19.150
+    port: 6379
+    password: 123456
\ No newline at end of file
diff --git a/JiuMuMesParent/common/springsecurity/target/classes/application-loc.yml b/JiuMuMesParent/common/springsecurity/target/classes/application-loc.yml
new file mode 100644
index 0000000..c11587a
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/target/classes/application-loc.yml
@@ -0,0 +1,15 @@
+spring:
+  datasource:
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    url: jdbc:mysql://192.168.56.10:3306/jiumumes?serverTimezone=GMT%2b8&characterEncoding=utf-8&useSSL=false
+    username: root
+    password: root
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 127.0.0.1:8848
+  redis:
+    database: 0
+    host: 127.0.0.1
+    port: 6379
+    password: 123456
\ No newline at end of file
diff --git a/JiuMuMesParent/common/springsecurity/target/classes/application-prod.yml b/JiuMuMesParent/common/springsecurity/target/classes/application-prod.yml
new file mode 100644
index 0000000..ae94110
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/target/classes/application-prod.yml
@@ -0,0 +1,15 @@
+spring:
+  datasource:
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    url: jdbc:mysql://10.153.19.150:3306/jiumumes?serverTimezone=GMT%2b8&characterEncoding=utf-8&useSSL=false
+    username: root
+    password: beibo.123/
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 10.153.19.150:8848
+  redis:
+    database: 0
+    host: 10.153.19.150
+    port: 6379
+    password: 123456
\ No newline at end of file
diff --git a/JiuMuMesParent/common/springsecurity/target/classes/mapper/SysMenuMapper.xml b/JiuMuMesParent/common/springsecurity/target/classes/mapper/SysMenuMapper.xml
new file mode 100644
index 0000000..38607e4
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/target/classes/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/JiuMuMesParent/common/springsecurity/target/maven-archiver/pom.properties b/JiuMuMesParent/common/springsecurity/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..16c313c
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/target/maven-archiver/pom.properties
@@ -0,0 +1,3 @@
+version=1.0-SNAPSHOT
+groupId=com.mes
+artifactId=springsecurity
diff --git a/JiuMuMesParent/common/springsecurity/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/JiuMuMesParent/common/springsecurity/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..b41e2db
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,39 @@
+com\mes\role\service\impl\SysRoleMenuServiceImpl.class
+com\mes\userinfo\entity\LoginUser.class
+com\mes\common\utils\FastJsonRedisSerializer.class
+com\mes\common\utils\RedisUtil.class
+com\mes\menu\service\impl\SysMenuServiceImpl.class
+com\mes\role\service\SysRoleMenuService.class
+com\mes\common\handler\LoginSuccessHandler.class
+com\mes\menu\mapper\SysMenuMapper.class
+com\mes\role\mapper\SysRoleMenuMapper.class
+com\mes\userinfo\entity\SysUserRole.class
+com\mes\common\handler\JwtAuthenticationEntryPoint.class
+com\mes\role\mapper\SysRoleMapper.class
+com\mes\common\config\TokenWebSecurityConfig.class
+com\mes\menu\controller\SysMenuController.class
+com\mes\role\entity\SysRole.class
+com\mes\role\controller\SysRoleController.class
+com\mes\common\config\RedisConfig.class
+com\mes\menu\service\SysMenuService.class
+com\mes\role\service\SysRoleService.class
+com\mes\common\utils\JwtUtil.class
+com\mes\common\utils\WebUtils.class
+com\mes\role\entity\vo\SysRoleVO.class
+com\mes\common\utils\UserInfoUtils.class
+com\mes\common\handler\JwtLogoutSuccessHandler.class
+com\mes\userinfo\service\impl\SysUserRoleServiceImpl.class
+com\mes\userinfo\entity\SysUser.class
+com\mes\userinfo\entity\vo\SysUserVO.class
+com\mes\userinfo\service\SysUserRoleService.class
+com\mes\userinfo\mapper\SysUserRoleMapper.class
+com\mes\menu\entity\SysMenu.class
+com\mes\userinfo\controller\SysUserController.class
+com\mes\userinfo\service\impl\SysUserServiceImpl.class
+com\mes\role\entity\SysRoleMenu.class
+com\mes\userinfo\service\SysUserService.class
+com\mes\common\handler\JwtAccessDeniedHandler.class
+com\mes\userinfo\mapper\SysUserMapper.class
+com\mes\common\handler\LoginFailureHandler.class
+com\mes\role\service\impl\SysRoleServiceImpl.class
+com\mes\common\filter\JwtAuthenticationTokenFilter.class
diff --git a/JiuMuMesParent/common/springsecurity/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/JiuMuMesParent/common/springsecurity/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..51a6dc6
--- /dev/null
+++ b/JiuMuMesParent/common/springsecurity/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,39 @@
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\common\utils\FastJsonRedisSerializer.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\userinfo\entity\SysUser.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\userinfo\mapper\SysUserRoleMapper.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\common\filter\JwtAuthenticationTokenFilter.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\common\utils\RedisUtil.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\common\config\TokenWebSecurityConfig.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\role\service\impl\SysRoleServiceImpl.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\common\handler\JwtAuthenticationEntryPoint.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\menu\mapper\SysMenuMapper.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\userinfo\service\impl\SysUserRoleServiceImpl.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\role\mapper\SysRoleMapper.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\userinfo\service\SysUserService.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\userinfo\mapper\SysUserMapper.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\role\service\impl\SysRoleMenuServiceImpl.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\userinfo\controller\SysUserController.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\menu\controller\SysMenuController.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\menu\service\SysMenuService.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\common\handler\JwtAccessDeniedHandler.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\common\handler\LoginFailureHandler.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\userinfo\service\impl\SysUserServiceImpl.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\role\service\SysRoleMenuService.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\common\utils\JwtUtil.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\role\entity\SysRole.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\common\handler\LoginSuccessHandler.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\common\utils\UserInfoUtils.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\role\entity\vo\SysRoleVO.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\common\utils\WebUtils.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\userinfo\entity\LoginUser.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\role\entity\SysRoleMenu.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\common\handler\JwtLogoutSuccessHandler.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\menu\entity\SysMenu.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\role\controller\SysRoleController.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\userinfo\service\SysUserRoleService.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\common\config\RedisConfig.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\role\mapper\SysRoleMenuMapper.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\userinfo\entity\SysUserRole.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\menu\service\impl\SysMenuServiceImpl.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\role\service\SysRoleService.java
+D:\workfile\JiuMuMES\JiuMuMesParent\common\springsecurity\src\main\java\com\mes\userinfo\entity\vo\SysUserVO.java
diff --git a/JiuMuMesParent/gateway/gateway1.iml b/JiuMuMesParent/gateway/gateway1.iml
new file mode 100644
index 0000000..f76df2b
--- /dev/null
+++ b/JiuMuMesParent/gateway/gateway1.iml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/JiuMuMesParent/gateway/pom.xml b/JiuMuMesParent/gateway/pom.xml
new file mode 100644
index 0000000..c218b93
--- /dev/null
+++ b/JiuMuMesParent/gateway/pom.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>JiuMuMesParent</artifactId>
+        <groupId>com.mes</groupId>
+        <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>gateway</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+    </properties>
+    <dependencies>
+        <!--        鏈嶅姟娉ㄥ唽/鍙戠幇-->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-gateway</artifactId>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
\ No newline at end of file
diff --git a/JiuMuMesParent/gateway/src/main/java/com/mes/GateWayApplication.java b/JiuMuMesParent/gateway/src/main/java/com/mes/GateWayApplication.java
new file mode 100644
index 0000000..d203316
--- /dev/null
+++ b/JiuMuMesParent/gateway/src/main/java/com/mes/GateWayApplication.java
@@ -0,0 +1,20 @@
+package com.mes;
+
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+
+/**
+ * @Author : yanzhixin
+ * @Date: 2024/3/28 11:21
+ * @Description:
+ */
+@SpringBootApplication
+@EnableDiscoveryClient
+public class GateWayApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(GateWayApplication.class, args);
+    }
+}
diff --git a/JiuMuMesParent/gateway/src/main/java/com/mes/config/MyCorsConfig.java b/JiuMuMesParent/gateway/src/main/java/com/mes/config/MyCorsConfig.java
new file mode 100644
index 0000000..4ed51ec
--- /dev/null
+++ b/JiuMuMesParent/gateway/src/main/java/com/mes/config/MyCorsConfig.java
@@ -0,0 +1,34 @@
+package com.mes.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;
+
+/**
+ * @Author : yanzhixin
+ * @Date: 2024/3/25 14:13
+ * @Description:
+ */
+@Configuration
+public class MyCorsConfig {
+    @Bean
+    public CorsWebFilter corsFilter() {
+
+        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+        CorsConfiguration corsConfiguration = new CorsConfiguration();
+        //鍏佽鍝簺澶磋法鍩�
+        corsConfiguration.addAllowedHeader("*");
+        // 鍏佽鍝簺鏂瑰紡璺ㄥ煙   get  post  delete 绛夋柟寮�
+        corsConfiguration.addAllowedMethod("*");
+        //鍏佽鍝簺璇锋眰鏉ユ簮璺ㄥ煙    *  浠绘剰鏉ユ簮
+        corsConfiguration.addAllowedOrigin("*");
+        // 鏄惁鍏佽鎼哄甫cooker璺ㄥ煙
+        corsConfiguration.setAllowCredentials(true);
+        //娉ㄥ唽璺ㄨ秺閰嶇疆       /**閰嶇疆璇锋眰璺緞
+        source.registerCorsConfiguration("/**", corsConfiguration);
+        return new CorsWebFilter(source);
+    }
+
+}
diff --git a/JiuMuMesParent/gateway/src/main/resources/application.yml b/JiuMuMesParent/gateway/src/main/resources/application.yml
new file mode 100644
index 0000000..0390ccb
--- /dev/null
+++ b/JiuMuMesParent/gateway/src/main/resources/application.yml
@@ -0,0 +1,20 @@
+server:
+  port: 88
+spring:
+  application:
+    name: gateway
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 10.153.19.29:8848
+    gateway:
+      discovery:
+        locator:
+          enabled: true
+      routes:
+        - id: deviceInteraction
+          uri: lb://deviceInteraction
+          predicates:
+            - Path=/api/deviceInteraction/**
+          filters:
+            - StripPrefix=2
diff --git a/JiuMuMesParent/gateway/target/classes/application.yml b/JiuMuMesParent/gateway/target/classes/application.yml
new file mode 100644
index 0000000..0390ccb
--- /dev/null
+++ b/JiuMuMesParent/gateway/target/classes/application.yml
@@ -0,0 +1,20 @@
+server:
+  port: 88
+spring:
+  application:
+    name: gateway
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 10.153.19.29:8848
+    gateway:
+      discovery:
+        locator:
+          enabled: true
+      routes:
+        - id: deviceInteraction
+          uri: lb://deviceInteraction
+          predicates:
+            - Path=/api/deviceInteraction/**
+          filters:
+            - StripPrefix=2
diff --git a/JiuMuMesParent/gateway/target/gateway-1.0-SNAPSHOT.jar.original b/JiuMuMesParent/gateway/target/gateway-1.0-SNAPSHOT.jar.original
new file mode 100644
index 0000000..966c99f
--- /dev/null
+++ b/JiuMuMesParent/gateway/target/gateway-1.0-SNAPSHOT.jar.original
Binary files differ
diff --git a/JiuMuMesParent/gateway/target/maven-archiver/pom.properties b/JiuMuMesParent/gateway/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..8a35d8f
--- /dev/null
+++ b/JiuMuMesParent/gateway/target/maven-archiver/pom.properties
@@ -0,0 +1,3 @@
+version=1.0-SNAPSHOT
+groupId=com.mes
+artifactId=gateway
diff --git a/JiuMuMesParent/gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/JiuMuMesParent/gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..413e9c5
--- /dev/null
+++ b/JiuMuMesParent/gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,2 @@
+com\mes\GateWayApplication.class
+com\mes\config\MyCorsConfig.class
diff --git a/JiuMuMesParent/gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/JiuMuMesParent/gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..61b849e
--- /dev/null
+++ b/JiuMuMesParent/gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,2 @@
+D:\workfile\JiuMuMES\JiuMuMesParent\gateway\src\main\java\com\mes\GateWayApplication.java
+D:\workfile\JiuMuMES\JiuMuMesParent\gateway\src\main\java\com\mes\config\MyCorsConfig.java
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/cacheGlass/web_debug.log b/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/cacheGlass/web_debug.log
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/cacheGlass/web_debug.log
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/cacheGlass/web_error.log b/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/cacheGlass/web_error.log
new file mode 100644
index 0000000..b9f6c2c
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/cacheGlass/web_error.log
@@ -0,0 +1,695 @@
+2024-09-03 08:59:03.624 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 08:59:04.978 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 08:59:05.436 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 09:02:59.285 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 09:03:00.137 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 09:03:00.247 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 09:08:31.775 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 09:08:32.682 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 09:08:32.785 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 10:02:41.090 [main] ERROR org.springframework.boot.SpringApplication - Application run failed
+org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.mes.DeviceInteractionModuleApplication]; nested exception is org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'primitiveTaskServiceImpl' for bean class [com.mes.primitivetask.service.impl.PrimitiveTaskServiceImpl] conflicts with existing, non-compatible bean definition of same name and class [com.mes.service.impl.PrimitiveTaskServiceImpl]
+	at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:181)
+	at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:315)
+	at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:232)
+	at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:275)
+	at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:95)
+	at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:705)
+	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:531)
+	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
+	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:744)
+	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:391)
+	at org.springframework.boot.SpringApplication.run(SpringApplication.java:312)
+	at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:120)
+	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)
+	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)
+	at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)
+	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:118)
+	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83)
+	at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.java:43)
+	at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)
+	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
+	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
+	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
+	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
+	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
+	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
+	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
+	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
+	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
+	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
+	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
+	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
+	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
+	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
+	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232)
+	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)
+Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'primitiveTaskServiceImpl' for bean class [com.mes.primitivetask.service.impl.PrimitiveTaskServiceImpl] conflicts with existing, non-compatible bean definition of same name and class [com.mes.service.impl.PrimitiveTaskServiceImpl]
+	at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.checkCandidate(ClassPathBeanDefinitionScanner.java:348)
+	at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:286)
+	at org.springframework.context.annotation.ComponentScanAnnotationParser.parse(ComponentScanAnnotationParser.java:132)
+	at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:287)
+	at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:242)
+	at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:199)
+	at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:167)
+	... 40 common frames omitted
+2024-09-03 10:02:45.346 [main] ERROR org.springframework.boot.SpringApplication - Application run failed
+org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.mes.DeviceInteractionModuleApplication]; nested exception is org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'primitiveTaskServiceImpl' for bean class [com.mes.primitivetask.service.impl.PrimitiveTaskServiceImpl] conflicts with existing, non-compatible bean definition of same name and class [com.mes.service.impl.PrimitiveTaskServiceImpl]
+	at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:181)
+	at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:315)
+	at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:232)
+	at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:275)
+	at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:95)
+	at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:705)
+	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:531)
+	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
+	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:744)
+	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:391)
+	at org.springframework.boot.SpringApplication.run(SpringApplication.java:312)
+	at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:120)
+	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)
+	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)
+	at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)
+	at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.outputConditionEvaluationReport(SpringBootDependencyInjectionTestExecutionListener.java:53)
+	at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.java:46)
+	at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)
+	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
+	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
+	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
+	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
+	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
+	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
+	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
+	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
+	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
+	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
+	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
+	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
+	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
+	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
+	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232)
+	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)
+Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'primitiveTaskServiceImpl' for bean class [com.mes.primitivetask.service.impl.PrimitiveTaskServiceImpl] conflicts with existing, non-compatible bean definition of same name and class [com.mes.service.impl.PrimitiveTaskServiceImpl]
+	at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.checkCandidate(ClassPathBeanDefinitionScanner.java:348)
+	at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:286)
+	at org.springframework.context.annotation.ComponentScanAnnotationParser.parse(ComponentScanAnnotationParser.java:132)
+	at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:287)
+	at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:242)
+	at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:199)
+	at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:167)
+	... 39 common frames omitted
+2024-09-03 10:02:45.348 [main] ERROR o.springframework.test.context.TestContextManager - Caught exception while allowing TestExecutionListener [org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener@6069db50] to prepare test instance [com.mes.DeviceInteractionModuleApplicationTest@2b71e916]
+java.lang.IllegalStateException: Failed to load ApplicationContext
+	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:125)
+	at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)
+	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:118)
+	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83)
+	at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.java:43)
+	at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)
+	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
+	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
+	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
+	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
+	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
+	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
+	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
+	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
+	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
+	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
+	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
+	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
+	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
+	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
+	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232)
+	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)
+Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.mes.DeviceInteractionModuleApplication]; nested exception is org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'primitiveTaskServiceImpl' for bean class [com.mes.primitivetask.service.impl.PrimitiveTaskServiceImpl] conflicts with existing, non-compatible bean definition of same name and class [com.mes.service.impl.PrimitiveTaskServiceImpl]
+	at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:181)
+	at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:315)
+	at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:232)
+	at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:275)
+	at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:95)
+	at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:705)
+	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:531)
+	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
+	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:744)
+	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:391)
+	at org.springframework.boot.SpringApplication.run(SpringApplication.java:312)
+	at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:120)
+	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)
+	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)
+	... 27 common frames omitted
+Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'primitiveTaskServiceImpl' for bean class [com.mes.primitivetask.service.impl.PrimitiveTaskServiceImpl] conflicts with existing, non-compatible bean definition of same name and class [com.mes.service.impl.PrimitiveTaskServiceImpl]
+	at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.checkCandidate(ClassPathBeanDefinitionScanner.java:348)
+	at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:286)
+	at org.springframework.context.annotation.ComponentScanAnnotationParser.parse(ComponentScanAnnotationParser.java:132)
+	at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:287)
+	at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:242)
+	at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:199)
+	at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:167)
+	... 40 common frames omitted
+2024-09-03 10:17:05.006 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 10:17:05.875 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 10:17:05.995 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 10:17:09.314 [main] ERROR org.springframework.boot.SpringApplication - Application run failed
+org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'accountServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mes.mapper.AccountMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:596)
+	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:374)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1411)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:592)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
+	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:845)
+	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:877)
+	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549)
+	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
+	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:744)
+	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:391)
+	at org.springframework.boot.SpringApplication.run(SpringApplication.java:312)
+	at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:120)
+	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)
+	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)
+	at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)
+	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:118)
+	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83)
+	at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.java:43)
+	at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)
+	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
+	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
+	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
+	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
+	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
+	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
+	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
+	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
+	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
+	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
+	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
+	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
+	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
+	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
+	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232)
+	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)
+Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mes.mapper.AccountMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1658)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1217)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1171)
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:593)
+	... 46 common frames omitted
+2024-09-03 10:17:14.185 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 10:17:14.352 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 10:17:14.360 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 10:17:16.085 [main] ERROR org.springframework.boot.SpringApplication - Application run failed
+org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'accountServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mes.mapper.AccountMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:596)
+	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:374)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1411)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:592)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
+	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:845)
+	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:877)
+	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549)
+	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
+	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:744)
+	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:391)
+	at org.springframework.boot.SpringApplication.run(SpringApplication.java:312)
+	at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:120)
+	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)
+	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)
+	at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)
+	at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.outputConditionEvaluationReport(SpringBootDependencyInjectionTestExecutionListener.java:53)
+	at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.java:46)
+	at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)
+	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
+	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
+	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
+	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
+	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
+	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
+	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
+	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
+	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
+	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
+	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
+	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
+	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
+	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
+	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232)
+	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)
+Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mes.mapper.AccountMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1658)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1217)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1171)
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:593)
+	... 45 common frames omitted
+2024-09-03 10:17:16.086 [main] ERROR o.springframework.test.context.TestContextManager - Caught exception while allowing TestExecutionListener [org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener@6069db50] to prepare test instance [com.mes.DeviceInteractionModuleApplicationTest@2b71e916]
+java.lang.IllegalStateException: Failed to load ApplicationContext
+	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:125)
+	at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)
+	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:118)
+	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83)
+	at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.java:43)
+	at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)
+	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
+	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
+	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
+	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
+	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
+	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
+	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
+	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
+	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
+	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
+	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
+	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
+	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
+	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
+	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232)
+	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)
+Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'accountServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mes.mapper.AccountMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:596)
+	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:374)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1411)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:592)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
+	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:845)
+	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:877)
+	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549)
+	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
+	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:744)
+	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:391)
+	at org.springframework.boot.SpringApplication.run(SpringApplication.java:312)
+	at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:120)
+	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)
+	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)
+	... 27 common frames omitted
+Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mes.mapper.AccountMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1658)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1217)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1171)
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:593)
+	... 46 common frames omitted
+2024-09-03 10:21:28.668 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 10:21:29.496 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 10:21:29.610 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 10:21:32.898 [main] ERROR org.springframework.boot.SpringApplication - Application run failed
+org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'edgeGrindingLogServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mes.mapper.EdgeGrindingLogMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:596)
+	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:374)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1411)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:592)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
+	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:845)
+	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:877)
+	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549)
+	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
+	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:744)
+	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:391)
+	at org.springframework.boot.SpringApplication.run(SpringApplication.java:312)
+	at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:120)
+	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)
+	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)
+	at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)
+	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:118)
+	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83)
+	at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.java:43)
+	at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)
+	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
+	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
+	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
+	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
+	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
+	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
+	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
+	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
+	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
+	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
+	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
+	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
+	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
+	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
+	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232)
+	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)
+Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mes.mapper.EdgeGrindingLogMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1658)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1217)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1171)
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:593)
+	... 46 common frames omitted
+2024-09-03 10:21:37.778 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 10:21:37.941 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 10:21:37.948 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 10:21:39.711 [main] ERROR org.springframework.boot.SpringApplication - Application run failed
+org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'edgeGrindingLogServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mes.mapper.EdgeGrindingLogMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:596)
+	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:374)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1411)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:592)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
+	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:845)
+	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:877)
+	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549)
+	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
+	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:744)
+	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:391)
+	at org.springframework.boot.SpringApplication.run(SpringApplication.java:312)
+	at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:120)
+	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)
+	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)
+	at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)
+	at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.outputConditionEvaluationReport(SpringBootDependencyInjectionTestExecutionListener.java:53)
+	at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.java:46)
+	at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)
+	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
+	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
+	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
+	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
+	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
+	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
+	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
+	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
+	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
+	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
+	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
+	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
+	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
+	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
+	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232)
+	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)
+Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mes.mapper.EdgeGrindingLogMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1658)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1217)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1171)
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:593)
+	... 45 common frames omitted
+2024-09-03 10:21:39.712 [main] ERROR o.springframework.test.context.TestContextManager - Caught exception while allowing TestExecutionListener [org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener@6069db50] to prepare test instance [com.mes.DeviceInteractionModuleApplicationTest@2b71e916]
+java.lang.IllegalStateException: Failed to load ApplicationContext
+	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:125)
+	at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)
+	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:118)
+	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83)
+	at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.java:43)
+	at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)
+	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
+	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
+	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
+	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
+	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
+	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
+	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
+	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
+	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
+	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
+	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
+	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
+	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
+	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
+	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232)
+	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)
+Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'edgeGrindingLogServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mes.mapper.EdgeGrindingLogMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:596)
+	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:374)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1411)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:592)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
+	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:845)
+	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:877)
+	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549)
+	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
+	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:744)
+	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:391)
+	at org.springframework.boot.SpringApplication.run(SpringApplication.java:312)
+	at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:120)
+	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)
+	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)
+	... 27 common frames omitted
+Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mes.mapper.EdgeGrindingLogMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1658)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1217)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1171)
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:593)
+	... 46 common frames omitted
+2024-09-03 10:27:10.519 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 10:27:11.387 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 10:27:11.490 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 10:27:14.739 [main] ERROR org.springframework.boot.SpringApplication - Application run failed
+org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'accountServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mes.md.service.mapper.AccountMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:596)
+	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:374)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1411)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:592)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
+	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:845)
+	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:877)
+	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549)
+	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
+	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:744)
+	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:391)
+	at org.springframework.boot.SpringApplication.run(SpringApplication.java:312)
+	at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:120)
+	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)
+	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)
+	at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)
+	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:118)
+	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83)
+	at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.java:43)
+	at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)
+	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
+	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
+	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
+	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
+	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
+	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
+	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
+	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
+	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
+	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
+	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
+	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
+	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
+	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
+	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232)
+	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)
+Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mes.md.service.mapper.AccountMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1658)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1217)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1171)
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:593)
+	... 46 common frames omitted
+2024-09-03 10:27:19.636 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 10:27:19.790 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 10:27:19.796 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 10:27:21.413 [main] ERROR org.springframework.boot.SpringApplication - Application run failed
+org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'accountServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mes.md.service.mapper.AccountMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:596)
+	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:374)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1411)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:592)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
+	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:845)
+	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:877)
+	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549)
+	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
+	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:744)
+	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:391)
+	at org.springframework.boot.SpringApplication.run(SpringApplication.java:312)
+	at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:120)
+	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)
+	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)
+	at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)
+	at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.outputConditionEvaluationReport(SpringBootDependencyInjectionTestExecutionListener.java:53)
+	at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.java:46)
+	at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)
+	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
+	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
+	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
+	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
+	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
+	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
+	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
+	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
+	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
+	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
+	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
+	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
+	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
+	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
+	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232)
+	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)
+Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mes.md.service.mapper.AccountMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1658)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1217)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1171)
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:593)
+	... 45 common frames omitted
+2024-09-03 10:27:21.414 [main] ERROR o.springframework.test.context.TestContextManager - Caught exception while allowing TestExecutionListener [org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener@6069db50] to prepare test instance [com.mes.DeviceInteractionModuleApplicationTest@2b71e916]
+java.lang.IllegalStateException: Failed to load ApplicationContext
+	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:125)
+	at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)
+	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:118)
+	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83)
+	at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.java:43)
+	at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)
+	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
+	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
+	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
+	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
+	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
+	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
+	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
+	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
+	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
+	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
+	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
+	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
+	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
+	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
+	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
+	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232)
+	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)
+Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'accountServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mes.md.service.mapper.AccountMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:596)
+	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:374)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1411)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:592)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
+	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:845)
+	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:877)
+	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549)
+	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
+	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:744)
+	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:391)
+	at org.springframework.boot.SpringApplication.run(SpringApplication.java:312)
+	at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:120)
+	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)
+	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)
+	... 27 common frames omitted
+Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mes.md.service.mapper.AccountMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1658)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1217)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1171)
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:593)
+	... 46 common frames omitted
+2024-09-03 10:28:58.870 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 10:28:59.720 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 10:28:59.832 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 11:25:24.178 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 11:25:25.063 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 11:25:25.181 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 11:28:28.410 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 11:28:29.270 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 11:28:29.387 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/cacheGlass/web_info.log b/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/cacheGlass/web_info.log
new file mode 100644
index 0000000..8676ad3
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/cacheGlass/web_info.log
@@ -0,0 +1,611 @@
+2024-09-03 08:58:58.242 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$ad01cb28] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 08:59:00.425 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-03 08:59:01.829 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-03 08:59:01.832 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-03 08:59:01.895 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 48ms. Found 0 repository interfaces.
+2024-09-03 08:59:02.674 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=1cad7e98-0807-38ec-afd3-2a0b48f1ac74
+2024-09-03 08:59:02.990 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$90e7c82b] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 08:59:03.079 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 08:59:03.089 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$fa7638fc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 08:59:03.406 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 08:59:03.470 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$29959065] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 08:59:03.481 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 08:59:03.483 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@42ea7565' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 08:59:03.492 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$4e6a3317] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 08:59:03.504 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 08:59:03.574 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$ad01cb28] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 08:59:05.389 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-03 08:59:05.436 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 08:59:05.454 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-03 08:59:05.454 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-03 08:59:05.735 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-03 08:59:05.735 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 5310 ms
+2024-09-03 08:59:06.084 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-03 08:59:06.685 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,hangzhoumes} inited
+2024-09-03 08:59:06.689 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-2,pp} inited
+2024-09-03 08:59:06.694 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-3,salve_hangzhoumes} inited
+2024-09-03 08:59:06.694 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [pp] success
+2024-09-03 08:59:06.694 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [hangzhoumes] success
+2024-09-03 08:59:06.694 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [salve_hangzhoumes] success
+2024-09-03 08:59:06.694 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [3] datasource,primary datasource named [hangzhoumes]
+2024-09-03 08:59:06.761 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-03 08:59:09.765 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-03 08:59:11.646 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-03 08:59:11.756 [main] INFO  o.s.security.web.DefaultSecurityFilterChain - Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@248d3a, org.springframework.security.web.context.SecurityContextPersistenceFilter@55c03e4, org.springframework.security.web.header.HeaderWriterFilter@26f5e45d, org.springframework.web.filter.CorsFilter@3c71cf3e, org.springframework.security.web.authentication.logout.LogoutFilter@1ad1be5d, com.mes.common.filter.JwtAuthenticationTokenFilter@6ce15112, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@186481d4, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@605eb072, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@1488a861, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@636e4bf8, org.springframework.security.web.session.SessionManagementFilter@37986daf, org.springframework.security.web.access.ExceptionTranslationFilter@154864f8, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@fd87c22]
+2024-09-03 08:59:11.819 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 08:59:12.014 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 08:59:12.339 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-03 08:59:14.609 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 08:59:14.685 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-03 08:59:15.244 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-03 08:59:17.445 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 08:59:18.465 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-03 08:59:18.495 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-03 08:59:18.529 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-03 08:59:18.785 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 08:59:18.785 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 08:59:18.814 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 52011 (http) with context path ''
+2024-09-03 08:59:18.896 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, cacheGlass 10.153.19.29:52011 register finished
+2024-09-03 08:59:19.797 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 08:59:20.800 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 08:59:20.915 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 08:59:20.915 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 25.527 seconds (JVM running for 26.84)
+2024-09-03 08:59:20.915 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-03 08:59:21.186 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - 瀹屾暣璺緞
+2024-09-03 08:59:21.205 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-03 08:59:21.205 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-03 08:59:21.205 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-03 08:59:21.205 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-03 08:59:21.215 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-03 08:59:21.225 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-2} closed
+2024-09-03 08:59:21.225 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-03 08:59:21.225 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-3} closed
+2024-09-03 08:59:21.225 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-03 09:02:55.187 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$8f692bca] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 09:02:57.359 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-03 09:02:58.340 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-03 09:02:58.344 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-03 09:02:58.393 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 33ms. Found 0 repository interfaces.
+2024-09-03 09:02:58.753 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=0647ebad-0c10-3148-abe6-af7aec387c34
+2024-09-03 09:02:58.956 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$734f28cd] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 09:02:59.007 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 09:02:59.013 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$dcdd999e] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 09:02:59.148 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 09:02:59.185 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$bfcf107] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 09:02:59.195 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 09:02:59.197 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@9a20cbd' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 09:02:59.211 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$30d193b9] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 09:02:59.220 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 09:02:59.254 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$8f692bca] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 09:03:00.232 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-03 09:03:00.248 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 09:03:00.256 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-03 09:03:00.256 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-03 09:03:00.429 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-03 09:03:00.429 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 3067 ms
+2024-09-03 09:03:00.661 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-03 09:03:00.986 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,hangzhoumes} inited
+2024-09-03 09:03:00.991 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-2,pp} inited
+2024-09-03 09:03:00.994 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-3,salve_hangzhoumes} inited
+2024-09-03 09:03:00.994 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [pp] success
+2024-09-03 09:03:00.994 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [hangzhoumes] success
+2024-09-03 09:03:00.994 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [salve_hangzhoumes] success
+2024-09-03 09:03:00.994 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [3] datasource,primary datasource named [hangzhoumes]
+2024-09-03 09:03:01.041 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-03 09:03:04.309 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-03 09:03:05.391 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-03 09:03:05.507 [main] INFO  o.s.security.web.DefaultSecurityFilterChain - Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@603f4e3e, org.springframework.security.web.context.SecurityContextPersistenceFilter@35ab4260, org.springframework.security.web.header.HeaderWriterFilter@629cbb1, org.springframework.web.filter.CorsFilter@45fb2354, org.springframework.security.web.authentication.logout.LogoutFilter@340c57e0, com.mes.common.filter.JwtAuthenticationTokenFilter@12e5d3e1, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@42401b81, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@38667005, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@48af5f38, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@3c7d8a4, org.springframework.security.web.session.SessionManagementFilter@22cd8ec2, org.springframework.security.web.access.ExceptionTranslationFilter@18811c42, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@d7055be]
+2024-09-03 09:03:05.568 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 09:03:05.576 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 09:03:05.926 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-03 09:03:08.256 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 09:03:08.326 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-03 09:03:08.826 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-03 09:03:11.010 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 09:03:11.916 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-03 09:03:11.939 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-03 09:03:11.973 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-03 09:03:12.225 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 09:03:12.227 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 09:03:12.257 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 52071 (http) with context path ''
+2024-09-03 09:03:12.328 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, cacheGlass 10.153.19.29:52071 register finished
+2024-09-03 09:03:13.232 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 09:03:14.246 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 09:03:14.325 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 09:03:14.327 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 21.765 seconds (JVM running for 22.747)
+2024-09-03 09:03:14.329 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-03 09:03:14.561 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - 瀹屾暣璺緞
+2024-09-03 09:03:14.572 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-03 09:03:14.573 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-03 09:03:14.577 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-03 09:03:14.578 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-03 09:03:14.583 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-03 09:03:14.590 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-2} closed
+2024-09-03 09:03:14.590 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-03 09:03:14.607 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-3} closed
+2024-09-03 09:03:14.608 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-03 09:08:27.185 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$ad01cb28] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 09:08:29.577 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-03 09:08:30.666 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-03 09:08:30.669 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-03 09:08:30.730 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 43ms. Found 0 repository interfaces.
+2024-09-03 09:08:31.215 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=0647ebad-0c10-3148-abe6-af7aec387c34
+2024-09-03 09:08:31.431 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$90e7c82b] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 09:08:31.487 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 09:08:31.493 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$fa7638fc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 09:08:31.637 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 09:08:31.676 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$29959065] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 09:08:31.690 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 09:08:31.692 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@9a20cbd' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 09:08:31.700 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$4e6a3317] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 09:08:31.709 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 09:08:31.746 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$ad01cb28] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 09:08:32.770 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-03 09:08:32.785 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 09:08:32.794 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-03 09:08:32.795 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-03 09:08:32.963 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-03 09:08:32.964 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 3384 ms
+2024-09-03 09:08:33.204 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-03 09:08:33.511 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,hangzhoumes} inited
+2024-09-03 09:08:33.516 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-2,pp} inited
+2024-09-03 09:08:33.521 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-3,salve_hangzhoumes} inited
+2024-09-03 09:08:33.521 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [pp] success
+2024-09-03 09:08:33.521 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [hangzhoumes] success
+2024-09-03 09:08:33.521 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [salve_hangzhoumes] success
+2024-09-03 09:08:33.521 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [3] datasource,primary datasource named [hangzhoumes]
+2024-09-03 09:08:33.575 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-03 09:08:37.747 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-03 09:08:39.109 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-03 09:08:39.271 [main] INFO  o.s.security.web.DefaultSecurityFilterChain - Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@603f4e3e, org.springframework.security.web.context.SecurityContextPersistenceFilter@35ab4260, org.springframework.security.web.header.HeaderWriterFilter@629cbb1, org.springframework.web.filter.CorsFilter@45fb2354, org.springframework.security.web.authentication.logout.LogoutFilter@340c57e0, com.mes.common.filter.JwtAuthenticationTokenFilter@baa227e, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@42401b81, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@38667005, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@48af5f38, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@3c7d8a4, org.springframework.security.web.session.SessionManagementFilter@22cd8ec2, org.springframework.security.web.access.ExceptionTranslationFilter@18811c42, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@d7055be]
+2024-09-03 09:08:39.338 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 09:08:39.346 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 09:08:39.736 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-03 09:08:42.246 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 09:08:42.326 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-03 09:08:42.938 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-03 09:08:45.283 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 09:08:46.324 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-03 09:08:46.349 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-03 09:08:46.384 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-03 09:08:46.702 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 09:08:46.704 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 09:08:46.735 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 52167 (http) with context path ''
+2024-09-03 09:08:46.804 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, cacheGlass 10.153.19.29:52167 register finished
+2024-09-03 09:08:47.720 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 09:08:48.727 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 09:08:48.869 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 09:08:48.870 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 24.385 seconds (JVM running for 25.411)
+2024-09-03 09:08:48.873 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-03 09:08:49.139 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - 瀹屾暣璺緞
+2024-09-03 09:08:49.166 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-03 09:08:49.167 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-03 09:08:49.171 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-03 09:08:49.172 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-03 09:08:49.176 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-03 09:08:49.183 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-2} closed
+2024-09-03 09:08:49.183 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-03 09:08:49.184 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-3} closed
+2024-09-03 09:08:49.184 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-03 10:02:38.666 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$ad01cb28] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:02:40.962 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-03 10:02:43.205 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$ad01cb28] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:02:45.278 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-03 10:17:00.722 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$ad01cb28] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:17:02.936 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-03 10:17:03.987 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-03 10:17:03.991 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-03 10:17:04.038 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 33ms. Found 0 repository interfaces.
+2024-09-03 10:17:04.436 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=1d55e75d-5f5a-3be3-aeda-94510870a658
+2024-09-03 10:17:04.650 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$90e7c82b] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:17:04.706 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:17:04.713 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$fa7638fc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:17:04.858 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:17:04.896 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$29959065] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:17:04.905 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:17:04.915 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@1f66d8e1' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:17:04.922 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$4e6a3317] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:17:04.934 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:17:04.975 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$ad01cb28] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:17:05.977 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-03 10:17:05.995 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 10:17:06.005 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-03 10:17:06.005 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-03 10:17:06.192 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-03 10:17:06.192 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 3253 ms
+2024-09-03 10:17:06.435 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-03 10:17:06.751 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,hangzhoumes} inited
+2024-09-03 10:17:06.757 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-2,pp} inited
+2024-09-03 10:17:06.760 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-3,salve_hangzhoumes} inited
+2024-09-03 10:17:06.761 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [pp] success
+2024-09-03 10:17:06.761 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [hangzhoumes] success
+2024-09-03 10:17:06.761 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [salve_hangzhoumes] success
+2024-09-03 10:17:06.761 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [3] datasource,primary datasource named [hangzhoumes]
+2024-09-03 10:17:06.814 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-03 10:17:09.153 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-03 10:17:09.160 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-2} closed
+2024-09-03 10:17:09.160 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-03 10:17:09.161 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-3} closed
+2024-09-03 10:17:09.161 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-03 10:17:09.163 [main] INFO  org.apache.catalina.core.StandardService - Stopping service [Tomcat]
+2024-09-03 10:17:09.174 [main] INFO  o.s.b.a.l.ConditionEvaluationReportLoggingListener - 
+
+Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
+2024-09-03 10:17:11.421 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$ad01cb28] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:17:13.499 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-03 10:17:13.909 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-03 10:17:13.909 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-03 10:17:13.934 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 25ms. Found 0 repository interfaces.
+2024-09-03 10:17:14.010 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=1d55e75d-5f5a-3be3-aeda-94510870a658
+2024-09-03 10:17:14.079 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$90e7c82b] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:17:14.101 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:17:14.106 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$fa7638fc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:17:14.114 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:17:14.130 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$29959065] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:17:14.136 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:17:14.137 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@47c5cbf2' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:17:14.143 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$4e6a3317] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:17:14.148 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:17:14.174 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$ad01cb28] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:17:14.359 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-03 10:17:14.360 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-2"]
+2024-09-03 10:17:14.361 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-03 10:17:14.361 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-03 10:17:14.391 [main] INFO  o.a.c.c.ContainerBase.[Tomcat-1].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-03 10:17:14.391 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 891 ms
+2024-09-03 10:17:14.511 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-03 10:17:14.629 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-4,hangzhoumes} inited
+2024-09-03 10:17:14.633 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-5,pp} inited
+2024-09-03 10:17:14.635 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-6,salve_hangzhoumes} inited
+2024-09-03 10:17:14.635 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [pp] success
+2024-09-03 10:17:14.635 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [hangzhoumes] success
+2024-09-03 10:17:14.635 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [salve_hangzhoumes] success
+2024-09-03 10:17:14.635 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [3] datasource,primary datasource named [hangzhoumes]
+2024-09-03 10:17:14.669 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-03 10:17:15.907 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-03 10:17:15.908 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-5} closed
+2024-09-03 10:17:15.926 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-4} closed
+2024-09-03 10:17:15.927 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-6} closed
+2024-09-03 10:17:15.927 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-03 10:17:15.929 [main] INFO  org.apache.catalina.core.StandardService - Stopping service [Tomcat]
+2024-09-03 10:17:15.937 [main] INFO  o.s.b.a.l.ConditionEvaluationReportLoggingListener - 
+
+Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
+2024-09-03 10:21:24.478 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$ad01cb28] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:21:26.659 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-03 10:21:27.677 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-03 10:21:27.681 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-03 10:21:27.731 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 33ms. Found 0 repository interfaces.
+2024-09-03 10:21:28.116 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=862ff94e-02c9-37ac-aaa7-68466ec0c870
+2024-09-03 10:21:28.329 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$90e7c82b] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:21:28.380 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:21:28.387 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$fa7638fc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:21:28.519 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:21:28.569 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$29959065] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:21:28.579 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:21:28.582 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@2dafae61' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:21:28.589 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$4e6a3317] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:21:28.600 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:21:28.637 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$ad01cb28] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:21:29.594 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-03 10:21:29.610 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 10:21:29.620 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-03 10:21:29.620 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-03 10:21:29.804 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-03 10:21:29.805 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 3143 ms
+2024-09-03 10:21:30.007 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-03 10:21:30.339 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,hangzhoumes} inited
+2024-09-03 10:21:30.344 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-2,pp} inited
+2024-09-03 10:21:30.347 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-3,salve_hangzhoumes} inited
+2024-09-03 10:21:30.348 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [pp] success
+2024-09-03 10:21:30.348 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [hangzhoumes] success
+2024-09-03 10:21:30.348 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [salve_hangzhoumes] success
+2024-09-03 10:21:30.348 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [3] datasource,primary datasource named [hangzhoumes]
+2024-09-03 10:21:30.395 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-03 10:21:32.740 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-03 10:21:32.747 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-2} closed
+2024-09-03 10:21:32.748 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-03 10:21:32.748 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-3} closed
+2024-09-03 10:21:32.748 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-03 10:21:32.750 [main] INFO  org.apache.catalina.core.StandardService - Stopping service [Tomcat]
+2024-09-03 10:21:32.760 [main] INFO  o.s.b.a.l.ConditionEvaluationReportLoggingListener - 
+
+Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
+2024-09-03 10:21:34.977 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$ad01cb28] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:21:37.026 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-03 10:21:37.494 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-03 10:21:37.494 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-03 10:21:37.519 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 24ms. Found 0 repository interfaces.
+2024-09-03 10:21:37.600 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=862ff94e-02c9-37ac-aaa7-68466ec0c870
+2024-09-03 10:21:37.667 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$90e7c82b] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:21:37.691 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:21:37.695 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$fa7638fc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:21:37.705 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:21:37.726 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$29959065] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:21:37.731 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:21:37.732 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@47c5cbf2' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:21:37.738 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$4e6a3317] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:21:37.744 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:21:37.766 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$ad01cb28] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:21:37.947 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-03 10:21:37.949 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-2"]
+2024-09-03 10:21:37.950 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-03 10:21:37.950 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-03 10:21:37.983 [main] INFO  o.a.c.c.ContainerBase.[Tomcat-1].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-03 10:21:37.984 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 955 ms
+2024-09-03 10:21:38.098 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-03 10:21:38.213 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-4,hangzhoumes} inited
+2024-09-03 10:21:38.217 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-5,pp} inited
+2024-09-03 10:21:38.219 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-6,salve_hangzhoumes} inited
+2024-09-03 10:21:38.219 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [pp] success
+2024-09-03 10:21:38.219 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [hangzhoumes] success
+2024-09-03 10:21:38.219 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [salve_hangzhoumes] success
+2024-09-03 10:21:38.219 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [3] datasource,primary datasource named [hangzhoumes]
+2024-09-03 10:21:38.258 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-03 10:21:39.514 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-03 10:21:39.514 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-5} closed
+2024-09-03 10:21:39.514 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-4} closed
+2024-09-03 10:21:39.515 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-6} closed
+2024-09-03 10:21:39.516 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-03 10:21:39.516 [main] INFO  org.apache.catalina.core.StandardService - Stopping service [Tomcat]
+2024-09-03 10:21:39.520 [main] INFO  o.s.b.a.l.ConditionEvaluationReportLoggingListener - 
+
+Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
+2024-09-03 10:27:06.245 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$ad01cb28] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:27:08.451 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-03 10:27:09.509 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-03 10:27:09.512 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-03 10:27:09.558 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 32ms. Found 0 repository interfaces.
+2024-09-03 10:27:09.951 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=1d55e75d-5f5a-3be3-aeda-94510870a658
+2024-09-03 10:27:10.164 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$90e7c82b] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:27:10.221 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:27:10.228 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$fa7638fc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:27:10.389 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:27:10.425 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$29959065] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:27:10.433 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:27:10.435 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@1f66d8e1' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:27:10.448 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$4e6a3317] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:27:10.456 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:27:10.486 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$ad01cb28] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:27:11.475 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-03 10:27:11.491 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 10:27:11.501 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-03 10:27:11.501 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-03 10:27:11.682 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-03 10:27:11.683 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 3230 ms
+2024-09-03 10:27:11.904 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-03 10:27:12.247 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,hangzhoumes} inited
+2024-09-03 10:27:12.252 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-2,pp} inited
+2024-09-03 10:27:12.255 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-3,salve_hangzhoumes} inited
+2024-09-03 10:27:12.256 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [pp] success
+2024-09-03 10:27:12.256 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [hangzhoumes] success
+2024-09-03 10:27:12.256 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [salve_hangzhoumes] success
+2024-09-03 10:27:12.256 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [3] datasource,primary datasource named [hangzhoumes]
+2024-09-03 10:27:12.306 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-03 10:27:14.590 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-03 10:27:14.596 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-2} closed
+2024-09-03 10:27:14.596 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-03 10:27:14.596 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-3} closed
+2024-09-03 10:27:14.597 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-03 10:27:14.599 [main] INFO  org.apache.catalina.core.StandardService - Stopping service [Tomcat]
+2024-09-03 10:27:14.610 [main] INFO  o.s.b.a.l.ConditionEvaluationReportLoggingListener - 
+
+Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
+2024-09-03 10:27:16.856 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$ad01cb28] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:27:18.912 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-03 10:27:19.397 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-03 10:27:19.397 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-03 10:27:19.418 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 21ms. Found 0 repository interfaces.
+2024-09-03 10:27:19.470 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=1d55e75d-5f5a-3be3-aeda-94510870a658
+2024-09-03 10:27:19.527 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$90e7c82b] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:27:19.550 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:27:19.557 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$fa7638fc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:27:19.567 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:27:19.586 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$29959065] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:27:19.591 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:27:19.592 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@4aba7617' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:27:19.597 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$4e6a3317] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:27:19.601 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:27:19.626 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$ad01cb28] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:27:19.795 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-03 10:27:19.796 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-2"]
+2024-09-03 10:27:19.797 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-03 10:27:19.797 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-03 10:27:19.830 [main] INFO  o.a.c.c.ContainerBase.[Tomcat-1].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-03 10:27:19.831 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 917 ms
+2024-09-03 10:27:19.956 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-03 10:27:20.048 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-4,hangzhoumes} inited
+2024-09-03 10:27:20.052 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-5,pp} inited
+2024-09-03 10:27:20.054 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-6,salve_hangzhoumes} inited
+2024-09-03 10:27:20.054 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [pp] success
+2024-09-03 10:27:20.054 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [hangzhoumes] success
+2024-09-03 10:27:20.054 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [salve_hangzhoumes] success
+2024-09-03 10:27:20.054 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [3] datasource,primary datasource named [hangzhoumes]
+2024-09-03 10:27:20.094 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-03 10:27:21.290 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-03 10:27:21.291 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-5} closed
+2024-09-03 10:27:21.291 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-4} closed
+2024-09-03 10:27:21.292 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-6} closed
+2024-09-03 10:27:21.292 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-03 10:27:21.293 [main] INFO  org.apache.catalina.core.StandardService - Stopping service [Tomcat]
+2024-09-03 10:27:21.297 [main] INFO  o.s.b.a.l.ConditionEvaluationReportLoggingListener - 
+
+Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
+2024-09-03 10:28:54.635 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$ad01cb28] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:28:56.817 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-03 10:28:57.858 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-03 10:28:57.863 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-03 10:28:57.912 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 35ms. Found 0 repository interfaces.
+2024-09-03 10:28:58.309 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=e3b4be87-dd11-31e6-b95b-26b75e8dd448
+2024-09-03 10:28:58.528 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$90e7c82b] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:28:58.586 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:28:58.593 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$fa7638fc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:28:58.723 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:28:58.763 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$29959065] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:28:58.772 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:28:58.774 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@7d0100ea' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:28:58.782 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$4e6a3317] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:28:58.798 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:28:58.836 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$ad01cb28] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 10:28:59.816 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-03 10:28:59.832 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 10:28:59.842 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-03 10:28:59.843 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-03 10:29:00.038 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-03 10:29:00.038 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 3218 ms
+2024-09-03 10:29:00.307 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-03 10:29:00.652 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,hangzhoumes} inited
+2024-09-03 10:29:00.657 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-2,pp} inited
+2024-09-03 10:29:00.660 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-3,salve_hangzhoumes} inited
+2024-09-03 10:29:00.660 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [pp] success
+2024-09-03 10:29:00.660 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [hangzhoumes] success
+2024-09-03 10:29:00.660 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [salve_hangzhoumes] success
+2024-09-03 10:29:00.660 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [3] datasource,primary datasource named [hangzhoumes]
+2024-09-03 10:29:00.710 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-03 10:29:04.092 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-03 10:29:05.289 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-03 10:29:05.405 [main] INFO  o.s.security.web.DefaultSecurityFilterChain - Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@299a43d9, org.springframework.security.web.context.SecurityContextPersistenceFilter@4b09d1c3, org.springframework.security.web.header.HeaderWriterFilter@571d0925, org.springframework.web.filter.CorsFilter@ccd000e, org.springframework.security.web.authentication.logout.LogoutFilter@48af5f38, com.mes.common.filter.JwtAuthenticationTokenFilter@5ed31735, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@51813065, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@627acb38, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@76134b9b, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@5fa5c8cf, org.springframework.security.web.session.SessionManagementFilter@3fe8ad3f, org.springframework.security.web.access.ExceptionTranslationFilter@5feb82b3, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@15d79b70]
+2024-09-03 10:29:05.461 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 10:29:05.470 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 10:29:05.798 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-03 10:29:08.124 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 10:29:08.193 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-03 10:29:08.645 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-03 10:29:10.792 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 10:29:11.736 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-03 10:29:11.766 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-03 10:29:11.799 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-03 10:29:12.090 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 10:29:12.092 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 10:29:12.121 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 53443 (http) with context path ''
+2024-09-03 10:29:12.196 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, cacheGlass 10.153.19.29:53443 register finished
+2024-09-03 10:29:13.102 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 10:29:14.117 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 10:29:14.212 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 10:29:14.214 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 22.275 seconds (JVM running for 23.272)
+2024-09-03 10:29:14.216 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-03 10:29:14.457 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - 瀹屾暣璺緞
+2024-09-03 10:29:14.471 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-03 10:29:14.472 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-03 10:29:14.477 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-03 10:29:14.478 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-03 10:29:14.484 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-03 10:29:14.492 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-2} closed
+2024-09-03 10:29:14.513 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-03 10:29:14.513 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-3} closed
+2024-09-03 10:29:14.514 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-03 11:25:19.944 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$41d375bd] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:25:22.139 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-03 11:25:23.202 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-03 11:25:23.206 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-03 11:25:23.256 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 35ms. Found 0 repository interfaces.
+2024-09-03 11:25:23.640 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=e3b4be87-dd11-31e6-b95b-26b75e8dd448
+2024-09-03 11:25:23.847 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$25b972c0] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:25:23.897 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:25:23.902 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$8f47e391] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:25:24.041 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:25:24.074 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$be673afa] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:25:24.091 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:25:24.093 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@4a070cf0' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:25:24.101 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$e33bddac] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:25:24.110 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:25:24.146 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$41d375bd] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:25:25.166 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-03 11:25:25.182 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 11:25:25.196 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-03 11:25:25.196 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-03 11:25:25.390 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-03 11:25:25.391 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 3249 ms
+2024-09-03 11:25:25.629 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-03 11:25:25.956 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-03 11:25:25.957 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-03 11:25:25.957 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-03 11:25:26.011 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-03 11:25:29.378 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-03 11:25:30.481 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-03 11:25:30.585 [main] INFO  o.s.security.web.DefaultSecurityFilterChain - Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@3a72e2e8, org.springframework.security.web.context.SecurityContextPersistenceFilter@563263a, org.springframework.security.web.header.HeaderWriterFilter@1be77a76, org.springframework.web.filter.CorsFilter@42401b81, org.springframework.security.web.authentication.logout.LogoutFilter@4a520f05, com.mes.common.filter.JwtAuthenticationTokenFilter@3a588b5f, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@4fea5ee0, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@6e794f53, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@102af1bb, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@f1d1463, org.springframework.security.web.session.SessionManagementFilter@7878bbdb, org.springframework.security.web.access.ExceptionTranslationFilter@7e1a9173, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@e0847a9]
+2024-09-03 11:25:30.650 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 11:25:30.660 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 11:25:30.978 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-03 11:25:33.350 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 11:25:33.415 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-03 11:25:33.892 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-03 11:25:35.998 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 11:25:36.934 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-03 11:25:36.963 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-03 11:25:37.001 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-03 11:25:37.285 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:25:37.287 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 11:25:37.315 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 54215 (http) with context path ''
+2024-09-03 11:25:37.385 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, cacheGlass 10.153.19.29:54215 register finished
+2024-09-03 11:25:38.290 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:25:39.292 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:25:39.402 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 11:25:39.404 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 22.148 seconds (JVM running for 23.248)
+2024-09-03 11:25:39.406 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-03 11:25:40.297 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:25:40.307 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - 瀹屾暣璺緞
+2024-09-03 11:25:40.318 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-03 11:25:40.320 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-03 11:25:40.324 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-03 11:25:40.324 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-03 11:25:40.329 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-03 11:25:40.334 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-03 11:25:40.335 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-03 11:28:24.048 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$41d375bd] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:28:26.271 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-03 11:28:27.422 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-03 11:28:27.425 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-03 11:28:27.469 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 31ms. Found 0 repository interfaces.
+2024-09-03 11:28:27.841 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=e3b4be87-dd11-31e6-b95b-26b75e8dd448
+2024-09-03 11:28:28.055 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$25b972c0] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:28:28.103 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:28:28.110 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$8f47e391] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:28:28.270 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:28:28.300 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$be673afa] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:28:28.309 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:28:28.312 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@4a070cf0' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:28:28.330 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$e33bddac] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:28:28.339 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:28:28.375 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$41d375bd] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:28:29.370 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-03 11:28:29.387 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 11:28:29.397 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-03 11:28:29.398 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-03 11:28:29.571 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-03 11:28:29.571 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 3297 ms
+2024-09-03 11:28:29.796 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-03 11:28:30.148 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-03 11:28:30.150 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-03 11:28:30.150 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-03 11:28:30.203 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-03 11:28:33.507 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-03 11:28:34.618 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-03 11:28:34.728 [main] INFO  o.s.security.web.DefaultSecurityFilterChain - Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@3a72e2e8, org.springframework.security.web.context.SecurityContextPersistenceFilter@563263a, org.springframework.security.web.header.HeaderWriterFilter@1be77a76, org.springframework.web.filter.CorsFilter@42401b81, org.springframework.security.web.authentication.logout.LogoutFilter@4a520f05, com.mes.common.filter.JwtAuthenticationTokenFilter@3a588b5f, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@4fea5ee0, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@6e794f53, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@102af1bb, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@f1d1463, org.springframework.security.web.session.SessionManagementFilter@7878bbdb, org.springframework.security.web.access.ExceptionTranslationFilter@7e1a9173, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@e0847a9]
+2024-09-03 11:28:34.791 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 11:28:34.801 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 11:28:35.155 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-03 11:28:37.488 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 11:28:37.544 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-03 11:28:37.993 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-03 11:28:40.181 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 11:28:41.165 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-03 11:28:41.191 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-03 11:28:41.228 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-03 11:28:41.503 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:28:41.504 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 11:28:41.530 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 54267 (http) with context path ''
+2024-09-03 11:28:41.598 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, DeviceInteraction 10.153.19.29:54267 register finished
+2024-09-03 11:28:42.504 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:28:43.507 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:28:43.631 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 11:28:43.633 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 22.662 seconds (JVM running for 23.789)
+2024-09-03 11:28:43.635 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-03 11:28:44.390 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - 瀹屾暣璺緞
+2024-09-03 11:28:44.401 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-03 11:28:44.403 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-03 11:28:44.408 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-03 11:28:44.409 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-03 11:28:44.414 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-03 11:28:44.419 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-03 11:28:44.419 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/cacheGlass/web_warn.log b/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/cacheGlass/web_warn.log
new file mode 100644
index 0000000..67f5bc1
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/cacheGlass/web_warn.log
@@ -0,0 +1,194 @@
+2024-09-03 08:59:02.374 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 08:59:02.374 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 08:59:02.374 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.primitivetask.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 08:59:02.374 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysMenuMapper' and 'com.mes.menu.mapper.SysMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 08:59:02.374 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMapper' and 'com.mes.role.mapper.SysRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 08:59:02.374 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMenuMapper' and 'com.mes.role.mapper.SysRoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 08:59:02.374 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.mes.userinfo.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 08:59:02.374 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserRoleMapper' and 'com.mes.userinfo.mapper.SysUserRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 08:59:02.374 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-03 08:59:11.819 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 08:59:12.014 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 09:02:58.619 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:02:58.620 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.jiumumes.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:02:58.620 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgegrindingLogMapper' and 'com.mes.jiumumes.mapper.EdgegrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:02:58.620 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.jiumumes.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:02:58.620 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.jiumumes.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:02:58.620 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.jiumumes.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:02:58.620 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderoriginalpieceMapper' and 'com.mes.jiumumes.mapper.OrderoriginalpieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:02:58.620 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.jiumumes.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:02:58.620 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitivetaskMapper' and 'com.mes.jiumumes.mapper.PrimitivetaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:02:58.620 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.jiumumes.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:02:58.621 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.jiumumes.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:02:58.621 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.jiumumes.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:02:58.621 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'rolemenuMapper' and 'com.mes.jiumumes.mapper.RolemenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:02:58.621 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.jiumumes.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:02:58.621 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.jiumumes.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:02:58.621 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'worktaskdetailMapper' and 'com.mes.jiumumes.mapper.WorktaskdetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:02:58.621 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:02:58.621 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.primitivetask.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:02:58.621 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysMenuMapper' and 'com.mes.menu.mapper.SysMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:02:58.621 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMapper' and 'com.mes.role.mapper.SysRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:02:58.621 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMenuMapper' and 'com.mes.role.mapper.SysRoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:02:58.621 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.mes.userinfo.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:02:58.621 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserRoleMapper' and 'com.mes.userinfo.mapper.SysUserRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:02:58.622 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-03 09:03:05.568 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 09:03:05.575 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 09:08:31.046 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:08:31.047 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.jiumumes.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:08:31.047 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgegrindingLogMapper' and 'com.mes.jiumumes.mapper.EdgegrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:08:31.047 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.jiumumes.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:08:31.047 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.jiumumes.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:08:31.047 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.jiumumes.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:08:31.047 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderoriginalpieceMapper' and 'com.mes.jiumumes.mapper.OrderoriginalpieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:08:31.047 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.jiumumes.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:08:31.047 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitivetaskMapper' and 'com.mes.jiumumes.mapper.PrimitivetaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:08:31.047 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.jiumumes.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:08:31.048 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.jiumumes.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:08:31.048 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.jiumumes.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:08:31.048 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'rolemenuMapper' and 'com.mes.jiumumes.mapper.RolemenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:08:31.048 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.jiumumes.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:08:31.048 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.jiumumes.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:08:31.048 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'worktaskdetailMapper' and 'com.mes.jiumumes.mapper.WorktaskdetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:08:31.048 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:08:31.048 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.primitivetask.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:08:31.048 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysMenuMapper' and 'com.mes.menu.mapper.SysMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:08:31.048 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMapper' and 'com.mes.role.mapper.SysRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:08:31.048 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMenuMapper' and 'com.mes.role.mapper.SysRoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:08:31.049 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.mes.userinfo.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:08:31.049 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserRoleMapper' and 'com.mes.userinfo.mapper.SysUserRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 09:08:31.049 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-03 09:08:39.337 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 09:08:39.346 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 10:02:41.083 [main] WARN  o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.mes.DeviceInteractionModuleApplication]; nested exception is org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'primitiveTaskServiceImpl' for bean class [com.mes.primitivetask.service.impl.PrimitiveTaskServiceImpl] conflicts with existing, non-compatible bean definition of same name and class [com.mes.service.impl.PrimitiveTaskServiceImpl]
+2024-09-03 10:02:45.345 [main] WARN  o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.mes.DeviceInteractionModuleApplication]; nested exception is org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'primitiveTaskServiceImpl' for bean class [com.mes.primitivetask.service.impl.PrimitiveTaskServiceImpl] conflicts with existing, non-compatible bean definition of same name and class [com.mes.service.impl.PrimitiveTaskServiceImpl]
+2024-09-03 10:17:04.277 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:17:04.277 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:17:04.277 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysMenuMapper' and 'com.mes.menu.mapper.SysMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:17:04.277 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMapper' and 'com.mes.role.mapper.SysRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:17:04.277 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMenuMapper' and 'com.mes.role.mapper.SysRoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:17:04.278 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.mes.userinfo.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:17:04.278 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserRoleMapper' and 'com.mes.userinfo.mapper.SysUserRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:17:04.278 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-03 10:17:09.153 [main] WARN  o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'accountServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mes.mapper.AccountMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
+2024-09-03 10:17:14.004 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:17:14.004 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:17:14.004 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysMenuMapper' and 'com.mes.menu.mapper.SysMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:17:14.004 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMapper' and 'com.mes.role.mapper.SysRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:17:14.005 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMenuMapper' and 'com.mes.role.mapper.SysRoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:17:14.005 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.mes.userinfo.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:17:14.005 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserRoleMapper' and 'com.mes.userinfo.mapper.SysUserRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:17:14.005 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-03 10:17:15.907 [main] WARN  o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'accountServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mes.mapper.AccountMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
+2024-09-03 10:21:27.963 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:21:27.964 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:21:27.964 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysMenuMapper' and 'com.mes.menu.mapper.SysMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:21:27.964 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMapper' and 'com.mes.role.mapper.SysRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:21:27.964 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMenuMapper' and 'com.mes.role.mapper.SysRoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:21:27.964 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.mes.userinfo.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:21:27.964 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserRoleMapper' and 'com.mes.userinfo.mapper.SysUserRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:21:27.965 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-03 10:21:32.739 [main] WARN  o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'edgeGrindingLogServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mes.mapper.EdgeGrindingLogMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
+2024-09-03 10:21:37.596 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:21:37.596 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:21:37.596 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysMenuMapper' and 'com.mes.menu.mapper.SysMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:21:37.596 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMapper' and 'com.mes.role.mapper.SysRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:21:37.596 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMenuMapper' and 'com.mes.role.mapper.SysRoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:21:37.596 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.mes.userinfo.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:21:37.596 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserRoleMapper' and 'com.mes.userinfo.mapper.SysUserRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:21:37.597 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-03 10:21:39.513 [main] WARN  o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'edgeGrindingLogServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mes.mapper.EdgeGrindingLogMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
+2024-09-03 10:27:09.799 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:27:09.799 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:27:09.799 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysMenuMapper' and 'com.mes.menu.mapper.SysMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:27:09.800 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMapper' and 'com.mes.role.mapper.SysRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:27:09.800 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMenuMapper' and 'com.mes.role.mapper.SysRoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:27:09.800 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.mes.userinfo.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:27:09.800 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserRoleMapper' and 'com.mes.userinfo.mapper.SysUserRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:27:09.800 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-03 10:27:14.589 [main] WARN  o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'accountServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mes.md.service.mapper.AccountMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
+2024-09-03 10:27:19.465 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:27:19.465 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:27:19.465 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysMenuMapper' and 'com.mes.menu.mapper.SysMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:27:19.465 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMapper' and 'com.mes.role.mapper.SysRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:27:19.465 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMenuMapper' and 'com.mes.role.mapper.SysRoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:27:19.465 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.mes.userinfo.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:27:19.465 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserRoleMapper' and 'com.mes.userinfo.mapper.SysUserRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:27:19.465 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-03 10:27:21.290 [main] WARN  o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'accountServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mes.md.service.mapper.AccountMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
+2024-09-03 10:28:58.150 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:28:58.150 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:28:58.150 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:28:58.150 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:28:58.151 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:28:58.151 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:28:58.151 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:28:58.151 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:28:58.151 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:28:58.151 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:28:58.151 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:28:58.151 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:28:58.151 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:28:58.151 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:28:58.151 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:28:58.151 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:28:58.152 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:28:58.152 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysMenuMapper' and 'com.mes.menu.mapper.SysMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:28:58.152 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMapper' and 'com.mes.role.mapper.SysRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:28:58.152 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMenuMapper' and 'com.mes.role.mapper.SysRoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:28:58.152 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.mes.userinfo.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:28:58.152 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserRoleMapper' and 'com.mes.userinfo.mapper.SysUserRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 10:28:58.153 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-03 10:29:05.461 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 10:29:05.470 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 11:25:23.486 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:25:23.486 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:25:23.486 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:25:23.486 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:25:23.487 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:25:23.487 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:25:23.487 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:25:23.487 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:25:23.487 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:25:23.487 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:25:23.487 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:25:23.487 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:25:23.487 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:25:23.487 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:25:23.487 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:25:23.487 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:25:23.487 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:25:23.487 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysMenuMapper' and 'com.mes.menu.mapper.SysMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:25:23.488 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMapper' and 'com.mes.role.mapper.SysRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:25:23.488 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMenuMapper' and 'com.mes.role.mapper.SysRoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:25:23.488 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.mes.userinfo.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:25:23.488 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserRoleMapper' and 'com.mes.userinfo.mapper.SysUserRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:25:23.488 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-03 11:25:30.649 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 11:25:30.660 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 11:28:27.698 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:28:27.698 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:28:27.699 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:28:27.699 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:28:27.699 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:28:27.699 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:28:27.699 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:28:27.699 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:28:27.699 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:28:27.699 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:28:27.699 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:28:27.699 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:28:27.699 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:28:27.699 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:28:27.699 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:28:27.699 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:28:27.700 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:28:27.700 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysMenuMapper' and 'com.mes.menu.mapper.SysMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:28:27.700 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMapper' and 'com.mes.role.mapper.SysRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:28:27.700 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMenuMapper' and 'com.mes.role.mapper.SysRoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:28:27.700 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.mes.userinfo.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:28:27.700 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserRoleMapper' and 'com.mes.userinfo.mapper.SysUserRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:28:27.700 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-03 11:28:34.790 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 11:28:34.800 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web-error-2024-09-03.0.log b/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web-error-2024-09-03.0.log
new file mode 100644
index 0000000..fd6507d
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web-error-2024-09-03.0.log
@@ -0,0 +1,39 @@
+2024-09-03 11:37:49.836 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 11:37:50.678 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 11:37:50.788 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 11:45:31.639 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 11:45:32.485 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 11:45:32.592 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 11:47:53.463 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 11:47:54.318 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 11:47:54.429 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 14:16:54.666 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 14:16:55.589 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 14:16:55.703 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 14:20:20.950 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 14:20:21.759 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 14:20:21.867 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 14:24:26.314 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 14:24:27.109 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 14:24:27.229 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 14:25:44.961 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 14:25:45.759 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 14:25:45.866 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 14:48:17.915 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 14:48:18.727 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 14:48:18.834 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 14:58:20.455 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 14:58:21.251 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 14:58:21.362 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 15:00:28.657 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 15:00:29.462 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 15:00:29.586 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 15:48:45.124 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 15:48:45.919 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 15:48:46.034 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 15:54:10.921 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 15:54:11.769 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 15:54:11.875 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 16:23:35.559 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 16:23:36.352 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 16:23:36.463 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web-error-2024-09-04.0.log b/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web-error-2024-09-04.0.log
new file mode 100644
index 0000000..cfcd648
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web-error-2024-09-04.0.log
@@ -0,0 +1,33 @@
+2024-09-04 14:31:31.401 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 14:31:32.230 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 14:31:32.380 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 15:50:57.800 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 15:50:58.596 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 15:50:58.703 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 16:44:37.391 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 16:44:38.177 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 16:44:38.289 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 17:30:04.632 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 17:30:05.415 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 17:30:05.519 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 17:32:38.630 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 17:32:39.418 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 17:32:39.532 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 17:34:53.441 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 17:34:54.304 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 17:34:54.431 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 17:40:08.161 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 17:40:09.004 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 17:40:09.123 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 17:58:40.321 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 17:58:41.130 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 17:58:41.231 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 18:05:07.883 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 18:05:08.666 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 18:05:08.768 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 18:07:03.440 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 18:07:04.390 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 18:07:04.507 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 18:11:56.504 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 18:11:57.275 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 18:11:57.384 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web-info-2024-09-03.0.log b/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web-info-2024-09-03.0.log
new file mode 100644
index 0000000..59ca5eb
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web-info-2024-09-03.0.log
@@ -0,0 +1,672 @@
+2024-09-03 11:37:45.325 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$41d375bd] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:37:47.774 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-03 11:37:48.809 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-03 11:37:48.812 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-03 11:37:48.857 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 31ms. Found 0 repository interfaces.
+2024-09-03 11:37:49.254 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=e3b4be87-dd11-31e6-b95b-26b75e8dd448
+2024-09-03 11:37:49.512 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$25b972c0] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:37:49.559 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:37:49.565 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$8f47e391] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:37:49.701 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:37:49.746 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$be673afa] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:37:49.755 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:37:49.757 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@202d9236' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:37:49.763 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$e33bddac] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:37:49.772 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:37:49.806 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$41d375bd] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:37:50.773 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-03 11:37:50.789 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 11:37:50.797 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-03 11:37:50.797 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-03 11:37:50.980 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-03 11:37:50.981 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 3204 ms
+2024-09-03 11:37:51.195 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-03 11:37:51.526 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-03 11:37:51.527 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-03 11:37:51.528 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-03 11:37:51.574 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-03 11:37:54.895 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-03 11:37:55.950 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-03 11:37:56.051 [main] INFO  o.s.security.web.DefaultSecurityFilterChain - Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@3a72e2e8, org.springframework.security.web.context.SecurityContextPersistenceFilter@563263a, org.springframework.security.web.header.HeaderWriterFilter@1be77a76, org.springframework.web.filter.CorsFilter@42401b81, org.springframework.security.web.authentication.logout.LogoutFilter@4a520f05, com.mes.common.filter.JwtAuthenticationTokenFilter@3a588b5f, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@4fea5ee0, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@6e794f53, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@102af1bb, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@f1d1463, org.springframework.security.web.session.SessionManagementFilter@7878bbdb, org.springframework.security.web.access.ExceptionTranslationFilter@7e1a9173, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@e0847a9]
+2024-09-03 11:37:56.103 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 11:37:56.109 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 11:37:56.432 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-03 11:37:58.714 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 11:37:58.784 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-03 11:37:59.265 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-03 11:38:01.439 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 11:38:02.447 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-03 11:38:02.473 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-03 11:38:02.508 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-03 11:38:02.877 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:38:02.879 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 11:38:02.935 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 54403 (http) with context path ''
+2024-09-03 11:38:03.002 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:54403 register finished
+2024-09-03 11:38:03.889 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:38:04.902 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:38:05.028 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 11:38:05.030 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 22.379 seconds (JVM running for 23.369)
+2024-09-03 11:38:05.032 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-03 11:38:05.799 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - 瀹屾暣璺緞
+2024-09-03 11:38:05.810 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-03 11:38:05.811 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-03 11:38:05.815 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-03 11:38:05.816 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-03 11:38:05.820 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-03 11:38:05.826 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-03 11:38:05.827 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-03 11:45:27.371 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$41d375bd] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:45:29.564 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-03 11:45:30.616 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-03 11:45:30.620 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-03 11:45:30.672 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 37ms. Found 0 repository interfaces.
+2024-09-03 11:45:31.088 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=e3b4be87-dd11-31e6-b95b-26b75e8dd448
+2024-09-03 11:45:31.313 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$25b972c0] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:45:31.360 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:45:31.367 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$8f47e391] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:45:31.503 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:45:31.543 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$be673afa] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:45:31.553 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:45:31.555 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@41bfa9e9' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:45:31.563 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$e33bddac] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:45:31.574 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:45:31.608 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$41d375bd] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:45:32.578 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-03 11:45:32.592 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 11:45:32.601 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-03 11:45:32.602 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-03 11:45:32.811 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-03 11:45:32.811 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 3243 ms
+2024-09-03 11:45:33.046 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-03 11:45:33.350 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-03 11:45:33.352 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-03 11:45:33.352 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-03 11:45:33.408 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-03 11:45:36.746 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-03 11:45:37.876 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-03 11:45:37.984 [main] INFO  o.s.security.web.DefaultSecurityFilterChain - Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@223cbf0d, org.springframework.security.web.context.SecurityContextPersistenceFilter@3b9c9b8b, org.springframework.security.web.header.HeaderWriterFilter@3b33fff9, org.springframework.web.filter.CorsFilter@4a4ff5ed, org.springframework.security.web.authentication.logout.LogoutFilter@69ba72da, com.mes.common.filter.JwtAuthenticationTokenFilter@283a8ad6, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@61c4cebd, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@248d3a, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@1be77a76, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@5ddb302, org.springframework.security.web.session.SessionManagementFilter@fee881, org.springframework.security.web.access.ExceptionTranslationFilter@37806be6, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@391d28ea]
+2024-09-03 11:45:38.040 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 11:45:38.046 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 11:45:38.359 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-03 11:45:40.660 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 11:45:40.763 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-03 11:45:41.268 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-03 11:45:43.539 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 11:45:44.508 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-03 11:45:44.533 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-03 11:45:44.567 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-03 11:45:44.845 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 11:45:44.870 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 54672 (http) with context path ''
+2024-09-03 11:45:44.939 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:54672 register finished
+2024-09-03 11:45:46.958 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 11:45:46.959 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 22.304 seconds (JVM running for 23.28)
+2024-09-03 11:45:46.961 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-03 11:45:47.742 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - 瀹屾暣璺緞
+2024-09-03 11:45:47.755 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-03 11:45:47.757 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-03 11:45:47.762 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-03 11:45:47.762 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-03 11:45:47.768 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-03 11:45:47.774 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-03 11:45:47.774 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-03 11:47:49.198 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$41d375bd] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:47:51.394 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-03 11:47:52.449 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-03 11:47:52.453 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-03 11:47:52.498 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 31ms. Found 0 repository interfaces.
+2024-09-03 11:47:52.888 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=e3b4be87-dd11-31e6-b95b-26b75e8dd448
+2024-09-03 11:47:53.109 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$25b972c0] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:47:53.158 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:47:53.165 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$8f47e391] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:47:53.308 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:47:53.358 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$be673afa] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:47:53.368 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:47:53.371 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@41bfa9e9' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:47:53.381 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$e33bddac] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:47:53.390 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:47:53.432 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$41d375bd] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:47:54.413 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-03 11:47:54.430 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 11:47:54.440 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-03 11:47:54.440 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-03 11:47:54.610 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-03 11:47:54.610 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 3212 ms
+2024-09-03 11:47:54.855 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-03 11:47:55.167 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-03 11:47:55.169 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-03 11:47:55.169 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-03 11:47:55.217 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-03 11:47:58.550 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-03 11:47:59.663 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-03 11:47:59.783 [main] INFO  o.s.security.web.DefaultSecurityFilterChain - Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@223cbf0d, org.springframework.security.web.context.SecurityContextPersistenceFilter@3b9c9b8b, org.springframework.security.web.header.HeaderWriterFilter@3b33fff9, org.springframework.web.filter.CorsFilter@4a4ff5ed, org.springframework.security.web.authentication.logout.LogoutFilter@69ba72da, com.mes.common.filter.JwtAuthenticationTokenFilter@283a8ad6, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@61c4cebd, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@248d3a, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@1be77a76, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@5ddb302, org.springframework.security.web.session.SessionManagementFilter@fee881, org.springframework.security.web.access.ExceptionTranslationFilter@37806be6, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@391d28ea]
+2024-09-03 11:47:59.840 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 11:47:59.848 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 11:48:00.183 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-03 11:48:02.510 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 11:48:02.567 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-03 11:48:02.983 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-03 11:48:05.102 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 11:48:06.135 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-03 11:48:06.158 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-03 11:48:06.204 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-03 11:48:06.525 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 11:48:06.552 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 54718 (http) with context path ''
+2024-09-03 11:48:06.616 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:54718 register finished
+2024-09-03 11:48:08.635 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 11:48:08.637 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 22.09 seconds (JVM running for 23.07)
+2024-09-03 11:48:08.639 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-03 11:48:09.405 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - 瀹屾暣璺緞
+2024-09-03 11:48:09.420 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-03 11:48:09.424 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-03 11:48:09.427 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-03 11:48:09.428 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-03 11:48:09.433 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-03 11:48:09.440 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-03 11:48:09.440 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-03 14:16:51.418 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$2de4f6c6] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:16:52.517 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-03 14:16:53.637 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-03 14:16:53.640 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-03 14:16:53.692 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 34ms. Found 0 repository interfaces.
+2024-09-03 14:16:54.109 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=e3b4be87-dd11-31e6-b95b-26b75e8dd448
+2024-09-03 14:16:54.313 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$11caf3c9] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:16:54.363 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:16:54.368 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$7b59649a] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:16:54.517 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:16:54.563 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$aa78bc03] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:16:54.579 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:16:54.582 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@764b14b8' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:16:54.588 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$cf4d5eb5] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:16:54.598 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:16:54.632 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$2de4f6c6] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:16:55.688 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-03 14:16:55.704 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 14:16:55.713 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-03 14:16:55.713 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-03 14:16:55.891 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-03 14:16:55.892 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 3371 ms
+2024-09-03 14:16:56.148 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-03 14:16:56.670 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-03 14:16:56.672 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-03 14:16:56.672 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-03 14:16:56.726 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-03 14:17:01.942 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-03 14:17:04.175 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-03 14:17:04.337 [main] INFO  o.s.security.web.DefaultSecurityFilterChain - Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@2e85e3f1, org.springframework.security.web.context.SecurityContextPersistenceFilter@53e28097, org.springframework.security.web.header.HeaderWriterFilter@315cf170, org.springframework.web.filter.CorsFilter@195498aa, org.springframework.security.web.authentication.logout.LogoutFilter@389a1e34, com.mes.common.filter.JwtAuthenticationTokenFilter@16ac4d3d, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@7b1c501d, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@75f4d8a8, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@797f97e3, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@4b360972, org.springframework.security.web.session.SessionManagementFilter@25f7cc38, org.springframework.security.web.access.ExceptionTranslationFilter@4ca0b9b1, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@35536760]
+2024-09-03 14:17:04.401 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 14:17:04.410 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 14:17:04.751 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-03 14:17:06.039 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-03 14:17:06.504 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-03 14:17:08.442 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-03 14:17:08.481 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-03 14:17:08.512 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-03 14:17:08.786 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 14:17:08.816 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 58001 (http) with context path ''
+2024-09-03 14:17:08.881 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:58001 register finished
+2024-09-03 14:17:09.793 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 20.159 seconds (JVM running for 21.267)
+2024-09-03 14:17:09.794 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-03 14:17:10.157 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-03 14:17:10.158 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-03 14:17:10.162 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-03 14:17:10.162 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-03 14:17:10.168 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-03 14:17:10.175 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-03 14:17:10.175 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-03 14:20:17.749 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$2de4f6c6] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:20:18.837 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-03 14:20:19.904 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-03 14:20:19.907 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-03 14:20:19.957 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 37ms. Found 0 repository interfaces.
+2024-09-03 14:20:20.377 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=e3b4be87-dd11-31e6-b95b-26b75e8dd448
+2024-09-03 14:20:20.604 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$11caf3c9] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:20:20.664 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:20:20.670 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$7b59649a] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:20:20.808 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:20:20.843 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$aa78bc03] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:20:20.850 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:20:20.852 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@7069f076' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:20:20.861 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$cf4d5eb5] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:20:20.879 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:20:20.920 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$2de4f6c6] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:20:21.852 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-03 14:20:21.867 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 14:20:21.878 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-03 14:20:21.878 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-03 14:20:22.065 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-03 14:20:22.066 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 3226 ms
+2024-09-03 14:20:22.295 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-03 14:20:22.641 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-03 14:20:22.642 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-03 14:20:22.643 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-03 14:20:22.689 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-03 14:20:26.165 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-03 14:20:27.331 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-03 14:20:27.456 [main] INFO  o.s.security.web.DefaultSecurityFilterChain - Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@24fef542, org.springframework.security.web.context.SecurityContextPersistenceFilter@563263a, org.springframework.security.web.header.HeaderWriterFilter@1be77a76, org.springframework.web.filter.CorsFilter@44ddb518, org.springframework.security.web.authentication.logout.LogoutFilter@4a520f05, com.mes.common.filter.JwtAuthenticationTokenFilter@16ac4d3d, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@70022d44, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@6e794f53, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@102af1bb, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@e36bc01, org.springframework.security.web.session.SessionManagementFilter@7878bbdb, org.springframework.security.web.access.ExceptionTranslationFilter@7e1a9173, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@47ef5a33]
+2024-09-03 14:20:27.530 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 14:20:27.540 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 14:20:27.913 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-03 14:20:29.144 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-03 14:20:29.574 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-03 14:20:31.578 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-03 14:20:31.610 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-03 14:20:31.649 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-03 14:20:31.956 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 14:20:31.985 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 58063 (http) with context path ''
+2024-09-03 14:20:32.052 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:58063 register finished
+2024-09-03 14:20:32.967 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 16.828 seconds (JVM running for 17.8)
+2024-09-03 14:20:32.969 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-03 14:20:33.837 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-03 14:20:33.838 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-03 14:20:33.842 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-03 14:20:33.843 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-03 14:20:33.849 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-03 14:20:33.855 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-03 14:20:33.856 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-03 14:24:23.085 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$2de4f6c6] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:24:24.165 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-03 14:24:25.255 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-03 14:24:25.258 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-03 14:24:25.309 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 33ms. Found 0 repository interfaces.
+2024-09-03 14:24:25.747 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=e3b4be87-dd11-31e6-b95b-26b75e8dd448
+2024-09-03 14:24:25.966 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$11caf3c9] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:24:26.016 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:24:26.021 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$7b59649a] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:24:26.162 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:24:26.201 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$aa78bc03] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:24:26.209 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:24:26.212 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@7069f076' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:24:26.220 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$cf4d5eb5] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:24:26.232 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:24:26.281 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$2de4f6c6] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:24:27.215 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-03 14:24:27.230 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 14:24:27.239 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-03 14:24:27.239 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-03 14:24:27.425 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-03 14:24:27.425 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 3258 ms
+2024-09-03 14:24:27.641 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-03 14:24:27.982 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-03 14:24:27.983 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-03 14:24:27.983 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-03 14:24:28.039 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-03 14:24:31.464 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-03 14:24:32.640 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-03 14:24:32.759 [main] INFO  o.s.security.web.DefaultSecurityFilterChain - Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@27e21083, org.springframework.security.web.context.SecurityContextPersistenceFilter@3568ea59, org.springframework.security.web.header.HeaderWriterFilter@797f97e3, org.springframework.web.filter.CorsFilter@67a6a2d0, org.springframework.security.web.authentication.logout.LogoutFilter@54e0f76f, com.mes.common.filter.JwtAuthenticationTokenFilter@45f9d394, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@5a7a6d34, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@173b1af1, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@25d0b918, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@49e0b123, org.springframework.security.web.session.SessionManagementFilter@77cd235b, org.springframework.security.web.access.ExceptionTranslationFilter@595ec862, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@44ddb518]
+2024-09-03 14:24:32.821 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 14:24:32.830 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 14:24:33.184 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-03 14:24:34.473 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-03 14:24:34.904 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-03 14:24:36.829 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-03 14:24:36.853 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-03 14:24:36.884 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-03 14:24:37.153 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 14:24:37.182 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 58121 (http) with context path ''
+2024-09-03 14:24:37.261 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:58121 register finished
+2024-09-03 14:24:38.170 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 16.683 seconds (JVM running for 17.697)
+2024-09-03 14:24:38.172 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-03 14:24:39.105 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - {}
+2024-09-03 14:24:39.113 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-03 14:24:39.114 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-03 14:24:39.118 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-03 14:24:39.119 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-03 14:24:39.124 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-03 14:24:39.130 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-03 14:24:39.131 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-03 14:25:41.769 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$2de4f6c6] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:25:42.852 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-03 14:25:43.909 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-03 14:25:43.912 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-03 14:25:43.960 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 34ms. Found 0 repository interfaces.
+2024-09-03 14:25:44.391 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=e3b4be87-dd11-31e6-b95b-26b75e8dd448
+2024-09-03 14:25:44.616 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$11caf3c9] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:25:44.673 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:25:44.679 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$7b59649a] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:25:44.817 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:25:44.853 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$aa78bc03] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:25:44.862 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:25:44.864 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@7069f076' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:25:44.872 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$cf4d5eb5] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:25:44.883 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:25:44.933 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$2de4f6c6] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:25:45.852 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-03 14:25:45.867 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 14:25:45.877 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-03 14:25:45.877 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-03 14:25:46.061 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-03 14:25:46.062 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 3205 ms
+2024-09-03 14:25:46.292 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-03 14:25:46.817 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-03 14:25:46.818 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-03 14:25:46.818 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-03 14:25:46.865 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-03 14:25:50.228 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-03 14:25:51.310 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-03 14:25:51.444 [main] INFO  o.s.security.web.DefaultSecurityFilterChain - Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@24fef542, org.springframework.security.web.context.SecurityContextPersistenceFilter@563263a, org.springframework.security.web.header.HeaderWriterFilter@1be77a76, org.springframework.web.filter.CorsFilter@44ddb518, org.springframework.security.web.authentication.logout.LogoutFilter@4a520f05, com.mes.common.filter.JwtAuthenticationTokenFilter@16ac4d3d, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@70022d44, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@6e794f53, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@102af1bb, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@e36bc01, org.springframework.security.web.session.SessionManagementFilter@7878bbdb, org.springframework.security.web.access.ExceptionTranslationFilter@7e1a9173, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@47ef5a33]
+2024-09-03 14:25:51.521 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 14:25:51.533 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 14:25:51.909 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-03 14:25:53.240 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-03 14:25:53.670 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-03 14:25:55.621 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-03 14:25:55.646 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-03 14:25:55.683 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-03 14:25:55.974 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 14:25:56.003 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 58148 (http) with context path ''
+2024-09-03 14:25:56.070 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:58148 register finished
+2024-09-03 14:25:56.986 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 16.809 seconds (JVM running for 17.798)
+2024-09-03 14:25:56.987 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-03 14:25:57.362 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-03 14:25:57.363 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-03 14:25:57.367 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-03 14:25:57.368 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-03 14:25:57.373 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-03 14:25:57.380 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-03 14:25:57.380 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-03 14:48:14.739 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$2de4f6c6] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:48:15.833 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-03 14:48:16.847 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-03 14:48:16.851 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-03 14:48:16.904 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 37ms. Found 0 repository interfaces.
+2024-09-03 14:48:17.318 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=e3b4be87-dd11-31e6-b95b-26b75e8dd448
+2024-09-03 14:48:17.548 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$11caf3c9] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:48:17.597 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:48:17.603 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$7b59649a] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:48:17.743 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:48:17.778 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$aa78bc03] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:48:17.790 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:48:17.792 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@7069f076' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:48:17.806 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$cf4d5eb5] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:48:17.819 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:48:17.876 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$2de4f6c6] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:48:18.818 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-03 14:48:18.834 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 14:48:18.843 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-03 14:48:18.843 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-03 14:48:19.024 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-03 14:48:19.025 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 3188 ms
+2024-09-03 14:48:19.233 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-03 14:48:19.588 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-03 14:48:19.589 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-03 14:48:19.589 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-03 14:48:19.640 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-03 14:48:22.988 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-03 14:48:24.074 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-03 14:48:24.188 [main] INFO  o.s.security.web.DefaultSecurityFilterChain - Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@24fef542, org.springframework.security.web.context.SecurityContextPersistenceFilter@563263a, org.springframework.security.web.header.HeaderWriterFilter@1be77a76, org.springframework.web.filter.CorsFilter@44ddb518, org.springframework.security.web.authentication.logout.LogoutFilter@4a520f05, com.mes.common.filter.JwtAuthenticationTokenFilter@16ac4d3d, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@70022d44, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@6e794f53, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@102af1bb, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@e36bc01, org.springframework.security.web.session.SessionManagementFilter@7878bbdb, org.springframework.security.web.access.ExceptionTranslationFilter@7e1a9173, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@47ef5a33]
+2024-09-03 14:48:24.244 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 14:48:24.253 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 14:48:24.612 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-03 14:48:25.931 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-03 14:48:26.496 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-03 14:48:28.565 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-03 14:48:28.593 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-03 14:48:28.623 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-03 14:48:28.915 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 14:48:28.945 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 58522 (http) with context path ''
+2024-09-03 14:48:29.014 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:58522 register finished
+2024-09-03 14:48:29.927 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 16.783 seconds (JVM running for 17.784)
+2024-09-03 14:48:29.929 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-03 14:48:30.770 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - [{password=admin, user_id=1, role_id=1, id=1, account=admin}]
+2024-09-03 14:48:30.787 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-03 14:48:30.789 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-03 14:48:30.795 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-03 14:48:30.796 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-03 14:48:30.803 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-03 14:48:30.811 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-03 14:48:30.812 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-03 14:58:17.223 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$2de4f6c6] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:58:18.339 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-03 14:58:19.411 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-03 14:58:19.414 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-03 14:58:19.463 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 35ms. Found 0 repository interfaces.
+2024-09-03 14:58:19.904 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=e3b4be87-dd11-31e6-b95b-26b75e8dd448
+2024-09-03 14:58:20.118 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$11caf3c9] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:58:20.171 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:58:20.176 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$7b59649a] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:58:20.314 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:58:20.344 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$aa78bc03] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:58:20.355 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:58:20.358 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@7069f076' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:58:20.368 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$cf4d5eb5] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:58:20.378 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:58:20.423 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$2de4f6c6] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 14:58:21.348 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-03 14:58:21.363 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 14:58:21.374 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-03 14:58:21.375 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-03 14:58:21.558 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-03 14:58:21.559 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 3217 ms
+2024-09-03 14:58:21.778 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-03 14:58:22.123 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-03 14:58:22.124 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-03 14:58:22.125 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-03 14:58:22.180 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-03 14:58:25.583 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-03 14:58:26.674 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-03 14:58:26.781 [main] INFO  o.s.security.web.DefaultSecurityFilterChain - Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@24fef542, org.springframework.security.web.context.SecurityContextPersistenceFilter@563263a, org.springframework.security.web.header.HeaderWriterFilter@1be77a76, org.springframework.web.filter.CorsFilter@44ddb518, org.springframework.security.web.authentication.logout.LogoutFilter@4a520f05, com.mes.common.filter.JwtAuthenticationTokenFilter@16ac4d3d, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@70022d44, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@6e794f53, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@102af1bb, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@e36bc01, org.springframework.security.web.session.SessionManagementFilter@7878bbdb, org.springframework.security.web.access.ExceptionTranslationFilter@7e1a9173, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@47ef5a33]
+2024-09-03 14:58:26.836 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 14:58:26.842 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 14:58:27.190 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-03 14:58:28.536 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-03 14:58:28.980 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-03 14:58:30.922 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-03 14:58:30.951 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-03 14:58:30.990 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-03 14:58:31.272 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 14:58:31.300 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 58633 (http) with context path ''
+2024-09-03 14:58:31.368 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:58633 register finished
+2024-09-03 14:58:32.279 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 16.682 seconds (JVM running for 17.794)
+2024-09-03 14:58:32.281 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-03 14:58:33.208 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - [{page_url=shelf/task, role_menu_id=1, remark=1, role_name=admin, page_id=1, password=admin, page_number=shelf/task, user_id=1, role_id=1, role_remark=绠$悊鍛�, menu_name=浠撳偍, page_name=浠撳偍浠诲姟, menu_number=1, id=1, role_number=u1, account=admin, menu_id=1}]
+2024-09-03 14:58:33.216 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-03 14:58:33.217 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-03 14:58:33.222 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-03 14:58:33.223 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-03 14:58:33.229 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-03 14:58:33.234 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-03 14:58:33.235 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-03 15:00:25.452 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$2de4f6c6] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:00:26.534 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-03 15:00:27.599 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-03 15:00:27.604 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-03 15:00:27.658 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 38ms. Found 0 repository interfaces.
+2024-09-03 15:00:28.067 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=e3b4be87-dd11-31e6-b95b-26b75e8dd448
+2024-09-03 15:00:28.292 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$11caf3c9] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:00:28.343 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:00:28.349 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$7b59649a] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:00:28.510 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:00:28.557 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$aa78bc03] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:00:28.565 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:00:28.567 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@764b14b8' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:00:28.573 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$cf4d5eb5] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:00:28.584 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:00:28.622 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$2de4f6c6] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:00:29.567 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-03 15:00:29.586 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 15:00:29.595 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-03 15:00:29.596 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-03 15:00:29.785 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-03 15:00:29.785 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 3248 ms
+2024-09-03 15:00:30.027 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-03 15:00:30.359 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-03 15:00:30.360 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-03 15:00:30.361 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-03 15:00:30.415 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-03 15:00:33.779 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-03 15:00:34.842 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-03 15:00:34.957 [main] INFO  o.s.security.web.DefaultSecurityFilterChain - Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@24fef542, org.springframework.security.web.context.SecurityContextPersistenceFilter@563263a, org.springframework.security.web.header.HeaderWriterFilter@1be77a76, org.springframework.web.filter.CorsFilter@44ddb518, org.springframework.security.web.authentication.logout.LogoutFilter@4a520f05, com.mes.common.filter.JwtAuthenticationTokenFilter@16ac4d3d, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@70022d44, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@6e794f53, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@102af1bb, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@e36bc01, org.springframework.security.web.session.SessionManagementFilter@7878bbdb, org.springframework.security.web.access.ExceptionTranslationFilter@7e1a9173, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@47ef5a33]
+2024-09-03 15:00:35.019 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 15:00:35.027 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 15:00:35.364 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-03 15:00:36.602 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-03 15:00:37.036 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-03 15:00:39.007 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-03 15:00:39.036 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-03 15:00:39.080 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-03 15:00:39.360 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 15:00:39.384 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 58669 (http) with context path ''
+2024-09-03 15:00:39.450 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:58669 register finished
+2024-09-03 15:00:40.368 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 16.516 seconds (JVM running for 17.554)
+2024-09-03 15:00:40.370 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-03 15:00:41.263 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - [{page_url=shelf/task, role_menu_id=1, remark=1, role_name=admin, page_id=1, password=admin, page_number=shelf/task, user_id=1, role_id=1, role_remark=绠$悊鍛�, menu_name=浠撳偍, page_name=浠撳偍浠诲姟, menu_number=1, id=1, role_number=u1, account=admin, menu_id=1}, {page_url=shelf/rack, role_menu_id=2, remark=2, role_name=admin, page_id=2, password=admin, page_number=shelf/rack, user_id=1, role_id=1, role_remark=绠$悊鍛�, menu_name=涓婄墖, page_name=浠撳偍鏂欐灦, menu_number=2, id=1, role_number=u1, account=admin, menu_id=2}]
+2024-09-03 15:00:41.272 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-03 15:00:41.273 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-03 15:00:41.277 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-03 15:00:41.278 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-03 15:00:41.283 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-03 15:00:41.289 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-03 15:00:41.289 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-03 15:48:41.964 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$2de4f6c6] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:48:43.070 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-03 15:48:44.128 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-03 15:48:44.128 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-03 15:48:44.184 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 40ms. Found 0 repository interfaces.
+2024-09-03 15:48:44.580 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=e3b4be87-dd11-31e6-b95b-26b75e8dd448
+2024-09-03 15:48:44.782 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$11caf3c9] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:48:44.824 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:48:44.834 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$7b59649a] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:48:44.974 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:48:45.016 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$aa78bc03] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:48:45.024 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:48:45.024 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@764b14b8' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:48:45.034 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$cf4d5eb5] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:48:45.054 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:48:45.096 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$2de4f6c6] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:48:46.019 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-03 15:48:46.034 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 15:48:46.045 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-03 15:48:46.045 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-03 15:48:46.229 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-03 15:48:46.229 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 3153 ms
+2024-09-03 15:48:46.447 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-03 15:48:46.819 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-03 15:48:46.819 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-03 15:48:46.819 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-03 15:48:46.871 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-03 15:48:50.378 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-03 15:48:51.444 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-03 15:48:51.554 [main] INFO  o.s.security.web.DefaultSecurityFilterChain - Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@24fef542, org.springframework.security.web.context.SecurityContextPersistenceFilter@563263a, org.springframework.security.web.header.HeaderWriterFilter@1be77a76, org.springframework.web.filter.CorsFilter@44ddb518, org.springframework.security.web.authentication.logout.LogoutFilter@4a520f05, com.mes.common.filter.JwtAuthenticationTokenFilter@16ac4d3d, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@70022d44, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@6e794f53, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@102af1bb, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@e36bc01, org.springframework.security.web.session.SessionManagementFilter@7878bbdb, org.springframework.security.web.access.ExceptionTranslationFilter@7e1a9173, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@47ef5a33]
+2024-09-03 15:48:51.614 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 15:48:51.614 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 15:48:51.934 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-03 15:48:53.224 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-03 15:48:53.654 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-03 15:48:55.689 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-03 15:48:55.709 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-03 15:48:55.744 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-03 15:48:56.024 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 15:48:56.059 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 59677 (http) with context path ''
+2024-09-03 15:48:56.129 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:59677 register finished
+2024-09-03 15:48:57.045 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 16.651 seconds (JVM running for 17.64)
+2024-09-03 15:48:57.045 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-03 15:48:58.004 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - [[{page_url=shelf/task, role_menu_id=1, remark=1, role_name=admin, page_id=1, password=admin, page_number=shelf/task, user_id=1, role_id=1, role_remark=绠$悊鍛�, menu_name=浠撳偍, page_name=浠撳偍浠诲姟, menu_number=1, id=1, role_number=u1, account=admin, menu_id=1}], [{page_url=shelf/rack, role_menu_id=2, remark=2, role_name=admin, page_id=2, password=admin, page_number=shelf/rack, user_id=1, role_id=1, role_remark=绠$悊鍛�, menu_name=涓婄墖, page_name=浠撳偍鏂欐灦, menu_number=2, id=1, role_number=u1, account=admin, menu_id=2}]]
+2024-09-03 15:48:58.014 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-03 15:48:58.024 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-03 15:48:58.029 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-03 15:48:58.029 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-03 15:48:58.034 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-03 15:48:58.034 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-03 15:48:58.034 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-03 15:54:07.399 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$2de4f6c6] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:54:08.505 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-03 15:54:09.794 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-03 15:54:09.798 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-03 15:54:09.847 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 34ms. Found 0 repository interfaces.
+2024-09-03 15:54:10.332 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=e3b4be87-dd11-31e6-b95b-26b75e8dd448
+2024-09-03 15:54:10.557 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$11caf3c9] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:54:10.607 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:54:10.615 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$7b59649a] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:54:10.765 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:54:10.802 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$aa78bc03] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:54:10.811 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:54:10.813 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@7069f076' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:54:10.823 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$cf4d5eb5] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:54:10.836 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:54:10.885 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$2de4f6c6] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 15:54:11.860 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-03 15:54:11.875 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 15:54:11.884 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-03 15:54:11.885 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-03 15:54:12.072 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-03 15:54:12.073 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 3565 ms
+2024-09-03 15:54:12.290 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-03 15:54:12.637 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-03 15:54:12.638 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-03 15:54:12.639 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-03 15:54:12.694 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-03 15:54:16.052 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-03 15:54:17.139 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-03 15:54:17.266 [main] INFO  o.s.security.web.DefaultSecurityFilterChain - Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@2e85e3f1, org.springframework.security.web.context.SecurityContextPersistenceFilter@53e28097, org.springframework.security.web.header.HeaderWriterFilter@315cf170, org.springframework.web.filter.CorsFilter@195498aa, org.springframework.security.web.authentication.logout.LogoutFilter@389a1e34, com.mes.common.filter.JwtAuthenticationTokenFilter@16ac4d3d, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@7b1c501d, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@75f4d8a8, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@797f97e3, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@4b360972, org.springframework.security.web.session.SessionManagementFilter@25f7cc38, org.springframework.security.web.access.ExceptionTranslationFilter@4ca0b9b1, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@35536760]
+2024-09-03 15:54:17.331 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 15:54:17.339 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 15:54:17.728 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-03 15:54:19.002 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-03 15:54:19.517 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-03 15:54:21.577 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-03 15:54:21.601 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-03 15:54:21.639 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-03 15:54:22.005 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 15:54:22.036 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 59800 (http) with context path ''
+2024-09-03 15:54:22.114 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:59800 register finished
+2024-09-03 15:54:23.029 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 17.223 seconds (JVM running for 18.255)
+2024-09-03 15:54:23.032 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-03 15:54:24.413 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - {1=[{page_url=shelf/task, role_menu_id=1, remark=1, role_name=admin, page_id=1, password=admin, page_number=shelf/task, user_id=1, role_id=1, role_remark=绠$悊鍛�, menu_name=浠撳偍, page_name=浠撳偍浠诲姟, menu_number=1, id=1, role_number=u1, account=admin, menu_id=1}], 2=[{page_url=shelf/rack, role_menu_id=2, remark=2, role_name=admin, page_id=2, password=admin, page_number=shelf/rack, user_id=1, role_id=1, role_remark=绠$悊鍛�, menu_name=涓婄墖, page_name=浠撳偍鏂欐灦, menu_number=2, id=1, role_number=u1, account=admin, menu_id=2}]}
+2024-09-03 15:54:24.424 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-03 15:54:24.426 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-03 15:54:24.431 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-03 15:54:24.431 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-03 15:54:24.436 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-03 15:54:24.442 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-03 15:54:24.442 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-03 16:23:32.347 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$2de4f6c6] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 16:23:33.438 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-03 16:23:34.491 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-03 16:23:34.495 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-03 16:23:34.550 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 37ms. Found 0 repository interfaces.
+2024-09-03 16:23:34.954 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=e3b4be87-dd11-31e6-b95b-26b75e8dd448
+2024-09-03 16:23:35.162 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$11caf3c9] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 16:23:35.210 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 16:23:35.217 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$7b59649a] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 16:23:35.388 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 16:23:35.430 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$aa78bc03] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 16:23:35.438 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 16:23:35.441 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@7069f076' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 16:23:35.451 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$cf4d5eb5] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 16:23:35.464 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 16:23:35.522 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$2de4f6c6] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 16:23:36.447 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-03 16:23:36.464 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 16:23:36.476 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-03 16:23:36.477 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-03 16:23:36.669 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-03 16:23:36.669 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 3228 ms
+2024-09-03 16:23:36.886 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-03 16:23:37.244 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-03 16:23:37.245 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-03 16:23:37.246 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-03 16:23:37.300 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-03 16:23:41.020 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-03 16:23:42.127 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-03 16:23:42.244 [main] INFO  o.s.security.web.DefaultSecurityFilterChain - Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@2e85e3f1, org.springframework.security.web.context.SecurityContextPersistenceFilter@53e28097, org.springframework.security.web.header.HeaderWriterFilter@315cf170, org.springframework.web.filter.CorsFilter@195498aa, org.springframework.security.web.authentication.logout.LogoutFilter@389a1e34, com.mes.common.filter.JwtAuthenticationTokenFilter@16ac4d3d, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@7b1c501d, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@75f4d8a8, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@797f97e3, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@4b360972, org.springframework.security.web.session.SessionManagementFilter@25f7cc38, org.springframework.security.web.access.ExceptionTranslationFilter@4ca0b9b1, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@35536760]
+2024-09-03 16:23:42.306 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 16:23:42.312 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 16:23:42.664 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-03 16:23:44.001 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-03 16:23:44.441 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-03 16:23:46.441 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-03 16:23:46.464 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-03 16:23:46.504 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-03 16:23:46.784 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-03 16:23:46.812 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 60124 (http) with context path ''
+2024-09-03 16:23:46.878 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:60124 register finished
+2024-09-03 16:23:47.889 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 17.15 seconds (JVM running for 18.154)
+2024-09-03 16:23:47.891 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-03 16:23:48.853 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - {user_id=1, role_id=1, id=1, role_menu=[{page_url=shelf/task, role_menu_id=1, remark=1, role_name=admin, page_id=1, password=admin, page_number=shelf/task, user_id=1, role_id=1, role_remark=绠$悊鍛�, menu_name=浠撳偍, page_name=浠撳偍浠诲姟, menu_number=1, id=1, role_number=u1, account=admin, menu_id=1}, {page_url=shelf/rack, role_menu_id=2, remark=2, role_name=admin, page_id=2, password=admin, page_number=shelf/rack, user_id=1, role_id=1, role_remark=绠$悊鍛�, menu_name=涓婄墖, page_name=浠撳偍鏂欐灦, menu_number=2, id=1, role_number=u1, account=admin, menu_id=2}], account=admin}
+2024-09-03 16:23:48.864 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-03 16:23:48.865 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-03 16:23:48.870 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-03 16:23:48.870 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-03 16:23:48.875 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-03 16:23:48.880 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-03 16:23:48.880 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web-info-2024-09-04.0.log b/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web-info-2024-09-04.0.log
new file mode 100644
index 0000000..3b58153
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web-info-2024-09-04.0.log
@@ -0,0 +1,493 @@
+2024-09-04 14:31:28.169 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$dfb659bc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 14:31:29.290 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-04 14:31:30.320 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-04 14:31:30.324 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-04 14:31:30.365 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 25ms. Found 0 repository interfaces.
+2024-09-04 14:31:30.760 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=cc7ddef6-fd7e-3b07-831a-bfa756c03f5b
+2024-09-04 14:31:30.977 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$c39c56bf] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 14:31:31.030 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 14:31:31.036 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$2d2ac790] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 14:31:31.313 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 14:31:31.355 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$dfb659bc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 14:31:32.362 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-04 14:31:32.380 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-04 14:31:32.390 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-04 14:31:32.391 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-04 14:31:32.581 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-04 14:31:32.581 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 3288 ms
+2024-09-04 14:31:32.862 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-04 14:31:33.170 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-04 14:31:33.171 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-04 14:31:33.171 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-04 14:31:33.228 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-04 14:31:35.778 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-04 14:31:36.591 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-04 14:31:36.633 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 14:31:36.643 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 14:31:37.012 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-04 14:31:38.418 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-04 14:31:39.161 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-04 14:31:41.238 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-04 14:31:41.270 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-04 14:31:41.325 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-04 14:31:41.531 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-04 14:31:41.562 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 62590 (http) with context path ''
+2024-09-04 14:31:41.708 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:62590 register finished
+2024-09-04 14:31:42.646 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 16.157 seconds (JVM running for 17.223)
+2024-09-04 14:31:42.648 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-04 14:31:43.698 [main] INFO  com.mes.md.service.impl.AccountServiceImpl - 鍒嗙粍鍐呭{涓婄墖=[{page_url=shelf/rack, role_menu_id=2, remark=2, role_name=admin, page_id=2, password=admin, page_number=shelf/rack, user_id=1, role_id=1, role_remark=绠$悊鍛�, menu_name=涓婄墖, page_name=浠撳偍鏂欐灦, menu_number=2, id=1, role_number=u1, account=admin, menu_id=2}], 浠撳偍=[{page_url=shelf/task, role_menu_id=1, remark=1, role_name=admin, page_id=1, password=admin, page_number=shelf/task, user_id=1, role_id=1, role_remark=绠$悊鍛�, menu_name=浠撳偍, page_name=浠撳偍浠诲姟, menu_number=1, id=1, role_number=u1, account=admin, menu_id=1}]}
+2024-09-04 14:31:43.698 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - {user_id=1, role_id=1, id=1, role_menu=[{page_url=shelf/task, role_menu_id=1, remark=1, role_name=admin, page_id=1, password=admin, page_number=shelf/task, user_id=1, role_id=1, role_remark=绠$悊鍛�, menu_name=浠撳偍, page_name=浠撳偍浠诲姟, menu_number=1, id=1, role_number=u1, account=admin, menu_id=1}, {page_url=shelf/rack, role_menu_id=2, remark=2, role_name=admin, page_id=2, password=admin, page_number=shelf/rack, user_id=1, role_id=1, role_remark=绠$悊鍛�, menu_name=涓婄墖, page_name=浠撳偍鏂欐灦, menu_number=2, id=1, role_number=u1, account=admin, menu_id=2}], account=admin}
+2024-09-04 14:31:43.707 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-04 14:31:43.708 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-04 14:31:43.713 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-04 14:31:43.714 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-04 14:31:43.717 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-04 14:31:43.724 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-04 14:31:43.724 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-04 15:50:54.819 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$dfb659bc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 15:50:55.893 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-04 15:50:56.882 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-04 15:50:56.885 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-04 15:50:56.923 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 23ms. Found 0 repository interfaces.
+2024-09-04 15:50:57.310 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=cc7ddef6-fd7e-3b07-831a-bfa756c03f5b
+2024-09-04 15:50:57.526 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$c39c56bf] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 15:50:57.582 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 15:50:57.587 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$2d2ac790] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 15:50:57.731 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 15:50:57.769 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$dfb659bc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 15:50:58.688 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-04 15:50:58.703 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-04 15:50:58.714 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-04 15:50:58.714 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-04 15:50:58.894 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-04 15:50:58.895 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 2999 ms
+2024-09-04 15:50:59.186 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-04 15:50:59.508 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-04 15:50:59.510 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-04 15:50:59.510 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-04 15:50:59.560 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-04 15:51:02.102 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-04 15:51:02.767 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-04 15:51:02.808 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 15:51:02.817 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 15:51:03.207 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-04 15:51:04.541 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-04 15:51:05.357 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-04 15:51:07.423 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-04 15:51:07.451 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-04 15:51:07.488 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-04 15:51:07.645 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-04 15:51:07.674 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 51223 (http) with context path ''
+2024-09-04 15:51:07.814 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:51223 register finished
+2024-09-04 15:51:08.728 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 15.609 seconds (JVM running for 16.585)
+2024-09-04 15:51:08.730 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-04 15:51:09.655 [main] INFO  com.mes.md.service.impl.AccountServiceImpl - 鍒嗙粍鍐呭{1=[{page_url=shelf/task, role_menu_id=1, remark=1, role_name=admin, page_id=1, password=admin, page_number=shelf/task, user_id=1, role_id=1, role_remark=绠$悊鍛�, menu_name=浠撳偍, page_name=浠撳偍浠诲姟, menu_number=1, id=1, role_number=u1, account=admin, menu_id=1}], 2=[{page_url=shelf/rack, role_menu_id=2, remark=2, role_name=admin, page_id=2, password=admin, page_number=shelf/rack, user_id=1, role_id=1, role_remark=绠$悊鍛�, menu_name=涓婄墖, page_name=浠撳偍鏂欐灦, menu_number=2, id=1, role_number=u1, account=admin, menu_id=2}]}
+2024-09-04 15:51:09.655 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - {user_id=1, role_id=1, id=1, role_menu=[{page_url=shelf/task, role_menu_id=1, remark=1, role_name=admin, page_id=1, password=admin, page_number=shelf/task, user_id=1, role_id=1, role_remark=绠$悊鍛�, menu_name=浠撳偍, page_name=浠撳偍浠诲姟, menu_number=1, id=1, role_number=u1, account=admin, menu_id=1}, {page_url=shelf/rack, role_menu_id=2, remark=2, role_name=admin, page_id=2, password=admin, page_number=shelf/rack, user_id=1, role_id=1, role_remark=绠$悊鍛�, menu_name=涓婄墖, page_name=浠撳偍鏂欐灦, menu_number=2, id=1, role_number=u1, account=admin, menu_id=2}], account=admin}
+2024-09-04 15:51:09.665 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-04 15:51:09.667 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-04 15:51:09.671 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-04 15:51:09.672 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-04 15:51:09.676 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-04 15:51:09.683 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-04 15:51:09.683 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-04 16:44:34.500 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$dfb659bc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 16:44:35.605 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-04 16:44:36.510 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-04 16:44:36.513 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-04 16:44:36.552 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 25ms. Found 0 repository interfaces.
+2024-09-04 16:44:36.921 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=cc7ddef6-fd7e-3b07-831a-bfa756c03f5b
+2024-09-04 16:44:37.121 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$c39c56bf] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 16:44:37.167 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 16:44:37.172 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$2d2ac790] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 16:44:37.322 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 16:44:37.362 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$dfb659bc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 16:44:38.274 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-04 16:44:38.290 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-04 16:44:38.300 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-04 16:44:38.300 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-04 16:44:38.489 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-04 16:44:38.490 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 2881 ms
+2024-09-04 16:44:38.763 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-04 16:44:39.051 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-04 16:44:39.053 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-04 16:44:39.053 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-04 16:44:39.108 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-04 16:44:41.788 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-04 16:44:42.483 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-04 16:44:42.522 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 16:44:42.530 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 16:44:42.925 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-04 16:44:44.324 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-04 16:44:45.074 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-04 16:44:47.061 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-04 16:44:47.086 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-04 16:44:47.119 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-04 16:44:47.295 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-04 16:44:47.324 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 54533 (http) with context path ''
+2024-09-04 16:44:47.465 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:54533 register finished
+2024-09-04 16:44:48.371 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 15.472 seconds (JVM running for 16.536)
+2024-09-04 16:44:48.373 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-04 16:44:49.750 [main] INFO  com.mes.md.service.impl.AccountServiceImpl - 鍒嗙粍鍐呭{1=[{page_url=shelf/task, role_menu_id=1, remark=1, role_name=admin, page_id=1, password=admin, page_number=shelf/task, user_id=1, role_id=1, role_remark=绠$悊鍛�, menu_name=浠撳偍, page_name=浠撳偍浠诲姟, menu_number=1, id=1, role_number=u1, account=admin, menu_id=1}], 2=[{page_url=shelf/rack, role_menu_id=2, remark=2, role_name=admin, page_id=2, password=admin, page_number=shelf/rack, user_id=1, role_id=1, role_remark=绠$悊鍛�, menu_name=涓婄墖, page_name=浠撳偍鏂欐灦, menu_number=2, id=1, role_number=u1, account=admin, menu_id=2}]}
+2024-09-04 16:44:49.752 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - {pages=[{page_url=shelf/rack, page_id=2, page_number=shelf/rack, page_name=浠撳偍鏂欐灦, menu_sequence=null}], user_id=1, role_id=1, menu_remark=null, menu_name=涓婄墖, menu_number=2, id=1, account=admin, menu_id=2}
+2024-09-04 16:44:49.767 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-04 16:44:49.769 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-04 16:44:49.779 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-04 16:44:49.779 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-04 16:44:49.783 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-04 16:44:49.789 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-04 16:44:49.790 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-04 17:30:01.613 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$dfb659bc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:30:02.698 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-04 17:30:03.639 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-04 17:30:03.643 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-04 17:30:03.695 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 35ms. Found 0 repository interfaces.
+2024-09-04 17:30:04.101 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=cc7ddef6-fd7e-3b07-831a-bfa756c03f5b
+2024-09-04 17:30:04.336 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$c39c56bf] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:30:04.386 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:30:04.393 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$2d2ac790] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:30:04.548 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:30:04.602 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$dfb659bc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:30:05.503 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-04 17:30:05.519 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-04 17:30:05.529 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-04 17:30:05.529 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-04 17:30:05.748 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-04 17:30:05.748 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 3047 ms
+2024-09-04 17:30:06.055 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-04 17:30:06.326 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-04 17:30:06.328 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-04 17:30:06.328 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-04 17:30:06.365 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-04 17:30:08.840 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-04 17:30:09.721 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-04 17:30:09.764 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 17:30:09.773 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 17:30:10.122 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-04 17:30:11.472 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-04 17:30:12.268 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-04 17:30:14.814 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-04 17:30:14.843 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-04 17:30:14.883 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-04 17:30:15.052 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-04 17:30:15.080 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 57224 (http) with context path ''
+2024-09-04 17:30:15.214 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:57224 register finished
+2024-09-04 17:30:16.386 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 16.4 seconds (JVM running for 17.42)
+2024-09-04 17:30:16.388 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-04 17:30:17.831 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-04 17:30:17.832 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-04 17:30:17.837 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-04 17:30:17.837 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-04 17:30:17.842 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-04 17:30:17.850 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-04 17:30:17.850 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-04 17:32:35.684 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$dfb659bc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:32:36.769 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-04 17:32:37.694 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-04 17:32:37.696 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-04 17:32:37.733 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 24ms. Found 0 repository interfaces.
+2024-09-04 17:32:38.148 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=cc7ddef6-fd7e-3b07-831a-bfa756c03f5b
+2024-09-04 17:32:38.367 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$c39c56bf] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:32:38.414 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:32:38.419 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$2d2ac790] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:32:38.549 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:32:38.585 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$dfb659bc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:32:39.513 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-04 17:32:39.532 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-04 17:32:39.543 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-04 17:32:39.544 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-04 17:32:39.777 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-04 17:32:39.777 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 3005 ms
+2024-09-04 17:32:40.044 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-04 17:32:40.326 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-04 17:32:40.327 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-04 17:32:40.327 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-04 17:32:40.370 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-04 17:32:42.909 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-04 17:32:43.609 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-04 17:32:43.646 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 17:32:43.653 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 17:32:44.047 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-04 17:32:45.330 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-04 17:32:46.025 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-04 17:32:47.989 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-04 17:32:48.013 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-04 17:32:48.046 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-04 17:32:48.204 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-04 17:32:48.240 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 57380 (http) with context path ''
+2024-09-04 17:32:48.385 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:57380 register finished
+2024-09-04 17:32:49.318 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 15.272 seconds (JVM running for 16.272)
+2024-09-04 17:32:49.320 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-04 17:32:50.289 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-04 17:32:50.291 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-04 17:32:50.295 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-04 17:32:50.296 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-04 17:32:50.301 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-04 17:32:50.309 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-04 17:32:50.309 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-04 17:34:50.106 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$2c54b95c] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:34:51.256 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-04 17:34:52.397 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-04 17:34:52.402 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-04 17:34:52.450 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 29ms. Found 0 repository interfaces.
+2024-09-04 17:34:52.877 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=cc7ddef6-fd7e-3b07-831a-bfa756c03f5b
+2024-09-04 17:34:53.142 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$103ab65f] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:34:53.195 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:34:53.203 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$79c92730] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:34:53.352 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:34:53.400 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$2c54b95c] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:34:54.413 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-04 17:34:54.431 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-04 17:34:54.442 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-04 17:34:54.443 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-04 17:34:54.643 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-04 17:34:54.643 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 3383 ms
+2024-09-04 17:34:55.040 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-04 17:34:55.356 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-04 17:34:55.358 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-04 17:34:55.358 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-04 17:34:55.402 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-04 17:34:58.116 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-04 17:34:58.941 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-04 17:34:58.985 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 17:34:58.993 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 17:34:59.444 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-04 17:35:01.122 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-04 17:35:01.788 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-04 17:35:03.899 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-04 17:35:03.932 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-04 17:35:03.977 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-04 17:35:04.201 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-04 17:35:04.259 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 57530 (http) with context path ''
+2024-09-04 17:35:04.414 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:57530 register finished
+2024-09-04 17:35:05.327 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 17.111 seconds (JVM running for 18.543)
+2024-09-04 17:35:05.329 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-04 17:39:59.013 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-04 17:39:59.015 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-04 17:39:59.024 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-04 17:39:59.025 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-04 17:39:59.029 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-04 17:39:59.039 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-04 17:39:59.040 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-04 17:40:04.940 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$2c54b95c] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:40:06.048 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-04 17:40:07.080 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-04 17:40:07.083 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-04 17:40:07.122 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 24ms. Found 0 repository interfaces.
+2024-09-04 17:40:07.574 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=cc7ddef6-fd7e-3b07-831a-bfa756c03f5b
+2024-09-04 17:40:07.844 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$103ab65f] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:40:07.903 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:40:07.911 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$79c92730] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:40:08.080 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:40:08.126 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$2c54b95c] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:40:09.106 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-04 17:40:09.123 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-04 17:40:09.134 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-04 17:40:09.134 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-04 17:40:09.338 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-04 17:40:09.339 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 3288 ms
+2024-09-04 17:40:09.693 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-04 17:40:10.009 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-04 17:40:10.011 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-04 17:40:10.011 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-04 17:40:10.047 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-04 17:40:12.741 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-04 17:40:13.567 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-04 17:40:13.609 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 17:40:13.619 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 17:40:14.060 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-04 17:40:15.586 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-04 17:40:16.187 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-04 17:40:18.275 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-04 17:40:18.310 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-04 17:40:18.352 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-04 17:40:18.549 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-04 17:40:18.587 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 57853 (http) with context path ''
+2024-09-04 17:40:18.740 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:57853 register finished
+2024-09-04 17:40:19.658 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 16.551 seconds (JVM running for 17.821)
+2024-09-04 17:40:19.660 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-04 17:50:00.396 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-04 17:50:00.397 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-04 17:50:00.402 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-04 17:50:00.403 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-04 17:50:00.408 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-04 17:50:00.417 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-04 17:50:00.418 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-04 17:58:36.581 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$dfb659bc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:58:37.936 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-04 17:58:39.232 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-04 17:58:39.235 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-04 17:58:39.277 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 26ms. Found 0 repository interfaces.
+2024-09-04 17:58:39.767 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=cc7ddef6-fd7e-3b07-831a-bfa756c03f5b
+2024-09-04 17:58:40.008 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$c39c56bf] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:58:40.063 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:58:40.068 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$2d2ac790] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:58:40.227 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:58:40.277 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$dfb659bc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 17:58:41.216 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-04 17:58:41.231 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-04 17:58:41.241 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-04 17:58:41.242 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-04 17:58:41.453 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-04 17:58:41.453 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 3513 ms
+2024-09-04 17:58:41.749 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-04 17:58:42.023 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-04 17:58:42.024 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-04 17:58:42.024 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-04 17:58:42.068 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-04 17:58:44.573 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-04 17:58:45.372 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-04 17:58:45.411 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 17:58:45.418 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 17:58:45.789 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-04 17:58:47.073 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-04 17:58:47.819 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-04 17:58:49.737 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-04 17:58:49.762 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-04 17:58:49.800 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-04 17:58:49.968 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-04 17:58:50.001 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 58924 (http) with context path ''
+2024-09-04 17:58:50.141 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:58924 register finished
+2024-09-04 17:58:51.059 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 16.8 seconds (JVM running for 18.164)
+2024-09-04 17:58:51.061 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-04 17:58:51.987 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - {user_id=1, role_id=1, id=1, menus=[{pages=[{page_url=shelf/rack, page_id=2, page_number=shelf/rack, page_name=浠撳偍鏂欐灦, menu_sequence=null}], menu_remark=null, menu_name=涓婄墖, menu_number=2, menu_id=2}], account=admin}
+2024-09-04 17:58:52.002 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-04 17:58:52.004 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-04 17:58:52.010 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-04 17:58:52.010 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-04 17:58:52.016 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-04 17:58:52.024 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-04 17:58:52.025 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-04 18:05:04.929 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$dfb659bc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 18:05:06.007 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-04 18:05:06.957 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-04 18:05:06.960 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-04 18:05:06.996 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 22ms. Found 0 repository interfaces.
+2024-09-04 18:05:07.366 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=cc7ddef6-fd7e-3b07-831a-bfa756c03f5b
+2024-09-04 18:05:07.607 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$c39c56bf] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 18:05:07.659 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 18:05:07.666 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$2d2ac790] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 18:05:07.817 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 18:05:07.854 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$dfb659bc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 18:05:08.753 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-04 18:05:08.768 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-04 18:05:08.778 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-04 18:05:08.779 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-04 18:05:08.976 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-04 18:05:08.976 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 2966 ms
+2024-09-04 18:05:09.264 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-04 18:05:09.548 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-04 18:05:09.550 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-04 18:05:09.550 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-04 18:05:09.589 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-04 18:05:12.133 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-04 18:05:12.873 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-04 18:05:12.910 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 18:05:12.918 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 18:05:13.310 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-04 18:05:14.614 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-04 18:05:15.308 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-04 18:05:17.287 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-04 18:05:17.313 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-04 18:05:17.346 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-04 18:05:17.496 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-04 18:05:17.533 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 59295 (http) with context path ''
+2024-09-04 18:05:17.709 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:59295 register finished
+2024-09-04 18:05:18.644 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 15.366 seconds (JVM running for 16.411)
+2024-09-04 18:05:18.646 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-04 18:05:19.631 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-04 18:05:19.632 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-04 18:05:19.636 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-04 18:05:19.637 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-04 18:05:19.641 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-04 18:05:19.647 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-04 18:05:19.648 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-04 18:06:59.310 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$dfb659bc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 18:07:00.501 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-04 18:07:01.911 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-04 18:07:01.914 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-04 18:07:01.957 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 29ms. Found 0 repository interfaces.
+2024-09-04 18:07:02.701 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=cc7ddef6-fd7e-3b07-831a-bfa756c03f5b
+2024-09-04 18:07:03.045 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$c39c56bf] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 18:07:03.123 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 18:07:03.130 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$2d2ac790] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 18:07:03.362 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 18:07:03.403 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$dfb659bc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 18:07:04.493 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-04 18:07:04.508 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-04 18:07:04.525 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-04 18:07:04.525 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-04 18:07:04.763 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-04 18:07:04.764 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 4258 ms
+2024-09-04 18:07:05.174 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-04 18:07:05.509 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-04 18:07:05.510 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-04 18:07:05.511 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-04 18:07:05.596 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-04 18:07:08.411 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-04 18:07:09.192 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-04 18:07:09.241 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 18:07:09.263 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 18:07:09.771 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-04 18:07:11.079 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-04 18:07:11.767 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-04 18:07:13.723 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-04 18:07:13.748 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-04 18:07:13.785 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-04 18:07:13.940 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-04 18:07:13.975 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 59420 (http) with context path ''
+2024-09-04 18:07:14.112 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:59420 register finished
+2024-09-04 18:07:15.038 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 17.359 seconds (JVM running for 18.332)
+2024-09-04 18:07:15.040 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-04 18:07:15.926 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - {user_id=1, role_id=1, id=1, menus=[{pages=[{page_url=shelf/task, page_id=1, page_number=shelf/task, page_name=浠撳偍浠诲姟, menu_sequence=null}], menu_remark=null, menu_name=浠撳偍, menu_number=1, menu_id=1}, {pages=[{page_url=shelf/rack, page_id=2, page_number=shelf/rack, page_name=浠撳偍鏂欐灦, menu_sequence=null}]}], account=admin}
+2024-09-04 18:07:15.937 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-04 18:07:15.938 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-04 18:07:15.943 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-04 18:07:15.944 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-04 18:07:15.948 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-04 18:07:15.954 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-04 18:07:15.955 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-04 18:11:53.564 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$dfb659bc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 18:11:54.648 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-04 18:11:55.588 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-04 18:11:55.592 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-04 18:11:55.630 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 26ms. Found 0 repository interfaces.
+2024-09-04 18:11:56.004 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=cc7ddef6-fd7e-3b07-831a-bfa756c03f5b
+2024-09-04 18:11:56.238 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$c39c56bf] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 18:11:56.286 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 18:11:56.292 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$2d2ac790] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 18:11:56.422 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 18:11:56.458 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$dfb659bc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 18:11:57.367 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-04 18:11:57.385 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-04 18:11:57.395 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-04 18:11:57.395 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-04 18:11:57.598 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-04 18:11:57.598 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 2947 ms
+2024-09-04 18:11:57.879 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-04 18:11:58.226 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-04 18:11:58.227 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-04 18:11:58.227 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-04 18:11:58.273 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-04 18:12:00.794 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-04 18:12:01.511 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-04 18:12:01.547 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 18:12:01.554 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 18:12:01.910 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-04 18:12:03.231 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-04 18:12:03.949 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-04 18:12:05.890 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-04 18:12:05.914 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-04 18:12:05.945 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-04 18:12:06.109 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-04 18:12:06.152 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 59704 (http) with context path ''
+2024-09-04 18:12:06.300 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:59704 register finished
+2024-09-04 18:12:07.294 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 15.367 seconds (JVM running for 16.323)
+2024-09-04 18:12:07.295 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-04 18:12:08.383 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - {user_id=1, role_id=1, id=1, menus=[{pages=[{page_url=shelf/task, page_id=1, page_number=shelf/task, page_name=浠撳偍浠诲姟, menu_sequence=null}], menu_remark=null, menu_name=浠撳偍, menu_number=1, menu_id=1}, {pages=[{page_url=shelf/rack, page_id=2, page_number=shelf/rack, page_name=浠撳偍鏂欐灦, menu_sequence=null}], menu_remark=null, menu_name=涓婄墖, menu_number=2, menu_id=2}], account=admin}
+2024-09-04 18:12:08.396 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-04 18:12:08.401 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-04 18:12:08.407 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-04 18:12:08.410 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-04 18:12:08.415 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-04 18:12:08.422 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-04 18:12:08.423 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web-warn-2024-09-03.0.log b/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web-warn-2024-09-03.0.log
new file mode 100644
index 0000000..e481f33
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web-warn-2024-09-03.0.log
@@ -0,0 +1,325 @@
+2024-09-03 11:37:49.088 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:37:49.088 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:37:49.088 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:37:49.089 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:37:49.089 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:37:49.089 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:37:49.089 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:37:49.089 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:37:49.089 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:37:49.089 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:37:49.090 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:37:49.090 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:37:49.090 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:37:49.090 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:37:49.090 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:37:49.090 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:37:49.090 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:37:49.090 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysMenuMapper' and 'com.mes.menu.mapper.SysMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:37:49.090 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMapper' and 'com.mes.role.mapper.SysRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:37:49.090 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMenuMapper' and 'com.mes.role.mapper.SysRoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:37:49.090 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.mes.userinfo.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:37:49.090 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserRoleMapper' and 'com.mes.userinfo.mapper.SysUserRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:37:49.091 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-03 11:37:56.103 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 11:37:56.109 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 11:45:30.931 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:45:30.931 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:45:30.931 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:45:30.931 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:45:30.931 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:45:30.931 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:45:30.932 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:45:30.932 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:45:30.932 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:45:30.932 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:45:30.932 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:45:30.932 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:45:30.932 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:45:30.932 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:45:30.932 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:45:30.932 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:45:30.932 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:45:30.932 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysMenuMapper' and 'com.mes.menu.mapper.SysMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:45:30.932 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMapper' and 'com.mes.role.mapper.SysRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:45:30.932 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMenuMapper' and 'com.mes.role.mapper.SysRoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:45:30.933 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.mes.userinfo.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:45:30.933 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserRoleMapper' and 'com.mes.userinfo.mapper.SysUserRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:45:30.933 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-03 11:45:38.040 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 11:45:38.046 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 11:47:52.734 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:47:52.734 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:47:52.735 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:47:52.735 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:47:52.735 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:47:52.735 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:47:52.735 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:47:52.735 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:47:52.735 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:47:52.735 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:47:52.735 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:47:52.735 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:47:52.735 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:47:52.735 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:47:52.735 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:47:52.735 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:47:52.736 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:47:52.736 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysMenuMapper' and 'com.mes.menu.mapper.SysMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:47:52.736 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMapper' and 'com.mes.role.mapper.SysRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:47:52.736 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMenuMapper' and 'com.mes.role.mapper.SysRoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:47:52.736 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.mes.userinfo.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:47:52.736 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserRoleMapper' and 'com.mes.userinfo.mapper.SysUserRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:47:52.737 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-03 11:47:59.840 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 11:47:59.848 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 14:16:53.953 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:16:53.953 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:16:53.953 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:16:53.953 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:16:53.954 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:16:53.954 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:16:53.954 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:16:53.954 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:16:53.954 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:16:53.954 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:16:53.954 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:16:53.954 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:16:53.954 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:16:53.954 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:16:53.954 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:16:53.954 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:16:53.955 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:16:53.955 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysMenuMapper' and 'com.mes.menu.mapper.SysMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:16:53.955 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMapper' and 'com.mes.role.mapper.SysRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:16:53.955 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMenuMapper' and 'com.mes.role.mapper.SysRoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:16:53.955 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.mes.userinfo.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:16:53.955 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserRoleMapper' and 'com.mes.userinfo.mapper.SysUserRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:16:53.955 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-03 14:17:04.401 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 14:17:04.410 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 14:20:20.212 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:20:20.212 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:20:20.212 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:20:20.212 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:20:20.213 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:20:20.213 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:20:20.213 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:20:20.213 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:20:20.213 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:20:20.213 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:20:20.214 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:20:20.214 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:20:20.214 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:20:20.214 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:20:20.214 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:20:20.214 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:20:20.214 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:20:20.214 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysMenuMapper' and 'com.mes.menu.mapper.SysMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:20:20.214 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMapper' and 'com.mes.role.mapper.SysRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:20:20.215 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMenuMapper' and 'com.mes.role.mapper.SysRoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:20:20.215 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.mes.userinfo.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:20:20.215 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserRoleMapper' and 'com.mes.userinfo.mapper.SysUserRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:20:20.215 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-03 14:20:27.530 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 14:20:27.540 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 14:24:25.585 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:24:25.586 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:24:25.586 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:24:25.586 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:24:25.586 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:24:25.586 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:24:25.586 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:24:25.587 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:24:25.587 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:24:25.587 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:24:25.587 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:24:25.587 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:24:25.587 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:24:25.587 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:24:25.587 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:24:25.587 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:24:25.587 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:24:25.587 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysMenuMapper' and 'com.mes.menu.mapper.SysMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:24:25.587 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMapper' and 'com.mes.role.mapper.SysRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:24:25.588 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMenuMapper' and 'com.mes.role.mapper.SysRoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:24:25.588 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.mes.userinfo.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:24:25.588 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserRoleMapper' and 'com.mes.userinfo.mapper.SysUserRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:24:25.589 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-03 14:24:32.821 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 14:24:32.829 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 14:25:44.232 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:25:44.233 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:25:44.233 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:25:44.233 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:25:44.234 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:25:44.234 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:25:44.234 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:25:44.234 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:25:44.234 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:25:44.234 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:25:44.234 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:25:44.234 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:25:44.234 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:25:44.234 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:25:44.234 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:25:44.235 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:25:44.235 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:25:44.235 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysMenuMapper' and 'com.mes.menu.mapper.SysMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:25:44.235 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMapper' and 'com.mes.role.mapper.SysRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:25:44.235 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMenuMapper' and 'com.mes.role.mapper.SysRoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:25:44.235 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.mes.userinfo.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:25:44.235 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserRoleMapper' and 'com.mes.userinfo.mapper.SysUserRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:25:44.236 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-03 14:25:51.520 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 14:25:51.533 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 14:48:17.159 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:48:17.159 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:48:17.160 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:48:17.160 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:48:17.160 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:48:17.160 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:48:17.160 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:48:17.160 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:48:17.160 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:48:17.160 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:48:17.160 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:48:17.160 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:48:17.160 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:48:17.160 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:48:17.160 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:48:17.160 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:48:17.161 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:48:17.161 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysMenuMapper' and 'com.mes.menu.mapper.SysMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:48:17.161 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMapper' and 'com.mes.role.mapper.SysRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:48:17.161 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMenuMapper' and 'com.mes.role.mapper.SysRoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:48:17.161 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.mes.userinfo.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:48:17.161 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserRoleMapper' and 'com.mes.userinfo.mapper.SysUserRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:48:17.162 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-03 14:48:24.243 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 14:48:24.253 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 14:58:19.741 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:58:19.741 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:58:19.741 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:58:19.741 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:58:19.741 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:58:19.741 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:58:19.742 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:58:19.742 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:58:19.742 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:58:19.742 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:58:19.742 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:58:19.742 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:58:19.742 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:58:19.742 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:58:19.743 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:58:19.743 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:58:19.743 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:58:19.743 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysMenuMapper' and 'com.mes.menu.mapper.SysMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:58:19.743 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMapper' and 'com.mes.role.mapper.SysRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:58:19.743 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMenuMapper' and 'com.mes.role.mapper.SysRoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:58:19.743 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.mes.userinfo.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:58:19.743 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserRoleMapper' and 'com.mes.userinfo.mapper.SysUserRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 14:58:19.744 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-03 14:58:26.836 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 14:58:26.842 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 15:00:27.906 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:00:27.906 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:00:27.906 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:00:27.907 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:00:27.907 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:00:27.907 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:00:27.907 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:00:27.907 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:00:27.907 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:00:27.907 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:00:27.907 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:00:27.907 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:00:27.907 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:00:27.907 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:00:27.907 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:00:27.907 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:00:27.908 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:00:27.908 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysMenuMapper' and 'com.mes.menu.mapper.SysMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:00:27.908 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMapper' and 'com.mes.role.mapper.SysRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:00:27.908 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMenuMapper' and 'com.mes.role.mapper.SysRoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:00:27.908 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.mes.userinfo.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:00:27.908 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserRoleMapper' and 'com.mes.userinfo.mapper.SysUserRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:00:27.909 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-03 15:00:35.019 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 15:00:35.027 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 15:48:44.424 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:48:44.424 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:48:44.424 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:48:44.424 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:48:44.424 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:48:44.424 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:48:44.424 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:48:44.424 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:48:44.424 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:48:44.424 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:48:44.424 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:48:44.424 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:48:44.424 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:48:44.424 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:48:44.424 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:48:44.424 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:48:44.424 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:48:44.424 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysMenuMapper' and 'com.mes.menu.mapper.SysMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:48:44.424 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMapper' and 'com.mes.role.mapper.SysRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:48:44.424 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMenuMapper' and 'com.mes.role.mapper.SysRoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:48:44.424 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.mes.userinfo.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:48:44.424 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserRoleMapper' and 'com.mes.userinfo.mapper.SysUserRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:48:44.424 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-03 15:48:51.614 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 15:48:51.614 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 15:54:10.158 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:54:10.158 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:54:10.158 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:54:10.158 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:54:10.158 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:54:10.158 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:54:10.158 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:54:10.158 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:54:10.159 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:54:10.159 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:54:10.159 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:54:10.159 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:54:10.159 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:54:10.159 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:54:10.159 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:54:10.159 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:54:10.159 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:54:10.159 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysMenuMapper' and 'com.mes.menu.mapper.SysMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:54:10.160 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMapper' and 'com.mes.role.mapper.SysRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:54:10.160 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMenuMapper' and 'com.mes.role.mapper.SysRoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:54:10.160 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.mes.userinfo.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:54:10.160 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserRoleMapper' and 'com.mes.userinfo.mapper.SysUserRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 15:54:10.161 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-03 15:54:17.331 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 15:54:17.339 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 16:23:34.797 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 16:23:34.798 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 16:23:34.798 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 16:23:34.798 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 16:23:34.799 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 16:23:34.799 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 16:23:34.799 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 16:23:34.799 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 16:23:34.799 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 16:23:34.799 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 16:23:34.799 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 16:23:34.799 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 16:23:34.799 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 16:23:34.799 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 16:23:34.799 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 16:23:34.799 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 16:23:34.800 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 16:23:34.800 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysMenuMapper' and 'com.mes.menu.mapper.SysMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 16:23:34.800 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMapper' and 'com.mes.role.mapper.SysRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 16:23:34.800 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMenuMapper' and 'com.mes.role.mapper.SysRoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 16:23:34.800 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.mes.userinfo.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 16:23:34.801 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserRoleMapper' and 'com.mes.userinfo.mapper.SysUserRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 16:23:34.802 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-03 16:23:42.305 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 16:23:42.311 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web-warn-2024-09-04.0.log b/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web-warn-2024-09-04.0.log
new file mode 100644
index 0000000..35375dc
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web-warn-2024-09-04.0.log
@@ -0,0 +1,220 @@
+2024-09-04 14:31:30.549 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 14:31:30.552 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 14:31:30.552 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 14:31:30.553 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 14:31:30.553 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 14:31:30.553 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 14:31:30.553 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 14:31:30.553 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 14:31:30.553 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 14:31:30.553 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 14:31:30.553 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 14:31:30.554 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 14:31:30.554 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 14:31:30.554 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 14:31:30.554 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 14:31:30.554 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 14:31:30.554 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 14:31:30.554 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-04 14:31:36.633 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-04 14:31:36.642 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-04 15:50:57.118 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 15:50:57.119 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 15:50:57.119 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 15:50:57.119 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 15:50:57.119 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 15:50:57.119 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 15:50:57.119 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 15:50:57.119 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 15:50:57.119 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 15:50:57.119 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 15:50:57.119 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 15:50:57.119 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 15:50:57.120 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 15:50:57.120 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 15:50:57.120 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 15:50:57.120 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 15:50:57.120 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 15:50:57.120 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-04 15:51:02.808 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-04 15:51:02.817 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-04 16:44:36.729 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 16:44:36.729 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 16:44:36.729 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 16:44:36.729 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 16:44:36.729 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 16:44:36.730 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 16:44:36.730 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 16:44:36.730 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 16:44:36.730 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 16:44:36.730 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 16:44:36.730 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 16:44:36.730 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 16:44:36.730 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 16:44:36.731 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 16:44:36.731 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 16:44:36.731 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 16:44:36.731 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 16:44:36.731 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-04 16:44:42.522 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-04 16:44:42.530 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-04 17:30:03.916 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:30:03.916 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:30:03.916 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:30:03.916 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:30:03.916 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:30:03.916 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:30:03.916 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:30:03.916 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:30:03.917 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:30:03.917 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:30:03.917 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:30:03.917 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:30:03.917 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:30:03.917 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:30:03.917 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:30:03.917 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:30:03.917 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:30:03.918 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-04 17:30:09.764 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-04 17:30:09.773 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-04 17:32:37.916 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:32:37.917 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:32:37.917 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:32:37.917 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:32:37.918 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:32:37.918 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:32:37.918 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:32:37.918 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:32:37.918 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:32:37.919 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:32:37.919 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:32:37.919 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:32:37.919 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:32:37.919 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:32:37.920 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:32:37.920 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:32:37.920 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:32:37.920 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-04 17:32:43.645 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-04 17:32:43.653 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-04 17:34:52.705 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:34:52.705 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:34:52.705 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:34:52.705 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:34:52.706 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:34:52.706 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:34:52.706 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:34:52.706 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:34:52.706 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:34:52.706 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:34:52.706 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:34:52.706 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:34:52.706 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:34:52.706 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:34:52.707 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:34:52.707 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:34:52.707 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:34:52.707 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-04 17:34:58.984 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-04 17:34:58.993 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-04 17:40:07.398 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:40:07.399 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:40:07.399 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:40:07.399 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:40:07.399 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:40:07.399 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:40:07.399 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:40:07.399 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:40:07.399 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:40:07.399 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:40:07.400 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:40:07.400 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:40:07.400 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:40:07.400 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:40:07.400 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:40:07.400 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:40:07.400 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:40:07.401 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-04 17:40:13.609 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-04 17:40:13.618 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-04 17:58:39.509 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:58:39.509 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:58:39.509 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:58:39.509 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:58:39.509 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:58:39.510 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:58:39.510 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:58:39.510 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:58:39.510 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:58:39.511 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:58:39.511 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:58:39.512 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:58:39.512 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:58:39.512 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:58:39.513 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:58:39.513 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:58:39.513 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 17:58:39.514 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-04 17:58:45.410 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-04 17:58:45.418 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-04 18:05:07.162 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:05:07.162 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:05:07.162 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:05:07.163 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:05:07.163 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:05:07.163 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:05:07.163 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:05:07.163 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:05:07.163 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:05:07.163 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:05:07.163 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:05:07.163 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:05:07.163 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:05:07.163 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:05:07.163 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:05:07.163 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:05:07.164 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:05:07.164 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-04 18:05:12.910 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-04 18:05:12.918 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-04 18:07:02.233 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:07:02.233 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:07:02.234 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:07:02.234 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:07:02.235 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:07:02.236 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:07:02.236 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:07:02.236 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:07:02.236 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:07:02.236 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:07:02.236 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:07:02.236 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:07:02.236 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:07:02.236 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:07:02.236 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:07:02.237 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:07:02.237 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:07:02.238 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-04 18:07:09.241 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-04 18:07:09.262 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-04 18:11:55.817 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:11:55.817 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:11:55.818 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:11:55.818 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:11:55.818 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:11:55.818 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:11:55.818 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:11:55.818 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:11:55.818 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:11:55.818 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:11:55.818 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:11:55.818 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:11:55.818 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:11:55.819 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:11:55.819 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:11:55.819 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:11:55.819 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 18:11:55.820 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-04 18:12:01.546 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-04 18:12:01.554 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web_debug.log b/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web_debug.log
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web_debug.log
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web_error.log b/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web_error.log
new file mode 100644
index 0000000..c5fe5cc
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web_error.log
@@ -0,0 +1,9 @@
+2024-09-05 08:00:31.061 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 08:00:31.853 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 08:00:31.983 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 08:01:36.701 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 08:01:37.487 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 08:01:37.593 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 08:03:03.005 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 08:03:03.765 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 08:03:03.867 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web_info.log b/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web_info.log
new file mode 100644
index 0000000..b07cfff
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web_info.log
@@ -0,0 +1,135 @@
+2024-09-05 08:00:27.976 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$dfb659bc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:00:29.061 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-05 08:00:30.148 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-05 08:00:30.152 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-05 08:00:30.195 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 25ms. Found 0 repository interfaces.
+2024-09-05 08:00:30.569 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=cc7ddef6-fd7e-3b07-831a-bfa756c03f5b
+2024-09-05 08:00:30.767 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$c39c56bf] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:00:30.819 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:00:30.824 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$2d2ac790] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:00:30.990 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:00:31.028 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$dfb659bc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:00:31.965 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-05 08:00:31.984 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-05 08:00:31.992 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-05 08:00:31.993 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-05 08:00:32.170 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-05 08:00:32.171 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 3108 ms
+2024-09-05 08:00:32.492 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-05 08:00:32.826 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-05 08:00:32.827 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-05 08:00:32.827 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-05 08:00:32.882 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-05 08:00:35.915 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-05 08:00:36.599 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-05 08:00:36.658 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 08:00:36.664 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 08:00:37.101 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-05 08:00:38.519 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-05 08:00:39.241 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-05 08:00:41.183 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-05 08:00:41.213 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-05 08:00:41.244 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-05 08:00:41.397 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-05 08:00:41.424 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 56929 (http) with context path ''
+2024-09-05 08:00:41.556 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:56929 register finished
+2024-09-05 08:00:42.475 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 16.209 seconds (JVM running for 17.242)
+2024-09-05 08:00:42.477 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-05 08:00:43.466 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - {}
+2024-09-05 08:00:43.475 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-05 08:00:43.477 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-05 08:00:43.480 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-05 08:00:43.481 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-05 08:00:43.485 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-05 08:00:43.491 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-05 08:00:43.491 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-05 08:01:33.943 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$dfb659bc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:01:35.000 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-05 08:01:35.887 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-05 08:01:35.890 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-05 08:01:35.926 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 23ms. Found 0 repository interfaces.
+2024-09-05 08:01:36.279 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=cc7ddef6-fd7e-3b07-831a-bfa756c03f5b
+2024-09-05 08:01:36.450 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$c39c56bf] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:01:36.493 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:01:36.500 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$2d2ac790] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:01:36.632 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:01:36.669 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$dfb659bc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:01:37.577 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-05 08:01:37.594 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-05 08:01:37.604 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-05 08:01:37.604 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-05 08:01:37.802 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-05 08:01:37.802 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 2799 ms
+2024-09-05 08:01:38.051 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-05 08:01:38.326 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-05 08:01:38.327 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-05 08:01:38.327 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-05 08:01:38.365 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-05 08:01:40.735 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-05 08:01:41.400 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-05 08:01:41.445 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 08:01:41.454 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 08:01:41.795 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-05 08:01:43.071 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-05 08:01:43.722 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-05 08:01:45.582 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-05 08:01:45.607 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-05 08:01:45.648 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-05 08:01:45.818 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-05 08:01:45.844 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 57014 (http) with context path ''
+2024-09-05 08:01:45.971 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:57014 register finished
+2024-09-05 08:01:46.867 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 14.513 seconds (JVM running for 15.43)
+2024-09-05 08:01:46.869 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-05 08:01:47.757 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - {}
+2024-09-05 08:01:47.771 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-05 08:01:47.772 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-05 08:01:47.778 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-05 08:01:47.778 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-05 08:01:47.782 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-05 08:01:47.789 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-05 08:01:47.789 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-05 08:03:00.074 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$dfb659bc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:03:01.161 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - The following profiles are active: prod
+2024-09-05 08:03:02.115 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-05 08:03:02.118 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-05 08:03:02.159 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 25ms. Found 0 repository interfaces.
+2024-09-05 08:03:02.526 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=cc7ddef6-fd7e-3b07-831a-bfa756c03f5b
+2024-09-05 08:03:02.715 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$c39c56bf] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:03:02.764 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:03:02.771 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$2d2ac790] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:03:02.945 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:03:02.979 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$dfb659bc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:03:03.852 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
+2024-09-05 08:03:03.868 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-auto-1"]
+2024-09-05 08:03:03.878 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-05 08:03:03.878 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-05 08:03:04.046 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-05 08:03:04.046 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 2883 ms
+2024-09-05 08:03:04.311 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-05 08:03:04.585 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-05 08:03:04.587 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-05 08:03:04.587 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-05 08:03:04.624 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-05 08:03:07.042 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-05 08:03:07.639 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-05 08:03:07.690 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 08:03:07.700 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 08:03:08.055 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-05 08:03:09.280 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-05 08:03:09.944 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-05 08:03:11.851 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-05 08:03:11.874 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-05 08:03:11.907 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-05 08:03:12.048 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-auto-1"]
+2024-09-05 08:03:12.077 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 57190 (http) with context path ''
+2024-09-05 08:03:12.222 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:57190 register finished
+2024-09-05 08:03:13.134 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - Started DeviceInteractionModuleApplicationTest in 14.606 seconds (JVM running for 15.543)
+2024-09-05 08:03:13.136 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-05 08:03:13.956 [main] INFO  com.mes.DeviceInteractionModuleApplicationTest - {}
+2024-09-05 08:03:13.964 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-05 08:03:13.965 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-05 08:03:13.970 [Thread-11] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-05 08:03:13.972 [Thread-11] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-05 08:03:13.976 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-05 08:03:13.982 [Thread-11] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-05 08:03:13.983 [Thread-11] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web_warn.log b/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web_warn.log
new file mode 100644
index 0000000..f2db379
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/logs/deviceInteraction/web_warn.log
@@ -0,0 +1,60 @@
+2024-09-05 08:00:30.370 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:00:30.372 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:00:30.372 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:00:30.373 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:00:30.373 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:00:30.373 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:00:30.373 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:00:30.373 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:00:30.373 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:00:30.373 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:00:30.374 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:00:30.374 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:00:30.374 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:00:30.374 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:00:30.374 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:00:30.374 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:00:30.374 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:00:30.375 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-05 08:00:36.658 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 08:00:36.664 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 08:01:36.086 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:01:36.086 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:01:36.086 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:01:36.087 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:01:36.087 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:01:36.087 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:01:36.087 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:01:36.087 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:01:36.087 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:01:36.087 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:01:36.087 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:01:36.087 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:01:36.087 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:01:36.087 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:01:36.087 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:01:36.088 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:01:36.088 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:01:36.088 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-05 08:01:41.444 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 08:01:41.453 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 08:03:02.337 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:03:02.338 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:03:02.338 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:03:02.338 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:03:02.338 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:03:02.338 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:03:02.339 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:03:02.339 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:03:02.339 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:03:02.339 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:03:02.339 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:03:02.339 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:03:02.339 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:03:02.339 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:03:02.339 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:03:02.339 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:03:02.339 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:03:02.340 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-05 08:03:07.690 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 08:03:07.700 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/pom.xml b/JiuMuMesParent/moduleService/DeviceInteractionModule/pom.xml
new file mode 100644
index 0000000..0b7faee
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/pom.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>moduleService</artifactId>
+        <groupId>com.mes</groupId>
+        <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>deviceInteraction</artifactId>
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.samba.jcifs</groupId>
+            <artifactId>jcifs</artifactId>
+            <version>1.2.19</version>
+        </dependency>
+<!--        <dependency>-->
+<!--            <groupId>com.github.yulichang</groupId>-->
+<!--            <artifactId>mybatis-plus-join-boot-starter</artifactId>-->
+<!--            <version>1.4.12</version>-->
+<!--        </dependency>-->
+    </dependencies>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+    </properties>
+
+
+</project>
\ No newline at end of file
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/AppRunnerConfig.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/AppRunnerConfig.java
new file mode 100644
index 0000000..cf13a3b
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/AppRunnerConfig.java
@@ -0,0 +1,23 @@
+package com.mes;
+
+import com.mes.common.S7object;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+@Slf4j
+@Component
+@Order(1)
+
+public class AppRunnerConfig implements ApplicationRunner {
+
+    @Override
+    public void run(ApplicationArguments args) throws Exception {
+        // TODO Auto-generated method stub
+        log.info("鍚姩瀹屾垚");
+        S7object.getinstance().start();
+
+    }
+}
\ No newline at end of file
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/DeviceInteractionModuleApplication.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/DeviceInteractionModuleApplication.java
new file mode 100644
index 0000000..fd11c13
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/DeviceInteractionModuleApplication.java
@@ -0,0 +1,31 @@
+package com.mes;
+
+import lombok.extern.slf4j.Slf4j;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/3/25 10:49
+ * @Description:
+ */
+@Slf4j
+@SpringBootApplication
+@MapperScan("com.mes.*.mapper")
+@EnableDiscoveryClient
+@EnableSwagger2
+@EnableScheduling
+public class DeviceInteractionModuleApplication {
+
+    public static void main(String[] args) {
+        try {
+            SpringApplication.run(DeviceInteractionModuleApplication.class, args);
+        } catch (Exception e) {
+            log.error(e.getMessage());
+        }
+    }
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/common/S7object.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/common/S7object.java
new file mode 100644
index 0000000..ee8c2e7
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/common/S7object.java
@@ -0,0 +1,62 @@
+package com.mes.common;
+
+import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
+import com.mes.device.PlcParameterObject;
+import com.mes.tools.InitUtil;
+import com.mes.tools.S7control;
+
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/4/9 15:13
+ * @Description:
+ */
+public class S7object extends Thread {
+    public S7control plccontrol; // PLC閫氳绫诲疄渚�
+    private EPlcType plcType = EPlcType.S1200; // 瑗块棬瀛怭LC绫诲瀷
+    private String ip = "192.168.10.11"; // plc ip鍦板潃
+    private int port = 102; // plc 绔彛鍙�
+
+
+    public PlcParameterObject PlcMesObject;
+    private static volatile S7object instance = null;
+
+    private S7object() {
+        if (plccontrol == null) {
+            plccontrol = new S7control(plcType, ip, port, 0, 0);
+            String PlcLoadGlass = System.getProperty("user.dir") + "/JsonFile/PlcCacheGlass.json";
+//            String PlcLoadGlass=S7object.class.getResource("/JsonFile/PlcCacheGlass.json").getPath();
+            System.out.println("Load Glass File: " + PlcLoadGlass);
+            PlcMesObject = InitUtil.initword(PlcLoadGlass);
+        }
+    }
+
+    // 鍗曚緥妯″紡 鑾峰彇绫荤殑鍞竴瀹炰緥
+    public static S7object getinstance() {
+        if (instance == null) {
+            synchronized (S7object.class) {
+                if (instance == null) {
+                    instance = new S7object();
+                }
+            }
+        }
+        return instance;
+    }
+
+    @Override
+    public void run() {
+        while (this != null) {
+            try {
+                Thread.sleep(100);
+
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+
+            byte[] getplcvlues = plccontrol.readByte(PlcMesObject.getPlcAddressBegin(), PlcMesObject.getPlcAddressLength());
+            if (getplcvlues != null) {
+                PlcMesObject.setPlcParameterList(getplcvlues);
+            }
+        }
+    }
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/common/SmbTool.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/common/SmbTool.java
new file mode 100644
index 0000000..2b5c9d5
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/common/SmbTool.java
@@ -0,0 +1,71 @@
+package com.mes.common;
+
+import jcifs.smb.NtlmPasswordAuthentication;
+import jcifs.smb.SmbFile;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class SmbTool {
+    public static  String USER_DOMAIN=null;//鍏变韩璁$畻鏈篿p   "192.168.3.102";
+    public  static  String USER_ACCOUNT=null;//鐧诲綍鍏变韩鏂囦欢澶� 鐢ㄦ埛鍚� "aaa"锛屽鏋滄槸鍏变韩鏄棤瀵嗙爜妯″紡 姝ゅ鍊艰缃负 null;
+    public  static  String USER_PWS=null;//鐧诲綍鍏变韩鏂囦欢澶�  瀵嗙爜"guoyujie"锛屽鏋滄槸鍏变韩鏄棤瀵嗙爜妯″紡 姝ゅ鍊艰缃负 null;
+
+    /**
+     *  test 娴嬭瘯绀轰緥
+     */
+    private void test()
+    {
+        int index= SmbTool.getDescriptionIndex("log","P20240522");//杈撳叆鍒囧壊鏈哄叡浜枃浠跺す鍚嶅瓧銆佸伐绋嬪彿锛岃繑鍥炲綋鍓嶅伐绋嬫鍦ㄥ垏鍓茬殑鐗堝浘鍙�
+        System.out.print(index);
+    }
+    /**
+     *  smbGetall 杩斿洖鎸囧畾鐩綍涓嬬殑鏂囦欢鍚嶅瓧
+     * @param   GoalUrl 杩滅鐩綍锛�"smb://192.168.2.100//ceshi//"锛�
+     */
+    public static String[] smbGetallFilenames(String GoalUrl) {
+        NtlmPasswordAuthentication auth=new NtlmPasswordAuthentication(USER_DOMAIN,USER_ACCOUNT,USER_PWS);
+        List<String> filenames=new ArrayList<>();
+        try {
+            SmbFile remoteFile = new SmbFile(GoalUrl,auth);
+            if (remoteFile == null) {
+                return filenames.toArray(new String[]{});
+            }
+            if (remoteFile.exists())
+            {
+                SmbFile[] listFiles = remoteFile.listFiles();
+                for(int i = 0; i < listFiles.length; i++) {
+                    filenames.add(listFiles[i].getName());
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return filenames.toArray(new String[]{});
+    }
+    /**
+     *  getDescriptionIndex 鏍规嵁宸ョ▼鍙凤紝杩斿洖褰撳墠姝e湪鍒囧壊鐨勭増鍥惧彿
+     * @param   folderName 鍏变韩鏂囦欢澶瑰悕瀛�
+     * @param   project_no 宸ョ▼鍙�
+     */
+    public static int getDescriptionIndex(String folderName,String project_no)
+    {
+        SimpleDateFormat formatter= new SimpleDateFormat("yyyyMMdd");
+        Date date = new Date(System.currentTimeMillis());
+        System.out.println(formatter.format(date));
+        String[] getfilenames= smbGetallFilenames("smb://"+USER_DOMAIN+"/"+folderName+"/"+formatter.format(date)+"/");
+        for (int i = 0; i < getfilenames.length; i++) {
+            String[] splitvalues= getfilenames[i].split("_");
+            if (splitvalues.length>=3&&splitvalues[1].trim().equals(project_no))
+            {
+                String[] indexstr= splitvalues[2].trim().split("\\.");
+                if (indexstr.length>1) {
+                    return  Integer.parseInt(indexstr[0]);
+                }
+            }
+        }
+        return -1;
+    }
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java
new file mode 100644
index 0000000..51c0f01
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java
@@ -0,0 +1,34 @@
+package com.mes.edgstoragecage.controller;
+
+import com.mes.utils.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+/**
+ * <p>
+ *  鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-07
+ */
+@Api(tags = "鐞嗙墖绗肩紦瀛�")
+@RestController
+@RequestMapping("/edgStorageCage")
+public class EdgStorageCageController {
+
+    @ApiOperation("纾ㄨ竟妯″潡姹囨姤鐜荤拑鐘舵��   鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑杩涜銆愮牬鎹�/鎷胯蛋銆�  ")
+    @PostMapping("/edgReportStatus")
+    @ResponseBody
+    public Result edgReportStatus(@RequestBody Map<String, String> arguments) {
+        /*arguments.put("line","1002");
+        arguments.put("machine","鍗у紡鐞嗙墖");*/
+
+        return Result.build(200,"銆愮牬鎹�/鎷胯蛋銆�",1);
+    }
+
+}
+
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/edgstoragecage/entity/EdgStorageCage.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/edgstoragecage/entity/EdgStorageCage.java
new file mode 100644
index 0000000..2ab45f6
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/edgstoragecage/entity/EdgStorageCage.java
@@ -0,0 +1,51 @@
+package com.mes.edgstoragecage.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 EdgStorageCage implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 纾ㄨ竟鍓嶇悊鐗囩琛╥d
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 璁惧id
+     */
+    private Integer deviceId;
+
+    /**
+     * 鏍呮牸鍙�
+     */
+    private Integer slot;
+
+    /**
+     * 鍚敤鐘舵��
+     */
+    private Integer enableState;
+
+    /**
+     * 鍓╀綑
+     */
+    private Integer remainWidth;
+
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/edgstoragecage/entity/EdgStorageCageDetails.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/edgstoragecage/entity/EdgStorageCageDetails.java
new file mode 100644
index 0000000..6524403
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/edgstoragecage/entity/EdgStorageCageDetails.java
@@ -0,0 +1,122 @@
+package com.mes.edgstoragecage.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EdgStorageCageDetails implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 纾ㄨ竟鍓嶇悊鐗囩璇︽儏琛╥d
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 宸ョ▼id
+     */
+    private String engineerId;
+
+    /**
+     * 璁惧id
+     */
+    private Integer deviceId;
+
+    /**
+     * 鏍呮牸鍙�
+     */
+    private Integer slot;
+
+    /**
+     * 鐜荤拑id
+     */
+    private String glassId;
+
+    /**
+     * 灏忕墖鍦ㄦ牸鍐呯殑椤哄簭
+     */
+    private Integer sequence;
+
+    /**
+     * 娴佺▼鍗″彿
+     */
+    private String flowCardId;
+
+    /**
+     * 鐜荤拑绫诲瀷
+     */
+    private Integer glassType;
+
+    /**
+     * 瀹�
+     */
+    private double width;
+
+    /**
+     * 楂�
+     */
+    private double height;
+
+    /**
+     * 鍘氬害
+     */
+    private double thickness;
+
+    /**
+     * 纾ㄥ墠瀹�
+     */
+    private double edgWidth;
+
+    /**
+     * 纾ㄥ墠楂�
+     */
+    private double edgHeight;
+
+    /**
+     * 閽㈠寲鐗堝浘id
+     */
+    private Integer temperingLayoutId;
+
+    /**
+     * 閽㈠寲鐗堝浘鐗囧簭
+     */
+    private Integer temperingFeedSequence;
+
+    /**
+     * 鍘熺墖椤哄簭
+     */
+    private Integer patternSequence;
+
+    /**
+     * 鐘舵��  锛堣瘑鍒悗鎴愬姛鐘舵��100锛屽嚭鐗囦换鍔�101锛� 鎷胯蛋200锛岀牬鎹�201锛�
+     */
+    private Integer state;
+
+    /**
+     * 鐜荤拑闂撮殭
+     */
+    private Integer gap;
+    /**
+     * 鐜荤拑闂撮殭
+     */
+    @TableField(exist = false)
+    private Integer count;
+
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/edgstoragecage/mapper/EdgStorageCageMapper.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/edgstoragecage/mapper/EdgStorageCageMapper.java
new file mode 100644
index 0000000..bfc7ed2
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/edgstoragecage/mapper/EdgStorageCageMapper.java
@@ -0,0 +1,17 @@
+package com.mes.edgstoragecage.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.mes.edgstoragecage.entity.EdgStorageCage;
+
+/**
+ * <p>
+ * Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-07
+ */
+public interface EdgStorageCageMapper extends MPJBaseMapper<EdgStorageCage> {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java
new file mode 100644
index 0000000..a0ba00a
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java
@@ -0,0 +1,21 @@
+package com.mes.edgstoragecage.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.mes.edgstoragecage.entity.EdgStorageCage;
+import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 鏈嶅姟绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-07
+ */
+public interface EdgStorageCageService extends MPJBaseService<EdgStorageCage> {
+
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageServiceImpl.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageServiceImpl.java
new file mode 100644
index 0000000..c8b5e00
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageServiceImpl.java
@@ -0,0 +1,24 @@
+package com.mes.edgstoragecage.service.impl;
+
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.mes.edgstoragecage.entity.EdgStorageCage;
+import com.mes.edgstoragecage.mapper.EdgStorageCageMapper;
+import com.mes.edgstoragecage.service.EdgStorageCageService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-07
+ */
+@Slf4j
+@Service
+public class EdgStorageCageServiceImpl extends MPJBaseServiceImpl<EdgStorageCageMapper, EdgStorageCage> implements EdgStorageCageService {
+
+
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/CacheGlassTask.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/CacheGlassTask.java
new file mode 100644
index 0000000..b543638
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/CacheGlassTask.java
@@ -0,0 +1,25 @@
+package com.mes.job;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import java.net.Socket;
+
+/**
+ * @Author : yanzhxiin
+ * @Date: 2024/8/20 11:19
+ * @Description:
+ */
+@Component
+@Slf4j
+public class CacheGlassTask {
+
+    public static String engineerId = "";
+
+//    @Scheduled(fixedDelay = 1000)
+    public void plcHomeEdgTask() {
+        Socket socket = null;
+    }
+
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/AccountController.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/AccountController.java
new file mode 100644
index 0000000..43fd381
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/AccountController.java
@@ -0,0 +1,96 @@
+package com.mes.md.controller;
+import com.mes.md.entity.Account;
+import com.mes.md.entity.Account;
+import com.mes.md.service.AccountService;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+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;
+import java.util.Map;
+
+/**
+ * <p>
+ * 璐︽埛琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@Api(tags = "璐︽埛")
+@RestController
+@RequestMapping("/account")
+public class AccountController {
+
+    @Autowired
+    AccountService accountService;
+
+
+    @ApiOperation("鐧诲綍楠岃瘉 鎴愬姛鍒欒繑鍥炶处鎴锋潈闄� 鍙傛暟(account,password)")
+    @PostMapping("/selectAccount")
+    @ResponseBody
+    public Result selectAccount (@RequestBody Map<String, Object> arguments) {
+        String account=arguments.get("account").toString();
+        String password=arguments.get("password").toString();
+        if(account.isEmpty()||password.isEmpty()){
+            return Result.build(300,"璐︽埛鎴栧瘑鐮佷负绌猴紒",arguments);
+        }
+        Map<String, Object> roleAccount=accountService.selectAccount(account,password);
+        if(roleAccount.isEmpty()){
+            return Result.build(201,"鐧诲綍澶辫触",roleAccount);
+        }
+        return Result.build(200,"鐧诲綍鎴愬姛",roleAccount);
+    }
+
+    @ApiOperation("璐︽埛缁戝畾瑙掕壊")
+    @PostMapping("/bindAccountRole")
+    @ResponseBody
+    public Result bindAccountRole (@RequestBody Account account) {
+        int count=accountService.updateAccount(account);
+        String message=count>0?"璐︽埛缁戝畾瑙掕壊鎴愬姛锛�"+count:"璐︽埛缁戝畾瑙掕壊澶辫触!";
+        return Result.build(200,message,count);
+    }
+
+    @ApiOperation("鏌ヨ鎵�鏈夎处鎴�")
+    @PostMapping("/findAccounts")
+    @ResponseBody
+    public Result findAccounts () {
+        List<Map<String, Object>> Accounts=accountService.findAccounts();
+        return Result.build(200,"鎴愬姛:"+Accounts.size(),Accounts);
+    }
+    @ApiOperation("娣诲姞璐︽埛")
+    @PostMapping("/addAccount")
+    @ResponseBody
+    public Result addAccount (@RequestBody Account account) {
+        int count=accountService.addAccount(account);
+        String message=count>0?"璐︽埛娣诲姞鎴愬姛锛�"+count:"璐︽埛娣诲姞澶辫触!";
+        return Result.build(200,message,count);
+    }
+
+    @ApiOperation("淇敼璐︽埛")
+    @PostMapping("/updateAccount")
+    @ResponseBody
+    public Result updateAccount (@RequestBody Account account) {
+        int count=accountService.updateAccount(account);
+        String message=count>0?"璐︽埛淇敼鎴愬姛锛�"+count:"璐︽埛淇敼澶辫触!";
+        return Result.build(200,message,count);
+    }
+
+    @ApiOperation("鍒犻櫎璐︽埛")
+    @PostMapping("/deleteAccount")
+    @ResponseBody
+    public Result deleteAccount (@RequestBody Account account) {
+        if(account.getId()==1){
+            return Result.build(200,"璐︽埛鍒犻櫎澶辫触!(鍘熷璐︽埛涓嶅彲鍒犻櫎)",-1);
+        }
+        int count=accountService.deleteAccount(account);
+        String message=count>0?"璐︽埛鍒犻櫎鎴愬姛锛�"+count:"璐︽埛鍒犻櫎澶辫触!";
+        return Result.build(200,message,count);
+    }
+}
+
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/EdgeGrindingLogController.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/EdgeGrindingLogController.java
new file mode 100644
index 0000000..5230dde
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/EdgeGrindingLogController.java
@@ -0,0 +1,21 @@
+package com.mes.md.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 纾ㄨ竟鏈鸿澶囦氦浜掕褰曡〃 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@RestController
+@RequestMapping("/edgeGrindingLog")
+public class EdgeGrindingLogController {
+
+}
+
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/EquipmentLogController.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/EquipmentLogController.java
new file mode 100644
index 0000000..d79ebab
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/EquipmentLogController.java
@@ -0,0 +1,21 @@
+package com.mes.md.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 璁惧浜や簰璁板綍琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@RestController
+@RequestMapping("/equipmentLog")
+public class EquipmentLogController {
+
+}
+
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/GlassInfoController.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/GlassInfoController.java
new file mode 100644
index 0000000..11f96d4
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/GlassInfoController.java
@@ -0,0 +1,21 @@
+package com.mes.md.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 灏忕墖琛� (涓讳綋鍖楃幓) 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@RestController
+@RequestMapping("/glassInfo")
+public class GlassInfoController {
+
+}
+
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/MenuController.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/MenuController.java
new file mode 100644
index 0000000..431f2f2
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/MenuController.java
@@ -0,0 +1,68 @@
+package com.mes.md.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.mes.md.entity.Menu;
+import com.mes.md.service.MenuService;
+import com.mes.md.service.impl.MenuServiceImpl;
+import com.mes.utils.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@Api(tags = "鑿滃崟")
+@RestController
+@RequestMapping("/menu")
+public class MenuController {
+
+    @Autowired
+    MenuService menuService;
+
+    @ApiOperation("杩斿洖鎵�鏈夎彍鍗�")
+    @PostMapping("/findMenusAll")
+    @ResponseBody
+    public Result findMenusAll () {
+        List<Menu> menus=menuService.findMenusAll();
+        return Result.build(200,"鎴愬姛",menus);
+    }
+
+    @ApiOperation("娣诲姞鑿滃崟")
+    @PostMapping("/addMenu")
+    @ResponseBody
+    public Result addMenu (@RequestBody Menu menu) {
+        int count=menuService.addMenu(menu);
+        String message=count>0?"椤甸潰娣诲姞鎴愬姛锛�"+count:"椤甸潰娣诲姞澶辫触!";
+        return Result.build(200,message,count);
+    }
+
+    @ApiOperation("淇敼鑿滃崟")
+    @PostMapping("/updateMenu")
+    @ResponseBody
+    public Result updateMenu (@RequestBody Menu menu) {
+        int count=menuService.updateMenu(menu);
+        String message=count>0?"椤甸潰淇敼鎴愬姛锛�"+count:"椤甸潰淇敼澶辫触!";
+        return Result.build(200,message,count);
+    }
+
+    @ApiOperation("鍒犻櫎鑿滃崟")
+    @PostMapping("/deleteMenu")
+    @ResponseBody
+    public Result deleteMenu (@RequestBody Menu menu) {
+        int count=menuService.deleteMenu(menu);
+        String message=count>0?"椤甸潰鍒犻櫎鎴愬姛锛�"+count:"椤甸潰鍒犻櫎澶辫触!";
+        return Result.build(200,message,count);
+    }
+}
+
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/OrderOriginalPieceController.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/OrderOriginalPieceController.java
new file mode 100644
index 0000000..03db6c2
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/OrderOriginalPieceController.java
@@ -0,0 +1,21 @@
+package com.mes.md.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 璁㈠崟鍘熺墖锛堟墜宸ュ鍏ワ級琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@RestController
+@RequestMapping("/orderOriginalPiece")
+public class OrderOriginalPieceController {
+
+}
+
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/PageController.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/PageController.java
new file mode 100644
index 0000000..03fdfe8
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/PageController.java
@@ -0,0 +1,66 @@
+package com.mes.md.controller;
+
+
+import com.mes.md.entity.Menu;
+import com.mes.md.entity.Page;
+import com.mes.md.service.MenuService;
+import com.mes.md.service.PageService;
+import com.mes.utils.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 椤甸潰琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author yanzhixin
+ * @since 2024-09-05
+ */
+@Api(tags = "椤甸潰")
+@RestController
+@RequestMapping("/page")
+public class PageController {
+    @Autowired
+    PageService pageService;
+
+    @ApiOperation("杩斿洖鎵�鏈夎彍鍗�")
+    @PostMapping("/findPagesAll")
+    @ResponseBody
+    public Result findPagesAll () {
+        List<Page> pages=pageService.findPagesAll();
+        return Result.build(200,"鎴愬姛",pages);
+    }
+
+    @ApiOperation("娣诲姞鑿滃崟")
+    @PostMapping("/addPage")
+    @ResponseBody
+    public Result addPage (@RequestBody Page page) {
+        int count=pageService.addPage(page);
+        String message=count>0?"鑿滃崟娣诲姞鎴愬姛锛�"+count:"鑿滃崟娣诲姞澶辫触!";
+        return Result.build(200,message,count);
+    }
+
+    @ApiOperation("淇敼鑿滃崟")
+    @PostMapping("/updatePage")
+    @ResponseBody
+    public Result updatePage (@RequestBody Page page) {
+        int count=pageService.updatePage(page);
+        String message=count>0?"鑿滃崟淇敼鎴愬姛锛�"+count:"鑿滃崟淇敼澶辫触!";
+        return Result.build(200,message,count);
+    }
+
+    @ApiOperation("鍒犻櫎鑿滃崟")
+    @PostMapping("/deletePage")
+    @ResponseBody
+    public Result deletePage (@RequestBody Page page) {
+        int count=pageService.deletePage(page);
+        String message=count>0?"鑿滃崟鍒犻櫎鎴愬姛锛�"+count:"鑿滃崟鍒犻櫎澶辫触!";
+        return Result.build(200,message,count);
+    }
+}
+
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/PrimitiveTaskController.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/PrimitiveTaskController.java
new file mode 100644
index 0000000..cc4935b
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/PrimitiveTaskController.java
@@ -0,0 +1,21 @@
+package com.mes.md.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 鍘熷浠诲姟琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@RestController
+@RequestMapping("/primitiveTask")
+public class PrimitiveTaskController {
+
+}
+
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/ProjectController.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/ProjectController.java
new file mode 100644
index 0000000..9f8ba50
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/ProjectController.java
@@ -0,0 +1,21 @@
+package com.mes.md.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 宸ョ▼琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@RestController
+@RequestMapping("/project")
+public class ProjectController {
+
+}
+
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/ProjectLogController.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/ProjectLogController.java
new file mode 100644
index 0000000..e99ecb1
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/ProjectLogController.java
@@ -0,0 +1,21 @@
+package com.mes.md.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 宸ョ▼琛ㄦ搷浣滆褰曟槑缁� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@RestController
+@RequestMapping("/projectLog")
+public class ProjectLogController {
+
+}
+
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/RoleController.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/RoleController.java
new file mode 100644
index 0000000..810018f
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/RoleController.java
@@ -0,0 +1,64 @@
+package com.mes.md.controller;
+
+
+import com.mes.md.entity.Role;
+import com.mes.md.service.RoleService;
+import com.mes.utils.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 瑙掕壊琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@Api(tags = "瑙掕壊銆愬鍔犺鑹诧紝淇敼锛屽垹闄わ紝鏌ヨ銆�")
+@RestController
+@RequestMapping("/role")
+public class RoleController {
+    @Autowired
+    RoleService roleService;
+
+    @ApiOperation("杩斿洖鎵�鏈夎鑹�")
+    @PostMapping("/findRolesAll")
+    @ResponseBody
+    public Result findRolesAll () {
+        List<Role> roles=roleService.findRolesAll();
+        return Result.build(200,"鎴愬姛",roles);
+    }
+
+    @ApiOperation("娣诲姞瑙掕壊")
+    @PostMapping("/addRole")
+    @ResponseBody
+    public Result addRole (@RequestBody Role role) {
+        int count=roleService.addRole(role);
+        String message=count>0?"瑙掕壊娣诲姞鎴愬姛锛�"+count:"瑙掕壊娣诲姞澶辫触!";
+        return Result.build(200,message,count);
+    }
+
+    @ApiOperation("淇敼瑙掕壊")
+    @PostMapping("/updateRole")
+    @ResponseBody
+    public Result updateRole (@RequestBody Role role) {
+        int count=roleService.updateRole(role);
+        String message=count>0?"瑙掕壊淇敼鎴愬姛锛�"+count:"瑙掕壊淇敼澶辫触!";
+        return Result.build(200,message,count);
+    }
+
+    @ApiOperation("鍒犻櫎瑙掕壊")
+    @PostMapping("/deleteRole")
+    @ResponseBody
+    public Result deleteRole (@RequestBody Role role) {
+        int count=roleService.deleteRole(role);
+        String message=count>0?"瑙掕壊鍒犻櫎鎴愬姛锛�"+count:"瑙掕壊鍒犻櫎澶辫触!";
+        return Result.build(200,message,count);
+    }
+}
+
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/RoleMenuController.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/RoleMenuController.java
new file mode 100644
index 0000000..9b02ff9
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/RoleMenuController.java
@@ -0,0 +1,66 @@
+package com.mes.md.controller;
+
+
+import com.mes.md.entity.RoleMenu;
+import com.mes.md.service.RoleMenuService;
+import com.mes.utils.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 瑙掕壊鏉冮檺琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author yanzhixin
+ * @since 2024-09-05
+ */
+@Api(tags = "瑙掕壊鏉冮檺")
+@RestController
+@RequestMapping("/roleMenu")
+public class RoleMenuController {
+
+    @Autowired
+    RoleMenuService roleMenuService;
+
+    @ApiOperation("杩斿洖鎵�鏈夎鑹叉潈闄�")
+    @PostMapping("/findRoleMenusAll")
+    @ResponseBody
+    public Result findRoleMenusAll () {
+        List<Map<String, Object>> roleMenus=roleMenuService.findRoleMenusAll();
+        return Result.build(200,"鎴愬姛",roleMenus);
+    }
+
+    @ApiOperation("娣诲姞瑙掕壊鏉冮檺")
+    @PostMapping("/addRoleMenu")
+    @ResponseBody
+    public Result addRoleMenu (@RequestBody RoleMenu roleMenu) {
+        int count=roleMenuService.addRoleMenu(roleMenu);
+        String message=count>0?"瑙掕壊鏉冮檺娣诲姞鎴愬姛锛�"+count:"瑙掕壊鏉冮檺娣诲姞澶辫触!";
+        return Result.build(200,message,count);
+    }
+
+    @ApiOperation("淇敼瑙掕壊鏉冮檺")
+    @PostMapping("/updateRoleMenu")
+    @ResponseBody
+    public Result updateRoleMenu (@RequestBody RoleMenu roleMenu) {
+        int count=roleMenuService.updateRoleMenu(roleMenu);
+        String message=count>0?"瑙掕壊鏉冮檺淇敼鎴愬姛锛�"+count:"瑙掕壊鏉冮檺淇敼澶辫触!";
+        return Result.build(200,message,count);
+    }
+
+    @ApiOperation("鍒犻櫎瑙掕壊鏉冮檺")
+    @PostMapping("/deleteRoleMenu")
+    @ResponseBody
+    public Result deleteRoleMenu (@RequestBody RoleMenu roleMenu) {
+        int count=roleMenuService.deleteRoleMenu(roleMenu);
+        String message=count>0?"瑙掕壊鏉冮檺鍒犻櫎鎴愬姛锛�"+count:"瑙掕壊鏉冮檺鍒犻櫎澶辫触!";
+        return Result.build(200,message,count);
+    }
+}
+
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/TaskLogController.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/TaskLogController.java
new file mode 100644
index 0000000..c4e7333
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/TaskLogController.java
@@ -0,0 +1,21 @@
+package com.mes.md.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@RestController
+@RequestMapping("/taskLog")
+public class TaskLogController {
+
+}
+
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/TaskingController.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/TaskingController.java
new file mode 100644
index 0000000..329b2ef
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/TaskingController.java
@@ -0,0 +1,21 @@
+package com.mes.md.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 宸ヤ綔浠诲姟鎿嶄綔璁板綍鏄庣粏 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@RestController
+@RequestMapping("/tasking")
+public class TaskingController {
+
+}
+
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/WorkTaskDetailController.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/WorkTaskDetailController.java
new file mode 100644
index 0000000..6d64a44
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/controller/WorkTaskDetailController.java
@@ -0,0 +1,21 @@
+package com.mes.md.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 宸ヤ綔浠诲姟鏄庣粏琛紙宸ヤ綔涓級 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@RestController
+@RequestMapping("/workTaskDetail")
+public class WorkTaskDetailController {
+
+}
+
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/Account.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/Account.java
new file mode 100644
index 0000000..6b354fe
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/Account.java
@@ -0,0 +1,50 @@
+package com.mes.md.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 璐︽埛琛�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class Account implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 璐︽埛琛ㄤ富閿�
+     */
+      @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 鐢ㄦ埛鍚嶇О
+     */
+    private String userName;
+
+    /**
+     * 瑙掕壊id
+     */
+    private Long roleId;
+
+    /**
+     * 璐︽埛
+     */
+    private String account;
+
+    /**
+     * 瀵嗙爜
+     */
+    private String password;
+
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/EdgeGrindingLog.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/EdgeGrindingLog.java
new file mode 100644
index 0000000..29ec277
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/EdgeGrindingLog.java
@@ -0,0 +1,56 @@
+package com.mes.md.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 纾ㄨ竟鏈鸿澶囦氦浜掕褰曡〃
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EdgeGrindingLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 纾ㄨ竟鏈鸿澶囦氦浜掕褰曚富閿�
+     */
+      @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 鎵规鍙�
+     */
+    private String batchNumber;
+
+    /**
+     * 鎵爜ID (鍞竴)銆愭澘浠禝D銆�
+     */
+    private String scanId;
+
+    /**
+     * 鍙戦�佸唴瀹�
+     */
+    private String sendContent;
+
+    /**
+     * 鏃堕棿
+     */
+    private LocalTime sendTime;
+
+    /**
+     * 浜や簰绫诲瀷
+     */
+    private String type;
+
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/EquipmentLog.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/EquipmentLog.java
new file mode 100644
index 0000000..e822268
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/EquipmentLog.java
@@ -0,0 +1,56 @@
+package com.mes.md.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 璁惧浜や簰璁板綍琛�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EquipmentLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 璁惧浜や簰璁板綍琛ㄤ富閿�
+     */
+      @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 鎵规鍙�
+     */
+    private String batchNumber;
+
+    /**
+     * 鎵爜ID (鍞竴)銆愭澘浠禝D銆�
+     */
+    private String scanId;
+
+    /**
+     * 鍙戦�佸唴瀹�
+     */
+    private String sendContent;
+
+    /**
+     * 鏃堕棿
+     */
+    private LocalTime sendTime;
+
+    /**
+     * 浜や簰绫诲瀷
+     */
+    private String type;
+
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/GlassInfo.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/GlassInfo.java
new file mode 100644
index 0000000..8ba3f41
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/GlassInfo.java
@@ -0,0 +1,105 @@
+package com.mes.md.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 灏忕墖琛� (涓讳綋鍖楃幓)
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class GlassInfo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 鐜荤拑灏忕墖琛ㄤ富閿�
+     */
+      @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 鎵规鍙�
+     */
+    private String batchNumber;
+
+    /**
+     * 鎵爜ID (鍞竴)銆愭澘浠禝D銆�
+     */
+    private String scanId;
+
+    /**
+     * 绋嬪簭ID
+     */
+    private String programId;
+
+    /**
+     * 浠诲姟绫诲瀷銆愬畾鍒�/鏍囧噯銆�
+     */
+    private String taskType;
+
+    /**
+     * 浠诲姟椤哄簭
+     */
+    private Integer taskSequence;
+
+    /**
+     * 浠诲姟鏁伴噺
+     */
+    private Integer taskQuantity;
+
+    /**
+     * 闀�
+     */
+    private Double length;
+
+    /**
+     * 瀹�
+     */
+    private Double width;
+
+    /**
+     * 鍘�
+     */
+    private Double thickness;
+
+    /**
+     * 鐐硅兌鍥剧焊
+     */
+    private String drawingGlue;
+
+    /**
+     * 鎵撴爣鍥剧焊
+     */
+    private String drawingMarking;
+
+    /**
+     * 涓濆嵃X
+     */
+    private Double silkScreenX;
+
+    /**
+     * 涓濆嵃Y
+     */
+    private Double silkScreenY;
+
+    /**
+     * 鏄惁鎵撴爣
+     */
+    private Integer isMarking;
+
+    /**
+     * 鏄惁涓濆嵃
+     */
+    private Integer isSilkScreen;
+
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/Menu.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/Menu.java
new file mode 100644
index 0000000..5ac4f42
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/Menu.java
@@ -0,0 +1,45 @@
+package com.mes.md.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class Menu implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 椤甸潰鑿滃崟鏍忎富閿�
+     */
+      @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 鑿滃崟缂栧彿
+     */
+    private String menuNumber;
+
+    /**
+     * 鑿滃崟鍚嶇О
+     */
+    private String menuName;
+
+    /**
+     * 澶囨敞
+     */
+    private String remark;
+
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/OrderOriginalPiece.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/OrderOriginalPiece.java
new file mode 100644
index 0000000..5124ea5
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/OrderOriginalPiece.java
@@ -0,0 +1,55 @@
+package com.mes.md.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 璁㈠崟鍘熺墖锛堟墜宸ュ鍏ワ級琛�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class OrderOriginalPiece implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 璁㈠崟鍘熺墖琛ㄤ富閿�
+     */
+      @TableId(value = "number", type = IdType.AUTO)
+    private Long number;
+
+    /**
+     * 鎵规
+     */
+    private String batchNumber;
+
+    /**
+     * 灏哄
+     */
+    private String size;
+
+    /**
+     * 鑶滅郴
+     */
+    private String color;
+
+    /**
+     * 鏁伴噺
+     */
+    private Integer sequence;
+
+    /**
+     * 浼樺寲闈㈢Н
+     */
+    private Double optimizeArea;
+
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/Page.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/Page.java
new file mode 100644
index 0000000..eb81e88
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/Page.java
@@ -0,0 +1,45 @@
+package com.mes.md.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 椤甸潰琛�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class Page implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 椤甸潰琛ㄤ富閿�
+     */
+      @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 椤甸潰缂栧彿
+     */
+    private String pageNumber;
+
+    /**
+     * 椤甸潰鍚嶇О
+     */
+    private String pageName;
+
+    /**
+     * 椤甸潰URL
+     */
+    private String pageUrl;
+
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/PrimitiveTask.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/PrimitiveTask.java
new file mode 100644
index 0000000..12e9c7e
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/PrimitiveTask.java
@@ -0,0 +1,105 @@
+package com.mes.md.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 鍘熷浠诲姟琛�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class PrimitiveTask implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *  鍘熷浠诲姟琛ㄤ富閿�(瀹㈡埛鎻愪緵鏍锋湰)
+     */
+      @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 鎵规鍙�
+     */
+    private String batchNumber;
+
+    /**
+     * 鎵爜ID (鍞竴)銆愭澘浠禝D銆�
+     */
+    private String scanId;
+
+    /**
+     * 绋嬪簭ID
+     */
+    private String programId;
+
+    /**
+     * 浠诲姟绫诲瀷銆愬畾鍒�/鏍囧噯銆�
+     */
+    private String taskType;
+
+    /**
+     * 浠诲姟椤哄簭
+     */
+    private Integer taskSequence;
+
+    /**
+     * 浠诲姟鏁伴噺
+     */
+    private Integer taskQuantity;
+
+    /**
+     * 闀�
+     */
+    private Double length;
+
+    /**
+     * 瀹�
+     */
+    private Double width;
+
+    /**
+     * 鍘�
+     */
+    private Double thickness;
+
+    /**
+     * 鐐硅兌鍥剧焊
+     */
+    private String drawingGlue;
+
+    /**
+     * 鎵撴爣鍥剧焊
+     */
+    private String drawingMarking;
+
+    /**
+     * 涓濆嵃X
+     */
+    private Double silkScreenX;
+
+    /**
+     * 涓濆嵃Y
+     */
+    private Double silkScreenY;
+
+    /**
+     * 鏄惁鎵撴爣
+     */
+    private Integer isMarking;
+
+    /**
+     * 鏄惁涓濆嵃
+     */
+    private Integer isSilkScreen;
+
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/Project.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/Project.java
new file mode 100644
index 0000000..5df0cd4
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/Project.java
@@ -0,0 +1,56 @@
+package com.mes.md.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 宸ョ▼琛�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class Project implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 宸ョ▼琛ㄤ富閿�
+     */
+      @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 鎵规鍙�
+     */
+    private String batchNumber;
+
+    /**
+     * 鏁伴噺
+     */
+    private Integer quantity;
+
+    /**
+     * 闈㈢Н
+     */
+    private Double area;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 浠诲姟鐘舵�併�愮瓑寰�/寮�宸�/鏆傚仠/瀹屽伐銆�
+     */
+    private String state;
+
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/ProjectLog.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/ProjectLog.java
new file mode 100644
index 0000000..73ae71b
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/ProjectLog.java
@@ -0,0 +1,51 @@
+package com.mes.md.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 宸ョ▼琛ㄦ搷浣滆褰曟槑缁�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ProjectLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 宸ョ▼琛ㄦ搷浣滆褰曟槑缁嗚〃涓婚敭
+     */
+      @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 宸ョ▼琛↖D
+     */
+    private Long engineeringId;
+
+    /**
+     * 鎿嶄綔鏃堕棿
+     */
+    private LocalDateTime operateTime;
+
+    /**
+     * 鍘熸暟鎹�
+     */
+    private String oldData;
+
+    /**
+     * 褰撳墠鏁版嵁
+     */
+    private String newData;
+
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/Role.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/Role.java
new file mode 100644
index 0000000..dc60143
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/Role.java
@@ -0,0 +1,45 @@
+package com.mes.md.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 瑙掕壊琛�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class Role implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 瑙掕壊琛ㄤ富閿�
+     */
+      @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 瑙掕壊缂栧彿
+     */
+    private String roleNumber;
+
+    /**
+     * 瑙掕壊鍚嶇О
+     */
+    private String roleName;
+
+    /**
+     * 澶囨敞
+     */
+    private String remark;
+
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/RoleMenu.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/RoleMenu.java
new file mode 100644
index 0000000..46bbcaf
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/RoleMenu.java
@@ -0,0 +1,50 @@
+package com.mes.md.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 瑙掕壊鏉冮檺琛�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class RoleMenu implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 瑙掕壊鏉冮檺涓婚敭
+     */
+      @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 瑙掕壊缂栧彿
+     */
+    private Long roleId;
+
+    /**
+     * 鎵�灞炶彍鍗曟爮
+     */
+    private Long menuId;
+
+    /**
+     * 椤甸潰ID
+     */
+    private Long pageId;
+
+    /**
+     * 鑿滃崟鏍忓唴椤哄簭
+     */
+    private Integer menuSequence;
+
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/TaskLog.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/TaskLog.java
new file mode 100644
index 0000000..02afa95
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/TaskLog.java
@@ -0,0 +1,56 @@
+package com.mes.md.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class TaskLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 涓婚敭
+     */
+      @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 灏忕墖琛↖D
+     */
+    private Long taskDetail;
+
+    /**
+     * 鎿嶄綔绫诲瀷
+     */
+    private String operateType;
+
+    /**
+     * 鎿嶄綔鏃堕棿
+     */
+    private LocalDateTime operateTime;
+
+    /**
+     * 鍘熸暟鎹�
+     */
+    private String oldData;
+
+    /**
+     * 褰撳墠鏁版嵁
+     */
+    private String newData;
+
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/Tasking.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/Tasking.java
new file mode 100644
index 0000000..8a41a33
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/Tasking.java
@@ -0,0 +1,120 @@
+package com.mes.md.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 宸ヤ綔浠诲姟鏄庣粏琛紙宸ヤ綔涓級
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class Tasking implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 鐜荤拑鍞竴ID锛堝寳鐜伙級涓婚敭
+     */
+      @TableId(value = "glass_id", type = IdType.AUTO)
+    private Long glassId;
+
+    /**
+     * 鎵规鍙�
+     */
+    private String batchNumber;
+
+    /**
+     * 鎵爜ID (鍞竴)銆愭澘浠禝D銆�
+     */
+    private String scanId;
+
+    /**
+     * 绋嬪簭ID
+     */
+    private String programId;
+
+    /**
+     * 浠诲姟绫诲瀷銆愬畾鍒�/鏍囧噯銆�
+     */
+    private String taskType;
+
+    /**
+     * 浠诲姟椤哄簭
+     */
+    private Integer taskSequence;
+
+    /**
+     * 浠诲姟鏁伴噺
+     */
+    private Integer taskQuantity;
+
+    /**
+     * 闀�
+     */
+    private Double length;
+
+    /**
+     * 瀹�
+     */
+    private Double width;
+
+    /**
+     * 鍘�
+     */
+    private Double thickness;
+
+    /**
+     * 鐐硅兌鍥剧焊
+     */
+    private String drawingGlue;
+
+    /**
+     * 鎵撴爣鍥剧焊
+     */
+    private String drawingMarking;
+
+    /**
+     * 涓濆嵃X
+     */
+    private Double silkScreenX;
+
+    /**
+     * 涓濆嵃Y
+     */
+    private Double silkScreenY;
+
+    /**
+     * 鏄惁鎵撴爣
+     */
+    private Integer isMarking;
+
+    /**
+     * 鏄惁涓濆嵃
+     */
+    private Integer isSilkScreen;
+
+    /**
+     * 浠诲姟鐘舵�併�愮瓑寰�/宸ヤ綔/瀹屾垚銆�
+     */
+    private String workState;
+
+    /**
+     * 褰撳墠鎵�鍦ㄥ伐鑹�
+     */
+    private String currentCraft;
+
+    /**
+     * 鐘舵�併�愮嚎涓�/绾夸笅銆�
+     */
+    private String state;
+
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/WorkTaskDetail.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/WorkTaskDetail.java
new file mode 100644
index 0000000..a98b54c
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/entity/WorkTaskDetail.java
@@ -0,0 +1,120 @@
+package com.mes.md.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 宸ヤ綔浠诲姟鏄庣粏琛紙宸ヤ綔涓級
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class WorkTaskDetail implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 鐜荤拑鍞竴ID锛堝寳鐜伙級涓婚敭
+     */
+      @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 鎵规鍙�
+     */
+    private String batchNumber;
+
+    /**
+     * 鎵爜ID (鍞竴)銆愭澘浠禝D銆�
+     */
+    private String scanId;
+
+    /**
+     * 绋嬪簭ID
+     */
+    private String programId;
+
+    /**
+     * 浠诲姟绫诲瀷銆愬畾鍒�/鏍囧噯銆�
+     */
+    private String taskType;
+
+    /**
+     * 浠诲姟椤哄簭
+     */
+    private Integer taskSequence;
+
+    /**
+     * 浠诲姟鏁伴噺
+     */
+    private Integer taskQuantity;
+
+    /**
+     * 闀�
+     */
+    private Double length;
+
+    /**
+     * 瀹�
+     */
+    private Double width;
+
+    /**
+     * 鍘�
+     */
+    private Double thickness;
+
+    /**
+     * 鐐硅兌鍥剧焊
+     */
+    private String drawingGlue;
+
+    /**
+     * 鎵撴爣鍥剧焊
+     */
+    private String drawingMarking;
+
+    /**
+     * 涓濆嵃X
+     */
+    private Double silkScreenX;
+
+    /**
+     * 涓濆嵃Y
+     */
+    private Double silkScreenY;
+
+    /**
+     * 鏄惁鎵撴爣
+     */
+    private Integer isMarking;
+
+    /**
+     * 鏄惁涓濆嵃
+     */
+    private Integer isSilkScreen;
+
+    /**
+     * 浠诲姟鐘舵�併�愮瓑寰�/宸ヤ綔/瀹屾垚銆�
+     */
+    private String workState;
+
+    /**
+     * 褰撳墠鎵�鍦ㄥ伐鑹�
+     */
+    private String currentCraft;
+
+    /**
+     * 鐘舵�侊細銆愮嚎涓�/绾夸笅銆�
+     */
+    private String state;
+
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/AccountMapper.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/AccountMapper.java
new file mode 100644
index 0000000..e6f72ff
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/AccountMapper.java
@@ -0,0 +1,17 @@
+package com.mes.md.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.mes.md.entity.Account;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 璐︽埛琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+public interface AccountMapper extends MPJBaseMapper<Account> {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/EdgeGrindingLogMapper.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/EdgeGrindingLogMapper.java
new file mode 100644
index 0000000..a8b6ef5
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/EdgeGrindingLogMapper.java
@@ -0,0 +1,17 @@
+package com.mes.md.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.mes.md.entity.EdgeGrindingLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 纾ㄨ竟鏈鸿澶囦氦浜掕褰曡〃 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+public interface EdgeGrindingLogMapper extends MPJBaseMapper<EdgeGrindingLog> {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/EquipmentLogMapper.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/EquipmentLogMapper.java
new file mode 100644
index 0000000..3d26a6c
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/EquipmentLogMapper.java
@@ -0,0 +1,17 @@
+package com.mes.md.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.mes.md.entity.EquipmentLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 璁惧浜や簰璁板綍琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+public interface EquipmentLogMapper extends MPJBaseMapper<EquipmentLog> {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/GlassInfoMapper.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/GlassInfoMapper.java
new file mode 100644
index 0000000..9967862
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/GlassInfoMapper.java
@@ -0,0 +1,17 @@
+package com.mes.md.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.mes.md.entity.GlassInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 灏忕墖琛� (涓讳綋鍖楃幓) Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+public interface GlassInfoMapper extends MPJBaseMapper<GlassInfo> {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/MenuMapper.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/MenuMapper.java
new file mode 100644
index 0000000..6876361
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/MenuMapper.java
@@ -0,0 +1,17 @@
+package com.mes.md.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.mes.md.entity.Menu;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+public interface MenuMapper extends MPJBaseMapper<Menu> {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/OrderOriginalPieceMapper.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/OrderOriginalPieceMapper.java
new file mode 100644
index 0000000..1af8c8d
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/OrderOriginalPieceMapper.java
@@ -0,0 +1,17 @@
+package com.mes.md.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.mes.md.entity.OrderOriginalPiece;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 璁㈠崟鍘熺墖锛堟墜宸ュ鍏ワ級琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+public interface OrderOriginalPieceMapper extends MPJBaseMapper<OrderOriginalPiece> {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/PageMapper.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/PageMapper.java
new file mode 100644
index 0000000..1553155
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/PageMapper.java
@@ -0,0 +1,17 @@
+package com.mes.md.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.mes.md.entity.Page;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 椤甸潰琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+public interface PageMapper extends MPJBaseMapper<Page> {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/PrimitiveTaskMapper.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/PrimitiveTaskMapper.java
new file mode 100644
index 0000000..0132783
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/PrimitiveTaskMapper.java
@@ -0,0 +1,17 @@
+package com.mes.md.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.mes.md.entity.PrimitiveTask;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 鍘熷浠诲姟琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+public interface PrimitiveTaskMapper extends MPJBaseMapper<PrimitiveTask> {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/ProjectLogMapper.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/ProjectLogMapper.java
new file mode 100644
index 0000000..1cda116
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/ProjectLogMapper.java
@@ -0,0 +1,17 @@
+package com.mes.md.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.mes.md.entity.ProjectLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 宸ョ▼琛ㄦ搷浣滆褰曟槑缁� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+public interface ProjectLogMapper extends MPJBaseMapper<ProjectLog> {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/ProjectMapper.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/ProjectMapper.java
new file mode 100644
index 0000000..d09e337
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/ProjectMapper.java
@@ -0,0 +1,17 @@
+package com.mes.md.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.mes.md.entity.Project;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 宸ョ▼琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+public interface ProjectMapper extends MPJBaseMapper<Project> {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/RoleMapper.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/RoleMapper.java
new file mode 100644
index 0000000..635cf6a
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/RoleMapper.java
@@ -0,0 +1,17 @@
+package com.mes.md.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.mes.md.entity.Role;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 瑙掕壊琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+public interface RoleMapper extends MPJBaseMapper<Role> {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/RoleMenuMapper.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/RoleMenuMapper.java
new file mode 100644
index 0000000..760217d
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/RoleMenuMapper.java
@@ -0,0 +1,17 @@
+package com.mes.md.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.mes.md.entity.RoleMenu;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 瑙掕壊鏉冮檺琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+public interface RoleMenuMapper extends MPJBaseMapper<RoleMenu> {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/TaskLogMapper.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/TaskLogMapper.java
new file mode 100644
index 0000000..d59e498
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/TaskLogMapper.java
@@ -0,0 +1,17 @@
+package com.mes.md.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.mes.md.entity.TaskLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+public interface TaskLogMapper extends MPJBaseMapper<TaskLog> {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/TaskingMapper.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/TaskingMapper.java
new file mode 100644
index 0000000..8ac79be
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/TaskingMapper.java
@@ -0,0 +1,17 @@
+package com.mes.md.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.mes.md.entity.Tasking;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 宸ヤ綔浠诲姟鎿嶄綔璁板綍鏄庣粏 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+public interface TaskingMapper extends MPJBaseMapper<Tasking> {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/WorkTaskDetailMapper.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/WorkTaskDetailMapper.java
new file mode 100644
index 0000000..706f678
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/WorkTaskDetailMapper.java
@@ -0,0 +1,17 @@
+package com.mes.md.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.mes.md.entity.WorkTaskDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 宸ヤ綔浠诲姟鏄庣粏琛紙宸ヤ綔涓級 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+public interface WorkTaskDetailMapper extends MPJBaseMapper<WorkTaskDetail> {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/AccountMapper.xml b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/AccountMapper.xml
new file mode 100644
index 0000000..618ab8f
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/AccountMapper.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.md.mapper.AccountMapper">
+
+</mapper>
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/EdgeGrindingLogMapper.xml b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/EdgeGrindingLogMapper.xml
new file mode 100644
index 0000000..ea87a89
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/EdgeGrindingLogMapper.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.md.mapper.EdgeGrindingLogMapper">
+
+</mapper>
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/EquipmentLogMapper.xml b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/EquipmentLogMapper.xml
new file mode 100644
index 0000000..bed130f
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/EquipmentLogMapper.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.md.mapper.EquipmentLogMapper">
+
+</mapper>
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/GlassInfoMapper.xml b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/GlassInfoMapper.xml
new file mode 100644
index 0000000..a8e4864
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/GlassInfoMapper.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.md.mapper.GlassInfoMapper">
+
+</mapper>
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/MenuMapper.xml b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/MenuMapper.xml
new file mode 100644
index 0000000..9873096
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/MenuMapper.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.md.mapper.MenuMapper">
+
+</mapper>
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/OrderOriginalPieceMapper.xml b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/OrderOriginalPieceMapper.xml
new file mode 100644
index 0000000..88ae92e
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/OrderOriginalPieceMapper.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.md.mapper.OrderOriginalPieceMapper">
+
+</mapper>
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/PageMapper.xml b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/PageMapper.xml
new file mode 100644
index 0000000..e865770
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/PageMapper.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.md.mapper.PageMapper">
+
+</mapper>
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/PrimitiveTaskMapper.xml b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/PrimitiveTaskMapper.xml
new file mode 100644
index 0000000..2f9ab52
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/PrimitiveTaskMapper.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.md.mapper.PrimitiveTaskMapper">
+
+</mapper>
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/ProjectLogMapper.xml b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/ProjectLogMapper.xml
new file mode 100644
index 0000000..64fffbb
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/ProjectLogMapper.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.md.mapper.ProjectLogMapper">
+
+</mapper>
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/ProjectMapper.xml b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/ProjectMapper.xml
new file mode 100644
index 0000000..2c18310
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/ProjectMapper.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.md.mapper.ProjectMapper">
+
+</mapper>
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/RoleMapper.xml b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/RoleMapper.xml
new file mode 100644
index 0000000..743da8f
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/RoleMapper.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.md.mapper.RoleMapper">
+
+</mapper>
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/RoleMenuMapper.xml b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/RoleMenuMapper.xml
new file mode 100644
index 0000000..7a94145
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/RoleMenuMapper.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.md.mapper.RoleMenuMapper">
+
+</mapper>
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/TaskLogMapper.xml b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/TaskLogMapper.xml
new file mode 100644
index 0000000..b6310eb
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/TaskLogMapper.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.md.mapper.TaskLogMapper">
+
+</mapper>
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/TaskingMapper.xml b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/TaskingMapper.xml
new file mode 100644
index 0000000..62e355c
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/TaskingMapper.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.md.mapper.TaskingMapper">
+
+</mapper>
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/WorkTaskDetailMapper.xml b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/WorkTaskDetailMapper.xml
new file mode 100644
index 0000000..21b1707
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/mapper/xml/WorkTaskDetailMapper.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.md.mapper.WorkTaskDetailMapper">
+
+</mapper>
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/AccountService.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/AccountService.java
new file mode 100644
index 0000000..ac04edd
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/AccountService.java
@@ -0,0 +1,33 @@
+package com.mes.md.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.mes.md.entity.Account;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 璐︽埛琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+public interface AccountService extends MPJBaseService<Account> {
+    /**
+     * 杈撳叆璐︽埛瀵嗙爜 杩斿洖鏉冮檺
+     * @return
+     */
+    Map<String, Object> selectAccount(String account, String password);
+
+
+    List<Map<String, Object>> findAccounts();
+
+    int addAccount(Account account);
+
+    int updateAccount(Account account);
+
+    int deleteAccount(Account account);
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/EdgeGrindingLogService.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/EdgeGrindingLogService.java
new file mode 100644
index 0000000..c7d25db
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/EdgeGrindingLogService.java
@@ -0,0 +1,17 @@
+package com.mes.md.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.mes.md.entity.EdgeGrindingLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 纾ㄨ竟鏈鸿澶囦氦浜掕褰曡〃 鏈嶅姟绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+public interface EdgeGrindingLogService extends MPJBaseService<EdgeGrindingLog> {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/EquipmentLogService.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/EquipmentLogService.java
new file mode 100644
index 0000000..e255f3c
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/EquipmentLogService.java
@@ -0,0 +1,17 @@
+package com.mes.md.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.mes.md.entity.EquipmentLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 璁惧浜や簰璁板綍琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+public interface EquipmentLogService extends MPJBaseService<EquipmentLog> {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/GlassInfoService.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/GlassInfoService.java
new file mode 100644
index 0000000..cb2efe2
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/GlassInfoService.java
@@ -0,0 +1,17 @@
+package com.mes.md.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.mes.md.entity.GlassInfo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 灏忕墖琛� (涓讳綋鍖楃幓) 鏈嶅姟绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+public interface GlassInfoService extends MPJBaseService<GlassInfo> {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/MenuService.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/MenuService.java
new file mode 100644
index 0000000..f72c76d
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/MenuService.java
@@ -0,0 +1,42 @@
+package com.mes.md.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.mes.md.entity.Menu;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  鏈嶅姟绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+public interface MenuService extends MPJBaseService<Menu> {
+    /**
+     * 杩斿洖鎵�鏈夎彍鍗�
+     * @return
+     */
+    List<Menu> findMenusAll();
+
+    /**
+     * 娣诲姞鑿滃崟
+     * @return
+     */
+    int addMenu(Menu menu);
+
+    /**
+     * 淇敼鑿滃崟
+     * @return
+     */
+    int updateMenu(Menu menu);
+
+    /**
+     * 鍒犻櫎鑿滃崟
+     * @return
+     */
+    int deleteMenu(Menu menu);
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/OrderOriginalPieceService.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/OrderOriginalPieceService.java
new file mode 100644
index 0000000..d800dbf
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/OrderOriginalPieceService.java
@@ -0,0 +1,17 @@
+package com.mes.md.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.mes.md.entity.OrderOriginalPiece;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 璁㈠崟鍘熺墖锛堟墜宸ュ鍏ワ級琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+public interface OrderOriginalPieceService extends MPJBaseService<OrderOriginalPiece> {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/PageService.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/PageService.java
new file mode 100644
index 0000000..c93f68b
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/PageService.java
@@ -0,0 +1,39 @@
+package com.mes.md.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.mes.md.entity.Menu;
+import com.mes.md.entity.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 椤甸潰琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author yanzhixin
+ * @since 2024-08-28
+ */
+public interface PageService extends MPJBaseService<Page> {
+    /**
+     * 杩斿洖鎵�鏈夐〉闈�
+     * @return
+     */
+    List<Page> findPagesAll();
+    /**
+     * 娣诲姞椤甸潰
+     * @return
+     */
+    int addPage(Page page);
+    /**
+     * 淇敼椤甸潰
+     * @return
+     */
+    int updatePage(Page page);
+    /**
+     * 鍒犻櫎椤甸潰
+     * @return
+     */
+    int deletePage(Page page);
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/PrimitiveTaskService.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/PrimitiveTaskService.java
new file mode 100644
index 0000000..b50dc13
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/PrimitiveTaskService.java
@@ -0,0 +1,17 @@
+package com.mes.md.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.mes.md.entity.PrimitiveTask;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 鍘熷浠诲姟琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+public interface PrimitiveTaskService extends MPJBaseService<PrimitiveTask> {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/ProjectLogService.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/ProjectLogService.java
new file mode 100644
index 0000000..34ed143
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/ProjectLogService.java
@@ -0,0 +1,17 @@
+package com.mes.md.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.mes.md.entity.ProjectLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 宸ョ▼琛ㄦ搷浣滆褰曟槑缁� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+public interface ProjectLogService extends MPJBaseService<ProjectLog> {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/ProjectService.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/ProjectService.java
new file mode 100644
index 0000000..ad73e79
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/ProjectService.java
@@ -0,0 +1,17 @@
+package com.mes.md.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.mes.md.entity.Project;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 宸ョ▼琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+public interface ProjectService extends MPJBaseService<Project> {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/RoleMenuService.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/RoleMenuService.java
new file mode 100644
index 0000000..50a4175
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/RoleMenuService.java
@@ -0,0 +1,44 @@
+package com.mes.md.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.mes.md.entity.RoleMenu;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 瑙掕壊鏉冮檺琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+public interface RoleMenuService extends MPJBaseService<RoleMenu> {
+    /**
+     * 鏌ヨ鎵�鏈夎鑹茬殑鏉冮檺
+     * @return
+     */
+    List<Map<String, Object>> findRoleMenusAll();
+    /**
+     * 鏌ヨ鏌愯鑹茬殑鏌愪釜鏉冮檺
+     * @return
+     */
+    List<Map<String, Object>> findRoleMenus(RoleMenu roleMenu);
+    /**
+     * 娣诲姞瑙掕壊鏉冮檺
+     * @return
+     */
+    int addRoleMenu(RoleMenu roleMenu);
+    /**
+     * 淇敼瑙掕壊鏉冮檺
+     * @return
+     */
+    int updateRoleMenu(RoleMenu roleMenu);
+    /**
+     * 鍒犻櫎瑙掕壊鏉冮檺
+     * @return
+     */
+    int deleteRoleMenu(RoleMenu roleMenu);
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/RoleService.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/RoleService.java
new file mode 100644
index 0000000..6a48a7e
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/RoleService.java
@@ -0,0 +1,42 @@
+package com.mes.md.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.mes.md.entity.Role;
+import com.mes.md.entity.Role;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 瑙掕壊琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+public interface RoleService extends MPJBaseService<Role> {
+    /**
+     * 杩斿洖鎵�鏈夎鑹�
+     * @return
+     */
+    List<Role> findRolesAll();
+
+    /**
+     * 娣诲姞瑙掕壊
+     * @return
+     */
+    int addRole(Role role);
+
+    /**
+     * 淇敼瑙掕壊
+     * @return
+     */
+    int updateRole(Role role);
+
+    /**
+     * 鍒犻櫎瑙掕壊
+     * @return
+     */
+    int deleteRole(Role role);
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/TaskLogService.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/TaskLogService.java
new file mode 100644
index 0000000..580eaa7
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/TaskLogService.java
@@ -0,0 +1,17 @@
+package com.mes.md.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.mes.md.entity.TaskLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  鏈嶅姟绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+public interface TaskLogService extends MPJBaseService<TaskLog> {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/TaskingService.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/TaskingService.java
new file mode 100644
index 0000000..de729da
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/TaskingService.java
@@ -0,0 +1,17 @@
+package com.mes.md.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.mes.md.entity.Tasking;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 宸ヤ綔浠诲姟鎿嶄綔璁板綍鏄庣粏 鏈嶅姟绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+public interface TaskingService extends MPJBaseService<Tasking> {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/WorkTaskDetailService.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/WorkTaskDetailService.java
new file mode 100644
index 0000000..0b964a4
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/WorkTaskDetailService.java
@@ -0,0 +1,17 @@
+package com.mes.md.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.mes.md.entity.WorkTaskDetail;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 宸ヤ綔浠诲姟鏄庣粏琛紙宸ヤ綔涓級 鏈嶅姟绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+public interface WorkTaskDetailService extends MPJBaseService<WorkTaskDetail> {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/AccountServiceImpl.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/AccountServiceImpl.java
new file mode 100644
index 0000000..6bb937f
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/AccountServiceImpl.java
@@ -0,0 +1,179 @@
+package com.mes.md.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.github.yulichang.toolkit.JoinWrappers;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.mes.engineering.entity.Engineering;
+import com.mes.md.entity.*;
+import com.mes.md.mapper.AccountMapper;
+import com.mes.md.mapper.RoleMapper;
+import com.mes.md.service.AccountService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 璐︽埛琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author yanzhixin
+ * @since 2024-09-03
+ */
+@Slf4j
+@Service
+public class AccountServiceImpl extends MPJBaseServiceImpl<AccountMapper, Account> implements AccountService {
+
+    @Autowired
+    RoleMapper roleMapper;
+    /**
+     * 杈撳叆璐︽埛瀵嗙爜 杩斿洖鏉冮檺
+     * @return
+     */
+    @Override
+    public Map<String, Object> selectAccount(String account, String password){
+        //杩斿洖缁撴灉 鐢ㄦ埛鏉冮檺
+        Map<String, Object> accountRole=new HashMap<>();
+        //楠岃瘉閫氳繃鐨勭敤鎴�  鏉冮檺鍐呭
+        List<Map<String,Object>> username=baseMapper.selectJoinMaps(JoinWrappers.lambda(Account.class)
+                .selectAll(Account.class)
+                .selectAs(Role::getRoleName,"role_name")
+                .selectAs(Role::getRoleNumber,"role_number")
+                .selectAs(Role::getRemark,"role_remark")
+                .selectAs(RoleMenu::getId,"role_menu_id")
+                .selectAs(RoleMenu::getMenuId,"menu_id")
+                .selectAs(RoleMenu::getPageId,"page_id")
+                .selectAs(RoleMenu::getMenuSequence,"remark")
+                .selectAs(Menu::getMenuName,"menu_name")
+                .selectAs(Menu::getMenuNumber,"menu_number")
+                .selectAs(Menu::getRemark,"menu_remark")
+                .selectAs(Page::getPageName,"page_name")
+                .selectAs(Page::getPageNumber,"page_number")
+                .selectAs(Page::getPageUrl,"page_url")
+                .innerJoin(Role.class,on->on.eq(Role::getId,Account::getRoleId))
+                .innerJoin(RoleMenu.class,on->on.eq(RoleMenu::getRoleId,Role::getId))
+                .innerJoin(Menu.class, on->on.eq(Menu::getId,RoleMenu::getMenuId))
+                .innerJoin(Page.class, on->on.eq(Page::getId,RoleMenu::getPageId))
+                .eq(Account::getAccount,account)
+                .eq(Account::getPassword, password)
+        );
+
+        List<String> keyMenus=new ArrayList<>();//鑿滃崟椤哄簭
+        //Map<String, Object> menus=new HashMap<>();//鑿滃崟鍐呭椤�
+
+        if (username.size()>0){
+            Map<String,Object> frist=username.get(0);
+            //璐︽埛淇℃伅
+            accountRole.put("id",frist.get("id").toString());
+            accountRole.put("user_name",frist.get("user_name").toString());
+            accountRole.put("account",frist.get("account").toString());
+            accountRole.put("role_id",frist.get("role_id").toString());
+            for (Map<String,Object> item:username){
+
+                if(keyMenus.contains(item.get("menu_id").toString())){
+                    //瀛樺湪姝よ彍鍗�
+                    int index=keyMenus.indexOf(item.get("menu_id").toString());
+                    List<Map<String, Object>> thisMenus= (List<Map<String, Object>>) accountRole.get("menus");
+                    Map<String, Object> thisMenu=(Map<String, Object>)thisMenus.get(index);
+                    List<Map<String, Object>> thisPages= (List<Map<String, Object>>) thisMenu.get("pages");
+                    //娣诲姞椤甸潰缁�
+                    Map<String, Object> page=new HashMap<>();//椤甸潰
+                    page.put("page_id",item.get("page_id"));
+                    page.put("page_name",item.get("page_name"));
+                    page.put("page_number",item.get("page_number"));
+                    page.put("page_url",item.get("page_url"));
+                    page.put("menu_sequence",item.get("menu_sequence"));
+                    thisPages.add(page);
+                    thisMenu.put("pages",thisPages);
+                    thisMenus.set(index,thisMenu);
+                    accountRole.put("menus",thisMenus);
+                }else if(keyMenus.size()>0){
+                    //涓嶅瓨鍦ㄦ鑿滃崟
+                    List<Map<String, Object>> thisMenus= (List<Map<String, Object>>) accountRole.get("menus");
+                    Map<String, Object> thisMenu=new HashMap<>();
+                    thisMenu.put("menu_id",item.get("menu_id"));
+                    thisMenu.put("menu_name",item.get("menu_name"));
+                    thisMenu.put("menu_number",item.get("menu_number"));
+                    thisMenu.put("menu_remark",item.get("menu_remark"));
+                    List<Map<String, Object>> thisPages= new ArrayList<>();
+                    //娣诲姞椤甸潰缁�
+                    Map<String, Object> page=new HashMap<>();//椤甸潰
+                    page.put("page_id",item.get("page_id"));
+                    page.put("page_name",item.get("page_name"));
+                    page.put("page_number",item.get("page_number"));
+                    page.put("page_url",item.get("page_url"));
+                    page.put("menu_sequence",item.get("menu_sequence"));
+                    thisPages.add(page);
+                    thisMenu.put("pages",thisPages);
+                    thisMenus.add(thisMenu);
+                    accountRole.put("menus",thisMenus);
+                }else{
+                    keyMenus.add(item.get("menu_id").toString());
+                    //娣诲姞鑿滃崟缁�  涓嶅瓨鍦ㄦ甯﹀崟鍒欐坊鍔�
+                    List<Map<String, Object>> menus=new ArrayList<>();//鑿滃崟缁�
+                    Map<String, Object> menu=new HashMap<>();         //鑿滃崟
+                    menu.put("menu_id",item.get("menu_id"));
+                    menu.put("menu_name",item.get("menu_name"));
+                    menu.put("menu_number",item.get("menu_number"));
+                    menu.put("menu_remark",item.get("menu_remark"));
+                    //娣诲姞椤甸潰缁�
+                    List<Map<String, Object>> pages=new ArrayList<>();//椤甸潰缁�
+                    Map<String, Object> page=new HashMap<>();//椤甸潰
+                    page.put("page_id",item.get("page_id"));
+                    page.put("page_name",item.get("page_name"));
+                    page.put("page_number",item.get("page_number"));
+                    page.put("page_url",item.get("page_url"));
+                    page.put("menu_sequence",item.get("menu_sequence"));
+                    pages.add(page);
+                    menu.put("pages",pages);
+                    menus.add(menu);
+                    accountRole.put("menus",menus);
+                }
+            }
+        }
+        return accountRole;
+    }
+    /**
+     * 鏌ヨ鎵�鏈夎处鎴�
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> findAccounts(){
+        return baseMapper.selectJoinMaps(JoinWrappers.lambda(Account.class)
+                .selectAll()
+                .selectAs(Role::getRoleName,"role_name")
+                .leftJoin(Role.class, on -> on.eq(Role::getId, Account::getRoleId))
+                .orderByAsc(Account::getId));
+    }
+
+    /**
+     * 娣诲姞璐︽埛
+     * @return
+     */
+    @Override
+    public int addAccount(Account account){
+        return baseMapper.insert(account);
+    }
+    /**
+     * 淇敼璐︽埛
+     * @return
+     */
+    @Override
+    public int updateAccount(Account account){
+        return baseMapper.updateById(account);
+    }
+    /**
+     * 鍒犻櫎璐︽埛
+     * @return
+     */
+    @Override
+    public int deleteAccount(Account account){
+        return baseMapper.deleteById(account);
+    }
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/EdgeGrindingLogServiceImpl.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/EdgeGrindingLogServiceImpl.java
new file mode 100644
index 0000000..1669683
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/EdgeGrindingLogServiceImpl.java
@@ -0,0 +1,21 @@
+package com.mes.md.service.impl;
+
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.mes.md.entity.EdgeGrindingLog;
+import com.mes.md.mapper.EdgeGrindingLogMapper;
+import com.mes.md.service.EdgeGrindingLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 纾ㄨ竟鏈鸿澶囦氦浜掕褰曡〃 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@Service
+public class EdgeGrindingLogServiceImpl extends MPJBaseServiceImpl<EdgeGrindingLogMapper, EdgeGrindingLog> implements EdgeGrindingLogService {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/EquipmentLogServiceImpl.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/EquipmentLogServiceImpl.java
new file mode 100644
index 0000000..0c36895
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/EquipmentLogServiceImpl.java
@@ -0,0 +1,21 @@
+package com.mes.md.service.impl;
+
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.mes.md.entity.EquipmentLog;
+import com.mes.md.mapper.EquipmentLogMapper;
+import com.mes.md.service.EquipmentLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 璁惧浜や簰璁板綍琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@Service
+public class EquipmentLogServiceImpl extends MPJBaseServiceImpl<EquipmentLogMapper, EquipmentLog> implements EquipmentLogService {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/GlassInfoServiceImpl.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/GlassInfoServiceImpl.java
new file mode 100644
index 0000000..b27f4cd
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/GlassInfoServiceImpl.java
@@ -0,0 +1,21 @@
+package com.mes.md.service.impl;
+
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.mes.md.entity.GlassInfo;
+import com.mes.md.mapper.GlassInfoMapper;
+import com.mes.md.service.GlassInfoService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 灏忕墖琛� (涓讳綋鍖楃幓) 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@Service
+public class GlassInfoServiceImpl extends MPJBaseServiceImpl<GlassInfoMapper, GlassInfo> implements GlassInfoService {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/MenuServiceImpl.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/MenuServiceImpl.java
new file mode 100644
index 0000000..4705428
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/MenuServiceImpl.java
@@ -0,0 +1,55 @@
+package com.mes.md.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.mes.md.entity.*;
+import com.mes.md.mapper.MenuMapper;
+import com.mes.md.service.MenuService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@Service
+public class MenuServiceImpl extends MPJBaseServiceImpl<MenuMapper, Menu> implements MenuService {
+    /**
+     * 杩斿洖鎵�鏈夎彍鍗�
+     * @return
+     */
+    @Override
+    public List<Menu> findMenusAll(){
+        return baseMapper.selectList(new QueryWrapper<Menu>());
+    }
+    /**
+     * 娣诲姞鑿滃崟
+     * @return
+     */
+    @Override
+    public int addMenu(Menu menu){
+        return baseMapper.insert(menu);
+    }
+    /**
+     * 淇敼鑿滃崟
+     * @return
+     */
+    @Override
+    public int updateMenu(Menu menu){
+        return baseMapper.updateById(menu);
+    }
+    /**
+     * 鍒犻櫎鑿滃崟
+     * @return
+     */
+    @Override
+    public int deleteMenu(Menu menu){
+        return baseMapper.deleteById(menu);
+    }
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/OrderOriginalPieceServiceImpl.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/OrderOriginalPieceServiceImpl.java
new file mode 100644
index 0000000..63137a1
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/OrderOriginalPieceServiceImpl.java
@@ -0,0 +1,21 @@
+package com.mes.md.service.impl;
+
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.mes.md.entity.OrderOriginalPiece;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mes.md.mapper.OrderOriginalPieceMapper;
+import com.mes.md.service.OrderOriginalPieceService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 璁㈠崟鍘熺墖锛堟墜宸ュ鍏ワ級琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@Service
+public class OrderOriginalPieceServiceImpl extends MPJBaseServiceImpl<OrderOriginalPieceMapper, OrderOriginalPiece> implements OrderOriginalPieceService {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/PageServiceImpl.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/PageServiceImpl.java
new file mode 100644
index 0000000..ef3e553
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/PageServiceImpl.java
@@ -0,0 +1,54 @@
+package com.mes.md.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.mes.md.entity.Page;
+import com.mes.md.mapper.PageMapper;
+import com.mes.md.service.PageService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 椤甸潰琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author yanzhixin
+ * @since 2024-09-05
+ */
+@Service
+public class PageServiceImpl extends MPJBaseServiceImpl<PageMapper, Page> implements PageService {
+    /**
+     * 杩斿洖鎵�鏈夐〉闈�
+     * @return
+     */
+    @Override
+    public List<Page> findPagesAll(){
+        return baseMapper.selectList(new QueryWrapper<Page>());
+    }
+    /**
+     * 娣诲姞椤甸潰
+     * @return
+     */
+    @Override
+    public int addPage(Page page){
+        return baseMapper.insert(page);
+    }
+    /**
+     * 淇敼椤甸潰
+     * @return
+     */
+    @Override
+    public int updatePage(Page page){
+        return baseMapper.updateById(page);
+    }
+    /**
+     * 鍒犻櫎椤甸潰
+     * @return
+     */
+    @Override
+    public int deletePage(Page page){
+        return baseMapper.deleteById(page);
+    }
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/PrimitiveTaskServiceImpl.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/PrimitiveTaskServiceImpl.java
new file mode 100644
index 0000000..543e517
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/PrimitiveTaskServiceImpl.java
@@ -0,0 +1,21 @@
+package com.mes.md.service.impl;
+
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.mes.md.entity.PrimitiveTask;
+import com.mes.md.mapper.PrimitiveTaskMapper;
+import com.mes.md.service.PrimitiveTaskService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 鍘熷浠诲姟琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@Service
+public class PrimitiveTaskServiceImpl extends MPJBaseServiceImpl<PrimitiveTaskMapper, PrimitiveTask> implements PrimitiveTaskService {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/ProjectLogServiceImpl.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/ProjectLogServiceImpl.java
new file mode 100644
index 0000000..0a84199
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/ProjectLogServiceImpl.java
@@ -0,0 +1,21 @@
+package com.mes.md.service.impl;
+
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.mes.md.entity.ProjectLog;
+import com.mes.md.mapper.ProjectLogMapper;
+import com.mes.md.service.ProjectLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 宸ョ▼琛ㄦ搷浣滆褰曟槑缁� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@Service
+public class ProjectLogServiceImpl extends MPJBaseServiceImpl<ProjectLogMapper, ProjectLog> implements ProjectLogService {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/ProjectServiceImpl.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/ProjectServiceImpl.java
new file mode 100644
index 0000000..b23b380
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/ProjectServiceImpl.java
@@ -0,0 +1,21 @@
+package com.mes.md.service.impl;
+
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.mes.md.entity.Project;
+import com.mes.md.mapper.ProjectMapper;
+import com.mes.md.service.ProjectService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 宸ョ▼琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@Service
+public class ProjectServiceImpl extends MPJBaseServiceImpl<ProjectMapper, Project> implements ProjectService {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/RoleMenuServiceImpl.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/RoleMenuServiceImpl.java
new file mode 100644
index 0000000..385bbcd
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/RoleMenuServiceImpl.java
@@ -0,0 +1,87 @@
+package com.mes.md.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.github.yulichang.toolkit.JoinWrappers;
+import com.mes.md.entity.Account;
+import com.mes.md.entity.Role;
+import com.mes.md.entity.Menu;
+import com.mes.md.entity.Page;
+import com.mes.md.entity.RoleMenu;
+import com.mes.md.mapper.RoleMenuMapper;
+import com.mes.md.service.RoleMenuService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 瑙掕壊鏉冮檺琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author yanzhixin
+ * @since 2024-09-05
+ */
+@Service
+public class RoleMenuServiceImpl extends MPJBaseServiceImpl<RoleMenuMapper, RoleMenu> implements RoleMenuService {
+    /**
+     * 鏌ヨ鎵�鏈夎鑹茬殑鏉冮檺
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> findRoleMenusAll(){
+        return  baseMapper.selectJoinMaps(JoinWrappers.lambda(RoleMenu.class)
+                .selectAll()
+                .selectAs(Role::getRoleName,"role_name")
+                .selectAs(Menu::getMenuName,"menu_name")
+                .selectAs(Page::getPageName,"page_name")
+                .leftJoin(Role.class, on -> on.eq(Role::getId, RoleMenu::getRoleId))
+                .leftJoin(Menu.class, on -> on.eq(Menu::getId, RoleMenu::getMenuId))
+                .leftJoin(Page.class, on -> on.eq(Page::getId, RoleMenu::getPageId))
+                .orderByAsc(RoleMenu::getRoleId)
+                .orderByAsc(RoleMenu::getId));
+    }
+    /**
+     * 鏌ヨ鏌愯鑹茬殑鏌愭潯鏉冮檺
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> findRoleMenus(RoleMenu roleMenu){
+        return  baseMapper.selectJoinMaps(JoinWrappers.lambda(RoleMenu.class)
+                .selectAll()
+                .selectAs(Role::getRoleName,"role_name")
+                .selectAs(Menu::getMenuName,"menu_name")
+                .selectAs(Page::getPageName,"page_name")
+                .leftJoin(Role.class, on -> on.eq(Role::getId, RoleMenu::getRoleId))
+                .leftJoin(Menu.class, on -> on.eq(Menu::getId, RoleMenu::getMenuId))
+                .leftJoin(Page.class, on -> on.eq(Page::getId, RoleMenu::getPageId))
+                .eq(RoleMenu::getId,roleMenu.getId())
+                .orderByAsc(RoleMenu::getRoleId)
+                .orderByAsc(RoleMenu::getId));
+    }
+    /**
+     * 娣诲姞瑙掕壊鏉冮檺
+     * @return
+     */
+    @Override
+    public int addRoleMenu(RoleMenu roleMenu){
+        return baseMapper.insert(roleMenu);
+    }
+    /**
+     * 淇敼瑙掕壊鏉冮檺
+     * @return
+     */
+    @Override
+    public int updateRoleMenu(RoleMenu roleMenu){
+        return baseMapper.updateById(roleMenu);
+    }
+    /**
+     * 鍒犻櫎瑙掕壊鏉冮檺
+     * @return
+     */
+    @Override
+    public int deleteRoleMenu(RoleMenu roleMenu){
+        return baseMapper.deleteById(roleMenu);
+    }
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/RoleServiceImpl.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/RoleServiceImpl.java
new file mode 100644
index 0000000..ce6a557
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/RoleServiceImpl.java
@@ -0,0 +1,56 @@
+package com.mes.md.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.mes.md.entity.Role;
+import com.mes.md.entity.Role;
+import com.mes.md.mapper.RoleMapper;
+import com.mes.md.service.RoleService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 瑙掕壊琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@Service
+public class RoleServiceImpl extends MPJBaseServiceImpl<RoleMapper, Role> implements RoleService {
+    /**
+     * 杩斿洖鎵�鏈夎鑹�
+     * @return
+     */
+    @Override
+    public List<Role> findRolesAll(){
+        return baseMapper.selectList(new QueryWrapper<Role>());
+    }
+    /**
+     * 娣诲姞瑙掕壊
+     * @return
+     */
+    @Override
+    public int addRole(Role role){
+        return baseMapper.insert(role);
+    }
+    /**
+     * 淇敼瑙掕壊
+     * @return
+     */
+    @Override
+    public int updateRole(Role role){
+        return baseMapper.updateById(role);
+    }
+    /**
+     * 鍒犻櫎瑙掕壊
+     * @return
+     */
+    @Override
+    public int deleteRole(Role role){
+        return baseMapper.deleteById(role);
+    }
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/TaskLogServiceImpl.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/TaskLogServiceImpl.java
new file mode 100644
index 0000000..0f37901
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/TaskLogServiceImpl.java
@@ -0,0 +1,21 @@
+package com.mes.md.service.impl;
+
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.mes.md.entity.TaskLog;
+import com.mes.md.mapper.TaskLogMapper;
+import com.mes.md.service.TaskLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@Service
+public class TaskLogServiceImpl extends MPJBaseServiceImpl<TaskLogMapper, TaskLog> implements TaskLogService {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/TaskingServiceImpl.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/TaskingServiceImpl.java
new file mode 100644
index 0000000..37a8b4f
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/TaskingServiceImpl.java
@@ -0,0 +1,21 @@
+package com.mes.md.service.impl;
+
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.mes.md.entity.Tasking;
+import com.mes.md.mapper.TaskingMapper;
+import com.mes.md.service.TaskingService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 宸ヤ綔浠诲姟鎿嶄綔璁板綍鏄庣粏 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@Service
+public class TaskingServiceImpl extends MPJBaseServiceImpl<TaskingMapper, Tasking> implements TaskingService {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/WorkTaskDetailServiceImpl.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/WorkTaskDetailServiceImpl.java
new file mode 100644
index 0000000..511621b
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/WorkTaskDetailServiceImpl.java
@@ -0,0 +1,21 @@
+package com.mes.md.service.impl;
+
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.mes.md.entity.WorkTaskDetail;
+import com.mes.md.mapper.WorkTaskDetailMapper;
+import com.mes.md.service.WorkTaskDetailService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 宸ヤ綔浠诲姟鏄庣粏琛紙宸ヤ綔涓級 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-28
+ */
+@Service
+public class WorkTaskDetailServiceImpl extends MPJBaseServiceImpl<WorkTaskDetailMapper, WorkTaskDetail> implements WorkTaskDetailService {
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/main.iml b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/main.iml
new file mode 100644
index 0000000..da5bdb1
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/main.iml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/java" isTestSource="false" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="servicebase-1.0-SNAPSHOT" level="project" />
+    <orderEntry type="module" module-name="UnLoadGlassModule" />
+    <orderEntry type="module" module-name="servicebase1" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/JsonFile/PlcCacheGlass.json b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/JsonFile/PlcCacheGlass.json
new file mode 100644
index 0000000..01969b7
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/JsonFile/PlcCacheGlass.json
@@ -0,0 +1,64 @@
+{
+   "plcAddressBegin":"DB11.0",
+   "plcAddressLenght":"80",
+   "dataType":"word",
+   "parameteInfor":[
+      {
+         "codeId": "A06_request_word",
+         "addressIndex":"0",
+         "addressLenght":"2", 
+         "ratio":"1", 
+         "unit":"m/min"    
+      },
+      {
+          "codeId": "A05_scanning_ID",
+          "addressIndex":"2",
+          "addressLenght":"30",
+          "ratio":"1",
+          "unit":""
+       },
+       {
+          "codeId": "Current_slot",
+          "addressIndex":"36",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       },
+        {
+          "codeId": "MES_confirmation_word",
+          "addressIndex":"38",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       },
+       {
+          "codeId": "A08_glass_status",
+          "addressIndex":"68",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       },
+       {
+          "codeId": "A10_glass_status",
+          "addressIndex":"70",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       },
+       {
+          "codeId": "A09_prohibit_film_production",
+          "addressIndex":"72",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       }
+       ,
+       {
+          "codeId": "A10_prohibit_film_production",
+          "addressIndex":"74",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       }
+   ]
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/application-cz.yml b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/application-cz.yml
new file mode 100644
index 0000000..49ee448
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/application-cz.yml
@@ -0,0 +1,32 @@
+spring:
+  datasource:
+    dynamic:
+      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
+      datasource:
+        hangzhoumes:
+          url: jdbc:mysql://192.168.1.199:3306/hangzhoumes?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+        pp:
+          url: jdbc:mysql://192.168.1.199:3306/pp?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+        salve_hangzhoumes:
+          url: jdbc:sqlserver://192.168.10.2:1433;databasename=hangzhoumes
+          username: sa
+          password: beibo.123/
+          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 127.0.0.1:8848
+  application:
+    name: deviceInteraction
+  redis:
+    database: 0
+    host: 127.0.0.1
+    port: 6379
+    password: 123456
\ No newline at end of file
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/application-dev.yml b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/application-dev.yml
new file mode 100644
index 0000000..618f60d
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/application-dev.yml
@@ -0,0 +1,32 @@
+spring:
+  datasource:
+    dynamic:
+      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
+      datasource:
+        hangzhoumes:
+          url: jdbc:mysql://127.0.0.1:3306/hangzhoumes?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+        pp:
+          url: jdbc:mysql://127.0.0.1:3306/pp?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+        salve_hangzhoumes:
+          url: jdbc:sqlserver://127.0.0.1:1433;databasename=hangzhoumes
+          username: sa
+          password: beibo.123/
+          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 127.0.0.1:8848
+  application:
+    name: deviceInteraction
+  redis:
+    database: 0
+    host: 127.0.0.1
+    port: 6379
+    password: 123456
\ No newline at end of file
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/application-prod.yml b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/application-prod.yml
new file mode 100644
index 0000000..66280a7
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/application-prod.yml
@@ -0,0 +1,22 @@
+spring:
+  datasource:
+    dynamic:
+      primary: jiumumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
+      datasource:
+        jiumumes:
+          url: jdbc:mysql://10.153.19.150:3306/jiumumes?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 10.153.19.29:8848
+  application:
+    name: deviceInteraction
+  redis:
+    database: 0
+    host: 10.153.19.29
+    port: 6379
+    password: 123456
\ No newline at end of file
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/application.yml b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/application.yml
new file mode 100644
index 0000000..2c53e00
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/application.yml
@@ -0,0 +1,28 @@
+server:
+  port: 8081
+
+spring:
+  profiles:
+    active: prod
+  application:
+    name: deviceInteraction
+mybatis-plus:
+  mapper-locations: classpath*:mapper/*.xml
+  configuration:
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+mes:
+  threshold: 3
+  ratio: 10
+  max: # 绗簩鏉$嚎鐨勬渶澶у昂瀵镐俊鎭�
+    firstLength: 3500
+    secondLength: 2500
+  min:
+    one: #绗竴鏉$(杈圭嚎鐨勬渶灏忓昂瀵镐俊鎭�
+      firstLength: 600
+      secondLength: 350
+    two: #绗簩鏉$(杈圭嚎鐨勬渶灏忓昂瀵镐俊鎭�
+      firstLength: 400
+      secondLength: 300
+  sequence:
+    order: false
+
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/logback-spring.xml b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/logback-spring.xml
new file mode 100644
index 0000000..d5e7fdf
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/resources/logback-spring.xml
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="10 seconds">
+    <!-- logger涓婁笅鏂囧悕绉帮紙鏍规嵁涓氬姟淇敼锛� -->
+    <contextName>deviceInteraction</contextName>
+
+    <!-- 瀹氫箟浜嗕竴涓悕涓簊erverName鐨勫睘鎬э紝瀹冪殑鍊兼潵鑷簬logging.file.name锛屽鏋滄病鏈夋壘鍒拌灞炴�ч粯璁や负MyServerName锛堟牴鎹笟鍔′慨鏀癸級 -->
+    <springProperty name="serverName" source="logging.file.name" defaultValue="deviceInteraction"/>
+    <springProperty name="logging.path" source="logging.file.path" defaultValue="././logs/"/>
+
+    <!-- 褰╄壊鏃ュ織渚濊禆鐨勬覆鏌撶被 -->
+    <!-- 瀹氫箟浜嗕竴涓悕涓篶lr鐨勮浆鎹㈣鍒欙紝瀹冧娇鐢╫rg.springframework.boot.logging.logback.ColorConverter绫昏繘琛岃浆鎹紝杩欎釜鍏冪礌閫氬父鐢ㄤ簬灏嗘棩蹇楄緭鍑轰腑鐨勬枃鏈潃鑹诧紝浠ヤ究鏇村鏄撳湴鍖哄垎涓嶅悓鐨勬棩蹇楃骇鍒垨鍏朵粬淇℃伅 -->
+    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
+    <!-- WhitespaceThrowableProxyConverter鍜孍xtendedWhitespaceThrowableProxyConverter閮芥槸鐢ㄤ簬灏嗗紓甯镐俊鎭浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず鐨勭被銆傚畠浠箣闂寸殑鍖哄埆鍦ㄤ簬锛孍xtendedWhitespaceThrowableProxyConverter鍦ㄨ緭鍑哄紓甯镐俊鎭椂浼氬寘鍚洿澶氱殑璇︾粏淇℃伅锛屼緥濡傚紓甯哥殑绫诲悕銆佹柟娉曞悕鍜岃鍙风瓑 -->
+    <!-- 瀹氫箟浜嗕竴涓悕涓簑ex鐨勮浆鎹㈣鍒欙紝瀹冧娇鐢╫rg.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter绫昏繘琛岃浆鎹紝杩欎釜鍏冪礌閫氬父鐢ㄤ簬灏嗗紓甯镐俊鎭浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず -->
+    <conversionRule conversionWord="wex"
+                    converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
+    <!-- 瀹氫箟浜嗕竴涓悕涓簑Ex鐨勮浆鎹㈣鍒欙紝瀹冧娇鐢╫rg.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter绫昏繘琛岃浆鎹紝杩欎釜鍏冪礌閫氬父鐢ㄤ簬灏嗗紓甯镐俊鎭浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず -->
+    <conversionRule conversionWord="wEx"
+                    converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
+
+    <!-- 褰╄壊鏃ュ織鏍煎紡 -->
+    <!-- value鍊兼槸鏃ュ織杈撳嚭妯℃澘锛� :-鏄睘鎬у悕鍜屽叾榛樿鍊间箣闂寸殑鍒嗛殧绗︼紝浣滅敤涓�:鐩稿悓 -->
+    <!-- 瀹氫箟鏃ュ織杈撳嚭鏍煎紡鐨勮浆鎹㈣鍒欙紝%d{yyyy-MM-dd HH:mm:ss.SSS}琛ㄧず鏃ユ湡鍜屾椂闂达紝%clr琛ㄧず灏嗚緭鍑烘枃鏈潃鑹诧紝{faint}琛ㄧず浣跨敤娣¤壊 -->
+    <!-- %5p琛ㄧず鏃ュ織绾у埆杈撳嚭鍙冲榻愶紝宸﹁竟浠ョ┖鏍煎~鍏� -->
+    <!-- ${PID:- }琛ㄧず杩涚▼ID锛�%clr琛ㄧず灏嗚緭鍑烘枃鏈潃鑹诧紝{magenta}琛ㄧず浣跨敤娲嬬孩鑹� -->
+    <!-- -琛ㄧず涓�涓垎闅旂 -->
+    <!-- %t锛氭樉绀轰骇鐢熻鏃ュ織鐨勭嚎绋嬪悕锛�%15锛氳嫢瀛楃闀垮害灏忎簬15锛屽垯宸﹁竟鐢ㄧ┖鏍煎~鍏咃紱%.15锛氳嫢瀛楃闀垮害瓒呰繃15锛屾埅鍘诲浣欏瓧绗� -->
+    <!-- %-40锛氳嫢瀛楃闀垮害灏忎簬40锛屽垯鍙宠竟鐢ㄧ┖鏍煎~鍏咃紱%.40锛氳嫢瀛楃闀垮害瓒呰繃40锛屾埅鍘诲浣欏瓧绗︼紱logger{39}瀵瑰簲鐨勬槸鈥渓ogging.WARNING鈥濈骇鍒�傚叿浣撴潵璇达紝Python鐨刲ogging妯″潡瀹氫箟浜嗕互涓嬪嚑涓骇鍒紙浠庝綆鍒伴珮锛夛細NOTSET銆丏EBUG銆両NFO銆乄ARNING銆丒RROR銆丆RITICAL銆傚洜姝わ紝logger{39}琛ㄧず鐨勬槸WARNING绾у埆锛屽嵆鏃ュ織璁板綍鍣ㄤ細璁板綍鎵�鏈塛ARNING绾у埆鍙婁互涓婄殑鏃ュ織淇℃伅 -->
+    <!-- %m琛ㄧず鏃ュ織娑堟伅锛�%n琛ㄧず鎹㈣绗︼紱${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}琛ㄧず寮傚父淇℃伅銆傚鏋滄棩蹇楄緭鍑轰腑鍖呭惈寮傚父淇℃伅锛岃繖涓鍒欏皢浼氬皢鍏惰浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず -->
+    <property name="CONSOLE_LOG_PATTERN"
+              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
+
+    <!--1. 杈撳嚭鍒版帶鍒跺彴-->
+    <!-- 瀹氫箟鎺у埗鍙版棩蹇楄緭鍑虹殑appender锛宑lass="ch.qos.logback.core.ConsoleAppender"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凜onsoleAppender绫绘潵杈撳嚭鏃ュ織鍒版帶鍒跺彴 -->
+    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+        <!--姝ゆ棩蹇梐ppender鏄负寮�鍙戜娇鐢紝鍙厤缃渶搴曠骇鍒紝鎺у埗鍙拌緭鍑虹殑鏃ュ織绾у埆鏄ぇ浜庢垨绛変簬姝ょ骇鍒殑鏃ュ織淇℃伅-->
+        <!-- 瀹氫箟鏃ュ織杈撳嚭绾у埆鐨勮繃婊ゅ櫒锛宑lass="ch.qos.logback.classic.filter.ThresholdFilter"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凾hresholdFilter绫绘潵杩囨护鏃ュ織杈撳嚭锛�<level>debug</level>琛ㄧず鍙緭鍑篸ebug绾у埆鍙婁互涓婄殑鏃ュ織 -->
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>debug</level>
+        </filter>
+        <encoder>
+            <!-- ${CONSOLE_LOG_PATTERN}琛ㄧず鎺у埗鍙版棩蹇楄緭鍑烘牸寮忥紝UTF-8琛ㄧず缂栫爜鏍煎紡 -->
+            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
+            <!-- 璁剧疆瀛楃闆� -->
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+    <!--2. 杈撳嚭鍒版枃妗�-->
+    <!-- 2.1 level涓� DEBUG 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <!-- 瀹氫箟鏂囦欢鏃ュ織杈撳嚭鐨刟ppender锛宑lass="ch.qos.logback.core.rolling.RollingFileAppender"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凴ollingFileAppender绫绘潵杈撳嚭鏃ュ織鍒版枃浠� -->
+    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_debug.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 璁剧疆瀛楃闆� -->
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <!-- 瀹氫箟鏃ュ織鏂囦欢婊氬姩绛栫暐鐨勬爣绛撅紝class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凾imeBasedRollingPolicy绫绘潵瀹氫箟鏃ュ織鏂囦欢鐨勬粴鍔ㄧ瓥鐣� -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 鏃ュ織褰掓。 -->
+            <!-- 瀹氫箟鏃ュ織鏂囦欢鍚嶇殑妯″紡銆傚湪杩欎釜妯″紡涓紝${logging.path}琛ㄧず鏃ュ織鏂囦欢鐨勮矾寰勶紝%d{yyyy-MM-dd}琛ㄧず鏃ユ湡鏍煎紡锛�%i琛ㄧず鏂囦欢绱㈠紩 -->
+            <fileNamePattern>${logging.path}/${serverName}/web-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <!-- 瀹氫箟鏃ュ織鏂囦欢婊氬姩绛栫暐鐨勬爣绛撅紝class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凷izeAndTimeBasedFNATP绫绘潵瀹氫箟鏃ュ織鏂囦欢鐨勬粴鍔ㄧ瓥鐣ワ紝<maxFileSize>100MB</maxFileSize>琛ㄧず鏃ュ織鏂囦欢鐨勬渶澶уぇ灏忎负100MB銆傝繖涓粴鍔ㄧ瓥鐣ラ�氬父鐢ㄤ簬鎸夌収鏃堕棿鍜屾枃浠跺ぇ灏忔粴鍔ㄦ棩蹇楁枃浠讹紝浠ヤ究鏇村ソ鍦扮鐞嗘棩蹇楁枃浠剁殑澶у皬鍜屾暟閲� -->
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍debug绾у埆鐨� -->
+        <!-- 瀹氫箟鏃ュ織杈撳嚭绾у埆鐨勮繃婊ゅ櫒銆傚湪杩欎釜杩囨护鍣ㄤ腑锛宑lass="ch.qos.logback.classic.filter.LevelFilter"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凩evelFilter绫绘潵杩囨护鏃ュ織杈撳嚭锛�<level>debug</level>琛ㄧず鍙緭鍑篸ebug绾у埆鍙婁互涓婄殑鏃ュ織 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>debug</level>
+            <!-- <onMatch>ACCEPT</onMatch>琛ㄧず濡傛灉鏃ュ織浜嬩欢涓庤繃婊ゅ櫒鍖归厤锛屽垯鎺ュ彈璇ヤ簨浠讹紝<onMismatch>DENY</onMismatch>琛ㄧず濡傛灉鏃ュ織浜嬩欢涓庤繃婊ゅ櫒涓嶅尮閰嶏紝鍒欐嫆缁濊浜嬩欢 -->
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!-- 2.2 level涓� INFO 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_info.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 澶╁ぉ鏃ュ織褰掓。璺緞浠ュ強鏍煎紡 -->
+            <fileNamePattern>${logging.path}/${serverName}/web-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍info绾у埆鐨� -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>info</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!-- 2.3 level涓� WARN 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_warn.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 姝ゅ璁剧疆瀛楃闆� -->
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logging.path}/${serverName}/web-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍warn绾у埆鐨� -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>warn</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!-- 2.4 level涓� ERROR 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_error.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 姝ゅ璁剧疆瀛楃闆� -->
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logging.path}/${serverName}/web-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍ERROR绾у埆鐨� -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>ERROR</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!--     4.1 寮�鍙戠幆澧�:鎵撳嵃鎺у埗鍙�-->
+    <!-- 鐢ㄤ簬鍦⊿pring Boot搴旂敤绋嬪簭涓厤缃棩蹇楄褰曠殑鏍囩銆傚湪杩欎釜鏍囩涓紝name="dev"琛ㄧず杩欎釜閰嶇疆鏂囦欢鍙湪dev鐜涓敓鏁堬紝<logger name="com.myClass.controller" level="debug"/>琛ㄧず涓篶om.myClass.controller锛堟牴鎹笟鍔′慨鏀癸級杩欎釜鍖呬笅鐨勭被閰嶇疆鏃ュ織杈撳嚭绾у埆涓篸ebug -->
+    <!--    <springProfile name="dev">-->
+    <!--        <logger name="com.myClass.controller" level="debug"/>-->
+    <!--    </springProfile>-->
+    <!-- 鐢ㄤ簬閰嶇疆鏃ュ織杈撳嚭鐨勬爣绛俱�傚湪杩欎釜鏍囩涓紝level="info"琛ㄧず鏃ュ織杈撳嚭绾у埆涓篿nfo锛�<appender-ref ref="CONSOLE"/>銆�<appender-ref ref="DEBUG_FILE"/>銆�<appender-ref ref="INFO_FILE"/>銆�<appender-ref ref="WARN_FILE"/>銆�<appender-ref ref="ERROR_FILE"/>琛ㄧず灏嗘棩蹇楄緭鍑哄埌涓嶅悓鐨刟ppender涓紝鍒嗗埆涓烘帶鍒跺彴銆乨ebug鏂囦欢銆乮nfo鏂囦欢銆亀arn鏂囦欢鍜宔rror鏂囦欢 -->
+    <root level="info">
+        <appender-ref ref="CONSOLE"/>
+        <appender-ref ref="DEBUG_FILE"/>
+        <appender-ref ref="INFO_FILE"/>
+        <appender-ref ref="WARN_FILE"/>
+        <appender-ref ref="ERROR_FILE"/>
+    </root>
+</configuration>
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/test/java/com/mes/DeviceInteractionModuleApplicationTest.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/test/java/com/mes/DeviceInteractionModuleApplicationTest.java
new file mode 100644
index 0000000..ae74ff0
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/test/java/com/mes/DeviceInteractionModuleApplicationTest.java
@@ -0,0 +1,50 @@
+package com.mes;
+
+import com.mes.job.CacheGlassTask;
+import com.mes.md.entity.Account;
+import com.mes.md.mapper.AccountMapper;
+import com.mes.md.service.AccountService;
+import lombok.extern.slf4j.Slf4j;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Author : yanzhixin
+ * @Date: 2024/3/27 16:37
+ * @Description:
+ */
+@Slf4j
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = DeviceInteractionModuleApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
+public class DeviceInteractionModuleApplicationTest {
+
+    @Autowired
+    AccountMapper AccountMapper;
+
+    @Autowired
+    AccountService accountService;
+
+    @Test
+    public void testFindPath() {
+        //String url = getClass().getResource("").getPath();
+        //log.info("瀹屾暣璺緞锛歿}", Arrays.asList(url));
+
+        log.info("瀹屾暣璺緞");
+    }
+    @Test
+    public void testFindAccount() {
+        Map<String, Object> Account=accountService.selectAccount("admin","12345");
+        if(Account.isEmpty()){
+            System.out.println("鎴愬姛");
+        }
+        log.info("{}",Account);
+    }
+
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/test/test.iml b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/test/test.iml
new file mode 100644
index 0000000..a0e49a3
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/test/test.iml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/java" isTestSource="true" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/JsonFile/PlcCacheGlass.json b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/JsonFile/PlcCacheGlass.json
new file mode 100644
index 0000000..01969b7
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/JsonFile/PlcCacheGlass.json
@@ -0,0 +1,64 @@
+{
+   "plcAddressBegin":"DB11.0",
+   "plcAddressLenght":"80",
+   "dataType":"word",
+   "parameteInfor":[
+      {
+         "codeId": "A06_request_word",
+         "addressIndex":"0",
+         "addressLenght":"2", 
+         "ratio":"1", 
+         "unit":"m/min"    
+      },
+      {
+          "codeId": "A05_scanning_ID",
+          "addressIndex":"2",
+          "addressLenght":"30",
+          "ratio":"1",
+          "unit":""
+       },
+       {
+          "codeId": "Current_slot",
+          "addressIndex":"36",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       },
+        {
+          "codeId": "MES_confirmation_word",
+          "addressIndex":"38",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       },
+       {
+          "codeId": "A08_glass_status",
+          "addressIndex":"68",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       },
+       {
+          "codeId": "A10_glass_status",
+          "addressIndex":"70",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       },
+       {
+          "codeId": "A09_prohibit_film_production",
+          "addressIndex":"72",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       }
+       ,
+       {
+          "codeId": "A10_prohibit_film_production",
+          "addressIndex":"74",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       }
+   ]
+}
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/application-cz.yml b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/application-cz.yml
new file mode 100644
index 0000000..49ee448
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/application-cz.yml
@@ -0,0 +1,32 @@
+spring:
+  datasource:
+    dynamic:
+      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
+      datasource:
+        hangzhoumes:
+          url: jdbc:mysql://192.168.1.199:3306/hangzhoumes?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+        pp:
+          url: jdbc:mysql://192.168.1.199:3306/pp?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+        salve_hangzhoumes:
+          url: jdbc:sqlserver://192.168.10.2:1433;databasename=hangzhoumes
+          username: sa
+          password: beibo.123/
+          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 127.0.0.1:8848
+  application:
+    name: deviceInteraction
+  redis:
+    database: 0
+    host: 127.0.0.1
+    port: 6379
+    password: 123456
\ No newline at end of file
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/application-dev.yml b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/application-dev.yml
new file mode 100644
index 0000000..618f60d
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/application-dev.yml
@@ -0,0 +1,32 @@
+spring:
+  datasource:
+    dynamic:
+      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
+      datasource:
+        hangzhoumes:
+          url: jdbc:mysql://127.0.0.1:3306/hangzhoumes?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+        pp:
+          url: jdbc:mysql://127.0.0.1:3306/pp?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+        salve_hangzhoumes:
+          url: jdbc:sqlserver://127.0.0.1:1433;databasename=hangzhoumes
+          username: sa
+          password: beibo.123/
+          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 127.0.0.1:8848
+  application:
+    name: deviceInteraction
+  redis:
+    database: 0
+    host: 127.0.0.1
+    port: 6379
+    password: 123456
\ No newline at end of file
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/application-prod.yml b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/application-prod.yml
new file mode 100644
index 0000000..66280a7
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/application-prod.yml
@@ -0,0 +1,22 @@
+spring:
+  datasource:
+    dynamic:
+      primary: jiumumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
+      datasource:
+        jiumumes:
+          url: jdbc:mysql://10.153.19.150:3306/jiumumes?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 10.153.19.29:8848
+  application:
+    name: deviceInteraction
+  redis:
+    database: 0
+    host: 10.153.19.29
+    port: 6379
+    password: 123456
\ No newline at end of file
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/application.yml b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/application.yml
new file mode 100644
index 0000000..2c53e00
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/application.yml
@@ -0,0 +1,28 @@
+server:
+  port: 8081
+
+spring:
+  profiles:
+    active: prod
+  application:
+    name: deviceInteraction
+mybatis-plus:
+  mapper-locations: classpath*:mapper/*.xml
+  configuration:
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+mes:
+  threshold: 3
+  ratio: 10
+  max: # 绗簩鏉$嚎鐨勬渶澶у昂瀵镐俊鎭�
+    firstLength: 3500
+    secondLength: 2500
+  min:
+    one: #绗竴鏉$(杈圭嚎鐨勬渶灏忓昂瀵镐俊鎭�
+      firstLength: 600
+      secondLength: 350
+    two: #绗簩鏉$(杈圭嚎鐨勬渶灏忓昂瀵镐俊鎭�
+      firstLength: 400
+      secondLength: 300
+  sequence:
+    order: false
+
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/logback-spring.xml b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/logback-spring.xml
new file mode 100644
index 0000000..d5e7fdf
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/classes/logback-spring.xml
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="10 seconds">
+    <!-- logger涓婁笅鏂囧悕绉帮紙鏍规嵁涓氬姟淇敼锛� -->
+    <contextName>deviceInteraction</contextName>
+
+    <!-- 瀹氫箟浜嗕竴涓悕涓簊erverName鐨勫睘鎬э紝瀹冪殑鍊兼潵鑷簬logging.file.name锛屽鏋滄病鏈夋壘鍒拌灞炴�ч粯璁や负MyServerName锛堟牴鎹笟鍔′慨鏀癸級 -->
+    <springProperty name="serverName" source="logging.file.name" defaultValue="deviceInteraction"/>
+    <springProperty name="logging.path" source="logging.file.path" defaultValue="././logs/"/>
+
+    <!-- 褰╄壊鏃ュ織渚濊禆鐨勬覆鏌撶被 -->
+    <!-- 瀹氫箟浜嗕竴涓悕涓篶lr鐨勮浆鎹㈣鍒欙紝瀹冧娇鐢╫rg.springframework.boot.logging.logback.ColorConverter绫昏繘琛岃浆鎹紝杩欎釜鍏冪礌閫氬父鐢ㄤ簬灏嗘棩蹇楄緭鍑轰腑鐨勬枃鏈潃鑹诧紝浠ヤ究鏇村鏄撳湴鍖哄垎涓嶅悓鐨勬棩蹇楃骇鍒垨鍏朵粬淇℃伅 -->
+    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
+    <!-- WhitespaceThrowableProxyConverter鍜孍xtendedWhitespaceThrowableProxyConverter閮芥槸鐢ㄤ簬灏嗗紓甯镐俊鎭浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず鐨勭被銆傚畠浠箣闂寸殑鍖哄埆鍦ㄤ簬锛孍xtendedWhitespaceThrowableProxyConverter鍦ㄨ緭鍑哄紓甯镐俊鎭椂浼氬寘鍚洿澶氱殑璇︾粏淇℃伅锛屼緥濡傚紓甯哥殑绫诲悕銆佹柟娉曞悕鍜岃鍙风瓑 -->
+    <!-- 瀹氫箟浜嗕竴涓悕涓簑ex鐨勮浆鎹㈣鍒欙紝瀹冧娇鐢╫rg.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter绫昏繘琛岃浆鎹紝杩欎釜鍏冪礌閫氬父鐢ㄤ簬灏嗗紓甯镐俊鎭浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず -->
+    <conversionRule conversionWord="wex"
+                    converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
+    <!-- 瀹氫箟浜嗕竴涓悕涓簑Ex鐨勮浆鎹㈣鍒欙紝瀹冧娇鐢╫rg.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter绫昏繘琛岃浆鎹紝杩欎釜鍏冪礌閫氬父鐢ㄤ簬灏嗗紓甯镐俊鎭浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず -->
+    <conversionRule conversionWord="wEx"
+                    converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
+
+    <!-- 褰╄壊鏃ュ織鏍煎紡 -->
+    <!-- value鍊兼槸鏃ュ織杈撳嚭妯℃澘锛� :-鏄睘鎬у悕鍜屽叾榛樿鍊间箣闂寸殑鍒嗛殧绗︼紝浣滅敤涓�:鐩稿悓 -->
+    <!-- 瀹氫箟鏃ュ織杈撳嚭鏍煎紡鐨勮浆鎹㈣鍒欙紝%d{yyyy-MM-dd HH:mm:ss.SSS}琛ㄧず鏃ユ湡鍜屾椂闂达紝%clr琛ㄧず灏嗚緭鍑烘枃鏈潃鑹诧紝{faint}琛ㄧず浣跨敤娣¤壊 -->
+    <!-- %5p琛ㄧず鏃ュ織绾у埆杈撳嚭鍙冲榻愶紝宸﹁竟浠ョ┖鏍煎~鍏� -->
+    <!-- ${PID:- }琛ㄧず杩涚▼ID锛�%clr琛ㄧず灏嗚緭鍑烘枃鏈潃鑹诧紝{magenta}琛ㄧず浣跨敤娲嬬孩鑹� -->
+    <!-- -琛ㄧず涓�涓垎闅旂 -->
+    <!-- %t锛氭樉绀轰骇鐢熻鏃ュ織鐨勭嚎绋嬪悕锛�%15锛氳嫢瀛楃闀垮害灏忎簬15锛屽垯宸﹁竟鐢ㄧ┖鏍煎~鍏咃紱%.15锛氳嫢瀛楃闀垮害瓒呰繃15锛屾埅鍘诲浣欏瓧绗� -->
+    <!-- %-40锛氳嫢瀛楃闀垮害灏忎簬40锛屽垯鍙宠竟鐢ㄧ┖鏍煎~鍏咃紱%.40锛氳嫢瀛楃闀垮害瓒呰繃40锛屾埅鍘诲浣欏瓧绗︼紱logger{39}瀵瑰簲鐨勬槸鈥渓ogging.WARNING鈥濈骇鍒�傚叿浣撴潵璇达紝Python鐨刲ogging妯″潡瀹氫箟浜嗕互涓嬪嚑涓骇鍒紙浠庝綆鍒伴珮锛夛細NOTSET銆丏EBUG銆両NFO銆乄ARNING銆丒RROR銆丆RITICAL銆傚洜姝わ紝logger{39}琛ㄧず鐨勬槸WARNING绾у埆锛屽嵆鏃ュ織璁板綍鍣ㄤ細璁板綍鎵�鏈塛ARNING绾у埆鍙婁互涓婄殑鏃ュ織淇℃伅 -->
+    <!-- %m琛ㄧず鏃ュ織娑堟伅锛�%n琛ㄧず鎹㈣绗︼紱${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}琛ㄧず寮傚父淇℃伅銆傚鏋滄棩蹇楄緭鍑轰腑鍖呭惈寮傚父淇℃伅锛岃繖涓鍒欏皢浼氬皢鍏惰浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず -->
+    <property name="CONSOLE_LOG_PATTERN"
+              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
+
+    <!--1. 杈撳嚭鍒版帶鍒跺彴-->
+    <!-- 瀹氫箟鎺у埗鍙版棩蹇楄緭鍑虹殑appender锛宑lass="ch.qos.logback.core.ConsoleAppender"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凜onsoleAppender绫绘潵杈撳嚭鏃ュ織鍒版帶鍒跺彴 -->
+    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+        <!--姝ゆ棩蹇梐ppender鏄负寮�鍙戜娇鐢紝鍙厤缃渶搴曠骇鍒紝鎺у埗鍙拌緭鍑虹殑鏃ュ織绾у埆鏄ぇ浜庢垨绛変簬姝ょ骇鍒殑鏃ュ織淇℃伅-->
+        <!-- 瀹氫箟鏃ュ織杈撳嚭绾у埆鐨勮繃婊ゅ櫒锛宑lass="ch.qos.logback.classic.filter.ThresholdFilter"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凾hresholdFilter绫绘潵杩囨护鏃ュ織杈撳嚭锛�<level>debug</level>琛ㄧず鍙緭鍑篸ebug绾у埆鍙婁互涓婄殑鏃ュ織 -->
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>debug</level>
+        </filter>
+        <encoder>
+            <!-- ${CONSOLE_LOG_PATTERN}琛ㄧず鎺у埗鍙版棩蹇楄緭鍑烘牸寮忥紝UTF-8琛ㄧず缂栫爜鏍煎紡 -->
+            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
+            <!-- 璁剧疆瀛楃闆� -->
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+    <!--2. 杈撳嚭鍒版枃妗�-->
+    <!-- 2.1 level涓� DEBUG 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <!-- 瀹氫箟鏂囦欢鏃ュ織杈撳嚭鐨刟ppender锛宑lass="ch.qos.logback.core.rolling.RollingFileAppender"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凴ollingFileAppender绫绘潵杈撳嚭鏃ュ織鍒版枃浠� -->
+    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_debug.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 璁剧疆瀛楃闆� -->
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <!-- 瀹氫箟鏃ュ織鏂囦欢婊氬姩绛栫暐鐨勬爣绛撅紝class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凾imeBasedRollingPolicy绫绘潵瀹氫箟鏃ュ織鏂囦欢鐨勬粴鍔ㄧ瓥鐣� -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 鏃ュ織褰掓。 -->
+            <!-- 瀹氫箟鏃ュ織鏂囦欢鍚嶇殑妯″紡銆傚湪杩欎釜妯″紡涓紝${logging.path}琛ㄧず鏃ュ織鏂囦欢鐨勮矾寰勶紝%d{yyyy-MM-dd}琛ㄧず鏃ユ湡鏍煎紡锛�%i琛ㄧず鏂囦欢绱㈠紩 -->
+            <fileNamePattern>${logging.path}/${serverName}/web-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <!-- 瀹氫箟鏃ュ織鏂囦欢婊氬姩绛栫暐鐨勬爣绛撅紝class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凷izeAndTimeBasedFNATP绫绘潵瀹氫箟鏃ュ織鏂囦欢鐨勬粴鍔ㄧ瓥鐣ワ紝<maxFileSize>100MB</maxFileSize>琛ㄧず鏃ュ織鏂囦欢鐨勬渶澶уぇ灏忎负100MB銆傝繖涓粴鍔ㄧ瓥鐣ラ�氬父鐢ㄤ簬鎸夌収鏃堕棿鍜屾枃浠跺ぇ灏忔粴鍔ㄦ棩蹇楁枃浠讹紝浠ヤ究鏇村ソ鍦扮鐞嗘棩蹇楁枃浠剁殑澶у皬鍜屾暟閲� -->
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍debug绾у埆鐨� -->
+        <!-- 瀹氫箟鏃ュ織杈撳嚭绾у埆鐨勮繃婊ゅ櫒銆傚湪杩欎釜杩囨护鍣ㄤ腑锛宑lass="ch.qos.logback.classic.filter.LevelFilter"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凩evelFilter绫绘潵杩囨护鏃ュ織杈撳嚭锛�<level>debug</level>琛ㄧず鍙緭鍑篸ebug绾у埆鍙婁互涓婄殑鏃ュ織 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>debug</level>
+            <!-- <onMatch>ACCEPT</onMatch>琛ㄧず濡傛灉鏃ュ織浜嬩欢涓庤繃婊ゅ櫒鍖归厤锛屽垯鎺ュ彈璇ヤ簨浠讹紝<onMismatch>DENY</onMismatch>琛ㄧず濡傛灉鏃ュ織浜嬩欢涓庤繃婊ゅ櫒涓嶅尮閰嶏紝鍒欐嫆缁濊浜嬩欢 -->
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!-- 2.2 level涓� INFO 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_info.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 澶╁ぉ鏃ュ織褰掓。璺緞浠ュ強鏍煎紡 -->
+            <fileNamePattern>${logging.path}/${serverName}/web-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍info绾у埆鐨� -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>info</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!-- 2.3 level涓� WARN 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_warn.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 姝ゅ璁剧疆瀛楃闆� -->
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logging.path}/${serverName}/web-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍warn绾у埆鐨� -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>warn</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!-- 2.4 level涓� ERROR 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_error.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 姝ゅ璁剧疆瀛楃闆� -->
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logging.path}/${serverName}/web-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍ERROR绾у埆鐨� -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>ERROR</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!--     4.1 寮�鍙戠幆澧�:鎵撳嵃鎺у埗鍙�-->
+    <!-- 鐢ㄤ簬鍦⊿pring Boot搴旂敤绋嬪簭涓厤缃棩蹇楄褰曠殑鏍囩銆傚湪杩欎釜鏍囩涓紝name="dev"琛ㄧず杩欎釜閰嶇疆鏂囦欢鍙湪dev鐜涓敓鏁堬紝<logger name="com.myClass.controller" level="debug"/>琛ㄧず涓篶om.myClass.controller锛堟牴鎹笟鍔′慨鏀癸級杩欎釜鍖呬笅鐨勭被閰嶇疆鏃ュ織杈撳嚭绾у埆涓篸ebug -->
+    <!--    <springProfile name="dev">-->
+    <!--        <logger name="com.myClass.controller" level="debug"/>-->
+    <!--    </springProfile>-->
+    <!-- 鐢ㄤ簬閰嶇疆鏃ュ織杈撳嚭鐨勬爣绛俱�傚湪杩欎釜鏍囩涓紝level="info"琛ㄧず鏃ュ織杈撳嚭绾у埆涓篿nfo锛�<appender-ref ref="CONSOLE"/>銆�<appender-ref ref="DEBUG_FILE"/>銆�<appender-ref ref="INFO_FILE"/>銆�<appender-ref ref="WARN_FILE"/>銆�<appender-ref ref="ERROR_FILE"/>琛ㄧず灏嗘棩蹇楄緭鍑哄埌涓嶅悓鐨刟ppender涓紝鍒嗗埆涓烘帶鍒跺彴銆乨ebug鏂囦欢銆乮nfo鏂囦欢銆亀arn鏂囦欢鍜宔rror鏂囦欢 -->
+    <root level="info">
+        <appender-ref ref="CONSOLE"/>
+        <appender-ref ref="DEBUG_FILE"/>
+        <appender-ref ref="INFO_FILE"/>
+        <appender-ref ref="WARN_FILE"/>
+        <appender-ref ref="ERROR_FILE"/>
+    </root>
+</configuration>
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/target/deviceInteraction-1.0-SNAPSHOT.jar.original b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/deviceInteraction-1.0-SNAPSHOT.jar.original
new file mode 100644
index 0000000..46d4aa4
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/deviceInteraction-1.0-SNAPSHOT.jar.original
Binary files differ
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-archiver/pom.properties b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..c2de0b1
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-archiver/pom.properties
@@ -0,0 +1,3 @@
+version=1.0-SNAPSHOT
+groupId=com.mes
+artifactId=deviceInteraction
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..e554e55
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,86 @@
+com\mes\AppRunnerConfig.class
+com\mes\md\controller\TaskingController.class
+com\mes\md\mapper\TaskingMapper.class
+com\mes\md\controller\AccountController.class
+com\mes\md\service\TaskLogService.class
+com\mes\md\controller\WorktaskdetailController.class
+com\mes\md\mapper\RoleMapper.class
+com\mes\md\service\impl\ProjectServiceImpl.class
+com\mes\md\service\PrimitiveTaskService.class
+com\mes\md\service\impl\OrderOriginalPieceServiceImpl.class
+com\mes\md\service\AccountService.class
+com\mes\md\entity\Account.class
+com\mes\DeviceInteractionModuleApplication.class
+com\mes\md\service\impl\MenuServiceImpl.class
+com\mes\md\controller\PageController.class
+com\mes\md\entity\TaskLog.class
+com\mes\md\service\ProjectService.class
+com\mes\md\service\WorkTaskDetailService.class
+com\mes\md\mapper\EquipmentLogMapper.class
+com\mes\md\entity\RoleMenu.class
+com\mes\md\service\impl\EquipmentLogServiceImpl.class
+com\mes\md\controller\OrderoriginalpieceController.class
+com\mes\md\controller\TaskLogController.class
+com\mes\md\service\impl\TaskingServiceImpl.class
+com\mes\md\controller\EdgegrindingLogController.class
+com\mes\md\controller\MenuController.class
+com\mes\md\mapper\ProjectMapper.class
+com\mes\md\entity\OrderOriginalPiece.class
+com\mes\md\service\MenuService.class
+com\mes\md\controller\GlassInfoController.class
+com\mes\md\controller\EquipmentLogController.class
+com\mes\md\mapper\PageMapper.class
+com\mes\md\service\ProjectLogService.class
+com\mes\md\entity\Project.class
+com\mes\common\SmbTool.class
+com\mes\md\mapper\ProjectLogMapper.class
+com\mes\md\controller\RolemenuController.class
+com\mes\md\mapper\PrimitiveTaskMapper.class
+com\mes\md\service\impl\EdgeGrindingLogServiceImpl.class
+com\mes\md\controller\PrimitivetaskController.class
+com\mes\md\mapper\OrderOriginalPieceMapper.class
+com\mes\edgstoragecage\controller\EdgStorageCageController.class
+com\mes\edgstoragecage\entity\EdgStorageCageDetails.class
+com\mes\edgstoragecage\entity\EdgStorageCage.class
+com\mes\md\mapper\RoleMenuMapper.class
+com\mes\md\service\impl\RoleServiceImpl.class
+com\mes\md\entity\Role.class
+com\mes\md\mapper\TaskLogMapper.class
+com\mes\md\service\impl\AccountServiceImpl.class
+com\mes\edgstoragecage\service\EdgStorageCageService.class
+com\mes\md\entity\EdgeGrindingLog.class
+com\mes\md\service\OrderOriginalPieceService.class
+com\mes\md\service\impl\GlassInfoServiceImpl.class
+com\mes\md\entity\EquipmentLog.class
+com\mes\md\mapper\EdgeGrindingLogMapper.class
+com\mes\md\entity\PrimitiveTask.class
+com\mes\md\entity\WorkTaskDetail.class
+com\mes\md\mapper\WorkTaskDetailMapper.class
+com\mes\job\CacheGlassTask.class
+com\mes\md\entity\Menu.class
+com\mes\md\service\impl\PageServiceImpl.class
+com\mes\common\S7object.class
+com\mes\md\service\impl\WorkTaskDetailServiceImpl.class
+com\mes\md\mapper\MenuMapper.class
+com\mes\md\service\impl\TaskLogServiceImpl.class
+com\mes\md\service\RoleMenuService.class
+com\mes\edgstoragecage\service\impl\EdgStorageCageServiceImpl.class
+com\mes\edgstoragecage\mapper\EdgStorageCageMapper.class
+com\mes\md\service\impl\ProjectLogServiceImpl.class
+com\mes\md\service\impl\RoleMenuServiceImpl.class
+com\mes\md\entity\GlassInfo.class
+com\mes\md\service\TaskingService.class
+com\mes\md\service\GlassInfoService.class
+com\mes\md\service\RoleService.class
+com\mes\md\service\PageService.class
+com\mes\md\controller\ProjectLogController.class
+com\mes\md\entity\Page.class
+com\mes\md\controller\RoleController.class
+com\mes\md\mapper\AccountMapper.class
+com\mes\md\service\EquipmentLogService.class
+com\mes\md\mapper\GlassInfoMapper.class
+com\mes\md\service\impl\PrimitiveTaskServiceImpl.class
+com\mes\md\controller\ProjectController.class
+com\mes\md\entity\Tasking.class
+com\mes\md\entity\ProjectLog.class
+com\mes\md\service\EdgeGrindingLogService.class
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..f92ad72
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,86 @@
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\edgstoragecage\mapper\EdgStorageCageMapper.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\job\CacheGlassTask.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\DeviceInteractionModuleApplication.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\ProjectLog.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\Role.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\Tasking.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\edgstoragecage\service\impl\EdgStorageCageServiceImpl.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\PageMapper.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\MenuController.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\ProjectLogMapper.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\PageService.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\GlassInfoServiceImpl.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\WorktaskdetailController.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\WorkTaskDetailServiceImpl.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\TaskLog.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\GlassInfo.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\OrderOriginalPieceMapper.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\AccountService.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\RoleController.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\WorkTaskDetailService.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\AccountServiceImpl.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\RoleService.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\MenuServiceImpl.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\RoleMenuServiceImpl.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\edgstoragecage\entity\EdgStorageCage.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\Project.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\PrimitiveTaskMapper.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\PrimitiveTaskServiceImpl.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\edgstoragecage\service\EdgStorageCageService.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\EdgegrindingLogController.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\EdgeGrindingLog.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\Account.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\TaskingController.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\EdgeGrindingLogService.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\TaskLogServiceImpl.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\PrimitiveTaskService.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\TaskingServiceImpl.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\AppRunnerConfig.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\common\S7object.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\AccountMapper.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\EdgeGrindingLogServiceImpl.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\ProjectMapper.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\ProjectServiceImpl.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\TaskingService.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\PageController.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\ProjectController.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\GlassInfoMapper.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\WorkTaskDetailMapper.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\OrderOriginalPieceService.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\RoleMenuMapper.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\EquipmentLogMapper.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\EquipmentLog.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\EdgeGrindingLogMapper.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\PrimitivetaskController.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\PageServiceImpl.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\edgstoragecage\controller\EdgStorageCageController.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\MenuMapper.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\common\SmbTool.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\AccountController.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\MenuService.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\Menu.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\Page.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\RoleMapper.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\EquipmentLogService.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\ProjectLogService.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\RolemenuController.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\GlassInfoController.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\OrderOriginalPieceServiceImpl.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\edgstoragecage\entity\EdgStorageCageDetails.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\ProjectService.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\ProjectLogServiceImpl.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\TaskingMapper.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\ProjectLogController.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\OrderoriginalpieceController.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\WorkTaskDetail.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\TaskLogController.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\TaskLogService.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\PrimitiveTask.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\EquipmentLogController.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\RoleServiceImpl.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\RoleMenu.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\GlassInfoService.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\OrderOriginalPiece.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\TaskLogMapper.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\EquipmentLogServiceImpl.java
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\RoleMenuService.java
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
new file mode 100644
index 0000000..0de62f3
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
@@ -0,0 +1 @@
+com\mes\DeviceInteractionModuleApplicationTest.class
diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
new file mode 100644
index 0000000..ba1d8de
--- /dev/null
+++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
@@ -0,0 +1 @@
+D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\test\java\com\mes\DeviceInteractionModuleApplicationTest.java
diff --git a/JiuMuMesParent/moduleService/pom.xml b/JiuMuMesParent/moduleService/pom.xml
new file mode 100644
index 0000000..a4d544c
--- /dev/null
+++ b/JiuMuMesParent/moduleService/pom.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>JiuMuMesParent</artifactId>
+        <groupId>com.mes</groupId>
+        <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>moduleService</artifactId>
+    <packaging>pom</packaging>
+    <modules>
+        <module>deviceInteractionModule</module>
+<!--        <module>CacheVerticalGlassModule</module>-->
+<!--        <module>LoadGlassModule</module>-->
+<!--        <module>TemperingGlassModule</module>-->
+<!--        <module>UnLoadGlassModule</module>-->
+<!--        <module>GlassStorageModule</module>-->
+    </modules>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+    </properties>
+    <dependencies>
+        <!--web 闇�瑕佸惎鍔ㄩ」鐩�-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.velocity</groupId>
+            <artifactId>velocity-engine-core</artifactId>
+            <version>2.0</version>
+        </dependency>
+
+        <!--渚濊禆鏈嶅姟鐨勫伐鍏风被-->
+        <!--        <dependency>-->
+        <!--            <groupId>com.mes</groupId>-->
+        <!--            <artifactId>common</artifactId>-->
+        <!--            <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>-->
+        <!--            <artifactId>spring-boot-devtools</artifactId>-->
+        <!--            <optional>true</optional>-->
+        <!--        </dependency>-->
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+</project>
\ No newline at end of file
diff --git a/JiuMuMesParent/pom.xml b/JiuMuMesParent/pom.xml
new file mode 100644
index 0000000..d8ff775
--- /dev/null
+++ b/JiuMuMesParent/pom.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.mes</groupId>
+    <artifactId>JiuMuMesParent</artifactId>
+    <version>1.0-SNAPSHOT</version>
+    <modules>
+        <module>common</module>
+        <module>moduleService</module>
+        <module>gateway</module>
+    </modules>
+    <packaging>pom</packaging>
+
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.1.8.RELEASE</version>
+        <relativePath/>
+    </parent>
+
+    <properties>
+        <!-- 璺宠繃娴嬭瘯 -->
+        <skipTests>true</skipTests>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework.cloud</groupId>
+                <artifactId>spring-cloud-dependencies</artifactId>
+                <version>Greenwich.SR3</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba.cloud</groupId>
+                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
+                <version>2.1.0.RELEASE</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <repositories>
+        <repository>
+            <id>nexus-aliyun</id>
+            <name>Nexus aliyun</name>
+            <layout>default</layout>
+            <url>https://maven.aliyun.com/repository/public</url>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+        </repository>
+        <repository>
+            <id>spring</id>
+            <url>https://maven.aliyun.com/repository/spring</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+            <snapshots>
+                <enabled>true</enabled>
+            </snapshots>
+        </repository>
+    </repositories>
+
+
+</project>
\ No newline at end of file
diff --git a/JiuMuMesParent/readMe.md b/JiuMuMesParent/readMe.md
new file mode 100644
index 0000000..d2ffe19
--- /dev/null
+++ b/JiuMuMesParent/readMe.md
@@ -0,0 +1,18 @@
+1銆佹湰椤圭洰鏄熀浜嶴pringBoot+Mybatis-plus+Mysql+Vue+ElementUI+Maven+Nginx鐨勯」鐩�,鐩綍缁撴灉缁撴瀯濡備笅锛�
+
+    鈹溾攢src
+    鈹溾攢com   鎻掍欢鐢熸垚鐨勪唬鐮侊紝鐢ㄤ簬鍚勮嚜寮�鍙戜娇鐢�
+    鈹�  鈹斺攢mes
+    鈹溾攢common  鍏叡妯″潡
+    鈹�  鈹溾攢src
+    鈹斺攢moduleService
+        鈹溾攢-CacheGlassModule
+        鈹溾攢-CacheVerticalGlassModule
+        鈹溾攢-LoadGlassModule
+        鈹溾攢-TemperingGlassModule
+        鈹斺攢-UnLoadGlassModule
+
+2銆佽繍琛岄」鐩細 1銆佸惎鍔ㄩ」鐩細鍚姩鍚勮嚜妯″潡鍚姩绫� 渚嬪锛欳acheGlassModuleApplication.java#main()
+2銆佽闂」鐩細 3銆侀」鐩湴鍧�锛歨ttp://localhost:8081/mesModuleCache/doc.html#/home
+4銆侀」鐩鏄庯細 鏈晫闈负Api鏂囨。锛屽叕寮�浜哄憳鐢ㄤ簬璋冭瘯 3銆侀」鐩鏄庯細 1銆侀」鐩垎涓哄叕鍏辨ā鍧梒ommon锛屼笟鍔℃ā鍧梞oduleService銆� 2銆乧ommon妯″潡涓寘鍚叕鍏辩殑绫伙紝渚嬪锛氬叕鍏辩殑瀹炰綋绫汇�佹嫤鎴櫒銆佸伐鍏风被銆佸父閲忕被銆佸紓甯稿鐞嗙瓑銆�
+3銆乵oduleService涓寘鍚悇涓笟鍔℃ā鍧楋紝姣忎釜涓氬姟妯″潡涓寘鍚竴涓惎鍔ㄧ被,寮�鍙戜汉鍛橀渶瑕佸紑鍙戝悇鑷礋璐g殑涓氬姟妯″潡銆� 4銆乧om鐩綍涓嬬殑鏂囦欢涓烘彃浠剁敓鎴愮殑浠g爜锛岀敤浜庡悇鑷紑鍙戜娇鐢ㄣ�傜敤瀹屽垹闄ゅ嵆鍙紝閬垮厤褰卞搷寮�鍙戙��
\ No newline at end of file
diff --git a/UI-Project/.gitignore b/UI-Project/.gitignore
new file mode 100644
index 0000000..38adffa
--- /dev/null
+++ b/UI-Project/.gitignore
@@ -0,0 +1,28 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+.DS_Store
+dist
+dist-ssr
+coverage
+*.local
+
+/cypress/videos/
+/cypress/screenshots/
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/UI-Project/.vscode/extensions.json b/UI-Project/.vscode/extensions.json
new file mode 100644
index 0000000..c0a6e5a
--- /dev/null
+++ b/UI-Project/.vscode/extensions.json
@@ -0,0 +1,3 @@
+{
+  "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"]
+}
diff --git a/UI-Project/README.md b/UI-Project/README.md
new file mode 100644
index 0000000..b7e89c9
--- /dev/null
+++ b/UI-Project/README.md
@@ -0,0 +1,29 @@
+# northglass-erp
+
+This template should help get you started developing with Vue 3 in Vite.
+
+## Recommended IDE Setup
+
+[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).
+
+## Customize configuration
+
+See [Vite Configuration Reference](https://vitejs.dev/config/).
+
+## Project Setup
+
+```sh
+npm install
+```
+
+### Compile and Hot-Reload for Development
+
+```sh
+npm run dev
+```
+
+### Compile and Minify for Production
+
+```sh
+npm run build
+```
diff --git a/UI-Project/auto-imports.d.ts b/UI-Project/auto-imports.d.ts
new file mode 100644
index 0000000..66c4de4
--- /dev/null
+++ b/UI-Project/auto-imports.d.ts
@@ -0,0 +1,9 @@
+/* eslint-disable */
+/* prettier-ignore */
+// @ts-nocheck
+// noinspection JSUnusedGlobalSymbols
+// Generated by unplugin-auto-import
+export {}
+declare global {
+  const useI18n: typeof import('vue-i18n')['useI18n']
+}
diff --git a/UI-Project/config.js b/UI-Project/config.js
new file mode 100644
index 0000000..92ffbef
--- /dev/null
+++ b/UI-Project/config.js
@@ -0,0 +1,10 @@
+export default {
+ serverUrl: "10.153.19.29:88/api",
+//  serverUrl: "192.168.1.199:88/api",
+//  serverUrl: "127.0.0.1:88/api",
+  serverUrl2: "10.153.19.29:88"
+  // serverUrl2: "192.168.1.199:88"
+    // serverUrl2: "127.0.0.1:88"
+
+  //serverUrl:"res.abeim.cn"
+}
\ No newline at end of file
diff --git a/UI-Project/index.html b/UI-Project/index.html
new file mode 100644
index 0000000..e96cd5a
--- /dev/null
+++ b/UI-Project/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8">
+    <!-- <link rel="icon" href="/favicon.ico"> -->
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>鍖楃幓</title>
+  </head>
+  <body>
+    <div id="app"></div>
+    <script type="module" src="/src/main.js"></script>
+  </body>
+</html>
diff --git a/UI-Project/package-lock.json b/UI-Project/package-lock.json
new file mode 100644
index 0000000..d59de38
--- /dev/null
+++ b/UI-Project/package-lock.json
@@ -0,0 +1,3682 @@
+{
+  "name": "northglass-mes",
+  "version": "0.0.0",
+  "lockfileVersion": 2,
+  "requires": true,
+  "packages": {
+    "": {
+      "name": "northglass-mes",
+      "version": "0.0.0",
+      "dependencies": {
+        "@element-plus/icons-vue": "^2.3.1",
+        "@vue-macros/reactivity-transform": "^0.3.23",
+        "axios": "^1.6.8",
+        "chart.js": "^4.4.3",
+        "echarts": "^5.5.1",
+        "element-plus": "^2.4.0",
+        "moment": "^2.30.1",
+        "pinia": "^2.1.6",
+        "pinia-plugin-persistedstate": "^3.2.0",
+        "qrcode": "^1.5.4",
+        "sortablejs": "^1.15.1",
+        "sweetalert2": "^11.10.7",
+        "vue": "^3.3.4",
+        "vue-draggable-plus": "^0.5.0",
+        "vue-echarts": "^6.7.3",
+        "vue-i18n": "^9.10.1",
+        "vue-print-nb": "^1.7.5",
+        "vue-router": "^4.2.4",
+        "vue3-print-nb": "^0.1.4",
+        "vxe-table": "^4.5.15",
+        "xe-utils": "^3.5.14",
+        "xlsx": "^0.18.5"
+      },
+      "devDependencies": {
+        "@types/sortablejs": "^1.15.7",
+        "@vitejs/plugin-vue": "^4.6.2",
+        "http-proxy-middleware": "^3.0.0",
+        "unplugin-auto-import": "^0.17.6",
+        "vite": "^4.4.9"
+      }
+    },
+    "node_modules/@antfu/utils": {
+      "version": "0.7.8",
+      "resolved": "https://registry.npmmirror.com/@antfu/utils/-/utils-0.7.8.tgz",
+      "integrity": "sha512-rWQkqXRESdjXtc+7NRfK9lASQjpXJu1ayp7qi1d23zZorY+wBHVLHHoVcMsEnkqEBWTFqbztO7/QdJFzyEcLTg==",
+      "dev": true,
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      }
+    },
+    "node_modules/@babel/helper-string-parser": {
+      "version": "7.24.8",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
+      "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-identifier": {
+      "version": "7.24.7",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
+      "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/parser": {
+      "version": "7.25.3",
+      "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.25.3.tgz",
+      "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==",
+      "dependencies": {
+        "@babel/types": "^7.25.2"
+      },
+      "bin": {
+        "parser": "bin/babel-parser.js"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@babel/types": {
+      "version": "7.25.2",
+      "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.25.2.tgz",
+      "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==",
+      "dependencies": {
+        "@babel/helper-string-parser": "^7.24.8",
+        "@babel/helper-validator-identifier": "^7.24.7",
+        "to-fast-properties": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@ctrl/tinycolor": {
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz",
+      "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==",
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@element-plus/icons-vue": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz",
+      "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==",
+      "peerDependencies": {
+        "vue": "^3.2.0"
+      }
+    },
+    "node_modules/@esbuild/win32-ia32": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz",
+      "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==",
+      "cpu": [
+        "ia32"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@floating-ui/core": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz",
+      "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==",
+      "dependencies": {
+        "@floating-ui/utils": "^0.1.3"
+      }
+    },
+    "node_modules/@floating-ui/dom": {
+      "version": "1.5.3",
+      "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz",
+      "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==",
+      "dependencies": {
+        "@floating-ui/core": "^1.4.2",
+        "@floating-ui/utils": "^0.1.3"
+      }
+    },
+    "node_modules/@floating-ui/utils": {
+      "version": "0.1.6",
+      "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz",
+      "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A=="
+    },
+    "node_modules/@intlify/core-base": {
+      "version": "9.13.1",
+      "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.13.1.tgz",
+      "integrity": "sha512-+bcQRkJO9pcX8d0gel9ZNfrzU22sZFSA0WVhfXrf5jdJOS24a+Bp8pozuS9sBI9Hk/tGz83pgKfmqcn/Ci7/8w==",
+      "dependencies": {
+        "@intlify/message-compiler": "9.13.1",
+        "@intlify/shared": "9.13.1"
+      },
+      "engines": {
+        "node": ">= 16"
+      }
+    },
+    "node_modules/@intlify/message-compiler": {
+      "version": "9.13.1",
+      "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.13.1.tgz",
+      "integrity": "sha512-SKsVa4ajYGBVm7sHMXd5qX70O2XXjm55zdZB3VeMFCvQyvLew/dLvq3MqnaIsTMF1VkkOb9Ttr6tHcMlyPDL9w==",
+      "dependencies": {
+        "@intlify/shared": "9.13.1",
+        "source-map-js": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 16"
+      }
+    },
+    "node_modules/@intlify/shared": {
+      "version": "9.13.1",
+      "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-9.13.1.tgz",
+      "integrity": "sha512-u3b6BKGhE6j/JeRU6C/RL2FgyJfy6LakbtfeVF8fJXURpZZTzfh3e05J0bu0XPw447Q6/WUp3C4ajv4TMS4YsQ==",
+      "engines": {
+        "node": ">= 16"
+      }
+    },
+    "node_modules/@jridgewell/sourcemap-codec": {
+      "version": "1.4.15",
+      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+      "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+    },
+    "node_modules/@kurkle/color": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmmirror.com/@kurkle/color/-/color-0.3.2.tgz",
+      "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw=="
+    },
+    "node_modules/@nodelib/fs.scandir": {
+      "version": "2.1.5",
+      "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+      "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+      "dev": true,
+      "dependencies": {
+        "@nodelib/fs.stat": "2.0.5",
+        "run-parallel": "^1.1.9"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@nodelib/fs.stat": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+      "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+      "dev": true,
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@nodelib/fs.walk": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+      "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+      "dev": true,
+      "dependencies": {
+        "@nodelib/fs.scandir": "2.1.5",
+        "fastq": "^1.6.0"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@popperjs/core": {
+      "name": "@sxzz/popperjs-es",
+      "version": "2.11.7",
+      "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
+      "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==",
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/popperjs"
+      }
+    },
+    "node_modules/@rollup/pluginutils": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
+      "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
+      "dependencies": {
+        "@types/estree": "^1.0.0",
+        "estree-walker": "^2.0.2",
+        "picomatch": "^2.3.1"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      },
+      "peerDependencies": {
+        "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+      },
+      "peerDependenciesMeta": {
+        "rollup": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@types/estree": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.2.tgz",
+      "integrity": "sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA=="
+    },
+    "node_modules/@types/http-proxy": {
+      "version": "1.17.14",
+      "resolved": "https://registry.npmmirror.com/@types/http-proxy/-/http-proxy-1.17.14.tgz",
+      "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==",
+      "dev": true,
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/lodash": {
+      "version": "4.14.199",
+      "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz",
+      "integrity": "sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg=="
+    },
+    "node_modules/@types/lodash-es": {
+      "version": "4.17.9",
+      "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.9.tgz",
+      "integrity": "sha512-ZTcmhiI3NNU7dEvWLZJkzG6ao49zOIjEgIE0RgV7wbPxU0f2xT3VSAHw2gmst8swH6V0YkLRGp4qPlX/6I90MQ==",
+      "dependencies": {
+        "@types/lodash": "*"
+      }
+    },
+    "node_modules/@types/node": {
+      "version": "20.12.5",
+      "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.12.5.tgz",
+      "integrity": "sha512-BD+BjQ9LS/D8ST9p5uqBxghlN+S42iuNxjsUGjeZobe/ciXzk2qb1B6IXc6AnRLS+yFJRpN2IPEHMzwspfDJNw==",
+      "dev": true,
+      "dependencies": {
+        "undici-types": "~5.26.4"
+      }
+    },
+    "node_modules/@types/sortablejs": {
+      "version": "1.15.8",
+      "resolved": "https://registry.npmmirror.com/@types/sortablejs/-/sortablejs-1.15.8.tgz",
+      "integrity": "sha512-b79830lW+RZfwaztgs1aVPgbasJ8e7AXtZYHTELNXZPsERt4ymJdjV4OccDbHQAvHrCcFpbF78jkm0R6h/pZVg=="
+    },
+    "node_modules/@types/web-bluetooth": {
+      "version": "0.0.16",
+      "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz",
+      "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ=="
+    },
+    "node_modules/@vitejs/plugin-vue": {
+      "version": "4.6.2",
+      "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz",
+      "integrity": "sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==",
+      "dev": true,
+      "engines": {
+        "node": "^14.18.0 || >=16.0.0"
+      },
+      "peerDependencies": {
+        "vite": "^4.0.0 || ^5.0.0",
+        "vue": "^3.2.25"
+      }
+    },
+    "node_modules/@vue-macros/common": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/@vue-macros/common/-/common-1.8.0.tgz",
+      "integrity": "sha512-auDJJzE0z3uRe3867e0DsqcseKImktNf5ojCZgUKqiVxb2yTlwlgOVAYCgoep9oITqxkXQymSvFeKhedi8PhaA==",
+      "dependencies": {
+        "@babel/types": "^7.22.17",
+        "@rollup/pluginutils": "^5.0.4",
+        "@vue/compiler-sfc": "^3.3.4",
+        "ast-kit": "^0.11.2",
+        "local-pkg": "^0.4.3",
+        "magic-string-ast": "^0.3.0"
+      },
+      "engines": {
+        "node": ">=16.14.0"
+      },
+      "peerDependencies": {
+        "vue": "^2.7.0 || ^3.2.25"
+      },
+      "peerDependenciesMeta": {
+        "vue": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@vue-macros/reactivity-transform": {
+      "version": "0.3.23",
+      "resolved": "https://registry.npmjs.org/@vue-macros/reactivity-transform/-/reactivity-transform-0.3.23.tgz",
+      "integrity": "sha512-SubIg1GsNpQdIDJusrcA2FWBgwSY+4jmL0j6SJ6PU85r3rlS+uDhn6AUkqxeZRAdmJnrbGHXDyWUdygOZmWrSg==",
+      "dependencies": {
+        "@babel/parser": "^7.22.16",
+        "@vue-macros/common": "1.8.0",
+        "@vue/compiler-core": "^3.3.4",
+        "@vue/shared": "^3.3.4",
+        "magic-string": "^0.30.3",
+        "unplugin": "^1.4.0"
+      },
+      "engines": {
+        "node": ">=16.14.0"
+      },
+      "peerDependencies": {
+        "vue": "^2.7.0 || ^3.2.25"
+      }
+    },
+    "node_modules/@vue/compiler-core": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz",
+      "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==",
+      "dependencies": {
+        "@babel/parser": "^7.21.3",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "node_modules/@vue/compiler-dom": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz",
+      "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==",
+      "dependencies": {
+        "@vue/compiler-core": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/@vue/compiler-sfc": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz",
+      "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==",
+      "dependencies": {
+        "@babel/parser": "^7.20.15",
+        "@vue/compiler-core": "3.3.4",
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/compiler-ssr": "3.3.4",
+        "@vue/reactivity-transform": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.30.0",
+        "postcss": "^8.1.10",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "node_modules/@vue/compiler-ssr": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz",
+      "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==",
+      "dependencies": {
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/@vue/devtools-api": {
+      "version": "6.5.1",
+      "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz",
+      "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA=="
+    },
+    "node_modules/@vue/reactivity": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz",
+      "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==",
+      "dependencies": {
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/@vue/reactivity-transform": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz",
+      "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==",
+      "dependencies": {
+        "@babel/parser": "^7.20.15",
+        "@vue/compiler-core": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.30.0"
+      }
+    },
+    "node_modules/@vue/runtime-core": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz",
+      "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==",
+      "dependencies": {
+        "@vue/reactivity": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/@vue/runtime-dom": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz",
+      "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==",
+      "dependencies": {
+        "@vue/runtime-core": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "csstype": "^3.1.1"
+      }
+    },
+    "node_modules/@vue/server-renderer": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz",
+      "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==",
+      "dependencies": {
+        "@vue/compiler-ssr": "3.3.4",
+        "@vue/shared": "3.3.4"
+      },
+      "peerDependencies": {
+        "vue": "3.3.4"
+      }
+    },
+    "node_modules/@vue/shared": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz",
+      "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
+    },
+    "node_modules/@vueuse/core": {
+      "version": "9.13.0",
+      "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.13.0.tgz",
+      "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==",
+      "dependencies": {
+        "@types/web-bluetooth": "^0.0.16",
+        "@vueuse/metadata": "9.13.0",
+        "@vueuse/shared": "9.13.0",
+        "vue-demi": "*"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      }
+    },
+    "node_modules/@vueuse/core/node_modules/vue-demi": {
+      "version": "0.14.6",
+      "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
+      "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
+      "hasInstallScript": true,
+      "bin": {
+        "vue-demi-fix": "bin/vue-demi-fix.js",
+        "vue-demi-switch": "bin/vue-demi-switch.js"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      },
+      "peerDependencies": {
+        "@vue/composition-api": "^1.0.0-rc.1",
+        "vue": "^3.0.0-0 || ^2.6.0"
+      },
+      "peerDependenciesMeta": {
+        "@vue/composition-api": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@vueuse/metadata": {
+      "version": "9.13.0",
+      "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.13.0.tgz",
+      "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==",
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      }
+    },
+    "node_modules/@vueuse/shared": {
+      "version": "9.13.0",
+      "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.13.0.tgz",
+      "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==",
+      "dependencies": {
+        "vue-demi": "*"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      }
+    },
+    "node_modules/@vueuse/shared/node_modules/vue-demi": {
+      "version": "0.14.6",
+      "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
+      "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
+      "hasInstallScript": true,
+      "bin": {
+        "vue-demi-fix": "bin/vue-demi-fix.js",
+        "vue-demi-switch": "bin/vue-demi-switch.js"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      },
+      "peerDependencies": {
+        "@vue/composition-api": "^1.0.0-rc.1",
+        "vue": "^3.0.0-0 || ^2.6.0"
+      },
+      "peerDependenciesMeta": {
+        "@vue/composition-api": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/acorn": {
+      "version": "8.12.0",
+      "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.12.0.tgz",
+      "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==",
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/adler-32": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz",
+      "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/ansi-regex": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/anymatch": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz",
+      "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+      "dependencies": {
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/ast-kit": {
+      "version": "0.11.2",
+      "resolved": "https://registry.npmjs.org/ast-kit/-/ast-kit-0.11.2.tgz",
+      "integrity": "sha512-Q0DjXK4ApbVoIf9GLyCo252tUH44iTnD/hiJ2TQaJeydYWSpKk0sI34+WMel8S9Wt5pbLgG02oJ+gkgX5DV3sQ==",
+      "dependencies": {
+        "@babel/parser": "^7.22.14",
+        "@rollup/pluginutils": "^5.0.4",
+        "pathe": "^1.1.1"
+      },
+      "engines": {
+        "node": ">=16.14.0"
+      }
+    },
+    "node_modules/async-validator": {
+      "version": "4.2.5",
+      "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz",
+      "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
+    },
+    "node_modules/asynckit": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+    },
+    "node_modules/axios": {
+      "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.6",
+        "form-data": "^4.0.0",
+        "proxy-from-env": "^1.1.0"
+      }
+    },
+    "node_modules/balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+      "dev": true
+    },
+    "node_modules/binary-extensions": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.3.0.tgz",
+      "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/brace-expansion": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz",
+      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+      "dev": true,
+      "dependencies": {
+        "balanced-match": "^1.0.0"
+      }
+    },
+    "node_modules/braces": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+      "dependencies": {
+        "fill-range": "^7.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/camelcase": {
+      "version": "5.3.1",
+      "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/cfb": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz",
+      "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==",
+      "dependencies": {
+        "adler-32": "~1.3.0",
+        "crc-32": "~1.2.0"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/chart.js": {
+      "version": "4.4.3",
+      "resolved": "https://registry.npmmirror.com/chart.js/-/chart.js-4.4.3.tgz",
+      "integrity": "sha512-qK1gkGSRYcJzqrrzdR6a+I0vQ4/R+SoODXyAjscQ/4mzuNzySaMCd+hyVxitSY1+L2fjPD1Gbn+ibNqRmwQeLw==",
+      "dependencies": {
+        "@kurkle/color": "^0.3.0"
+      },
+      "engines": {
+        "pnpm": ">=8"
+      }
+    },
+    "node_modules/chokidar": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.6.0.tgz",
+      "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+      "dependencies": {
+        "anymatch": "~3.1.2",
+        "braces": "~3.0.2",
+        "glob-parent": "~5.1.2",
+        "is-binary-path": "~2.1.0",
+        "is-glob": "~4.0.1",
+        "normalize-path": "~3.0.0",
+        "readdirp": "~3.6.0"
+      },
+      "engines": {
+        "node": ">= 8.10.0"
+      },
+      "funding": {
+        "url": "https://paulmillr.com/funding/"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "node_modules/cliui": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz",
+      "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+      "dependencies": {
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.0",
+        "wrap-ansi": "^6.2.0"
+      }
+    },
+    "node_modules/codepage": {
+      "version": "1.15.0",
+      "resolved": "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz",
+      "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+    },
+    "node_modules/combined-stream": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+      "dependencies": {
+        "delayed-stream": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/confbox": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npmmirror.com/confbox/-/confbox-0.1.7.tgz",
+      "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==",
+      "dev": true
+    },
+    "node_modules/crc-32": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz",
+      "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==",
+      "bin": {
+        "crc32": "bin/crc32.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/csstype": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+      "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+    },
+    "node_modules/dayjs": {
+      "version": "1.11.10",
+      "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz",
+      "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
+    },
+    "node_modules/debug": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/decamelize": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz",
+      "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+      "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/dijkstrajs": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
+      "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
+    },
+    "node_modules/dom-zindex": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/dom-zindex/-/dom-zindex-1.0.1.tgz",
+      "integrity": "sha512-M/MERVDZ8hguvjl6MAlLWSLYLS7PzEyXaTb5gEeJ+SF+e9iUC0sdvlzqe91MMDHBoy+nqw7wKcUOrDSyvMCrRg=="
+    },
+    "node_modules/echarts": {
+      "version": "5.5.1",
+      "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.5.1.tgz",
+      "integrity": "sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==",
+      "dependencies": {
+        "tslib": "2.3.0",
+        "zrender": "5.6.0"
+      }
+    },
+    "node_modules/element-plus": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.4.0.tgz",
+      "integrity": "sha512-yJEa8LXkGOOgkfkeqMMEdeX/Dc8EH9qPcRuX91dlhSXxgCKKbp9tH3QFTOG99ibZsrN/Em62nh7ddvbc7I1frw==",
+      "dependencies": {
+        "@ctrl/tinycolor": "^3.4.1",
+        "@element-plus/icons-vue": "^2.0.6",
+        "@floating-ui/dom": "^1.0.1",
+        "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
+        "@types/lodash": "^4.14.182",
+        "@types/lodash-es": "^4.17.6",
+        "@vueuse/core": "^9.1.0",
+        "async-validator": "^4.2.5",
+        "dayjs": "^1.11.3",
+        "escape-html": "^1.0.3",
+        "lodash": "^4.17.21",
+        "lodash-es": "^4.17.21",
+        "lodash-unified": "^1.0.2",
+        "memoize-one": "^6.0.0",
+        "normalize-wheel-es": "^1.2.0"
+      },
+      "peerDependencies": {
+        "vue": "^3.2.0"
+      }
+    },
+    "node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+    },
+    "node_modules/esbuild": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz",
+      "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
+      "dev": true,
+      "hasInstallScript": true,
+      "bin": {
+        "esbuild": "bin/esbuild"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "optionalDependencies": {
+        "@esbuild/android-arm": "0.18.20",
+        "@esbuild/android-arm64": "0.18.20",
+        "@esbuild/android-x64": "0.18.20",
+        "@esbuild/darwin-arm64": "0.18.20",
+        "@esbuild/darwin-x64": "0.18.20",
+        "@esbuild/freebsd-arm64": "0.18.20",
+        "@esbuild/freebsd-x64": "0.18.20",
+        "@esbuild/linux-arm": "0.18.20",
+        "@esbuild/linux-arm64": "0.18.20",
+        "@esbuild/linux-ia32": "0.18.20",
+        "@esbuild/linux-loong64": "0.18.20",
+        "@esbuild/linux-mips64el": "0.18.20",
+        "@esbuild/linux-ppc64": "0.18.20",
+        "@esbuild/linux-riscv64": "0.18.20",
+        "@esbuild/linux-s390x": "0.18.20",
+        "@esbuild/linux-x64": "0.18.20",
+        "@esbuild/netbsd-x64": "0.18.20",
+        "@esbuild/openbsd-x64": "0.18.20",
+        "@esbuild/sunos-x64": "0.18.20",
+        "@esbuild/win32-arm64": "0.18.20",
+        "@esbuild/win32-ia32": "0.18.20",
+        "@esbuild/win32-x64": "0.18.20"
+      }
+    },
+    "node_modules/escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+      "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+    },
+    "node_modules/escape-string-regexp": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+      "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/estree-walker": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+    },
+    "node_modules/eventemitter3": {
+      "version": "4.0.7",
+      "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz",
+      "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
+      "dev": true
+    },
+    "node_modules/fast-glob": {
+      "version": "3.3.2",
+      "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.2.tgz",
+      "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+      "dev": true,
+      "dependencies": {
+        "@nodelib/fs.stat": "^2.0.2",
+        "@nodelib/fs.walk": "^1.2.3",
+        "glob-parent": "^5.1.2",
+        "merge2": "^1.3.0",
+        "micromatch": "^4.0.4"
+      },
+      "engines": {
+        "node": ">=8.6.0"
+      }
+    },
+    "node_modules/fastq": {
+      "version": "1.17.1",
+      "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.17.1.tgz",
+      "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
+      "dev": true,
+      "dependencies": {
+        "reusify": "^1.0.4"
+      }
+    },
+    "node_modules/fill-range": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+      "dependencies": {
+        "to-regex-range": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/find-up": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
+      "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+      "dependencies": {
+        "locate-path": "^5.0.0",
+        "path-exists": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/follow-redirects": {
+      "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"
+      },
+      "peerDependenciesMeta": {
+        "debug": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/form-data": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+      "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+      "dependencies": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.8",
+        "mime-types": "^2.1.12"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/frac": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz",
+      "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/get-caller-file": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
+      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+      "engines": {
+        "node": "6.* || 8.* || >= 10.*"
+      }
+    },
+    "node_modules/glob-parent": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+      "dependencies": {
+        "is-glob": "^4.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/http-proxy": {
+      "version": "1.18.1",
+      "resolved": "https://registry.npmmirror.com/http-proxy/-/http-proxy-1.18.1.tgz",
+      "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
+      "dev": true,
+      "dependencies": {
+        "eventemitter3": "^4.0.0",
+        "follow-redirects": "^1.0.0",
+        "requires-port": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/http-proxy-middleware": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-3.0.0.tgz",
+      "integrity": "sha512-36AV1fIaI2cWRzHo+rbcxhe3M3jUDCNzc4D5zRl57sEWRAxdXYtw7FSQKYY6PDKssiAKjLYypbssHk+xs/kMXw==",
+      "dev": true,
+      "dependencies": {
+        "@types/http-proxy": "^1.17.10",
+        "debug": "^4.3.4",
+        "http-proxy": "^1.18.1",
+        "is-glob": "^4.0.1",
+        "is-plain-obj": "^3.0.0",
+        "micromatch": "^4.0.5"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/is-binary-path": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz",
+      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+      "dependencies": {
+        "binary-extensions": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-glob": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+      "dependencies": {
+        "is-extglob": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-number": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/is-plain-obj": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
+      "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/js-tokens": {
+      "version": "9.0.0",
+      "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-9.0.0.tgz",
+      "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==",
+      "dev": true
+    },
+    "node_modules/local-pkg": {
+      "version": "0.4.3",
+      "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz",
+      "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==",
+      "engines": {
+        "node": ">=14"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      }
+    },
+    "node_modules/locate-path": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
+      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+      "dependencies": {
+        "p-locate": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lodash": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+    },
+    "node_modules/lodash-es": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
+      "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+    },
+    "node_modules/lodash-unified": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/lodash-unified/-/lodash-unified-1.0.3.tgz",
+      "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==",
+      "peerDependencies": {
+        "@types/lodash-es": "*",
+        "lodash": "*",
+        "lodash-es": "*"
+      }
+    },
+    "node_modules/magic-string": {
+      "version": "0.30.10",
+      "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.10.tgz",
+      "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==",
+      "dependencies": {
+        "@jridgewell/sourcemap-codec": "^1.4.15"
+      }
+    },
+    "node_modules/magic-string-ast": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/magic-string-ast/-/magic-string-ast-0.3.0.tgz",
+      "integrity": "sha512-0shqecEPgdFpnI3AP90epXyxZy9g6CRZ+SZ7BcqFwYmtFEnZ1jpevcV5HoyVnlDS9gCnc1UIg3Rsvp3Ci7r8OA==",
+      "dependencies": {
+        "magic-string": "^0.30.2"
+      },
+      "engines": {
+        "node": ">=16.14.0"
+      }
+    },
+    "node_modules/memoize-one": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
+      "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
+    },
+    "node_modules/merge2": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz",
+      "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/micromatch": {
+      "version": "4.0.5",
+      "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz",
+      "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+      "dev": true,
+      "dependencies": {
+        "braces": "^3.0.2",
+        "picomatch": "^2.3.1"
+      },
+      "engines": {
+        "node": ">=8.6"
+      }
+    },
+    "node_modules/mime-db": {
+      "version": "1.52.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mime-types": {
+      "version": "2.1.35",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+      "dependencies": {
+        "mime-db": "1.52.0"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/minimatch": {
+      "version": "9.0.4",
+      "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.4.tgz",
+      "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
+      "dev": true,
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/mlly": {
+      "version": "1.7.1",
+      "resolved": "https://registry.npmmirror.com/mlly/-/mlly-1.7.1.tgz",
+      "integrity": "sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==",
+      "dev": true,
+      "dependencies": {
+        "acorn": "^8.11.3",
+        "pathe": "^1.1.2",
+        "pkg-types": "^1.1.1",
+        "ufo": "^1.5.3"
+      }
+    },
+    "node_modules/moment": {
+      "version": "2.30.1",
+      "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz",
+      "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "dev": true
+    },
+    "node_modules/nanoid": {
+      "version": "3.3.6",
+      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
+      "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "bin": {
+        "nanoid": "bin/nanoid.cjs"
+      },
+      "engines": {
+        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+      }
+    },
+    "node_modules/normalize-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz",
+      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/normalize-wheel-es": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
+      "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw=="
+    },
+    "node_modules/p-limit": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
+      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+      "dependencies": {
+        "p-try": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/p-locate": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
+      "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+      "dependencies": {
+        "p-limit": "^2.2.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/p-try": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
+      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/path-exists": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
+      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/pathe": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/pathe/-/pathe-1.1.2.tgz",
+      "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="
+    },
+    "node_modules/picocolors": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+    },
+    "node_modules/picomatch": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+      "engines": {
+        "node": ">=8.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jonschlinkert"
+      }
+    },
+    "node_modules/pinia": {
+      "version": "2.1.7",
+      "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz",
+      "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==",
+      "dependencies": {
+        "@vue/devtools-api": "^6.5.0",
+        "vue-demi": ">=0.14.5"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/posva"
+      },
+      "peerDependencies": {
+        "@vue/composition-api": "^1.4.0",
+        "typescript": ">=4.4.4",
+        "vue": "^2.6.14 || ^3.3.0"
+      },
+      "peerDependenciesMeta": {
+        "@vue/composition-api": {
+          "optional": true
+        },
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/pinia-plugin-persistedstate": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmmirror.com/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-3.2.0.tgz",
+      "integrity": "sha512-tZbNGf2vjAQcIm7alK40sE51Qu/m9oWr+rEgNm/2AWr1huFxj72CjvpQcIQzMknDBJEkQznCLAGtJTIcLKrKdw==",
+      "peerDependencies": {
+        "pinia": "^2.0.0"
+      }
+    },
+    "node_modules/pinia/node_modules/vue-demi": {
+      "version": "0.14.6",
+      "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
+      "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
+      "hasInstallScript": true,
+      "bin": {
+        "vue-demi-fix": "bin/vue-demi-fix.js",
+        "vue-demi-switch": "bin/vue-demi-switch.js"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      },
+      "peerDependencies": {
+        "@vue/composition-api": "^1.0.0-rc.1",
+        "vue": "^3.0.0-0 || ^2.6.0"
+      },
+      "peerDependenciesMeta": {
+        "@vue/composition-api": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/pkg-types": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/pkg-types/-/pkg-types-1.1.1.tgz",
+      "integrity": "sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==",
+      "dev": true,
+      "dependencies": {
+        "confbox": "^0.1.7",
+        "mlly": "^1.7.0",
+        "pathe": "^1.1.2"
+      }
+    },
+    "node_modules/pngjs": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz",
+      "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==",
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
+    "node_modules/postcss": {
+      "version": "8.4.31",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
+      "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/postcss/"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/postcss"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "dependencies": {
+        "nanoid": "^3.3.6",
+        "picocolors": "^1.0.0",
+        "source-map-js": "^1.0.2"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >=14"
+      }
+    },
+    "node_modules/prettier": {
+      "version": "2.8.8",
+      "resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.8.8.tgz",
+      "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
+      "optional": true,
+      "bin": {
+        "prettier": "bin-prettier.js"
+      },
+      "engines": {
+        "node": ">=10.13.0"
+      },
+      "funding": {
+        "url": "https://github.com/prettier/prettier?sponsor=1"
+      }
+    },
+    "node_modules/proxy-from-env": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+      "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+    },
+    "node_modules/qrcode": {
+      "version": "1.5.4",
+      "resolved": "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.4.tgz",
+      "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==",
+      "dependencies": {
+        "dijkstrajs": "^1.0.1",
+        "pngjs": "^5.0.0",
+        "yargs": "^15.3.1"
+      },
+      "bin": {
+        "qrcode": "bin/qrcode"
+      },
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
+    "node_modules/queue-microtask": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
+      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ]
+    },
+    "node_modules/readdirp": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz",
+      "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+      "dependencies": {
+        "picomatch": "^2.2.1"
+      },
+      "engines": {
+        "node": ">=8.10.0"
+      }
+    },
+    "node_modules/require-directory": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
+      "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/require-main-filename": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz",
+      "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+    },
+    "node_modules/requires-port": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz",
+      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
+      "dev": true
+    },
+    "node_modules/resize-detector": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmmirror.com/resize-detector/-/resize-detector-0.3.0.tgz",
+      "integrity": "sha512-R/tCuvuOHQ8o2boRP6vgx8hXCCy87H1eY9V5imBYeVNyNVpuL9ciReSccLj2gDcax9+2weXy3bc8Vv+NRXeEvQ=="
+    },
+    "node_modules/reusify": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz",
+      "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+      "dev": true,
+      "engines": {
+        "iojs": ">=1.0.0",
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/rollup": {
+      "version": "3.29.4",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz",
+      "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==",
+      "devOptional": true,
+      "bin": {
+        "rollup": "dist/bin/rollup"
+      },
+      "engines": {
+        "node": ">=14.18.0",
+        "npm": ">=8.0.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "node_modules/run-parallel": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz",
+      "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "dependencies": {
+        "queue-microtask": "^1.2.2"
+      }
+    },
+    "node_modules/scule": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmmirror.com/scule/-/scule-1.3.0.tgz",
+      "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==",
+      "dev": true
+    },
+    "node_modules/set-blocking": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz",
+      "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
+    },
+    "node_modules/sortablejs": {
+      "version": "1.15.1",
+      "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.1.tgz",
+      "integrity": "sha512-P5Cjvb0UG1ZVNiDPj/n4V+DinttXG6K8n7vM/HQf0C25K3YKQTQY6fsr/sEGsJGpQ9exmPxluHxKBc0mLKU1lQ=="
+    },
+    "node_modules/source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
+      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/source-map-js": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/ssf": {
+      "version": "0.11.2",
+      "resolved": "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz",
+      "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==",
+      "dependencies": {
+        "frac": "~1.1.2"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/string-width": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-ansi": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+      "dependencies": {
+        "ansi-regex": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-literal": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/strip-literal/-/strip-literal-2.1.0.tgz",
+      "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==",
+      "dev": true,
+      "dependencies": {
+        "js-tokens": "^9.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      }
+    },
+    "node_modules/sweetalert2": {
+      "version": "11.10.7",
+      "resolved": "https://registry.npmmirror.com/sweetalert2/-/sweetalert2-11.10.7.tgz",
+      "integrity": "sha512-5Jlzrmaitay6KzU+2+LhYu9q+L4v/dZ8oZyEDH14ep0C/QilCnFLHmqAyD/Lhq/lm5DiwsOs6Tr58iv8k3wyGg=="
+    },
+    "node_modules/to-fast-properties": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+      "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/to-regex-range": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "dependencies": {
+        "is-number": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=8.0"
+      }
+    },
+    "node_modules/tslib": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
+      "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+    },
+    "node_modules/ufo": {
+      "version": "1.5.3",
+      "resolved": "https://registry.npmmirror.com/ufo/-/ufo-1.5.3.tgz",
+      "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==",
+      "dev": true
+    },
+    "node_modules/undici-types": {
+      "version": "5.26.5",
+      "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz",
+      "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+      "dev": true
+    },
+    "node_modules/unimport": {
+      "version": "3.7.2",
+      "resolved": "https://registry.npmmirror.com/unimport/-/unimport-3.7.2.tgz",
+      "integrity": "sha512-91mxcZTadgXyj3lFWmrGT8GyoRHWuE5fqPOjg5RVtF6vj+OfM5G6WCzXjuYtSgELE5ggB34RY4oiCSEP8I3AHw==",
+      "dev": true,
+      "dependencies": {
+        "@rollup/pluginutils": "^5.1.0",
+        "acorn": "^8.11.3",
+        "escape-string-regexp": "^5.0.0",
+        "estree-walker": "^3.0.3",
+        "fast-glob": "^3.3.2",
+        "local-pkg": "^0.5.0",
+        "magic-string": "^0.30.10",
+        "mlly": "^1.7.0",
+        "pathe": "^1.1.2",
+        "pkg-types": "^1.1.1",
+        "scule": "^1.3.0",
+        "strip-literal": "^2.1.0",
+        "unplugin": "^1.10.1"
+      }
+    },
+    "node_modules/unimport/node_modules/estree-walker": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-3.0.3.tgz",
+      "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+      "dev": true,
+      "dependencies": {
+        "@types/estree": "^1.0.0"
+      }
+    },
+    "node_modules/unimport/node_modules/local-pkg": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.5.0.tgz",
+      "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==",
+      "dev": true,
+      "dependencies": {
+        "mlly": "^1.4.2",
+        "pkg-types": "^1.0.3"
+      },
+      "engines": {
+        "node": ">=14"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      }
+    },
+    "node_modules/unplugin": {
+      "version": "1.10.1",
+      "resolved": "https://registry.npmmirror.com/unplugin/-/unplugin-1.10.1.tgz",
+      "integrity": "sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg==",
+      "dependencies": {
+        "acorn": "^8.11.3",
+        "chokidar": "^3.6.0",
+        "webpack-sources": "^3.2.3",
+        "webpack-virtual-modules": "^0.6.1"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      }
+    },
+    "node_modules/unplugin-auto-import": {
+      "version": "0.17.6",
+      "resolved": "https://registry.npmmirror.com/unplugin-auto-import/-/unplugin-auto-import-0.17.6.tgz",
+      "integrity": "sha512-dmX0Pex5DzMzVuALkexboOZvh51fL/BD6aoPO7qHoTYGlQp0GRKsREv2KMF1lzYI9SXKQiRxAjwzbQnrFFNydQ==",
+      "dev": true,
+      "dependencies": {
+        "@antfu/utils": "^0.7.8",
+        "@rollup/pluginutils": "^5.1.0",
+        "fast-glob": "^3.3.2",
+        "local-pkg": "^0.5.0",
+        "magic-string": "^0.30.10",
+        "minimatch": "^9.0.4",
+        "unimport": "^3.7.1",
+        "unplugin": "^1.10.1"
+      },
+      "engines": {
+        "node": ">=14"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      },
+      "peerDependencies": {
+        "@nuxt/kit": "^3.2.2",
+        "@vueuse/core": "*"
+      },
+      "peerDependenciesMeta": {
+        "@nuxt/kit": {
+          "optional": true
+        },
+        "@vueuse/core": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/unplugin-auto-import/node_modules/local-pkg": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.5.0.tgz",
+      "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==",
+      "dev": true,
+      "dependencies": {
+        "mlly": "^1.4.2",
+        "pkg-types": "^1.0.3"
+      },
+      "engines": {
+        "node": ">=14"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      }
+    },
+    "node_modules/vite": {
+      "version": "4.4.11",
+      "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.11.tgz",
+      "integrity": "sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==",
+      "dev": true,
+      "dependencies": {
+        "esbuild": "^0.18.10",
+        "postcss": "^8.4.27",
+        "rollup": "^3.27.1"
+      },
+      "bin": {
+        "vite": "bin/vite.js"
+      },
+      "engines": {
+        "node": "^14.18.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/vitejs/vite?sponsor=1"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      },
+      "peerDependencies": {
+        "@types/node": ">= 14",
+        "less": "*",
+        "lightningcss": "^1.21.0",
+        "sass": "*",
+        "stylus": "*",
+        "sugarss": "*",
+        "terser": "^5.4.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/node": {
+          "optional": true
+        },
+        "less": {
+          "optional": true
+        },
+        "lightningcss": {
+          "optional": true
+        },
+        "sass": {
+          "optional": true
+        },
+        "stylus": {
+          "optional": true
+        },
+        "sugarss": {
+          "optional": true
+        },
+        "terser": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vue": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz",
+      "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==",
+      "dependencies": {
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/compiler-sfc": "3.3.4",
+        "@vue/runtime-dom": "3.3.4",
+        "@vue/server-renderer": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/vue-draggable-plus": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmmirror.com/vue-draggable-plus/-/vue-draggable-plus-0.5.0.tgz",
+      "integrity": "sha512-A5TT5+M5JceROSjPO9aDZTsrSN1TetEs419czPlboomarSiGIBIxTp2WD7XH53EHMrbO7Qo+leRiHWV/rMlyjA==",
+      "dependencies": {
+        "@types/sortablejs": "^1.15.8"
+      },
+      "peerDependencies": {
+        "@types/sortablejs": "^1.15.0"
+      },
+      "peerDependenciesMeta": {
+        "@vue/composition-api": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vue-echarts": {
+      "version": "6.7.3",
+      "resolved": "https://registry.npmmirror.com/vue-echarts/-/vue-echarts-6.7.3.tgz",
+      "integrity": "sha512-vXLKpALFjbPphW9IfQPOVfb1KjGZ/f8qa/FZHi9lZIWzAnQC1DgnmEK3pJgEkyo6EP7UnX6Bv/V3Ke7p+qCNXA==",
+      "hasInstallScript": true,
+      "dependencies": {
+        "resize-detector": "^0.3.0",
+        "vue-demi": "^0.13.11"
+      },
+      "peerDependencies": {
+        "@vue/composition-api": "^1.0.5",
+        "@vue/runtime-core": "^3.0.0",
+        "echarts": "^5.4.1",
+        "vue": "^2.6.12 || ^3.1.1"
+      },
+      "peerDependenciesMeta": {
+        "@vue/composition-api": {
+          "optional": true
+        },
+        "@vue/runtime-core": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vue-echarts/node_modules/vue-demi": {
+      "version": "0.13.11",
+      "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz",
+      "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==",
+      "hasInstallScript": true,
+      "bin": {
+        "vue-demi-fix": "bin/vue-demi-fix.js",
+        "vue-demi-switch": "bin/vue-demi-switch.js"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      },
+      "peerDependencies": {
+        "@vue/composition-api": "^1.0.0-rc.1",
+        "vue": "^3.0.0-0 || ^2.6.0"
+      },
+      "peerDependenciesMeta": {
+        "@vue/composition-api": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vue-i18n": {
+      "version": "9.13.1",
+      "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.13.1.tgz",
+      "integrity": "sha512-mh0GIxx0wPtPlcB1q4k277y0iKgo25xmDPWioVVYanjPufDBpvu5ySTjP5wOrSvlYQ2m1xI+CFhGdauv/61uQg==",
+      "dependencies": {
+        "@intlify/core-base": "9.13.1",
+        "@intlify/shared": "9.13.1",
+        "@vue/devtools-api": "^6.5.0"
+      },
+      "engines": {
+        "node": ">= 16"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/kazupon"
+      },
+      "peerDependencies": {
+        "vue": "^3.0.0"
+      }
+    },
+    "node_modules/vue-print-nb": {
+      "version": "1.7.5",
+      "resolved": "https://registry.npmmirror.com/vue-print-nb/-/vue-print-nb-1.7.5.tgz",
+      "integrity": "sha512-iNbNyUVRWz0Ha1UTiCKxMPtHLUDGgNI8e8xmD3xqm9RlXIUeX9bT7DgNAfY8vPzqyFRHqGjxLI1rycKH366ziQ==",
+      "dependencies": {
+        "vue": "^2.6.11"
+      }
+    },
+    "node_modules/vue-print-nb/node_modules/@vue/compiler-sfc": {
+      "version": "2.7.16",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz",
+      "integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==",
+      "dependencies": {
+        "@babel/parser": "^7.23.5",
+        "postcss": "^8.4.14",
+        "source-map": "^0.6.1"
+      },
+      "optionalDependencies": {
+        "prettier": "^1.18.2 || ^2.0.0"
+      }
+    },
+    "node_modules/vue-print-nb/node_modules/vue": {
+      "version": "2.7.16",
+      "resolved": "https://registry.npmmirror.com/vue/-/vue-2.7.16.tgz",
+      "integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==",
+      "deprecated": "Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.",
+      "dependencies": {
+        "@vue/compiler-sfc": "2.7.16",
+        "csstype": "^3.1.0"
+      }
+    },
+    "node_modules/vue-router": {
+      "version": "4.2.5",
+      "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz",
+      "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==",
+      "dependencies": {
+        "@vue/devtools-api": "^6.5.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/posva"
+      },
+      "peerDependencies": {
+        "vue": "^3.2.0"
+      }
+    },
+    "node_modules/vue3-print-nb": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmmirror.com/vue3-print-nb/-/vue3-print-nb-0.1.4.tgz",
+      "integrity": "sha512-LExI7viEzplR6ZKQ2b+V4U0cwGYbVD4fut/XHvk3UPGlT5CcvIGs6VlwGp107aKgk6P8Pgx4rco3Rehv2lti3A==",
+      "dependencies": {
+        "vue": "^3.0.5"
+      }
+    },
+    "node_modules/vxe-table": {
+      "version": "4.5.15",
+      "resolved": "https://registry.npmjs.org/vxe-table/-/vxe-table-4.5.15.tgz",
+      "integrity": "sha512-1QuM27wjTZConQX55u2YbyIA69u9/ny83x1cqyrmkoK622GKrY324wuOO/nsjfnbxXV5C+IDzL/MfdrvKQbznQ==",
+      "dependencies": {
+        "dom-zindex": "^1.0.1",
+        "xe-utils": "^3.5.14"
+      },
+      "peerDependencies": {
+        "vue": "^3.2.28",
+        "xe-utils": "^3.5.0"
+      }
+    },
+    "node_modules/webpack-sources": {
+      "version": "3.2.3",
+      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
+      "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
+    "node_modules/webpack-virtual-modules": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz",
+      "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ=="
+    },
+    "node_modules/which-module": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz",
+      "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="
+    },
+    "node_modules/wmf": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz",
+      "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/word": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmmirror.com/word/-/word-0.3.0.tgz",
+      "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/wrap-ansi": {
+      "version": "6.2.0",
+      "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+      "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+      "dependencies": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/xe-utils": {
+      "version": "3.5.14",
+      "resolved": "https://registry.npmjs.org/xe-utils/-/xe-utils-3.5.14.tgz",
+      "integrity": "sha512-Xq6mS8dWwHBQsQUEBXcZYSaBV0KnNLoVWd0vRRDI3nKpbNxfs/LSCK0W21g1edLFnXYfKqg7hh5dakr3RtYY0A=="
+    },
+    "node_modules/xlsx": {
+      "version": "0.18.5",
+      "resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz",
+      "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==",
+      "dependencies": {
+        "adler-32": "~1.3.0",
+        "cfb": "~1.2.1",
+        "codepage": "~1.15.0",
+        "crc-32": "~1.2.1",
+        "ssf": "~0.11.2",
+        "wmf": "~1.0.1",
+        "word": "~0.3.0"
+      },
+      "bin": {
+        "xlsx": "bin/xlsx.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/y18n": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz",
+      "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
+    },
+    "node_modules/yargs": {
+      "version": "15.4.1",
+      "resolved": "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz",
+      "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+      "dependencies": {
+        "cliui": "^6.0.0",
+        "decamelize": "^1.2.0",
+        "find-up": "^4.1.0",
+        "get-caller-file": "^2.0.1",
+        "require-directory": "^2.1.1",
+        "require-main-filename": "^2.0.0",
+        "set-blocking": "^2.0.0",
+        "string-width": "^4.2.0",
+        "which-module": "^2.0.0",
+        "y18n": "^4.0.0",
+        "yargs-parser": "^18.1.2"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/yargs-parser": {
+      "version": "18.1.3",
+      "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz",
+      "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+      "dependencies": {
+        "camelcase": "^5.0.0",
+        "decamelize": "^1.2.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/zrender": {
+      "version": "5.6.0",
+      "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.0.tgz",
+      "integrity": "sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==",
+      "dependencies": {
+        "tslib": "2.3.0"
+      }
+    }
+  },
+  "dependencies": {
+    "@antfu/utils": {
+      "version": "0.7.8",
+      "resolved": "https://registry.npmmirror.com/@antfu/utils/-/utils-0.7.8.tgz",
+      "integrity": "sha512-rWQkqXRESdjXtc+7NRfK9lASQjpXJu1ayp7qi1d23zZorY+wBHVLHHoVcMsEnkqEBWTFqbztO7/QdJFzyEcLTg==",
+      "dev": true
+    },
+    "@babel/helper-string-parser": {
+      "version": "7.24.8",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
+      "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ=="
+    },
+    "@babel/helper-validator-identifier": {
+      "version": "7.24.7",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
+      "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w=="
+    },
+    "@babel/parser": {
+      "version": "7.25.3",
+      "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.25.3.tgz",
+      "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==",
+      "requires": {
+        "@babel/types": "^7.25.2"
+      }
+    },
+    "@babel/types": {
+      "version": "7.25.2",
+      "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.25.2.tgz",
+      "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==",
+      "requires": {
+        "@babel/helper-string-parser": "^7.24.8",
+        "@babel/helper-validator-identifier": "^7.24.7",
+        "to-fast-properties": "^2.0.0"
+      }
+    },
+    "@ctrl/tinycolor": {
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz",
+      "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA=="
+    },
+    "@element-plus/icons-vue": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz",
+      "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==",
+      "requires": {}
+    },
+    "@esbuild/win32-ia32": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz",
+      "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==",
+      "dev": true,
+      "optional": true
+    },
+    "@floating-ui/core": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz",
+      "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==",
+      "requires": {
+        "@floating-ui/utils": "^0.1.3"
+      }
+    },
+    "@floating-ui/dom": {
+      "version": "1.5.3",
+      "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz",
+      "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==",
+      "requires": {
+        "@floating-ui/core": "^1.4.2",
+        "@floating-ui/utils": "^0.1.3"
+      }
+    },
+    "@floating-ui/utils": {
+      "version": "0.1.6",
+      "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz",
+      "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A=="
+    },
+    "@intlify/core-base": {
+      "version": "9.13.1",
+      "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.13.1.tgz",
+      "integrity": "sha512-+bcQRkJO9pcX8d0gel9ZNfrzU22sZFSA0WVhfXrf5jdJOS24a+Bp8pozuS9sBI9Hk/tGz83pgKfmqcn/Ci7/8w==",
+      "requires": {
+        "@intlify/message-compiler": "9.13.1",
+        "@intlify/shared": "9.13.1"
+      }
+    },
+    "@intlify/message-compiler": {
+      "version": "9.13.1",
+      "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.13.1.tgz",
+      "integrity": "sha512-SKsVa4ajYGBVm7sHMXd5qX70O2XXjm55zdZB3VeMFCvQyvLew/dLvq3MqnaIsTMF1VkkOb9Ttr6tHcMlyPDL9w==",
+      "requires": {
+        "@intlify/shared": "9.13.1",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "@intlify/shared": {
+      "version": "9.13.1",
+      "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-9.13.1.tgz",
+      "integrity": "sha512-u3b6BKGhE6j/JeRU6C/RL2FgyJfy6LakbtfeVF8fJXURpZZTzfh3e05J0bu0XPw447Q6/WUp3C4ajv4TMS4YsQ=="
+    },
+    "@jridgewell/sourcemap-codec": {
+      "version": "1.4.15",
+      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+      "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+    },
+    "@kurkle/color": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmmirror.com/@kurkle/color/-/color-0.3.2.tgz",
+      "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw=="
+    },
+    "@nodelib/fs.scandir": {
+      "version": "2.1.5",
+      "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+      "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+      "dev": true,
+      "requires": {
+        "@nodelib/fs.stat": "2.0.5",
+        "run-parallel": "^1.1.9"
+      }
+    },
+    "@nodelib/fs.stat": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+      "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+      "dev": true
+    },
+    "@nodelib/fs.walk": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+      "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+      "dev": true,
+      "requires": {
+        "@nodelib/fs.scandir": "2.1.5",
+        "fastq": "^1.6.0"
+      }
+    },
+    "@popperjs/core": {
+      "version": "npm:@sxzz/popperjs-es@2.11.7",
+      "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
+      "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ=="
+    },
+    "@rollup/pluginutils": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
+      "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
+      "requires": {
+        "@types/estree": "^1.0.0",
+        "estree-walker": "^2.0.2",
+        "picomatch": "^2.3.1"
+      }
+    },
+    "@types/estree": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.2.tgz",
+      "integrity": "sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA=="
+    },
+    "@types/http-proxy": {
+      "version": "1.17.14",
+      "resolved": "https://registry.npmmirror.com/@types/http-proxy/-/http-proxy-1.17.14.tgz",
+      "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==",
+      "dev": true,
+      "requires": {
+        "@types/node": "*"
+      }
+    },
+    "@types/lodash": {
+      "version": "4.14.199",
+      "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz",
+      "integrity": "sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg=="
+    },
+    "@types/lodash-es": {
+      "version": "4.17.9",
+      "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.9.tgz",
+      "integrity": "sha512-ZTcmhiI3NNU7dEvWLZJkzG6ao49zOIjEgIE0RgV7wbPxU0f2xT3VSAHw2gmst8swH6V0YkLRGp4qPlX/6I90MQ==",
+      "requires": {
+        "@types/lodash": "*"
+      }
+    },
+    "@types/node": {
+      "version": "20.12.5",
+      "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.12.5.tgz",
+      "integrity": "sha512-BD+BjQ9LS/D8ST9p5uqBxghlN+S42iuNxjsUGjeZobe/ciXzk2qb1B6IXc6AnRLS+yFJRpN2IPEHMzwspfDJNw==",
+      "dev": true,
+      "requires": {
+        "undici-types": "~5.26.4"
+      }
+    },
+    "@types/sortablejs": {
+      "version": "1.15.8",
+      "resolved": "https://registry.npmmirror.com/@types/sortablejs/-/sortablejs-1.15.8.tgz",
+      "integrity": "sha512-b79830lW+RZfwaztgs1aVPgbasJ8e7AXtZYHTELNXZPsERt4ymJdjV4OccDbHQAvHrCcFpbF78jkm0R6h/pZVg=="
+    },
+    "@types/web-bluetooth": {
+      "version": "0.0.16",
+      "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz",
+      "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ=="
+    },
+    "@vitejs/plugin-vue": {
+      "version": "4.6.2",
+      "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz",
+      "integrity": "sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==",
+      "dev": true,
+      "requires": {}
+    },
+    "@vue-macros/common": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/@vue-macros/common/-/common-1.8.0.tgz",
+      "integrity": "sha512-auDJJzE0z3uRe3867e0DsqcseKImktNf5ojCZgUKqiVxb2yTlwlgOVAYCgoep9oITqxkXQymSvFeKhedi8PhaA==",
+      "requires": {
+        "@babel/types": "^7.22.17",
+        "@rollup/pluginutils": "^5.0.4",
+        "@vue/compiler-sfc": "^3.3.4",
+        "ast-kit": "^0.11.2",
+        "local-pkg": "^0.4.3",
+        "magic-string-ast": "^0.3.0"
+      }
+    },
+    "@vue-macros/reactivity-transform": {
+      "version": "0.3.23",
+      "resolved": "https://registry.npmjs.org/@vue-macros/reactivity-transform/-/reactivity-transform-0.3.23.tgz",
+      "integrity": "sha512-SubIg1GsNpQdIDJusrcA2FWBgwSY+4jmL0j6SJ6PU85r3rlS+uDhn6AUkqxeZRAdmJnrbGHXDyWUdygOZmWrSg==",
+      "requires": {
+        "@babel/parser": "^7.22.16",
+        "@vue-macros/common": "1.8.0",
+        "@vue/compiler-core": "^3.3.4",
+        "@vue/shared": "^3.3.4",
+        "magic-string": "^0.30.3",
+        "unplugin": "^1.4.0"
+      }
+    },
+    "@vue/compiler-core": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz",
+      "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==",
+      "requires": {
+        "@babel/parser": "^7.21.3",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "@vue/compiler-dom": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz",
+      "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==",
+      "requires": {
+        "@vue/compiler-core": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "@vue/compiler-sfc": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz",
+      "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==",
+      "requires": {
+        "@babel/parser": "^7.20.15",
+        "@vue/compiler-core": "3.3.4",
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/compiler-ssr": "3.3.4",
+        "@vue/reactivity-transform": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.30.0",
+        "postcss": "^8.1.10",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "@vue/compiler-ssr": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz",
+      "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==",
+      "requires": {
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "@vue/devtools-api": {
+      "version": "6.5.1",
+      "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz",
+      "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA=="
+    },
+    "@vue/reactivity": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz",
+      "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==",
+      "requires": {
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "@vue/reactivity-transform": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz",
+      "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==",
+      "requires": {
+        "@babel/parser": "^7.20.15",
+        "@vue/compiler-core": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.30.0"
+      }
+    },
+    "@vue/runtime-core": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz",
+      "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==",
+      "requires": {
+        "@vue/reactivity": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "@vue/runtime-dom": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz",
+      "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==",
+      "requires": {
+        "@vue/runtime-core": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "csstype": "^3.1.1"
+      }
+    },
+    "@vue/server-renderer": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz",
+      "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==",
+      "requires": {
+        "@vue/compiler-ssr": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "@vue/shared": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz",
+      "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
+    },
+    "@vueuse/core": {
+      "version": "9.13.0",
+      "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.13.0.tgz",
+      "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==",
+      "requires": {
+        "@types/web-bluetooth": "^0.0.16",
+        "@vueuse/metadata": "9.13.0",
+        "@vueuse/shared": "9.13.0",
+        "vue-demi": "*"
+      },
+      "dependencies": {
+        "vue-demi": {
+          "version": "0.14.6",
+          "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
+          "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
+          "requires": {}
+        }
+      }
+    },
+    "@vueuse/metadata": {
+      "version": "9.13.0",
+      "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.13.0.tgz",
+      "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ=="
+    },
+    "@vueuse/shared": {
+      "version": "9.13.0",
+      "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.13.0.tgz",
+      "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==",
+      "requires": {
+        "vue-demi": "*"
+      },
+      "dependencies": {
+        "vue-demi": {
+          "version": "0.14.6",
+          "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
+          "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
+          "requires": {}
+        }
+      }
+    },
+    "acorn": {
+      "version": "8.12.0",
+      "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.12.0.tgz",
+      "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw=="
+    },
+    "adler-32": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz",
+      "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A=="
+    },
+    "ansi-regex": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
+    },
+    "ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "requires": {
+        "color-convert": "^2.0.1"
+      }
+    },
+    "anymatch": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz",
+      "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+      "requires": {
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
+      }
+    },
+    "ast-kit": {
+      "version": "0.11.2",
+      "resolved": "https://registry.npmjs.org/ast-kit/-/ast-kit-0.11.2.tgz",
+      "integrity": "sha512-Q0DjXK4ApbVoIf9GLyCo252tUH44iTnD/hiJ2TQaJeydYWSpKk0sI34+WMel8S9Wt5pbLgG02oJ+gkgX5DV3sQ==",
+      "requires": {
+        "@babel/parser": "^7.22.14",
+        "@rollup/pluginutils": "^5.0.4",
+        "pathe": "^1.1.1"
+      }
+    },
+    "async-validator": {
+      "version": "4.2.5",
+      "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz",
+      "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
+    },
+    "asynckit": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+    },
+    "axios": {
+      "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.6",
+        "form-data": "^4.0.0",
+        "proxy-from-env": "^1.1.0"
+      }
+    },
+    "balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+      "dev": true
+    },
+    "binary-extensions": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.3.0.tgz",
+      "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="
+    },
+    "brace-expansion": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz",
+      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+      "dev": true,
+      "requires": {
+        "balanced-match": "^1.0.0"
+      }
+    },
+    "braces": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+      "requires": {
+        "fill-range": "^7.0.1"
+      }
+    },
+    "camelcase": {
+      "version": "5.3.1",
+      "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
+    },
+    "cfb": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz",
+      "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==",
+      "requires": {
+        "adler-32": "~1.3.0",
+        "crc-32": "~1.2.0"
+      }
+    },
+    "chart.js": {
+      "version": "4.4.3",
+      "resolved": "https://registry.npmmirror.com/chart.js/-/chart.js-4.4.3.tgz",
+      "integrity": "sha512-qK1gkGSRYcJzqrrzdR6a+I0vQ4/R+SoODXyAjscQ/4mzuNzySaMCd+hyVxitSY1+L2fjPD1Gbn+ibNqRmwQeLw==",
+      "requires": {
+        "@kurkle/color": "^0.3.0"
+      }
+    },
+    "chokidar": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.6.0.tgz",
+      "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+      "requires": {
+        "anymatch": "~3.1.2",
+        "braces": "~3.0.2",
+        "fsevents": "~2.3.2",
+        "glob-parent": "~5.1.2",
+        "is-binary-path": "~2.1.0",
+        "is-glob": "~4.0.1",
+        "normalize-path": "~3.0.0",
+        "readdirp": "~3.6.0"
+      }
+    },
+    "cliui": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz",
+      "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+      "requires": {
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.0",
+        "wrap-ansi": "^6.2.0"
+      }
+    },
+    "codepage": {
+      "version": "1.15.0",
+      "resolved": "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz",
+      "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA=="
+    },
+    "color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "requires": {
+        "color-name": "~1.1.4"
+      }
+    },
+    "color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+    },
+    "combined-stream": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+      "requires": {
+        "delayed-stream": "~1.0.0"
+      }
+    },
+    "confbox": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npmmirror.com/confbox/-/confbox-0.1.7.tgz",
+      "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==",
+      "dev": true
+    },
+    "crc-32": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz",
+      "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ=="
+    },
+    "csstype": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+      "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+    },
+    "dayjs": {
+      "version": "1.11.10",
+      "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz",
+      "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
+    },
+    "debug": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "dev": true,
+      "requires": {
+        "ms": "2.1.2"
+      }
+    },
+    "decamelize": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz",
+      "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="
+    },
+    "delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+      "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
+    },
+    "dijkstrajs": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
+      "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
+    },
+    "dom-zindex": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/dom-zindex/-/dom-zindex-1.0.1.tgz",
+      "integrity": "sha512-M/MERVDZ8hguvjl6MAlLWSLYLS7PzEyXaTb5gEeJ+SF+e9iUC0sdvlzqe91MMDHBoy+nqw7wKcUOrDSyvMCrRg=="
+    },
+    "echarts": {
+      "version": "5.5.1",
+      "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.5.1.tgz",
+      "integrity": "sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==",
+      "requires": {
+        "tslib": "2.3.0",
+        "zrender": "5.6.0"
+      }
+    },
+    "element-plus": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.4.0.tgz",
+      "integrity": "sha512-yJEa8LXkGOOgkfkeqMMEdeX/Dc8EH9qPcRuX91dlhSXxgCKKbp9tH3QFTOG99ibZsrN/Em62nh7ddvbc7I1frw==",
+      "requires": {
+        "@ctrl/tinycolor": "^3.4.1",
+        "@element-plus/icons-vue": "^2.0.6",
+        "@floating-ui/dom": "^1.0.1",
+        "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
+        "@types/lodash": "^4.14.182",
+        "@types/lodash-es": "^4.17.6",
+        "@vueuse/core": "^9.1.0",
+        "async-validator": "^4.2.5",
+        "dayjs": "^1.11.3",
+        "escape-html": "^1.0.3",
+        "lodash": "^4.17.21",
+        "lodash-es": "^4.17.21",
+        "lodash-unified": "^1.0.2",
+        "memoize-one": "^6.0.0",
+        "normalize-wheel-es": "^1.2.0"
+      }
+    },
+    "emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+    },
+    "esbuild": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz",
+      "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
+      "dev": true,
+      "requires": {
+        "@esbuild/android-arm": "0.18.20",
+        "@esbuild/android-arm64": "0.18.20",
+        "@esbuild/android-x64": "0.18.20",
+        "@esbuild/darwin-arm64": "0.18.20",
+        "@esbuild/darwin-x64": "0.18.20",
+        "@esbuild/freebsd-arm64": "0.18.20",
+        "@esbuild/freebsd-x64": "0.18.20",
+        "@esbuild/linux-arm": "0.18.20",
+        "@esbuild/linux-arm64": "0.18.20",
+        "@esbuild/linux-ia32": "0.18.20",
+        "@esbuild/linux-loong64": "0.18.20",
+        "@esbuild/linux-mips64el": "0.18.20",
+        "@esbuild/linux-ppc64": "0.18.20",
+        "@esbuild/linux-riscv64": "0.18.20",
+        "@esbuild/linux-s390x": "0.18.20",
+        "@esbuild/linux-x64": "0.18.20",
+        "@esbuild/netbsd-x64": "0.18.20",
+        "@esbuild/openbsd-x64": "0.18.20",
+        "@esbuild/sunos-x64": "0.18.20",
+        "@esbuild/win32-arm64": "0.18.20",
+        "@esbuild/win32-ia32": "0.18.20",
+        "@esbuild/win32-x64": "0.18.20"
+      }
+    },
+    "escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+      "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+    },
+    "escape-string-regexp": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+      "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+      "dev": true
+    },
+    "estree-walker": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+    },
+    "eventemitter3": {
+      "version": "4.0.7",
+      "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz",
+      "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
+      "dev": true
+    },
+    "fast-glob": {
+      "version": "3.3.2",
+      "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.2.tgz",
+      "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+      "dev": true,
+      "requires": {
+        "@nodelib/fs.stat": "^2.0.2",
+        "@nodelib/fs.walk": "^1.2.3",
+        "glob-parent": "^5.1.2",
+        "merge2": "^1.3.0",
+        "micromatch": "^4.0.4"
+      }
+    },
+    "fastq": {
+      "version": "1.17.1",
+      "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.17.1.tgz",
+      "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
+      "dev": true,
+      "requires": {
+        "reusify": "^1.0.4"
+      }
+    },
+    "fill-range": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+      "requires": {
+        "to-regex-range": "^5.0.1"
+      }
+    },
+    "find-up": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
+      "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+      "requires": {
+        "locate-path": "^5.0.0",
+        "path-exists": "^4.0.0"
+      }
+    },
+    "follow-redirects": {
+      "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",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+      "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+      "requires": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.8",
+        "mime-types": "^2.1.12"
+      }
+    },
+    "frac": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz",
+      "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA=="
+    },
+    "get-caller-file": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
+      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
+    },
+    "glob-parent": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+      "requires": {
+        "is-glob": "^4.0.1"
+      }
+    },
+    "http-proxy": {
+      "version": "1.18.1",
+      "resolved": "https://registry.npmmirror.com/http-proxy/-/http-proxy-1.18.1.tgz",
+      "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
+      "dev": true,
+      "requires": {
+        "eventemitter3": "^4.0.0",
+        "follow-redirects": "^1.0.0",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "http-proxy-middleware": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-3.0.0.tgz",
+      "integrity": "sha512-36AV1fIaI2cWRzHo+rbcxhe3M3jUDCNzc4D5zRl57sEWRAxdXYtw7FSQKYY6PDKssiAKjLYypbssHk+xs/kMXw==",
+      "dev": true,
+      "requires": {
+        "@types/http-proxy": "^1.17.10",
+        "debug": "^4.3.4",
+        "http-proxy": "^1.18.1",
+        "is-glob": "^4.0.1",
+        "is-plain-obj": "^3.0.0",
+        "micromatch": "^4.0.5"
+      }
+    },
+    "is-binary-path": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz",
+      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+      "requires": {
+        "binary-extensions": "^2.0.0"
+      }
+    },
+    "is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
+    },
+    "is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
+    },
+    "is-glob": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+      "requires": {
+        "is-extglob": "^2.1.1"
+      }
+    },
+    "is-number": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
+    },
+    "is-plain-obj": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
+      "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==",
+      "dev": true
+    },
+    "js-tokens": {
+      "version": "9.0.0",
+      "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-9.0.0.tgz",
+      "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==",
+      "dev": true
+    },
+    "local-pkg": {
+      "version": "0.4.3",
+      "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz",
+      "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g=="
+    },
+    "locate-path": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
+      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+      "requires": {
+        "p-locate": "^4.1.0"
+      }
+    },
+    "lodash": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+    },
+    "lodash-es": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
+      "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+    },
+    "lodash-unified": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/lodash-unified/-/lodash-unified-1.0.3.tgz",
+      "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==",
+      "requires": {}
+    },
+    "magic-string": {
+      "version": "0.30.10",
+      "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.10.tgz",
+      "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==",
+      "requires": {
+        "@jridgewell/sourcemap-codec": "^1.4.15"
+      }
+    },
+    "magic-string-ast": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/magic-string-ast/-/magic-string-ast-0.3.0.tgz",
+      "integrity": "sha512-0shqecEPgdFpnI3AP90epXyxZy9g6CRZ+SZ7BcqFwYmtFEnZ1jpevcV5HoyVnlDS9gCnc1UIg3Rsvp3Ci7r8OA==",
+      "requires": {
+        "magic-string": "^0.30.2"
+      }
+    },
+    "memoize-one": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
+      "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
+    },
+    "merge2": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz",
+      "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+      "dev": true
+    },
+    "micromatch": {
+      "version": "4.0.5",
+      "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz",
+      "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+      "dev": true,
+      "requires": {
+        "braces": "^3.0.2",
+        "picomatch": "^2.3.1"
+      }
+    },
+    "mime-db": {
+      "version": "1.52.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
+    },
+    "mime-types": {
+      "version": "2.1.35",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+      "requires": {
+        "mime-db": "1.52.0"
+      }
+    },
+    "minimatch": {
+      "version": "9.0.4",
+      "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.4.tgz",
+      "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
+      "dev": true,
+      "requires": {
+        "brace-expansion": "^2.0.1"
+      }
+    },
+    "mlly": {
+      "version": "1.7.1",
+      "resolved": "https://registry.npmmirror.com/mlly/-/mlly-1.7.1.tgz",
+      "integrity": "sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==",
+      "dev": true,
+      "requires": {
+        "acorn": "^8.11.3",
+        "pathe": "^1.1.2",
+        "pkg-types": "^1.1.1",
+        "ufo": "^1.5.3"
+      }
+    },
+    "moment": {
+      "version": "2.30.1",
+      "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz",
+      "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how=="
+    },
+    "ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "dev": true
+    },
+    "nanoid": {
+      "version": "3.3.6",
+      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
+      "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA=="
+    },
+    "normalize-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz",
+      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
+    },
+    "normalize-wheel-es": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
+      "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw=="
+    },
+    "p-limit": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
+      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+      "requires": {
+        "p-try": "^2.0.0"
+      }
+    },
+    "p-locate": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
+      "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+      "requires": {
+        "p-limit": "^2.2.0"
+      }
+    },
+    "p-try": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
+      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
+    },
+    "path-exists": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
+      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
+    },
+    "pathe": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/pathe/-/pathe-1.1.2.tgz",
+      "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="
+    },
+    "picocolors": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+    },
+    "picomatch": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
+    },
+    "pinia": {
+      "version": "2.1.7",
+      "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz",
+      "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==",
+      "requires": {
+        "@vue/devtools-api": "^6.5.0",
+        "vue-demi": ">=0.14.5"
+      },
+      "dependencies": {
+        "vue-demi": {
+          "version": "0.14.6",
+          "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
+          "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
+          "requires": {}
+        }
+      }
+    },
+    "pinia-plugin-persistedstate": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmmirror.com/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-3.2.0.tgz",
+      "integrity": "sha512-tZbNGf2vjAQcIm7alK40sE51Qu/m9oWr+rEgNm/2AWr1huFxj72CjvpQcIQzMknDBJEkQznCLAGtJTIcLKrKdw==",
+      "requires": {}
+    },
+    "pkg-types": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/pkg-types/-/pkg-types-1.1.1.tgz",
+      "integrity": "sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==",
+      "dev": true,
+      "requires": {
+        "confbox": "^0.1.7",
+        "mlly": "^1.7.0",
+        "pathe": "^1.1.2"
+      }
+    },
+    "pngjs": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz",
+      "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw=="
+    },
+    "postcss": {
+      "version": "8.4.31",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
+      "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
+      "requires": {
+        "nanoid": "^3.3.6",
+        "picocolors": "^1.0.0",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "prettier": {
+      "version": "2.8.8",
+      "resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.8.8.tgz",
+      "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
+      "optional": true
+    },
+    "proxy-from-env": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+      "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+    },
+    "qrcode": {
+      "version": "1.5.4",
+      "resolved": "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.4.tgz",
+      "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==",
+      "requires": {
+        "dijkstrajs": "^1.0.1",
+        "pngjs": "^5.0.0",
+        "yargs": "^15.3.1"
+      }
+    },
+    "queue-microtask": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
+      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+      "dev": true
+    },
+    "readdirp": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz",
+      "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+      "requires": {
+        "picomatch": "^2.2.1"
+      }
+    },
+    "require-directory": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
+      "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="
+    },
+    "require-main-filename": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz",
+      "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+    },
+    "requires-port": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz",
+      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
+      "dev": true
+    },
+    "resize-detector": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmmirror.com/resize-detector/-/resize-detector-0.3.0.tgz",
+      "integrity": "sha512-R/tCuvuOHQ8o2boRP6vgx8hXCCy87H1eY9V5imBYeVNyNVpuL9ciReSccLj2gDcax9+2weXy3bc8Vv+NRXeEvQ=="
+    },
+    "reusify": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz",
+      "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+      "dev": true
+    },
+    "rollup": {
+      "version": "3.29.4",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz",
+      "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==",
+      "devOptional": true,
+      "requires": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "run-parallel": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz",
+      "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+      "dev": true,
+      "requires": {
+        "queue-microtask": "^1.2.2"
+      }
+    },
+    "scule": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmmirror.com/scule/-/scule-1.3.0.tgz",
+      "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==",
+      "dev": true
+    },
+    "set-blocking": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz",
+      "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
+    },
+    "sortablejs": {
+      "version": "1.15.1",
+      "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.1.tgz",
+      "integrity": "sha512-P5Cjvb0UG1ZVNiDPj/n4V+DinttXG6K8n7vM/HQf0C25K3YKQTQY6fsr/sEGsJGpQ9exmPxluHxKBc0mLKU1lQ=="
+    },
+    "source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
+      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+    },
+    "source-map-js": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
+    },
+    "ssf": {
+      "version": "0.11.2",
+      "resolved": "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz",
+      "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==",
+      "requires": {
+        "frac": "~1.1.2"
+      }
+    },
+    "string-width": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "requires": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      }
+    },
+    "strip-ansi": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+      "requires": {
+        "ansi-regex": "^5.0.1"
+      }
+    },
+    "strip-literal": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/strip-literal/-/strip-literal-2.1.0.tgz",
+      "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==",
+      "dev": true,
+      "requires": {
+        "js-tokens": "^9.0.0"
+      }
+    },
+    "sweetalert2": {
+      "version": "11.10.7",
+      "resolved": "https://registry.npmmirror.com/sweetalert2/-/sweetalert2-11.10.7.tgz",
+      "integrity": "sha512-5Jlzrmaitay6KzU+2+LhYu9q+L4v/dZ8oZyEDH14ep0C/QilCnFLHmqAyD/Lhq/lm5DiwsOs6Tr58iv8k3wyGg=="
+    },
+    "to-fast-properties": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+      "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog=="
+    },
+    "to-regex-range": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "requires": {
+        "is-number": "^7.0.0"
+      }
+    },
+    "tslib": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
+      "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+    },
+    "ufo": {
+      "version": "1.5.3",
+      "resolved": "https://registry.npmmirror.com/ufo/-/ufo-1.5.3.tgz",
+      "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==",
+      "dev": true
+    },
+    "undici-types": {
+      "version": "5.26.5",
+      "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz",
+      "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+      "dev": true
+    },
+    "unimport": {
+      "version": "3.7.2",
+      "resolved": "https://registry.npmmirror.com/unimport/-/unimport-3.7.2.tgz",
+      "integrity": "sha512-91mxcZTadgXyj3lFWmrGT8GyoRHWuE5fqPOjg5RVtF6vj+OfM5G6WCzXjuYtSgELE5ggB34RY4oiCSEP8I3AHw==",
+      "dev": true,
+      "requires": {
+        "@rollup/pluginutils": "^5.1.0",
+        "acorn": "^8.11.3",
+        "escape-string-regexp": "^5.0.0",
+        "estree-walker": "^3.0.3",
+        "fast-glob": "^3.3.2",
+        "local-pkg": "^0.5.0",
+        "magic-string": "^0.30.10",
+        "mlly": "^1.7.0",
+        "pathe": "^1.1.2",
+        "pkg-types": "^1.1.1",
+        "scule": "^1.3.0",
+        "strip-literal": "^2.1.0",
+        "unplugin": "^1.10.1"
+      },
+      "dependencies": {
+        "estree-walker": {
+          "version": "3.0.3",
+          "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-3.0.3.tgz",
+          "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+          "dev": true,
+          "requires": {
+            "@types/estree": "^1.0.0"
+          }
+        },
+        "local-pkg": {
+          "version": "0.5.0",
+          "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.5.0.tgz",
+          "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==",
+          "dev": true,
+          "requires": {
+            "mlly": "^1.4.2",
+            "pkg-types": "^1.0.3"
+          }
+        }
+      }
+    },
+    "unplugin": {
+      "version": "1.10.1",
+      "resolved": "https://registry.npmmirror.com/unplugin/-/unplugin-1.10.1.tgz",
+      "integrity": "sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg==",
+      "requires": {
+        "acorn": "^8.11.3",
+        "chokidar": "^3.6.0",
+        "webpack-sources": "^3.2.3",
+        "webpack-virtual-modules": "^0.6.1"
+      }
+    },
+    "unplugin-auto-import": {
+      "version": "0.17.6",
+      "resolved": "https://registry.npmmirror.com/unplugin-auto-import/-/unplugin-auto-import-0.17.6.tgz",
+      "integrity": "sha512-dmX0Pex5DzMzVuALkexboOZvh51fL/BD6aoPO7qHoTYGlQp0GRKsREv2KMF1lzYI9SXKQiRxAjwzbQnrFFNydQ==",
+      "dev": true,
+      "requires": {
+        "@antfu/utils": "^0.7.8",
+        "@rollup/pluginutils": "^5.1.0",
+        "fast-glob": "^3.3.2",
+        "local-pkg": "^0.5.0",
+        "magic-string": "^0.30.10",
+        "minimatch": "^9.0.4",
+        "unimport": "^3.7.1",
+        "unplugin": "^1.10.1"
+      },
+      "dependencies": {
+        "local-pkg": {
+          "version": "0.5.0",
+          "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.5.0.tgz",
+          "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==",
+          "dev": true,
+          "requires": {
+            "mlly": "^1.4.2",
+            "pkg-types": "^1.0.3"
+          }
+        }
+      }
+    },
+    "vite": {
+      "version": "4.4.11",
+      "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.11.tgz",
+      "integrity": "sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==",
+      "dev": true,
+      "requires": {
+        "esbuild": "^0.18.10",
+        "fsevents": "~2.3.2",
+        "postcss": "^8.4.27",
+        "rollup": "^3.27.1"
+      }
+    },
+    "vue": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz",
+      "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==",
+      "requires": {
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/compiler-sfc": "3.3.4",
+        "@vue/runtime-dom": "3.3.4",
+        "@vue/server-renderer": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "vue-draggable-plus": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmmirror.com/vue-draggable-plus/-/vue-draggable-plus-0.5.0.tgz",
+      "integrity": "sha512-A5TT5+M5JceROSjPO9aDZTsrSN1TetEs419czPlboomarSiGIBIxTp2WD7XH53EHMrbO7Qo+leRiHWV/rMlyjA==",
+      "requires": {
+        "@types/sortablejs": "^1.15.8"
+      }
+    },
+    "vue-echarts": {
+      "version": "6.7.3",
+      "resolved": "https://registry.npmmirror.com/vue-echarts/-/vue-echarts-6.7.3.tgz",
+      "integrity": "sha512-vXLKpALFjbPphW9IfQPOVfb1KjGZ/f8qa/FZHi9lZIWzAnQC1DgnmEK3pJgEkyo6EP7UnX6Bv/V3Ke7p+qCNXA==",
+      "requires": {
+        "resize-detector": "^0.3.0",
+        "vue-demi": "^0.13.11"
+      },
+      "dependencies": {
+        "vue-demi": {
+          "version": "0.13.11",
+          "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz",
+          "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==",
+          "requires": {}
+        }
+      }
+    },
+    "vue-i18n": {
+      "version": "9.13.1",
+      "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.13.1.tgz",
+      "integrity": "sha512-mh0GIxx0wPtPlcB1q4k277y0iKgo25xmDPWioVVYanjPufDBpvu5ySTjP5wOrSvlYQ2m1xI+CFhGdauv/61uQg==",
+      "requires": {
+        "@intlify/core-base": "9.13.1",
+        "@intlify/shared": "9.13.1",
+        "@vue/devtools-api": "^6.5.0"
+      }
+    },
+    "vue-print-nb": {
+      "version": "1.7.5",
+      "resolved": "https://registry.npmmirror.com/vue-print-nb/-/vue-print-nb-1.7.5.tgz",
+      "integrity": "sha512-iNbNyUVRWz0Ha1UTiCKxMPtHLUDGgNI8e8xmD3xqm9RlXIUeX9bT7DgNAfY8vPzqyFRHqGjxLI1rycKH366ziQ==",
+      "requires": {
+        "vue": "^2.6.11"
+      },
+      "dependencies": {
+        "@vue/compiler-sfc": {
+          "version": "2.7.16",
+          "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz",
+          "integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==",
+          "requires": {
+            "@babel/parser": "^7.23.5",
+            "postcss": "^8.4.14",
+            "prettier": "^1.18.2 || ^2.0.0",
+            "source-map": "^0.6.1"
+          }
+        },
+        "vue": {
+          "version": "2.7.16",
+          "resolved": "https://registry.npmmirror.com/vue/-/vue-2.7.16.tgz",
+          "integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==",
+          "requires": {
+            "@vue/compiler-sfc": "2.7.16",
+            "csstype": "^3.1.0"
+          }
+        }
+      }
+    },
+    "vue-router": {
+      "version": "4.2.5",
+      "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz",
+      "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==",
+      "requires": {
+        "@vue/devtools-api": "^6.5.0"
+      }
+    },
+    "vue3-print-nb": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmmirror.com/vue3-print-nb/-/vue3-print-nb-0.1.4.tgz",
+      "integrity": "sha512-LExI7viEzplR6ZKQ2b+V4U0cwGYbVD4fut/XHvk3UPGlT5CcvIGs6VlwGp107aKgk6P8Pgx4rco3Rehv2lti3A==",
+      "requires": {
+        "vue": "^3.0.5"
+      }
+    },
+    "vxe-table": {
+      "version": "4.5.15",
+      "resolved": "https://registry.npmjs.org/vxe-table/-/vxe-table-4.5.15.tgz",
+      "integrity": "sha512-1QuM27wjTZConQX55u2YbyIA69u9/ny83x1cqyrmkoK622GKrY324wuOO/nsjfnbxXV5C+IDzL/MfdrvKQbznQ==",
+      "requires": {
+        "dom-zindex": "^1.0.1",
+        "xe-utils": "^3.5.14"
+      }
+    },
+    "webpack-sources": {
+      "version": "3.2.3",
+      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
+      "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w=="
+    },
+    "webpack-virtual-modules": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz",
+      "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ=="
+    },
+    "which-module": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz",
+      "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="
+    },
+    "wmf": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz",
+      "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw=="
+    },
+    "word": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmmirror.com/word/-/word-0.3.0.tgz",
+      "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA=="
+    },
+    "wrap-ansi": {
+      "version": "6.2.0",
+      "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+      "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+      "requires": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      }
+    },
+    "xe-utils": {
+      "version": "3.5.14",
+      "resolved": "https://registry.npmjs.org/xe-utils/-/xe-utils-3.5.14.tgz",
+      "integrity": "sha512-Xq6mS8dWwHBQsQUEBXcZYSaBV0KnNLoVWd0vRRDI3nKpbNxfs/LSCK0W21g1edLFnXYfKqg7hh5dakr3RtYY0A=="
+    },
+    "xlsx": {
+      "version": "0.18.5",
+      "resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz",
+      "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==",
+      "requires": {
+        "adler-32": "~1.3.0",
+        "cfb": "~1.2.1",
+        "codepage": "~1.15.0",
+        "crc-32": "~1.2.1",
+        "ssf": "~0.11.2",
+        "wmf": "~1.0.1",
+        "word": "~0.3.0"
+      }
+    },
+    "y18n": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz",
+      "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
+    },
+    "yargs": {
+      "version": "15.4.1",
+      "resolved": "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz",
+      "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+      "requires": {
+        "cliui": "^6.0.0",
+        "decamelize": "^1.2.0",
+        "find-up": "^4.1.0",
+        "get-caller-file": "^2.0.1",
+        "require-directory": "^2.1.1",
+        "require-main-filename": "^2.0.0",
+        "set-blocking": "^2.0.0",
+        "string-width": "^4.2.0",
+        "which-module": "^2.0.0",
+        "y18n": "^4.0.0",
+        "yargs-parser": "^18.1.2"
+      }
+    },
+    "yargs-parser": {
+      "version": "18.1.3",
+      "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz",
+      "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+      "requires": {
+        "camelcase": "^5.0.0",
+        "decamelize": "^1.2.0"
+      }
+    },
+    "zrender": {
+      "version": "5.6.0",
+      "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.0.tgz",
+      "integrity": "sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==",
+      "requires": {
+        "tslib": "2.3.0"
+      }
+    }
+  }
+}
diff --git a/UI-Project/package.json b/UI-Project/package.json
new file mode 100644
index 0000000..feeda10
--- /dev/null
+++ b/UI-Project/package.json
@@ -0,0 +1,41 @@
+{
+  "name": "northglass-mes",
+  "version": "0.0.0",
+  "private": true,
+  "scripts": {
+    "dev": "vite",
+    "build": "vite build",
+    "preview": "vite preview"
+  },
+  "dependencies": {
+    "@element-plus/icons-vue": "^2.3.1",
+    "@vue-macros/reactivity-transform": "^0.3.23",
+    "axios": "^1.6.8",
+    "chart.js": "^4.4.3",
+    "echarts": "^5.5.1",
+    "element-plus": "^2.4.0",
+    "moment": "^2.30.1",
+    "pinia": "^2.1.6",
+    "pinia-plugin-persistedstate": "^3.2.0",
+    "qrcode": "^1.5.4",
+    "sortablejs": "^1.15.1",
+    "sweetalert2": "^11.10.7",
+    "vue": "^3.3.4",
+    "vue-draggable-plus": "^0.5.0",
+    "vue-echarts": "^6.7.3",
+    "vue-i18n": "^9.10.1",
+    "vue-print-nb": "^1.7.5",
+    "vue-router": "^4.2.4",
+    "vue3-print-nb": "^0.1.4",
+    "vxe-table": "^4.5.15",
+    "xe-utils": "^3.5.14",
+    "xlsx": "^0.18.5"
+  },
+  "devDependencies": {
+    "@types/sortablejs": "^1.15.7",
+    "@vitejs/plugin-vue": "^4.6.2",
+    "http-proxy-middleware": "^3.0.0",
+    "unplugin-auto-import": "^0.17.6",
+    "vite": "^4.4.9"
+  }
+}
diff --git a/UI-Project/public/favicon.ico b/UI-Project/public/favicon.ico
new file mode 100644
index 0000000..1d83994
--- /dev/null
+++ b/UI-Project/public/favicon.ico
Binary files differ
diff --git a/UI-Project/public/vuefavicon.ico b/UI-Project/public/vuefavicon.ico
new file mode 100644
index 0000000..df36fcf
--- /dev/null
+++ b/UI-Project/public/vuefavicon.ico
Binary files differ
diff --git a/UI-Project/src/App.vue b/UI-Project/src/App.vue
new file mode 100644
index 0000000..e15be3b
--- /dev/null
+++ b/UI-Project/src/App.vue
@@ -0,0 +1,14 @@
+<template>
+
+  <router-view></router-view>
+
+</template>
+<script setup>
+import {ref} from 'vue'
+import { RouterView } from 'vue-router'
+
+</script>
+
+<style scoped>
+
+</style>
diff --git a/UI-Project/src/assets/1.png b/UI-Project/src/assets/1.png
new file mode 100644
index 0000000..eea5301
--- /dev/null
+++ b/UI-Project/src/assets/1.png
Binary files differ
diff --git a/UI-Project/src/assets/11.png b/UI-Project/src/assets/11.png
new file mode 100644
index 0000000..46f9af1
--- /dev/null
+++ b/UI-Project/src/assets/11.png
Binary files differ
diff --git a/UI-Project/src/assets/2.png b/UI-Project/src/assets/2.png
new file mode 100644
index 0000000..470e6eb
--- /dev/null
+++ b/UI-Project/src/assets/2.png
Binary files differ
diff --git a/UI-Project/src/assets/3.png b/UI-Project/src/assets/3.png
new file mode 100644
index 0000000..4900b6c
--- /dev/null
+++ b/UI-Project/src/assets/3.png
Binary files differ
diff --git a/UI-Project/src/assets/88.png b/UI-Project/src/assets/88.png
new file mode 100644
index 0000000..365e1ad
--- /dev/null
+++ b/UI-Project/src/assets/88.png
Binary files differ
diff --git a/UI-Project/src/assets/9.png b/UI-Project/src/assets/9.png
new file mode 100644
index 0000000..3e37ece
--- /dev/null
+++ b/UI-Project/src/assets/9.png
Binary files differ
diff --git a/UI-Project/src/assets/aaa.png b/UI-Project/src/assets/aaa.png
new file mode 100644
index 0000000..be775d6
--- /dev/null
+++ b/UI-Project/src/assets/aaa.png
Binary files differ
diff --git a/UI-Project/src/assets/background.jpg b/UI-Project/src/assets/background.jpg
new file mode 100644
index 0000000..4c726c9
--- /dev/null
+++ b/UI-Project/src/assets/background.jpg
Binary files differ
diff --git a/UI-Project/src/assets/base.css b/UI-Project/src/assets/base.css
new file mode 100644
index 0000000..0656895
--- /dev/null
+++ b/UI-Project/src/assets/base.css
@@ -0,0 +1,119 @@
+/* color palette from <https://github.com/vuejs/theme> */
+:root {
+  --vt-c-white: #ffffff;
+  --vt-c-white-soft: #f8f8f8;
+  --vt-c-white-mute: #f2f2f2;
+
+  --vt-c-black: #181818;
+  --vt-c-black-soft: #222222;
+  --vt-c-black-mute: #282828;
+
+  --vt-c-indigo: #2c3e50;
+
+  --vt-c-divider-light-1: rgba(60, 60, 60, 0.29);
+  --vt-c-divider-light-2: rgba(60, 60, 60, 0.12);
+  --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65);
+  --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48);
+
+  --vt-c-text-light-1: var(--vt-c-indigo);
+  --vt-c-text-light-2: rgba(60, 60, 60, 0.66);
+  --vt-c-text-dark-1: var(--vt-c-white);
+  --vt-c-text-dark-2: rgba(235, 235, 235, 0.64);
+}
+
+/* semantic color variables for this project */
+:root {
+  --color-background: var(--vt-c-white);
+  --color-background-soft: var(--vt-c-white-soft);
+  --color-background-mute: var(--vt-c-white-mute);
+
+  --color-border: var(--vt-c-divider-light-2);
+  --color-border-hover: var(--vt-c-divider-light-1);
+
+  --color-heading: var(--vt-c-text-light-1);
+  --color-text: var(--vt-c-text-light-1);
+
+  --section-gap: 160px;
+}
+
+@media (prefers-color-scheme: dark) {
+  :root {
+    --color-background: var(--vt-c-black);
+    --color-background-soft: var(--vt-c-black-soft);
+    --color-background-mute: var(--vt-c-black-mute);
+
+    --color-border: var(--vt-c-divider-dark-2);
+    --color-border-hover: var(--vt-c-divider-dark-1);
+
+    --color-heading: var(--vt-c-text-dark-1);
+    --color-text: var(--vt-c-text-dark-2);
+  }
+}
+
+*,
+*::before,
+*::after {
+  box-sizing: border-box;
+  margin: 0;
+  font-weight: normal;
+}
+
+body {
+  min-height: 100vh;
+  color: var(--color-text);
+  background: var(--color-background);
+  transition:
+    color 0.5s,
+    background-color 0.5s;
+  line-height: 1.6;
+  font-family:
+    Inter,
+    -apple-system,
+    BlinkMacSystemFont,
+    'Segoe UI',
+    Roboto,
+    Oxygen,
+    Ubuntu,
+    Cantarell,
+    'Fira Sans',
+    'Droid Sans',
+    'Helvetica Neue',
+    sans-serif;
+  font-size: 15px;
+  text-rendering: optimizeLegibility;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+/*婊氬姩鏉℃暣浣撻儴鍒�*/
+.mytable-scrollbar ::-webkit-scrollbar {
+  width: 10px;
+  height: 10px;
+}
+/*婊氬姩鏉$殑杞ㄩ亾*/
+.mytable-scrollbar ::-webkit-scrollbar-track {
+  background-color: #FFFFFF;
+}
+/*婊氬姩鏉¢噷闈㈢殑灏忔柟鍧楋紝鑳藉悜涓婂悜涓嬬Щ鍔�*/
+.mytable-scrollbar ::-webkit-scrollbar-thumb {
+  background-color: transparent;
+  border-radius: 5px;
+  border: 0 solid #F1F1F1;
+  /*box-shadow: inset 0 0 6px rgba(0,0,0,.3);*/
+}
+.mytable-scrollbar ::-webkit-scrollbar-thumb:hover {
+  background-color: #ffffff;
+  box-shadow: inset 0 0 6px rgba(0,0,0,.3);
+}
+.mytable-scrollbar ::-webkit-scrollbar-thumb:active {
+  background-color: white;
+}
+/*杈硅锛屽嵆涓や釜婊氬姩鏉$殑浜ゆ眹澶�*/
+.mytable-scrollbar ::-webkit-scrollbar-corner {
+  background-color: #FFFFFF;
+}
+.vxe-grid{
+  background-color: white;
+}
+
+
+
diff --git a/UI-Project/src/assets/bigcar01.png b/UI-Project/src/assets/bigcar01.png
new file mode 100644
index 0000000..98a0a0e
--- /dev/null
+++ b/UI-Project/src/assets/bigcar01.png
Binary files differ
diff --git a/UI-Project/src/assets/cp.png b/UI-Project/src/assets/cp.png
new file mode 100644
index 0000000..e3272b2
--- /dev/null
+++ b/UI-Project/src/assets/cp.png
Binary files differ
diff --git a/UI-Project/src/assets/d1.png b/UI-Project/src/assets/d1.png
new file mode 100644
index 0000000..c903c4b
--- /dev/null
+++ b/UI-Project/src/assets/d1.png
Binary files differ
diff --git a/UI-Project/src/assets/d1a.png b/UI-Project/src/assets/d1a.png
new file mode 100644
index 0000000..b031d4b
--- /dev/null
+++ b/UI-Project/src/assets/d1a.png
Binary files differ
diff --git a/UI-Project/src/assets/d2.png b/UI-Project/src/assets/d2.png
new file mode 100644
index 0000000..de73a96
--- /dev/null
+++ b/UI-Project/src/assets/d2.png
Binary files differ
diff --git a/UI-Project/src/assets/d3.png b/UI-Project/src/assets/d3.png
new file mode 100644
index 0000000..1651775
--- /dev/null
+++ b/UI-Project/src/assets/d3.png
Binary files differ
diff --git a/UI-Project/src/assets/dipan.png b/UI-Project/src/assets/dipan.png
new file mode 100644
index 0000000..923b811
--- /dev/null
+++ b/UI-Project/src/assets/dipan.png
Binary files differ
diff --git a/UI-Project/src/assets/dlpl.png b/UI-Project/src/assets/dlpl.png
new file mode 100644
index 0000000..818a0a2
--- /dev/null
+++ b/UI-Project/src/assets/dlpl.png
Binary files differ
diff --git a/UI-Project/src/assets/dlpl9.png b/UI-Project/src/assets/dlpl9.png
new file mode 100644
index 0000000..fc78fde
--- /dev/null
+++ b/UI-Project/src/assets/dlpl9.png
Binary files differ
diff --git a/UI-Project/src/assets/dlpla.png b/UI-Project/src/assets/dlpla.png
new file mode 100644
index 0000000..9aa315e
--- /dev/null
+++ b/UI-Project/src/assets/dlpla.png
Binary files differ
diff --git a/UI-Project/src/assets/dpxsa.png b/UI-Project/src/assets/dpxsa.png
new file mode 100644
index 0000000..c444062
--- /dev/null
+++ b/UI-Project/src/assets/dpxsa.png
Binary files differ
diff --git a/UI-Project/src/assets/emi.png b/UI-Project/src/assets/emi.png
new file mode 100644
index 0000000..815024a
--- /dev/null
+++ b/UI-Project/src/assets/emi.png
Binary files differ
diff --git a/UI-Project/src/assets/img.png b/UI-Project/src/assets/img.png
new file mode 100644
index 0000000..3b0ee2b
--- /dev/null
+++ b/UI-Project/src/assets/img.png
Binary files differ
diff --git a/UI-Project/src/assets/logo.svg b/UI-Project/src/assets/logo.svg
new file mode 100644
index 0000000..7565660
--- /dev/null
+++ b/UI-Project/src/assets/logo.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 261.76 226.69"><path d="M161.096.001l-30.225 52.351L100.647.001H-.005l130.877 226.688L261.749.001z" fill="#41b883"/><path d="M161.096.001l-30.225 52.351L100.647.001H52.346l78.526 136.01L209.398.001z" fill="#34495e"/></svg>
diff --git a/UI-Project/src/assets/lp.png b/UI-Project/src/assets/lp.png
new file mode 100644
index 0000000..fac27df
--- /dev/null
+++ b/UI-Project/src/assets/lp.png
Binary files differ
diff --git a/UI-Project/src/assets/lp9.png b/UI-Project/src/assets/lp9.png
new file mode 100644
index 0000000..a976458
--- /dev/null
+++ b/UI-Project/src/assets/lp9.png
Binary files differ
diff --git a/UI-Project/src/assets/lpa.png b/UI-Project/src/assets/lpa.png
new file mode 100644
index 0000000..fac27df
--- /dev/null
+++ b/UI-Project/src/assets/lpa.png
Binary files differ
diff --git a/UI-Project/src/assets/lpa9.png b/UI-Project/src/assets/lpa9.png
new file mode 100644
index 0000000..f7f2204
--- /dev/null
+++ b/UI-Project/src/assets/lpa9.png
Binary files differ
diff --git a/UI-Project/src/assets/lpl.jpg b/UI-Project/src/assets/lpl.jpg
new file mode 100644
index 0000000..d66b84d
--- /dev/null
+++ b/UI-Project/src/assets/lpl.jpg
Binary files differ
diff --git a/UI-Project/src/assets/lpla.jpg b/UI-Project/src/assets/lpla.jpg
new file mode 100644
index 0000000..d66b84d
--- /dev/null
+++ b/UI-Project/src/assets/lpla.jpg
Binary files differ
diff --git a/UI-Project/src/assets/main.css b/UI-Project/src/assets/main.css
new file mode 100644
index 0000000..e9c78e5
--- /dev/null
+++ b/UI-Project/src/assets/main.css
@@ -0,0 +1,54 @@
+@import './base.css';
+
+#app {
+  margin: 0 auto;
+  padding: 0;
+  /* background-color: #D5EAFF; */
+  font-weight: normal;
+  height: 100%;
+  width: 100%;
+  /* min-width: 1536px; */
+  /* min-height: 730px; */
+  /* background-image: url("../../src/assets/background.jpg"); */
+}
+
+a,
+.green {
+  text-decoration: none;
+  color: hsla(160, 100%, 37%, 1);
+  transition: 0.4s;
+}
+
+@media (hover: hover) {
+  a:hover {
+    background-color: hsla(160, 100%, 37%, 0.2);
+  }
+}
+
+@media (min-width: 1024px) {
+  body {
+    display: flex;
+    place-items: center;
+  }
+
+  #app {
+    display: grid;
+    grid-template-columns: 1fr 1fr;
+
+  }
+}
+*{
+  margin: 0;
+  padding: 0;
+
+}
+.mainDiv{
+  height: 100vh;
+  width: 100vw;
+}
+html,body{
+  height: 100%;
+  width: 100%;
+  margin: 0;
+  padding: 0;
+}
\ No newline at end of file
diff --git a/UI-Project/src/assets/northGlass.ico b/UI-Project/src/assets/northGlass.ico
new file mode 100644
index 0000000..470e6eb
--- /dev/null
+++ b/UI-Project/src/assets/northGlass.ico
Binary files differ
diff --git a/UI-Project/src/assets/s.png b/UI-Project/src/assets/s.png
new file mode 100644
index 0000000..2caf181
--- /dev/null
+++ b/UI-Project/src/assets/s.png
Binary files differ
diff --git a/UI-Project/src/assets/shangpian.png b/UI-Project/src/assets/shangpian.png
new file mode 100644
index 0000000..71152cc
--- /dev/null
+++ b/UI-Project/src/assets/shangpian.png
Binary files differ
diff --git a/UI-Project/src/assets/shangpianji.png b/UI-Project/src/assets/shangpianji.png
new file mode 100644
index 0000000..fb645ca
--- /dev/null
+++ b/UI-Project/src/assets/shangpianji.png
Binary files differ
diff --git a/UI-Project/src/assets/sz.png b/UI-Project/src/assets/sz.png
new file mode 100644
index 0000000..fc3e92b
--- /dev/null
+++ b/UI-Project/src/assets/sz.png
Binary files differ
diff --git a/UI-Project/src/assets/taimian.png b/UI-Project/src/assets/taimian.png
new file mode 100644
index 0000000..81e0723
--- /dev/null
+++ b/UI-Project/src/assets/taimian.png
Binary files differ
diff --git a/UI-Project/src/assets/user.png b/UI-Project/src/assets/user.png
new file mode 100644
index 0000000..7c774be
--- /dev/null
+++ b/UI-Project/src/assets/user.png
Binary files differ
diff --git a/UI-Project/src/assets/woshihuancun.png b/UI-Project/src/assets/woshihuancun.png
new file mode 100644
index 0000000..25fb5fb
--- /dev/null
+++ b/UI-Project/src/assets/woshihuancun.png
Binary files differ
diff --git a/UI-Project/src/assets/xmjc.png b/UI-Project/src/assets/xmjc.png
new file mode 100644
index 0000000..dee5f48
--- /dev/null
+++ b/UI-Project/src/assets/xmjc.png
Binary files differ
diff --git a/UI-Project/src/assets/xmjclzh.png b/UI-Project/src/assets/xmjclzh.png
new file mode 100644
index 0000000..5935f14
--- /dev/null
+++ b/UI-Project/src/assets/xmjclzh.png
Binary files differ
diff --git a/UI-Project/src/assets/ypcc.png b/UI-Project/src/assets/ypcc.png
new file mode 100644
index 0000000..fdca249
--- /dev/null
+++ b/UI-Project/src/assets/ypcc.png
Binary files differ
diff --git a/UI-Project/src/assets/ypccche.png b/UI-Project/src/assets/ypccche.png
new file mode 100644
index 0000000..96f75d0
--- /dev/null
+++ b/UI-Project/src/assets/ypccche.png
Binary files differ
diff --git a/UI-Project/src/hook/index.js b/UI-Project/src/hook/index.js
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/UI-Project/src/hook/index.js
diff --git a/UI-Project/src/lang/companyInfo.js b/UI-Project/src/lang/companyInfo.js
new file mode 100644
index 0000000..cdbfc7b
--- /dev/null
+++ b/UI-Project/src/lang/companyInfo.js
@@ -0,0 +1,85 @@
+import {defineStore} from "pinia";
+
+export default defineStore('companyInfo', {
+
+    state: () => ({
+        companyName: '甯稿窞甯傚悏鍒╃幓鐠冩湁闄愬叕鍙�',
+        address:'甯稿窞甯傚ぉ瀹佸尯閮戦檰闀囧ぇ鏄庡崡璺�8鍙�',
+        telephone:'022-59280088',
+        fax:'022-59280066',
+        widHeiLength:{//璁㈠崟瀹介珮闀垮害
+            regexp:/^(\d{1,4})$/,//姝e垯鍥涗綅鏁存暟
+            //regexp:/^(0|[1-9][0-9]{0,3}([.][0-9]{1,2})?)$/,//姝e垯0.00-9999.99
+            msg:'basicData.msg.range9999Dec'
+        },
+        orderIdType:'month',//鍚庣鐢熸垚璁㈠崟鍙风被鍨嬶紝day:姣忓ぉ鐢熸垚锛宮onth:姣忔湀鐢熸垚
+        deliveryIdType:'month',//鍚庣鐢熸垚鍙戣揣鍗曞彿绫诲瀷锛宒ay:姣忓ぉ鐢熸垚锛宮onth:姣忔湀鐢熸垚
+        columnName:'寮傚舰鍙傛暟',
+        selectOrderReviewShow:false, //璁㈠崟棣栭〉鍔犲伐鍗曞鏍告寜閽槸鍚︽樉绀�
+        productName:"product_abbreviation", //浜у搧鍒涘缓鏌ラ噸瀛楁
+        decValue:2,//璁㈠崟淇濆瓨闈㈢Н浣嶆暟
+        label:2,//鏍囩绫诲瀷
+        calculateType:2,//璁㈠崟璁$畻鏂瑰紡
+
+        //澶╂触
+        printLabel: {
+            custom: (item1) => {
+                return `<div class="row3" style="text-align: center;font-weight: bolder;">
+                  <label style="font-weight: bolder;font-size: 22px;margin-top: 28px;">W:${item1.width}</label>
+                  &nbsp;&nbsp;&nbsp;
+                  <label style="font-weight: bolder;font-size: 22px;margin-top: 28px;">H:${item1.height}</label>
+                </div>`
+            },
+            customSemi: (item1) => {
+                return `<div class="row3" style="text-align: center;font-weight: bolder;">
+                  <label style="font-weight: bolder;font-size: 10px;margin-top: 28px;">W:${item1.width}</label>
+                  &nbsp;&nbsp;&nbsp;
+                  <label style="font-weight: bolder;font-size: 10px;margin-top: 28px;">H:${item1.height}</label>
+                </div>`
+            },
+            labelType: '鎴愬搧鏍囩2',
+            labelValue:2,
+            labelType3: '鎴愬搧鏍囩3',
+            labelValue3:3,
+            printFlowCard: {
+                patch:'姝�',
+                lackOf:'娆�',
+                processingNote: (itemtextarea) => {
+                    return  `${itemtextarea.processing_note}`
+                },
+            },
+            hideButton:'false',
+            getSelectFlowCard:2,//鎵撳嵃娴佺▼鍗℃煡璇㈢姸鎬�
+            className:{
+                custom:{
+                    printFlowCardName: () => {
+                        return `printFlowCard_finished`
+                    },
+                    entiretyName: () => {
+                        return `entirety_finished`
+                    },
+                    contentRowName: () => {
+                        return `contentRow`
+                    }
+                },
+                semi:{
+                    printFlowCardName: () => {
+                        return `printFlowCard_semi`
+                    },
+                    entiretyName: () => {
+                        return `entirety_semi`
+                    },
+                    contentRowName: () => {
+                        return `contentRow`
+                    }
+                }
+
+            }
+        }
+
+
+    }),
+    actions: {
+        //
+    }
+})
\ No newline at end of file
diff --git a/UI-Project/src/lang/en.js b/UI-Project/src/lang/en.js
new file mode 100644
index 0000000..d80a9be
--- /dev/null
+++ b/UI-Project/src/lang/en.js
@@ -0,0 +1,302 @@
+export  default {
+    "northglassMESsystem": '小懈褋褌械屑邪 "NorthGlass MES"' ,
+      login:{
+          userErr:'袙胁械写懈褌械 薪芯屑械褉 褋褔械褌邪.',
+          pwErr:'袙胁械写懈褌械 锌邪褉芯谢褜.',
+          user:'袗泻泻邪褍薪褌',
+          password:'袣芯写',
+          login:'袟邪谢芯谐懈薪',
+          loginSuccessful:'袙褏芯写 胁 褋懈褋褌械屑褍 胁褘锌芯谢薪械薪 褍褋锌械褕薪芯锛�',
+          register:'袟邪褉械谐懈褋褌褉懈褉芯胁邪',
+          namea:'袠屑褟 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑',
+          len:'袛谢懈薪邪 薪械 写芯谢卸薪邪 锌褉械胁褘褕邪褌褜 16',
+          passnull:'袩邪褉芯谢褜 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑',
+          leng:'袛谢懈薪邪 锌邪褉芯谢褟 薪械 写芯谢卸薪邪 斜褘褌褜 屑械薪褜褕械 6 懈谢懈 斜芯谢褜褕械 16.',
+          spwn:'袩邪褉芯谢褜 锌芯写褌胁械褉卸写械薪懈褟 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑',
+          depass:'袛胁邪 褉邪蟹薪褘褏 锌邪褉芯谢褟.',
+      },
+      register:{
+          registerSuccessful:'袪械谐懈褋褌褉邪褑懈褟 褍褋锌械褕薪芯',
+          newuserregister:'袧芯胁褘泄 褉械械褋褌褉 锌芯谢褜蟹芯胁邪褌械谢械泄',
+          name:'袠屑褟锛�',
+          inputname:'袙胁械写懈褌械 懈屑褟',
+          password:'袣芯写:',
+          pwErr:'袙胁械写懈褌械 锌邪褉芯谢褜.',
+          passwordation:'袩芯写褌胁械褉写懈褌械 锌邪褉芯谢褜:',
+          pwErration:'袩芯卸邪谢褍泄褋褌邪, 锌芯写褌胁械褉褌懈褌械 锌邪褉芯谢褜',
+          registration:'袩芯写褌胁械褉卸写械薪懈械 芯 褉械谐懈褋褌褉邪褑懈懈',
+          false:'袨褌屑械薪邪',
+      },
+      main:{
+          connectErr:'袧械芯斜褘褔薪芯械 锌芯写泻谢褞褔械薪懈械 泻 褋械褉胁械褉褍, 锌芯锌褉芯斜褍泄褌械 锌芯蟹卸械',
+          titleFirst:"袛芯斜褉芯 锌芯卸邪谢芯胁邪褌褜 ",
+          titleLast:' 胁 褋懈褋褌械屑褍 NorthGlass MES锛�',
+          quit:"袙褘褏芯写",
+      },
+      basicData:{
+          deletemessage:'校写邪谢懈褌褜 褝褌褍 懈薪褎芯褉屑邪褑懈褞 懈谢懈 薪械褌?',
+          laserprinting:'袦邪褕懈薪邪 谢邪蟹械褉薪芯泄 屑邪褉泻懈褉芯胁泻懈 谐芯褌芯胁邪锛�',
+          cuttingmachine:'袦邪褕懈薪邪 写谢褟 褉械蟹泻懈 谐芯褌芯胁邪锛�',
+          machine:'小芯褋褌芯褟薪懈械 褋褌邪薪芯泻 蟹邪谐褉褍蟹泻懈 胁 褉械卸懈屑械 芯薪谢邪泄薪锛�',
+          machineaa:'袪褍褔薪芯械 褋芯褋褌芯褟薪懈械 褋褌邪薪芯泻 蟹邪谐褉褍蟹泻懈:',
+          selectproject:"袙褘斜械褉懈褌械 锌褉芯械泻褌",
+          startloading:'袧邪褔邪谢芯 蟹邪谐褉褍蟹泻懈',
+          stop:'袩邪褍蟹邪',
+          yes:'锌芯写褌胁械褉写',
+          change:'锌械褉械泻谢褞褔邪',
+          projectnumber:'袧芯屑械褉 锌褉芯械泻褌邪',
+          glasswidth:'楔懈褉懈薪邪 褋褌械泻谢邪',
+          glassheight:'袙褘褋芯褌邪 褋褌械泻谢邪',
+          coatingtypes:'孝懈锌褘 锌芯泻褉褘褌懈泄',
+          coatingtypesa:'孝懈锌褘 锌芯泻褉褘褌懈泄锛�',
+          quantity:'袣芯谢懈褔械褋褌胁芯',
+          quantitya:'袣芯谢懈褔械褋褌胁芯锛�',
+          thickness:'孝芯谢褖懈薪邪',
+          thicknessa:'孝芯谢褖懈薪邪锛�',
+          startstatus:'小褌邪褌褍褋 薪邪褔邪谢邪 芯锌械褉邪褑懈懈',
+          pass:'效械褉械蟹',
+          waiting:'袞写械屑.',
+          up:'袟邪谐褉褍蟹泻邪',
+          finish:'袟邪胁械褉褕械薪芯',
+          project:'懈薪卸械薪械褉懈褟',
+          plselectproject:'袩芯卸邪谢褍泄褋褌邪, 胁褘斜械褉懈褌械 锌褉芯械泻褌.',
+          confirm:'锌芯写褌胁械褉写',
+          cancel:'袨褌屑械薪邪',
+          startfilm:'袧邪褔懈薪邪褌褜 懈谢懈 薪械褌锛�',
+          whetherpause:'袩邪褍蟹邪 懈谢懈 薪械褌锛�',
+          station:'袪邪斜芯褔械械 屑械褋褌芯',
+          width:'楔懈褉懈薪邪',
+          widtha:'楔懈褉懈薪邪锛�',
+          height:'袙褘褋芯褌邪',
+          heighta:'袙褘褋芯褌邪锛�',
+          operate:'袨锌械褉邪褑懈褟',
+          add:'袛芯斜邪胁谢褟',
+          delete:'校写邪谢',
+          addglass:'袛芯斜邪胁懈褌褜 褋褌械泻谢芯',
+          selectwidth:'袙褘斜懈褉懈褌械 褕懈褉懈薪褍',
+          selectheight:'袙褘斜懈褉懈褌械 胁褘褋芯褌褍',
+          selectcoatingtypes:'袙褘斜械褉懈褌械 褌懈锌褘 锌芯泻褉褘褌懈泄',
+          selectthickness:'袙褘斜械褉懈褌械 褌芯谢褖懈薪褍',
+          selectquantity:'袙胁械写懈褌械 泻芯谢褜褔械褋褌胁芯.',
+          pause:'袙褌芯褉邪褟 懈 褔械褌胁械褉褌邪褟 褋褌褉芯泻懈 写芯谢卸薪褘 斜褘褌褜 胁褘褕械 2700 写谢褟 褋芯褏褉邪薪械薪懈褟!',
+          pausea:'袩芯卸邪谢褍泄褋褌邪, 褍斜械写懈褌械褋褜, 褔褌芯 屑邪褉泻懈褉芯胁芯褔薪邪褟 懈 褉械卸褍褖邪褟 屑邪褕懈薪褘 谐芯褌芯胁褘!',
+          infonull:'袧芯屑械褉 锌褉芯械泻褌邪 薪械 屑芯卸械褌 斜褘褌褜 锌褍褋褌褘屑!',
+          updatanull:'袩褉芯械泻褌 薪械 褋芯褏褉邪薪懈谢懈褋褜 薪邪 谢懈褋褌械 蟹邪谐褉褍蟹泻懈!',
+          glassnull:'袨褕懈斜泻邪 锌褉懈 芯斜薪芯胁谢械薪懈懈 褋褌械泻谢邪',
+      },
+      sorter:{
+          gridnumber:'携褔械械泻 褋械褌泻谢邪',
+          glassnumber:'袧芯屑械褉 褋褌邪泻谢邪',
+          width:'楔懈褉懈薪邪',
+          height:'袙褘褋芯褌邪',
+          startstatus:'小褌邪褌褍褋 薪邪褔邪谢邪 芯锌械褉邪褑懈懈',
+          disable:'袨褌泻谢褞褔',
+          start:'袧邪褔邪谢芯',
+          deficiencieste:'袧械写芯褋褌邪褌泻懈 胁 芯褌褔械褌薪芯褋褌懈',
+          operate:'袨锌械褉邪褑懈褟',
+          prompt:'袩芯写褋泻邪蟹泻',
+          information:'小谢械写褍械褌 谢懈 褋芯芯斜褖邪褌褜 薪械写芯褋褌邪褞褖褍褞 懈薪褎芯褉屑邪褑懈褞锛�',
+          yes:'袛邪',
+          cancel:'袨褌屑械薪邪',
+      },
+      order:{
+          dilapidation:'袩芯胁褉械卸写械薪懈械',
+          Takeaway:'袙蟹褟褌褜 胁褉褍褔薪褍褞',
+      },
+
+      searchOrder:{
+        cageinformation:'袠薪褎芯褉屑邪褑懈褟 斜褍褎械褉邪',
+        productionqueue:'袩褉芯懈蟹胁芯写褋褌胁械薪薪邪褟 芯褔械褉械写褜',
+        outputglassID:'袙褘褏芯写薪芯械 褋褌械泻谢芯 ID',
+        startposition:'袟邪薪褟褌褜 锌芯蟹懈褑懈懈',
+        targetlocation:'袩芯蟹懈褑懈褟 褑械谢懈',
+        trips:'鈩� 锌芯械蟹写邪',
+        number:'小械褉懈泄薪 薪芯屑械褉',
+        taskstatus:'小芯褋褌芯褟薪懈械 蟹邪写邪褔懈',
+        filmenter:'袨卸懈写邪薪懈械 褋褌械泻谢褟薪薪芯泄 胁褏芯写',
+        infilm:'袙 薪邪褋褌芯褟褖械械 胁褉械屑褟',
+        endtask:'袟邪写邪褔邪 薪邪 泻芯薪械褑',
+        completetask:'袙褘锌芯谢薪械薪懈械 蟹邪写邪薪懈褟',
+        intoglassid:'袙褏芯写薪芯泄 褋褌械泻谢褟薪薪褘泄 ID',
+        line:'袥懈薪懈褟',
+        Usage:'小泻芯褉芯褋褌褜 懈褋锌芯谢褜蟹芯胁邪薪懈褟',
+        free:'袘械褋锌谢邪褌薪芯 (褟褔械械泻)',
+        addcage:'袛芯斜邪胁懈褌褜 懈薪褎芯褉屑邪褑懈褞 芯 斜褍褎械褉械',
+        glassIDa:'小褌械泻谢褟薪薪褘泄 ID锛�',
+        glassID:'小褌械泻谢褟薪薪褘泄 ID',
+        inglassID:'袙胁械写懈褌械 褋褌械泻谢芯 ID',
+        pieceingrid:'袩芯褉褟写芯泻 褉邪褋锌芯谢芯卸械薪懈褟 屑邪谢械薪褜泻懈褏 褋褌械泻谢褟薪薪褘褏 锌谢邪褋褌懈薪 胁 泻谢械褌泻械',
+        pieceingrida:'袩芯褉褟写芯泻 褉邪褋锌芯谢芯卸械薪懈褟 屑邪谢械薪褜泻懈褏 褋褌械泻谢褟薪薪褘褏 锌谢邪褋褌懈薪 胁 泻谢械褌泻械锛�',
+        inpieceingrid:'袙胁械写懈褌械 锌芯褉褟写芯泻 褉邪褋锌芯谢芯卸械薪懈褟 褋褌械泻谢褟薪薪褘褏 谢懈褋褌芯胁 胁 褟褔械械泻械',
+        cardnumber:'袧芯屑械褉 泻邪褉褌芯褔泻懈 锌褉芯褑械褋褋邪',
+        cardnumbera:'袧芯屑械褉 泻邪褉褌芯褔泻懈 锌褉芯褑械褋褋邪锛�',
+        incardnumber:'袙胁械写懈褌械 薪芯屑械褉 锌褉芯褑械褋褋邪 .',
+        typeglass:'孝懈锌 褋褌械泻谢邪',
+        typeglassa:'孝懈锌 褋褌械泻谢邪锛�',
+        intypeglass:'袙胁械写懈褌械 褌懈锌 褋褌械泻谢邪',
+        coatingtypes:'孝懈锌褘 锌芯泻褉褘褌懈泄',
+        width:'楔懈褉懈薪邪',
+        widtha:'楔懈褉懈薪邪锛�',
+        inwidth:'袙胁械写懈褌械 褕懈褉懈薪褍',
+        height:'袙褘褋芯褌邪',
+        heighta:'袙褘褋芯褌邪锛�',
+        inheight:'袙胁械写懈褌械 胁褘褋芯褌褍',
+        thickness:'孝芯谢褖懈薪邪',
+        thicknessa:'孝芯谢褖懈薪邪锛�',
+        inthickness:'袙胁械写懈褌械 褌芯谢褖懈薪褍.',
+        layoutID:'效械褉褌械卸 ID 蟹邪谐褉褍蟹泻懈 锌械褔懈 写谢褟 蟹邪泻邪谢泻懈',
+        layoutIDa:'效械褉褌械卸 ID 蟹邪谐褉褍蟹泻懈 锌械褔懈 写谢褟 蟹邪泻邪谢泻懈锛�',
+        inlayoutID:'袙胁械写懈褌械 褔械褉褌械卸 蟹邪泻邪谢泻懈 ID',
+        picturesequence:'效械褉褌械卸 褋械褉懈泄薪 薪芯屑械褉 蟹邪谐褉褍蟹泻懈 锌械褔懈 写谢褟 蟹邪泻邪谢泻懈',
+        picturesequencea:'效械褉褌械卸 褋械褉懈泄薪 薪芯屑械褉 蟹邪谐褉褍蟹泻懈 锌械褔懈 写谢褟 蟹邪泻邪谢泻懈锛�',
+        inpicturesequence:'袙胁械写懈褌械 锌芯褉褟写芯泻 褔械褉褌械卸懈 蟹邪泻邪谢泻懈 褋褌械泻谢邪.',
+        startstatus:'小褌邪褌褍褋 薪邪褔邪谢邪 芯锌械褉邪褑懈懈',
+        startstatusa:'小褌邪褌褍褋 薪邪褔邪谢邪 芯锌械褉邪褑懈懈锛�',
+        instartstatus:'袙胁械写懈褌械 褋芯褋褌芯褟薪懈械 邪泻褌懈胁邪褑懈懈',
+        glassgaps:'小褌械泻谢褟薪薪褘泄 蟹邪蟹芯褉',
+        glassgapsa:'小褌械泻谢褟薪薪褘泄 蟹邪蟹芯褉锛�',
+        inglassgaps:'袙胁械写懈褌械 褋褌械泻谢芯 蟹邪蟹芯褉',
+        sure:'锌芯写褌胁械褉写',
+        cancel:'袨褌屑械薪邪',
+        glassID:'小褌械泻谢褟薪薪褘泄 ID',
+        operate:'袨锌械褉邪褑懈褟',
+        breakage:'袩芯胁褉械卸写械薪懈械',
+        delete:'校写邪谢',
+        outfilm:'袙褘锌褍褋泻 褋褌械泻谢邪',
+        cagetableID:'ID 斜褍褎械褉薪芯泄 褌邪斜谢懈褑褘',
+        cagenumber:'袘褍褎械褉 薪芯屑械褉邪',
+        gridnumber:'携褔械械泻 褋械褌泻谢邪',
+        enable:'袧邪褔邪谢芯',
+        disable:'袨褌泻谢褞褔',
+        remainingwidth:'袨褋褌邪褌芯褔薪邪褟 褕懈褉懈薪邪',
+        add:'袛芯斜邪胁谢褟',
+        sheetID:'袟邪泻邪谢泻邪 屑邪谢械薪褜泻懈泄 褋褌械泻谢褟薪薪褘泄 ID 褌邪斜谢懈褑褘 懈薪褎芯褉屑邪褑懈懈',
+        processcards:'袣邪褉褌芯褔泻邪 锌褉芯褑械褋褋邪',
+        processcardtype:'孝懈锌 褋褌械泻谢邪 泻邪褉褌芯褔泻懈 锌褉芯褑械褋褋邪',
+        acceptshorizontal:'校屑械褉械薪薪芯械 锌褉懈薪褟褌懈械 谐芯褉懈蟹芯薪褌邪谢懈',
+        xcoordinates:'X-泻芯芯褉写懈薪邪褌褘',
+        ycoordinates:'Y-泻芯芯褉写懈薪邪褌褘',
+        rotationangle:'校谐芯谢 胁褉邪褖械薪懈褟 (锌褉芯褌懈胁 褔邪褋芯胁芯泄 褋褌褉械谢泻懈)',
+        state:'小芯褋褌芯褟薪懈械',
+        takeout:'袙蟹褟褌褜',
+        deletemessage:'校写邪谢懈褌褜 褝褌褍 懈薪褎芯褉屑邪褑懈褞 懈谢懈 薪械褌?',
+        prompt:'袩芯写褋泻邪蟹泻',
+        yes:'袛邪',
+        accept:'袩褉懈薪褟褌褜',
+        noaccept:'袧械 锌褉懈薪懈屑邪褌褜',
+        filmcomplete:'小褌械泻谢芯 谐芯褌芯胁芯',
+        waiting:'袞写械屑.',
+    },
+    workOrder:{
+        glassID:'小褌械泻谢褟薪薪褘泄 ID',
+        height:'袙褘褋芯褌邪',
+        width:'楔懈褉懈薪邪',
+        thickness:'孝芯谢褖懈薪邪',
+        coatingtypes:'孝懈锌褘 锌芯泻褉褘褌懈泄',
+        productionsequence:'袩芯褋谢械写芯胁邪褌械谢褜薪芯褋褌褜 锌褉芯懈蟹胁芯写褋褌胁邪',
+        cardnumber:'袧芯屑械褉 泻邪褉褌芯褔泻懈 锌褉芯褑械褋褋邪',
+        operate:'袨锌械褉邪褑懈褟',
+        messagedamaged:'袩芯胁褉械卸写械薪芯 谢懈 褋芯芯斜褖械薪懈械锛�',
+        prompt:'袩芯写褋泻邪蟹泻',
+        yes:'袛邪',
+        cancel:'袨褌屑械薪邪',
+        takemessage:'小谢械写褍械褌 谢懈 褍写邪谢褟褌褜 褋芯芯斜褖械薪懈械锛�',
+        breakage:'袩芯胁褉械卸写械薪懈械',
+        takeout:'袙蟹褟褌褜',
+    },
+    processCard:{
+        intofurnace:'袙 锌械褔褜',
+        beforefurnace:'袛芯 锌械褔泻懈.',
+        outfurnace:'袨泻芯薪褔械薪芯 褋褌械泻谢芯 懈蟹 锌械褔懈 写谢褟 蟹邪泻邪谢泻懈',
+    },
+    reportWork:{
+        lowerbit:'小褌邪薪褑懈褟 褉邪蟹谐褉褍蟹泻懈',
+        shelfnumber:'袧芯屑械褉 褋褌芯泄泻懈 褉械谐懈褋褌褉邪褑懈懈',
+        cardnumber:'袧芯屑械褉 泻邪褉褌芯褔泻懈 锌褉芯褑械褋褋邪',
+        totalquantity:'袨斜褖械械 泻芯谢懈褔械褋褌胁芯',
+        beendropped:'袣芯谢懈褔械褋褌胁芯 褋褌械泻谢邪 褉邪蟹谐褉褍蟹泻懈',
+        state:'小芯褋褌芯褟薪懈械',
+        devicenumber:'袧芯屑械褉 芯斜芯褉褍写芯胁邪薪懈褟.',
+        startstatus:'小褌邪褌褍褋 薪邪褔邪谢邪 芯锌械褉邪褑懈懈',
+        enable:'袧邪褔邪谢芯',
+        unenable:'袧械 薪邪褔邪褌',
+        operate:'袨锌械褉邪褑懈褟',
+        bindingshelves:'袧邪蟹薪邪褔械薪薪邪褟 褋褌械谢谢邪卸泻邪',
+        clear:'效懈褋褌芯.',
+        workstation:'小褌邪薪褑懈褟 薪芯屑械褉',
+        shelfnumber:'袧芯屑械褉 褋褌芯泄泻懈 褉械谐懈褋褌褉邪褑懈懈锛�',
+        cardnumbera:'袧芯屑械褉 泻邪褉褌芯褔泻懈 锌褉芯褑械褋褋邪锛�',
+        incardnumber:'袩芯卸邪谢褍泄褋褌邪, 胁褘斜械褉懈褌械 薪芯屑械褉 锌褉芯谐褉邪屑屑褘',
+        clearglass:'袨褔懈褋褌懈褌褜 褋褌械泻谢芯 褋 锌芯谢泻懈',
+        sure:'锌芯写褌胁械褉写',
+        cancel:'袨褌屑械薪邪',
+        glassinformation:'袠薪褎芯褉屑邪褑懈褟 褋褌械泻谢邪',
+        glassID:'小褌械泻谢褟薪薪褘泄 ID',
+        coatingtypes:'孝懈锌褘 锌芯泻褉褘褌懈泄',
+        thickness:'孝芯谢褖懈薪邪',
+        width:'楔懈褉懈薪邪',
+        height:'袙褘褋芯褌邪',
+    },
+    productStock:{
+        addusers:'袛芯斜邪胁褜褌械 锌芯谢褜蟹芯胁邪褌械谢械泄.',
+        username:'袠屑褟 锌芯谢褜蟹芯胁邪褌械谢褟.',
+        usernamea:'袠屑褟 锌芯谢褜蟹芯胁邪褌械谢褟.锛�',
+        inusername:'袙胁械写懈褌械 懈屑褟 锌芯谢褜蟹芯胁邪褌械谢褟',
+        role:'袪芯谢褜',
+        rolea:'袪芯谢褜锛�',
+        inrole:'袙褘斜械褉懈褌械 褉芯谢褜',
+        test:'孝械褋褌',
+        admin:'袗写屑懈薪懈褋褌褉邪褌芯褉.',
+        operate:'袨锌械褉邪褑懈褟',
+        resetpassword:'小斜褉芯褋懈褌褜 锌邪褉芯谢褜',
+        exit:'袪械写邪泻褌芯褉',
+        delete:'校写邪谢',
+        prompt:'袩芯写褋泻邪蟹泻',
+        repassword:'袩械褉械蟹邪谐褉褍蟹泻邪 锌芯谢褜蟹芯胁邪褌械谢褜褋泻芯谐芯 锌邪褉芯谢褟 懈谢懈 薪械褌锛�',
+        yes:'袛邪',
+        cancel:'袨褌屑械薪邪',
+        reusername:'袠蟹屑械薪械薪懈械 锌芯谢褜蟹芯胁邪褌械谢褟',
+        addusername:'袛芯斜邪胁褜褌械 锌芯谢褜蟹芯胁邪褌械谢械泄.',
+        password:'袣芯写锛�',
+        sure:'锌芯写褌胁械褉写',
+        inpassword:'袙胁械写懈褌械 锌邪褉芯谢褜.',
+        deusername:'校写邪谢械薪懈械 锌芯谢褜蟹芯胁邪褌械谢褟 懈谢懈 薪械褌锛�',
+    },
+    customer:{
+        addmenu:'袛芯斜邪胁褜褌械 屑械薪褞.',
+        firstmenu:'孝邪斜谢懈褑邪 屑械薪褞 锌械褉胁芯泄 褋褌械锌械薪懈',
+        link:'小褋褘谢泻',
+        linka:'小褋褘谢泻锛�',
+        inlink:'袙胁械写懈褌械 褋褋褘谢泻褍',
+        sort:'小芯褉褌懈褉芯胁泻',
+        sorta:'小芯褉褌懈褉芯胁泻锛�',
+        insort:'袙胁械写懈褌械 褋芯褉褌懈褉芯胁泻褍',
+        operate:'袨锌械褉邪褑懈褟',
+        exit:'袪械写邪泻褌芯褉',
+        inmenu:'袙胁械写懈褌械 屑械薪褞',
+        delete:'校写邪谢',
+        semenu:'孝邪斜谢懈褑邪 屑械薪褞 胁褌芯褉芯泄 褋褌械锌械薪懈',
+        menu:'袦械薪褞.锛�',
+        sure:'锌芯写褌胁械褉写',
+        cancel:'袨褌屑械薪邪',
+        exmene:'袠蟹屑械薪械薪懈械 屑械薪褞.',
+        yes:'袛邪',
+        demenu:'校写邪谢懈褌褜 屑械薪褞 懈谢懈 薪械褌锛�',
+        prompt:'袩芯写褋泻邪蟹泻',
+    },
+    delivery:{
+        addrole:'袛芯斜邪胁褜褌械 褉芯谢懈.',
+        editrole:'袠蟹屑械薪械薪懈械 褉芯谢懈.',
+        role :'袪芯谢褜',
+        rolea :'袪芯谢褜锛�',
+        inrole :'袙胁械写懈褌械 褉芯谢懈.',
+        operate :'袨锌械褉邪褑懈褟',
+        edit :'袪械写邪泻褌芯褉',
+        delete :'校写邪谢',
+        sure :'锌芯写褌胁械褉写',
+        cancel :'袨褌屑械薪邪',
+        yes:'袛邪',
+        derole :'校写邪谢懈褌褜 锌械褉褋芯薪邪卸 懈谢懈 薪械褌锛�',
+        prompt:'袩芯写褋泻邪蟹泻',
+    },
+  }
\ No newline at end of file
diff --git a/UI-Project/src/lang/index.js b/UI-Project/src/lang/index.js
new file mode 100644
index 0000000..2a371f6
--- /dev/null
+++ b/UI-Project/src/lang/index.js
@@ -0,0 +1,18 @@
+
+import { createI18n}  from 'vue-i18n'
+import zh from "./zh"
+import en from "./en"
+
+let messages = {
+    zh:zh,
+    en: en
+}
+
+const i18n = createI18n({
+    locale: localStorage.getItem('lang') || 'zh', // 璁剧疆褰撳墠璇█绫诲瀷
+    legacy: false, // 濡傛灉瑕佹敮鎸乧ompositionAPI锛屾椤瑰繀椤昏缃负false;
+    globalInjection: true, // 鍏ㄥ眬娉ㄥ唽$t鏂规硶
+    messages
+})
+
+export default i18n
\ No newline at end of file
diff --git a/UI-Project/src/lang/zh.js b/UI-Project/src/lang/zh.js
new file mode 100644
index 0000000..13ae58c
--- /dev/null
+++ b/UI-Project/src/lang/zh.js
@@ -0,0 +1,120 @@
+export  default {
+  "northglassMESsystem": "鍖楃幓MES绯荤粺",
+    login:{
+        userErr:'璇疯緭鍏ヨ处鍙�',
+        pwErr:'璇疯緭鍏ュ瘑鐮�',
+        user:'璐﹀彿',
+        password:'瀵嗙爜',
+        login:'鐧诲綍',
+        loginSuccessful:'鐧诲綍鎴愬姛锛�',
+        register:'娉ㄥ唽',
+        namea:'濮撳悕涓嶈兘涓虹┖',
+        len:'闀垮害涓嶈兘瓒呰繃16',
+        passnull:'瀵嗙爜涓嶈兘涓虹┖',
+        leng:'瀵嗙爜闀垮害涓嶈兘浣庝簬6鎴栬秴杩�16',
+        spwn:'纭瀵嗙爜涓嶈兘涓虹┖',
+        depass:'涓ゆ瀵嗙爜涓嶇浉鍚�',
+    },
+    register:{
+        registerSuccessful:'娉ㄥ唽鎴愬姛',
+        newuserregister:'娉ㄥ唽鏂扮敤鎴�',
+        name:'濮撳悕锛�',
+        inputname:'璇疯緭鍏ュ鍚�',
+        password:'瀵嗙爜:',
+        pwErr:'璇疯緭鍏ュ瘑鐮�',
+        passwordation:'纭瀵嗙爜:',
+        pwErration:'璇风‘璁ゅ瘑鐮�',
+        registration:'纭娉ㄥ唽',
+        false:'鍙栨秷',
+    },
+    main:{
+        connectErr:'鏈嶅姟鍣ㄨ繛鎺ュ紓甯革紝璇风◢鍚庡啀璇�',
+        titleFirst:"娆㈣繋 ",
+        titleLast:' 浣跨敤鍖楃幓MES绯荤粺锛�',
+        quit:"閫�鍑�",
+    },
+    productStock:{
+        ID:'ID',
+        addusers:'娣诲姞鐢ㄦ埛',
+        username:'鐢ㄦ埛鍚�',
+        usernamea:'鐢ㄦ埛鍚嶏細',
+        usera:'璐︽埛锛�',
+        inusera:'璇疯緭鍏ヨ处鎴�',
+        inusername:'璇疯緭鍏ョ敤鎴峰悕',
+        role:'瑙掕壊',
+        rolea:'瑙掕壊锛�',
+        inrole:'璇烽�夋嫨瑙掕壊',
+        test:'娴嬭瘯',
+        admin:'绠$悊鍛�',
+        operate:'鎿嶄綔',
+        resetpassword:'淇敼瀵嗙爜',
+        exit:'缂栬緫',
+        delete:'鍒犻櫎',
+        prompt:'鎻愮ず',
+        repassword:'鏄惁閲嶇疆鐢ㄦ埛瀵嗙爜锛�',
+        yes:'鏄�',
+        cancel:'鍙栨秷',
+        reusername:'淇敼鐢ㄦ埛',
+        addusername:'娣诲姞鐢ㄦ埛',
+        password:'瀵嗙爜锛�',
+        sure:'纭',
+        inpassword:'璇疯緭鍏ュ瘑鐮�',
+        deusername:'鏄惁鍒犻櫎璇ョ敤鎴凤紵',
+    },
+    customer:{
+        id:'ID',
+        addmenu:'娣诲姞鑿滃崟',
+        editmenu:'淇敼鑿滃崟',
+        firstmenu:'鑿滃崟',
+        firstmenua:'鑿滃崟锛�',
+        infirstmenu:'璇疯緭鍏ヨ彍鍗�',
+        sure :'纭',
+        cancel :'鍙栨秷',
+        edit :'缂栬緫',
+        delete :'鍒犻櫎',
+        operate:'鎿嶄綔',
+        prompt:'鎻愮ず',
+        yes:'鏄�',
+        deusername:'鏄惁鍒犻櫎璇ヨ彍鍗曪紵',
+    },
+    pagemenu:{
+        id:'ID',
+        addmenu:'娣诲姞椤甸潰',
+        editmenu:'淇敼椤甸潰',
+        firstmenu:'椤甸潰',
+        firstmenua:'椤甸潰锛�',
+        url:'閾炬帴',
+        urla:'閾炬帴锛�',
+        inurl:'璇疯緭鍏ラ摼鎺�',
+        infirstmenu:'璇疯緭鍏ラ〉闈�',
+        sure :'纭',
+        cancel :'鍙栨秷',
+        edit :'缂栬緫',
+        delete :'鍒犻櫎',
+        operate:'鎿嶄綔',
+        prompt:'鎻愮ず',
+        yes:'鏄�',
+        deusername:'鏄惁鍒犻櫎璇ラ〉闈紵',
+    },
+    delivery:{
+        id:'ID',
+        addrole:'鏂板',
+        addrole1:'鏂板瑙掕壊',
+        editrole:'淇敼',
+        role :'瑙掕壊',
+        rolea :'瑙掕壊锛�',
+        inrole :'璇疯緭鍏ヨ鑹�',
+        operate :'鎿嶄綔',
+        edit :'缂栬緫',
+        delete :'鍒犻櫎',
+        yes:'鏄�',
+        sure :'纭',
+        cancel :'鍙栨秷',
+        derole :'鏄惁鍒犻櫎璇ヨ鑹�',
+        prompt:'鎻愮ず',
+        menu:'鑿滃崟锛�',
+        menuchoice:'璇烽�夋嫨鑿滃崟',
+        page:'椤甸潰锛�',
+        pagechoice:'璇烽�夋嫨椤甸潰',
+    },
+}
\ No newline at end of file
diff --git a/UI-Project/src/layout/MainErpView.vue b/UI-Project/src/layout/MainErpView.vue
new file mode 100644
index 0000000..2d71852
--- /dev/null
+++ b/UI-Project/src/layout/MainErpView.vue
@@ -0,0 +1,377 @@
+<script setup>
+import useUserInfoStore from '@/stores/userInfo'
+import userInfo from '@/stores/userInfo'
+import request from '@/utils/request'
+import {ElMessage} from 'element-plus'
+import {ref, watch, onMounted } from 'vue'
+import deepClone from '@/utils/deepClone'
+import { useRouter } from 'vue-router';  
+import { useI18n } from 'vue-i18n'
+const userData = ref(null)
+let menuList = $ref([])
+const { t } = useI18n()
+  let language = ref(localStorage.getItem('lang') || 'zh')
+const store = userInfo()
+const isCollapse = ref(false);  
+// const { $i18n } = useI18n(); // 鑾峰彇 i18n 瀹炰緥  
+const router = useRouter()
+const userStore = useUserInfoStore()
+// const user = userStore.user.userName
+
+let userInfoStr = window.localStorage.getItem('userInfo')
+console.log(userInfoStr);
+// const userInfoStr = localStorage.getItem('userInfo');  
+// let userInfo = userInfoStr.user.token;  
+let token = userInfo; // 鎻愬彇 token  
+// 閫�鍑虹櫥褰曟柟娉�  
+function quit() {  
+  // localStorage.removeItem('token'); 
+  store.$patch({
+              user: null,
+              })
+  router.push('/login')  
+}
+onMounted(() => {  
+  const storedData = localStorage.getItem('userData');  
+  if (storedData) {  
+    userData.value = JSON.parse(storedData);  
+  } else {  
+    console.log('No data found in localStorage.');  
+  }  
+   menuList = userData.value.menus
+  console.log(menuList); // 鎵撳嵃 menus 鏁扮粍  
+}); 
+
+//   function replaceChineseWithEnglish(menuData) {  
+//       // 瀹氫箟涓嫳鏂囧鐓у叧绯诲璞�
+//        const translation  = {  
+//           '涓婄墖鏈�': '小褌芯谢 蟹邪谐褉褍蟹泻懈',  
+//           '鎺扮墖/璇嗗埆': '袪邪蟹谢芯屑/懈写械薪褌懈褎懈泻邪褑懈褟',  
+//           '鍗у紡缂撳瓨': ' 袚芯褉懈蟹芯薪褌邪谢褜薪褘泄 斜褍褎械褉',  
+//           '纾ㄨ竟鍓嶅崸寮忕紦瀛�': '袚芯褉懈蟹芯薪褌邪谢褜薪褘泄 斜褍褎械褉 锌械褉械写 褕谢懈褎芯胁泻芯泄',  
+//           '涓嬬墖鍗у紡缂撳瓨': '袚芯褉懈蟹芯薪褌邪谢褜薪褘泄 斜褍褎械褉 褋褌械泻谢邪 褉邪蟹谐褉褍蟹泻懈',  
+//           '纾ㄨ竟锛堝喎鍔犲伐锛�': '楔谢懈褎芯胁邪褌褜 泻褉邪褟 (褏芯谢芯写薪邪褟 芯斜褉邪斜芯褌泻邪)',  
+//           '1绾跨(杈�(鍐峰姞宸�)': '楔谢懈褎芯胁邪褌褜 泻褉邪褟 1 谢懈薪懈懈 (褏芯谢芯写薪邪褟 芯斜褉邪斜芯褌泻邪)',  
+//           '2绾跨(杈�(鍐峰姞宸�)': '楔谢懈褎芯胁邪褌褜 泻褉邪褟 2 谢懈薪懈懈 (褏芯谢芯写薪邪褟 芯斜褉邪斜芯褌泻邪)',  
+//           '澶х悊鐗囩': '袘褍褎械褉薪邪褟 褋懈褋褌械屑邪',  
+//           '閽㈠寲': '袟邪泻邪谢泻邪',  
+//           '閽㈠寲鍓�': '袩械褉械写 蟹邪泻邪谢泻懈',  
+//           '閽㈠寲鍚�': '袩芯褋谢械 蟹邪泻邪谢泻懈',  
+//           '涓嬬墖鍙�': '小褌芯谢 褉邪蟹谐褉褍蟹泻懈',  
+//           '绯荤粺绠$悊': '校锌褉邪胁谢械薪懈械 褋懈褋褌械屑芯泄',  
+//           '鐢ㄦ埛绠$悊': '校锌褉邪胁谢械薪懈械 锌芯谢褜蟹芯胁邪褌械谢械屑',  
+//           '鏉冮檺绠$悊': '校锌褉邪胁谢械薪懈械 锌芯谢薪芯屑芯褔懈褟屑懈',  
+//           '瑙掕壊绠$悊': '校锌褉邪胁谢械薪懈械 褉芯谢褜褞',  
+//      };  
+//   menuData.forEach(menu => {  
+//     menu.menuName = translation[menu.menuName] || menu.menuName;  
+//     // if (menu.children) {  
+//       menu.children && menu.children.forEach(submenu => {  
+//         submenu.menuName = translation[submenu.menuName] || submenu.menuName;  
+//       });  
+//     // }  
+//   });  
+// }
+const menu = ref(null)
+let indexKey = ref(null)
+
+function handleOpen(key) {
+  indexKey.value = key
+}
+watch(
+    indexKey,
+    (newVal, oldVal) => {
+      if (oldVal !== newVal && oldVal !== null) {
+        menu.value.close(oldVal)
+      }
+    },
+    {deep: true}
+)
+
+router.beforeEach((to, from) => {
+  //return false
+})
+
+let openFlag = $ref(null)
+//鍘熷鑿滃崟鎵撳紑
+const openMenu = (menu_id) => {
+  if (menu_id === openFlag) {
+    openFlag = null
+  } else {
+    openFlag = menu_id
+  }
+}
+function toggleCollapse() {  
+  isCollapse.value = !isCollapse.value;  
+} 
+</script>
+ 
+<template>
+  <div id="all">
+    <el-container>
+      <el-header>
+        <div style="height: 100%;width: 100%;display: flex;background-color: #fff;">
+          <img src="../assets/northGlass.ico"
+               alt=""
+               @click="toggleCollapse"
+               style="max-width: 100%;max-height: 100%">
+          <h3 style="margin: 1rem  ;font-weight: bold;width: 33vw;"> {{ $t('main.titleFirst') }}{{ userName }}{{ $t('main.titleLast') }}</h3>
+          <span style="height: 70%;width: 78vw;margin-top: 1rem;">
+            <!-- <el-button class="sys-quit"
+                       @click="quit"
+                       round>
+              <el-icon size="large">
+                <SwitchButton size=""/>{{ $t('main.quit') }}
+              </el-icon>
+            </el-button> -->
+            <el-button class="sys-quit"
+                       @click="quit"
+                       round>
+              <el-icon size="large">
+                <SwitchButton size=""/>{{ $t('main.quit') }}
+              </el-icon>
+            </el-button>
+            <!-- <div class="header-left">
+              <el-button @click="toggleCollapse" style="height: 30px;">  
+               <el-icon><Expand /></el-icon>
+              </el-button>  
+          </div> -->
+          </span>
+        </div>
+      </el-header>
+      <div id="line"></div>
+      <el-container>
+      <el-aside :width="isCollapse ? '0px' : '200px'" style="background-color: #fff;">
+        <el-row :span="20">
+            <el-menu :default-active="activePath" class="el-menu-vertical-demo" >
+              <div class="menu">
+            <div v-for="items in menuList">
+              <div class='menu_title' v-show="!isCollapse"
+                   @click="openMenu(items.menu_id)">
+                <span>鈽�</span>
+                {{ items.menu_name }}
+              </div>
+              <ul class='enter-x-left'
+                  v-show="openFlag==items.menu_id">
+                <li v-for="page in items.pages"
+                    style="margin-bottom:2px">
+                  <router-link :to="{path:page.page_url}">
+                    {{ page.page_name }}
+                  </router-link>
+                  </li>
+                  </ul>
+                  </div>
+                  </div>
+            </el-menu>
+          </el-row>
+</el-aside>
+<el-main>
+          <div id="main">
+            <router-view></router-view>
+          </div>
+        </el-main>
+      </el-container>
+    </el-container>
+  </div>
+</template>
+ 
+<style scoped>
+
+.el-menu-vertical-demo:not(.el-menu--collapse) {
+  width: 200px;
+  min-height: 400px;
+  text-align: left;
+
+}
+
+
+
+
+#all {
+  background-color: #eee;
+  height: 100%;
+}
+
+.el-container {
+  height: 100vh;
+  width: 99vw;
+}
+
+* {
+  padding: 0;
+  margin: 0;
+}
+
+:deep(.sys-quit) {
+  float: right;
+  margin-right: 1rem;
+  width: 5rem;
+}
+
+/* 妯嚎 */
+#line {
+  float: right;
+  width: 100%;
+  height: 1px;
+  /* margin-top: 0.5em; */
+  margin-bottom: 0.5em;
+  background: #d4c4c4;
+  position: relative;
+  text-align: center;
+}
+
+:deep(span) {
+  margin-right: 0;
+}
+
+.el-collapse {
+  font-size: 16px;
+  font-weight: bold;
+}
+
+#main {
+  width: 99%;
+  float: right;
+  height: 99%;
+  background-color: #fff;
+}
+
+.menu {
+  width: 138px;
+  height: 33px;
+  line-height: 25px;
+
+  color: #000000;
+  font-size: 16px;
+  padding-left: 15px;
+  padding-right: 2px;
+}
+
+ul {
+  height: auto;
+  margin: 1px auto;
+  text-align: center;
+}
+
+ul li {
+  height: 28px;
+  width: 180px;
+  line-height: 30px;
+  /* background: rgb(128, 128, 128); */
+  color: #000000;
+  padding-left: 36px;
+  cursor: pointer;
+  overflow: hidden;
+  text-align: left;
+  /* border-radius:8px; */
+  /*   outline: none; */
+
+  /* background: #5CADFE; */
+  /* box-shadow: 0 8px 16px 0 rgba(0,0,0,0), 0 6px 5px 0 rgba(0,0,0,0.19); */
+}
+
+ul li:hover {
+  /* background:#5CADFE ; */
+  color: #ffffff;
+}
+
+ul li a {
+  text-decoration: none;
+  color: #000000;
+  font-size: 14px;
+}
+ul li a:hover {
+  color: #1087ff;
+}
+
+.item_divider {
+  width: 118px;
+  height: 0px;
+  /* background-color: white;
+  opacity: 0.8; */
+  margin-bottom: 2px;
+}
+
+.item a {
+  width: 138px;
+  height: 35px;
+  display: block;
+  /* text-align: justify; */
+  text-decoration: none;
+  color: white;
+  font-size: 14px;
+  text-decoration: none;
+}
+
+.menu_title {
+  width: 180px;
+  /* white-space: nowrap;  
+  overflow: hidden;  
+  text-overflow: ellipsis;   */
+
+  height: 45px;
+  line-height: 55px;
+  /* background: #fafafa; */
+  color: rgb(43, 42, 42);
+  font-size: 17px;
+  padding-left: 15px;
+  transition: all 0.3s ease;
+  cursor: pointer;
+  position: relative;
+  font-weight: bold;
+  overflow: hidden;
+}
+
+.menu_title:hover {
+  /* background: #dedede; */
+  color: #3b9af9;
+}
+
+.indicator {
+  display: block;
+  width: 40px;
+  height: 35px;
+  font-weight: bold;
+  position: absolute;
+  right: 0px;
+  top: 0px;
+  transition: all 0.3s ease;
+  text-align: center;
+}
+
+/* 鍔ㄧ敾鏁堟灉 */
+.enter-x-left {
+  z-index: 9;
+  opacity: 0;
+  animation: enter-x-left 0.4s ease-in-out 0.3s;
+  animation-fill-mode: forwards;
+  transform: translateX(-50px);
+  transition: all 0.3s ease;
+}
+
+.enter-x-left:nth-child(1) {
+  animation-delay: 0.1s;
+}
+
+.enter-x-left:nth-child(2) {
+  animation-delay: 0.2s;
+}
+
+.enter-x-left:nth-child(3) {
+  animation-delay: 0.3s;
+}
+
+.enter-x-left:nth-child(4) {
+  animation-delay: 0.4s;
+}
+@keyframes enter-x-left {
+  to {
+    opacity: 1;
+    transform: translateX(0);
+  }
+}
+.header-left{
+  margin-left: -350px;
+}
+</style>
+
diff --git a/UI-Project/src/main.js b/UI-Project/src/main.js
new file mode 100644
index 0000000..276e058
--- /dev/null
+++ b/UI-Project/src/main.js
@@ -0,0 +1,36 @@
+import './assets/main.css'
+ 
+import { createApp } from 'vue'
+import { createPinia } from 'pinia'
+import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
+import App from './App.vue'
+import router from './router'
+import ElementPlus from 'element-plus'
+import 'element-plus/dist/index.css'
+import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
+import VXETable from 'vxe-table'
+import 'vxe-table/lib/style.css'
+import i18n from '@/lang'
+// import Echarts from "vue-echarts"
+import * as echarts from "echarts"
+// echarts.registerMap('china', china)
+// Vue.prototype.$echarts = echarts
+// app.component("v-chart", Echarts)
+// app.config.globalProperties.$echarts = echarts
+import * as ElementPlusIconsVue from '@element-plus/icons-vue'
+
+const app = createApp(App)
+for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
+  app.component(key, component)
+}
+const pinia = createPinia()
+pinia.use(piniaPluginPersistedstate )
+app.use(VXETable)
+app.use(pinia)
+app.use(router)
+// app.use(ElementPlus)
+app.use(ElementPlus,{
+    locale: zhCn,
+})
+app.use(i18n)
+app.mount('#app')
diff --git a/UI-Project/src/router/index.js b/UI-Project/src/router/index.js
new file mode 100644
index 0000000..b616bc5
--- /dev/null
+++ b/UI-Project/src/router/index.js
@@ -0,0 +1,90 @@
+import {createRouter, createWebHashHistory} from 'vue-router'
+// import i18n from '@/utils/lang'
+// import User from '../views/sys/User.vue'
+// import Role from '../views/sys/Role.vue'
+// import Menu from '../views/sys/Menu.vue'
+
+const router = createRouter({
+  history: createWebHashHistory(),
+  routes: [
+    {
+      path: '/',
+      name: 'home',
+      //component: HomeView
+      component: () => import('../views/LoginView.vue')
+    },
+    {
+      path: '/login',
+      name: 'login',
+      component: () => import('../views/LoginView.vue')
+    },
+    {
+      path: '/main',
+      name: 'main',
+      component: () => import('../layout/MainErpView.vue'),
+      children:[
+        
+        
+        {
+          path: 'Temperedlayout',
+          name: 'Temperedlayout',
+          component: () => import('../views/TL/Temperedlayout/Temperedlayout.vue'),
+          children:[
+            {
+             path: 'selectLayout',
+              name: 'selectLayout',
+              component: () => import('../views/TL/Temperedlayout/Temperedlayout.vue'),
+            }
+         ]
+        },
+  
+/*----------- 绯荤粺绠$悊 ----------------*/
+{
+  path: 'User',
+  name: 'user',
+  component: () => import('../views/User/user.vue'),
+  children:[
+    {
+      path: '/User/userlist',
+      name: 'userlist',
+      component: () => import('../views/User/userlist.vue')
+    },
+    // {
+    //   path: '/User/rolelist',
+    //   name: 'rolelist',
+    //   component: () => import('../views/User/rolelist.vue')
+    // },
+    {
+      path: '/User/permissions',
+      name: 'permissions',
+      component: () => import('../views/User/permissions.vue')
+    },
+    {
+      path: '/User/menu',
+      name: 'menu',
+      component: () => import('../views/User/menu.vue')
+    },
+    {
+      path: '/User/page',
+      name: 'page',
+      component: () => import('../views/User/page.vue')
+    }
+  ]
+ },
+     
+        {
+          path: '',
+          redirect: '/User/userlist'
+        }
+      ]
+    },
+    {
+      path: '/register',
+      name: 'register',
+      component: () => import('../views/RegisterView.vue')
+    }
+    
+  ]
+})
+
+export default router
diff --git a/UI-Project/src/stores/counter.js b/UI-Project/src/stores/counter.js
new file mode 100644
index 0000000..b6757ba
--- /dev/null
+++ b/UI-Project/src/stores/counter.js
@@ -0,0 +1,12 @@
+import { ref, computed } from 'vue'
+import { defineStore } from 'pinia'
+
+export const useCounterStore = defineStore('counter', () => {
+  const count = ref(0)
+  const doubleCount = computed(() => count.value * 2)
+  function increment() {
+    count.value++
+  }
+
+  return { count, doubleCount, increment }
+})
diff --git a/UI-Project/src/stores/sd/product/productGlassType.js b/UI-Project/src/stores/sd/product/productGlassType.js
new file mode 100644
index 0000000..c22e810
--- /dev/null
+++ b/UI-Project/src/stores/sd/product/productGlassType.js
@@ -0,0 +1,11 @@
+import {defineStore} from 'pinia'
+import {ref} from "vue";
+
+export  default defineStore("productGlassType",{
+    state: () =>{
+        let GlassType=$ref(['',''])
+        return {
+            GlassType
+        }
+    }
+})
\ No newline at end of file
diff --git a/UI-Project/src/stores/tableData.js b/UI-Project/src/stores/tableData.js
new file mode 100644
index 0000000..fd4d78a
--- /dev/null
+++ b/UI-Project/src/stores/tableData.js
@@ -0,0 +1,225 @@
+// tableData.js
+
+import { ref } from 'vue';
+
+export const tableData = ref([
+  {
+    location: '1',
+    type: 'Type A',
+    length: '100',
+    height: '50',
+    thickness: '10',
+    quantity: '5',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },
+  {
+    location: '2',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 0
+  },
+  {
+    location: '3',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },
+  {
+    location: '4',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },
+  {
+    location: '5',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },
+  {
+    location: '1',
+    type: 'Type A',
+    length: '100',
+    height: '50',
+    thickness: '10',
+    quantity: '5',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },
+  {
+    location: '2',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 0
+  },
+  {
+    location: '3',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },
+  {
+    location: '4',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },
+  {
+    location: '5',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },{
+    location: '1',
+    type: 'Type A',
+    length: '100',
+    height: '50',
+    thickness: '10',
+    quantity: '5',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },
+  {
+    location: '2',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 0
+  },
+  {
+    location: '3',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },
+  {
+    location: '4',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },
+  {
+    location: '5',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },{
+    location: '1',
+    type: 'Type A',
+    length: '100',
+    height: '50',
+    thickness: '10',
+    quantity: '5',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },
+  {
+    location: '2',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 0
+  },
+  {
+    location: '3',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },
+  {
+    location: '4',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },
+  {
+    location: '5',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  }
+  // Add more data as needed
+]);
diff --git a/UI-Project/src/stores/userInfo.js b/UI-Project/src/stores/userInfo.js
new file mode 100644
index 0000000..bfae4e8
--- /dev/null
+++ b/UI-Project/src/stores/userInfo.js
@@ -0,0 +1,19 @@
+import {defineStore} from 'pinia'
+import {ref} from "vue";
+// import {createWebSocket, global_callback1} from "@/utils/webSocket";
+
+export  default defineStore("userInfo",{
+    state: () =>{
+        let user=ref(null)
+        return {
+            user
+        }
+    },
+    actions:{
+        // createWebSocket(){
+        //     createWebSocket(global_callback1)
+        // }
+
+    },
+    persist: true//鏁版嵁鎸佷箙鍖栵紝闃叉鍒锋柊鏁版嵁娑堝け
+})
\ No newline at end of file
diff --git a/UI-Project/src/utils/WebSocketService.js b/UI-Project/src/utils/WebSocketService.js
new file mode 100644
index 0000000..bfcfe35
--- /dev/null
+++ b/UI-Project/src/utils/WebSocketService.js
@@ -0,0 +1,50 @@
+// WebSocketService.js
+
+let socket = null;
+export const initializeWebSocket = (socketUrl, messageHandler) => {
+  let messages='' ;
+    if (typeof WebSocket === "undefined") {
+      console.log("Your browser does not support WebSocket");
+      return null;
+    }
+  
+    const socket = new WebSocket(socketUrl);
+  
+    socket.onopen = function () {
+      console.log("WebSocket is now open");
+    };
+  
+    socket.onmessage = (msg) => {
+      if (!msg.data) {
+        return;
+      }
+      const isLastChunk = msg.data.endsWith('<END>');
+      //鏄惁涓烘渶鍚庝竴鍧楁秷鎭�
+      messages += msg.data;
+      if(isLastChunk||msg.data.length<50000) {
+        messages= messages.replace('<END>', '');
+        const obj = JSON.parse(messages);
+        messages='';
+        
+      // 璋冪敤娑堟伅澶勭悊鍑芥暟锛屽皢鏁版嵁浼犻�掔粰 Vue 缁勪欢
+      if (messageHandler) {
+        messageHandler(obj);
+      }
+      }
+      
+      
+
+  
+      
+    };
+  
+    return socket;
+  };
+  
+
+  export const closeWebSocket = (socket) => {
+    if (socket && socket.readyState === WebSocket.OPEN) {
+        socket.close();
+        console.log("WebSocket connection closed");
+    }
+};
\ No newline at end of file
diff --git a/UI-Project/src/utils/api.js b/UI-Project/src/utils/api.js
new file mode 100644
index 0000000..886ffde
--- /dev/null
+++ b/UI-Project/src/utils/api.js
@@ -0,0 +1,205 @@
+// src/services/api.js
+import request from '../utils/request';
+import { ElMessage } from 'element-plus';
+
+ // Replace with your actual backend base URL
+
+// Function to find list of raw usages
+const BASE_URL = 'glassStorage/api/rawUsage';
+const taskBASE_URL = 'glassStorage/api/storageTask';
+
+export const findTasks = () => {
+  const url = `glassStorage/api/storageTask/findTasks`;
+  const options = {
+    method: 'get',
+    url,
+    json: true,
+    
+  };
+ 
+  return new Promise((resolve, reject) => {
+    request(options, (error, response, body) => {
+      if (error) {
+        reject(new Error(error.message));
+      } else {
+        resolve(body);
+      }
+    });
+  });
+};
+
+
+
+export const findList = (params) => {
+  const url = `${BASE_URL}/findList`;
+  const options = {
+    method: 'post',
+    url,
+    json: true,
+    body: params
+  };
+
+  return new Promise((resolve, reject) => {
+    request(options, (error, response, body) => {
+      if (error) {
+        reject(new Error(error.message));
+      } else {
+        resolve(body);
+      }
+    });
+  });
+};
+
+// Function to find raw usage by ID
+export const findById = (id) => {
+  const url = `${BASE_URL}/${id}`;
+  const options = {
+    method: 'get',
+    url,
+    json: true
+  };
+
+  return new Promise((resolve, reject) => {
+    request(options, (error, response, body) => {
+      if (error) {
+        reject(new Error(error.message));
+      } else {
+        resolve(body);
+      }
+    });
+  });
+};
+
+// Function to insert a new raw usage
+export const insertRawUsage = (rawUsage) => {
+  const url = `${BASE_URL}`;
+  const options = {
+    method: 'post',
+    url,
+    json: true,
+    body: rawUsage
+  };
+
+  return new Promise((resolve, reject) => {
+    request(options, (error, response, body) => {
+      if (error) {
+        reject(new Error(error.message));
+      } else {
+        resolve(body);
+      }
+    });
+  });
+};
+
+
+export const updateRawUsage = async (rawUsage) => {
+  try {
+    const response = await request.post(`${BASE_URL}/updaterawUsage`, rawUsage);
+    ElMessage.success('淇敼鎴愬姛');
+    return response.data;
+  } catch (error) {
+    ElMessage.error('淇敼澶辫触');
+    throw error;
+  }
+};
+
+export const deleteRawUsage = async (id) => {
+  try {
+    const response = await request.post(`${BASE_URL}/id`, id);
+    ElMessage.success('鍒犻櫎鍘熷浣跨敤鏁版嵁鎴愬姛');
+    return response.data;
+  } catch (error) {
+    ElMessage.error('鍒犻櫎鍘熷浣跨敤鏁版嵁澶辫触');
+    throw error;
+  }
+};
+
+export const inStorage = async (RawUsageAndShelfRack) => {
+  try {
+    const response = await request.post(`${BASE_URL}/inStorage`, RawUsageAndShelfRack);
+    ElMessage.success('鍏ュ簱鎿嶄綔鎴愬姛');
+    return response.data;
+  } catch (error) {
+    ElMessage.error('鍏ュ簱鎿嶄綔澶辫触');
+    throw error;
+  }
+};
+
+export const outStorage = async (RawUsageAndShelfRack) => {
+  try {
+    const response = await request.post(`${BASE_URL}/outStorage`, RawUsageAndShelfRack);
+    ElMessage.success('鍑哄簱鎿嶄綔鎴愬姛');
+    return response.data;
+  } catch (error) {
+    ElMessage.error('鍑哄簱鎿嶄綔澶辫触');
+    throw error;
+  }
+};
+
+
+
+export const taskUpdate = async (task) => {
+  try {
+    const response = await request.post(`${taskBASE_URL}/taskUpdate`, task);
+
+    return response.data;
+  } catch (error) {
+ 
+    throw error;
+  }
+};
+
+
+
+
+
+
+const API_URL = 'glassStorage/api/shelfRack';  // Adjust this based on your actual API URL
+
+export const shelfRackfindList = (params) => {
+  return request.post(`${API_URL}/findList`, params)
+    .then(response => response.data)
+    .catch(error => {
+      throw error;  // Handle errors appropriately in your frontend
+    });
+};
+
+export const shelfRackfindById = (id) => {
+  return request.get(`${API_URL}/${id}`)
+    .then(response => response.data)
+    .catch(error => {
+      throw error;
+    });
+};
+
+export const insertShelfRack = (shelfRack) => {
+  return request.post(`${API_URL}`, shelfRack)
+    .then(response => response.data)
+    .catch(error => {
+      throw error;
+    });
+};
+
+export const updateShelfRack = (shelfRack) => {
+  return request.put(`${API_URL}`, shelfRack)
+    .then(response => response.data)
+    .catch(error => {
+      throw error;
+    });
+};
+
+export const shelfRackdeleteById = (id) => {
+  return request.delete(`${API_URL}/${id}`)
+    .then(response => response.data)
+    .catch(error => {
+      throw error;
+    });
+};
+
+export const findShelfRack = () => {
+  return request.get(`${API_URL}/findshelfrack`)
+    .then(response => response.data)
+    .catch(error => {
+      throw error;
+    });
+};
\ No newline at end of file
diff --git a/UI-Project/src/utils/constants.js b/UI-Project/src/utils/constants.js
new file mode 100644
index 0000000..8a09532
--- /dev/null
+++ b/UI-Project/src/utils/constants.js
@@ -0,0 +1,4 @@
+//  export const WebSocketHost = "192.168.1.199";
+export const WebSocketHost = "10.153.19.29";
+// export const WebSocketHost = "127.0.0.1";
+export const host = "8081";
\ No newline at end of file
diff --git a/UI-Project/src/utils/deepClone.js b/UI-Project/src/utils/deepClone.js
new file mode 100644
index 0000000..7ee207f
--- /dev/null
+++ b/UI-Project/src/utils/deepClone.js
@@ -0,0 +1,16 @@
+//娣卞害鎷疯礉锛屼娇鏁版嵁杩涜缁戝畾鏄剧ず
+export default  function deepClone(obj){
+    // 瀵瑰父瑙佺殑鈥滈潪鈥濆�硷紝鐩存帴杩斿洖鍘熸潵鍊�
+    if([null, undefined, NaN, false].includes(obj)) return obj;
+    if(typeof obj !== "object" && typeof obj !== 'function') {
+        //鍘熷绫诲瀷鐩存帴杩斿洖
+        return obj;
+    }
+    var o = Array.isArray(obj) ? [] : {};
+    for(let i in obj) {
+        if(obj.hasOwnProperty(i)){
+            o[i] = typeof obj[i] === "object" ? deepClone(obj[i]) : obj[i];
+        }
+    }
+    return o;
+}
\ No newline at end of file
diff --git a/UI-Project/src/utils/request.js b/UI-Project/src/utils/request.js
new file mode 100644
index 0000000..35f97cb
--- /dev/null
+++ b/UI-Project/src/utils/request.js
@@ -0,0 +1,48 @@
+import axios from 'axios'
+import config from '../../config';
+import useUserInfoStore from '@/stores/userInfo'
+const userStore=useUserInfoStore()
+const request = axios.create({
+    baseURL: `http://${config.serverUrl}`,  // 娉ㄦ剰锛侊紒 杩欓噷鏄叏灞�缁熶竴鍔犱笂浜� 鍚庣鎺ュ彛鍓嶇紑 鍓嶇紑锛屽悗绔繀椤昏繘琛岃法鍩熼厤缃紒
+    timeout: 30000
+})
+ 
+//
+ 
+// request 鎷︽埅鍣�
+// 鍙互鑷姹傚彂閫佸墠瀵硅姹傚仛涓�浜涘鐞�
+// 姣斿缁熶竴鍔爐oken锛屽璇锋眰鍙傛暟缁熶竴鍔犲瘑
+request.interceptors.request.use(config => {
+    config.headers['Content-Type'] = 'application/json;charset=utf-8';
+    if(userStore.user){
+        config.headers['token'] = userStore.user.token;
+    }
+      // 璁剧疆璇锋眰澶�
+    return config
+}, error => {
+    return Promise.reject(error)
+});
+ 
+// response 鎷︽埅鍣�
+// 鍙互鍦ㄦ帴鍙e搷搴斿悗缁熶竴澶勭悊缁撴灉
+request.interceptors.response.use(
+    response => {
+        let res = response.data;
+        // 濡傛灉鏄繑鍥炵殑鏂囦欢
+        if (response.config.responseType === 'blob') {
+            return res
+        }
+        // 鍏煎鏈嶅姟绔繑鍥炵殑瀛楃涓叉暟鎹�
+        if (typeof res === 'string') {
+            res = res ? JSON.parse(res) : res
+        }
+        return res;
+    },
+    error => {
+        console.log('err' + error) // for debug
+        return Promise.reject(error)
+    }
+)
+ 
+ 
+export default request
\ No newline at end of file
diff --git a/UI-Project/src/utils/unloadrequest.js b/UI-Project/src/utils/unloadrequest.js
new file mode 100644
index 0000000..563257f
--- /dev/null
+++ b/UI-Project/src/utils/unloadrequest.js
@@ -0,0 +1,49 @@
+import axios from 'axios'
+import config from '../../config';
+import useUserInfoStore from '@/stores/userInfo'
+const userStore=useUserInfoStore()
+const unloadrequest = axios.create({
+    baseURL: `http://${config.serverUrl2}`,  // 娉ㄦ剰锛侊紒 杩欓噷鏄叏灞�缁熶竴鍔犱笂浜� 鍚庣鎺ュ彛鍓嶇紑 鍓嶇紑锛屽悗绔繀椤昏繘琛岃法鍩熼厤缃紒
+    timeout: 5000
+})
+
+//
+
+// request 鎷︽埅鍣�
+// 鍙互鑷姹傚彂閫佸墠瀵硅姹傚仛涓�浜涘鐞�
+// 姣斿缁熶竴鍔爐oken锛屽璇锋眰鍙傛暟缁熶竴鍔犲瘑
+unloadrequest.interceptors.request.use(config => {
+    config.headers['Content-Type'] = 'application/json;charset=utf-8';
+    if(userStore.user){
+        config.headers['token'] = userStore.user.token;
+    }
+      // 璁剧疆璇锋眰澶�
+    return config
+}, error => {
+    return Promise.reject(error)
+});
+
+// response 鎷︽埅鍣�
+// 鍙互鍦ㄦ帴鍙e搷搴斿悗缁熶竴澶勭悊缁撴灉
+unloadrequest.interceptors.response.use(
+    response => {
+        let res = response.data;
+        // 濡傛灉鏄繑鍥炵殑鏂囦欢
+        if (response.config.responseType === 'blob') {
+            return res
+        }
+        // 鍏煎鏈嶅姟绔繑鍥炵殑瀛楃涓叉暟鎹�
+        if (typeof res === 'string') {
+            res = res ? JSON.parse(res) : res
+        }
+        return res;
+    },
+    error => {
+        console.log('err' + error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+
+export default unloadrequest
+
diff --git a/UI-Project/src/views/HomeView.vue b/UI-Project/src/views/HomeView.vue
new file mode 100644
index 0000000..cdec3b1
--- /dev/null
+++ b/UI-Project/src/views/HomeView.vue
@@ -0,0 +1,27 @@
+<script setup>
+import { useRouter, useRoute } from 'vue-router'
+
+// function global_callback(msg) {
+//   console.log("websocket鐨勫洖璋冨嚱鏁版敹鍒版湇鍔″櫒淇℃伅锛�" + JSON.stringify(msg));
+//   // console.log("鏀跺埌鏈嶅姟鍣ㄤ俊鎭細" + msg);
+// }
+// function close(){
+//  closeSock();
+
+// }
+// function sendMessage(){
+//   sendSock("123")
+// }
+// function createSocket(){
+//   createWebSocket(global_callback);
+// }
+// </script>
+
+
+<template>
+ <div class="mainDiv">
+   <button @click="createSocket">鍒涘缓</button>
+   <button @click="sendMessage">鍙戦��</button>
+   <button @click="close">鍏抽棴</button>
+ </div>
+</template>
diff --git a/UI-Project/src/views/LoginView.vue b/UI-Project/src/views/LoginView.vue
new file mode 100644
index 0000000..7694d17
--- /dev/null
+++ b/UI-Project/src/views/LoginView.vue
@@ -0,0 +1,243 @@
+<script lang="ts" setup>
+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 request from '@/utils/request'
+import userInfo from '@/stores/userInfo'
+import { useI18n } from 'vue-i18n'
+const store = userInfo()
+let ruleFormRef = ref<FormInstance>()
+const router = useRouter()
+const route = useRoute()
+const { t } = useI18n()
+let language = ref(localStorage.getItem('lang') || 'zh')
+const changeLanguage = () =>{
+  localStorage.setItem('lang',language.value)
+  location.reload()
+}
+const userForm = reactive({
+  account: '',
+  password: '',
+})
+ 
+if (typeof route.query.id != 'undefined') {
+  userForm.userId = <string>route.query.id
+}
+ 
+const validateUser = (rule: any, value: any, callback: any) => {
+  if (value === '') {
+    callback(new Error(t('login.userErr')))
+  } else {
+    callback()
+  }
+}
+ 
+const validatePass = (rule: any, value: any, callback: any) => {
+  if (value === '') {
+    callback(new Error(t('login.pwErr')))
+  } else {
+    callback()
+  }
+}
+ 
+const rules = reactive<FormRules<typeof userForm>>({
+  userId: [{validator: validateUser, trigger: 'blur'}],
+  pass: [{validator: validatePass, trigger: 'blur'}],
+})
+ 
+//鐧婚檰鏂规硶
+const submitForm = (formEl: FormInstance | undefined) => {
+  store.$patch({
+              user: null,
+              })
+  if (!formEl) return
+  formEl.validate((valid) => {
+    if (valid) {
+      loginLoadings.value = true
+      request
+          .post('/deviceInteraction/account/selectAccount', userForm)
+          .then((res) => {
+            if (res['code'] == 200) {
+              localStorage.setItem('userData', JSON.stringify(res.data));
+              store.$patch({user: res.data})
+              router.push('/main')
+              ElMessage.success(t('login.loginSuccessful'))
+            } else {
+              // ElMessage.error(res['msg'])
+              store.$patch({
+              user: null,
+              })
+              loginLoadings.value = false
+              return false
+            }
+          })
+          .catch((error) => {
+            ElMessage.error(t('main.connectErr'))
+            store.$patch({
+              user: null,
+              })
+            loginLoadings.value = false
+            return false
+          })
+    }
+  })
+}
+ 
+function register() {
+  router.push({
+    path: '/register',
+  })
+}
+ 
+let loginLoadings = ref(false)
+let registerLoadings = ref(false)
+ 
+const keyDown = (e) => {
+  // 鍥炶溅鍒欐墽琛岀櫥褰曟柟娉� enter閿殑ASCII鏄�13
+  if (e.keyCode == 13 || e.keyCode == 100) {
+    submitForm(ruleFormRef.value)
+  }
+}
+onMounted(() => {
+  window.addEventListener('keydown', keyDown)
+})
+onUnmounted(() => {
+  window.removeEventListener('keydown', keyDown)
+})
+</script>
+ 
+<template>
+  <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);">
+          {{ $t('northglassMESsystem') }}
+        </div>
+      </div>
+      <div id="div-login">
+        <!--璇█鍒囨崲鎸夐挳-->
+        <el-select
+            @change="changeLanguage"
+            v-model="language"
+            placeholder=" "
+            style="float: right;width: 9rem">
+          <el-option value="zh"  label="涓枃" />
+          <el-option value="en"  label="袪褍褋褋泻懈泄 褟蟹褘泻" />
+        </el-select>
+        <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;">{{ $t('login.user') }}</div>
+            <el-form-item prop="userId">
+              <el-input style="width: 340px;"
+                        v-model="userForm.account"
+                        type="text"
+                        autocomplete="off"
+                        :prefix-icon="Avatar"
+                        :placeholder="$t('login.userErr')"/>
+            </el-form-item>
+            <div style="color: rgba(78, 89, 105, 1);margin-bottom: 10px;">{{ $t('login.password') }}</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="$t('login.pwErr')"
+                       />
+            </el-form-item>
+            <el-form-item id="submitForm">
+              <el-button :loading="loginLoadings"
+                         type="primary"
+                         native-type="submit"
+                         style="width: 80px;"
+                         @click="submitForm(ruleFormRef)"
+                         @keyup.enter.native="keyDown(e)"
+                         plain>{{ $t('login.login') }}
+              </el-button>
+              <!-- <el-button :loading="registerLoadings"
+                         type="primary"
+                         @click="register"
+                         plain>{{ $t('login.register') }}
+              </el-button> -->
+ 
+            </el-form-item>
+          </div>
+        </el-form>
+      </div>
+    </div>
+ 
+  </div>
+</template>
+ 
+<style scoped>
+.mainDiv {
+  overflow: hidden;
+  min-width: 718px;
+  background-image: url('../../src/assets/background.jpg');
+}
+ 
+#main-login {
+  margin: 150px auto 0 auto;
+  height: 70vh;
+  width: 80vw;
+}
+ 
+#img-div {
+  width: 55%;
+  height: 100%;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  float: left;
+}
+ 
+#img-pic {
+  max-height: 90%;
+  max-width: 100%;
+}
+ 
+#div-login {
+  margin-top: 5%;
+  /* margin-top: 20%; */
+  /* margin-left: 650px; */
+  background-color: #fff;
+  float: right;
+  width: 40%;
+  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);
+}
+ 
+#center {
+  margin-top: -30px;
+}
+ 
+.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;
+}
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/Permissions/permissionslist.vue b/UI-Project/src/views/Permissions/permissionslist.vue
new file mode 100644
index 0000000..42a0399
--- /dev/null
+++ b/UI-Project/src/views/Permissions/permissionslist.vue
@@ -0,0 +1,419 @@
+<script lang="ts" setup>
+import {Search} from "@element-plus/icons-vue";
+import {reactive} from "vue";
+import {useRouter} from "vue-router"
+const router = useRouter()
+const value1 = ref(true)
+const add = ref(false)
+const adda = ref(false)
+import { ref } from 'vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+
+const changer = ref(false)
+
+const tableData = [
+  {
+    id: '1',
+    long: '1005',
+    wide: '183.6',
+    thick: '1991',
+    time: '2024/4/1',
+    typea: '1',
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    time: '2024/4/1',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    time: '2024/4/1',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+]
+
+const data= reactive({
+   tableList:[]//table鏁版嵁
+})
+
+const beforeChange = () => {
+  return new Promise((resolve) => {
+    setTimeout(() => {
+      ElMessage.success("淇敼鎴愬姛锛�");
+      return resolve(true);
+    }, 1000);
+  });
+};
+const open = () => {
+  ElMessageBox.confirm(
+    '鏄惁鍒犻櫎璇ユ潯淇℃伅?',
+    '鎻愮ず',
+    {
+      confirmButtonText: '鏄�',
+      cancelButtonText: '鍙栨秷',
+      type: 'warning',
+    }
+  )
+    .then(() => {
+      ElMessage({
+        type: 'success',
+        message: '鍒犻櫎鎴愬姛锛�',
+      })
+    })
+    .catch(() => {
+      ElMessage({
+        type: 'info',
+        message: '鍒犻櫎澶辫触',
+      })
+    })
+}
+const getTableRow = (row,type) =>{
+  switch (type) {
+    case 'edit' :{
+      //alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑缂栬緫淇℃伅')
+      router.push({path: '/main/returns/createReturns', query: { ReturnID: 'TH24010101' }})
+      break
+    }
+    case 'delete':{
+      alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑鍒犻櫎淇℃伅')
+      break
+    }
+  }
+}
+const dialogForm = () => {
+  ElMessageBox.confirm(
+    '鏄惁閲嶇疆瀵嗙爜?',
+    '鎻愮ず',
+    {
+      confirmButtonText: '鏄�',
+      cancelButtonText: '鍙栨秷',
+      type: 'warning',
+    }
+  )
+  .then(() => {
+    // this.boxa = true
+    // this.box = false
+      
+    })
+}
+const empty = [
+   { id: '',
+    long: '',
+    wide: '',
+    thick: '',
+    type: '',
+    typea: '',}
+
+]
+const options = [
+  {
+    value: 'Option1',
+    label: 'admin',
+  },
+  {
+    value: 'Option2',
+    label: 'ueser2',
+  },
+  {
+    value: 'Option3',
+    label: 'ueser3',
+  },
+]
+const optionsa = [
+  {
+    valuea: 'Option1',
+    labela: '姝e父',
+  },
+  {
+    valuea: 'Option2',
+    labela: '绂佺敤',
+  },
+]
+// const delete = () => {
+//   ElMessageBox.confirm(
+//     '鏄惁鍒犻櫎璇ユ潯淇℃伅?',
+//     '鎻愮ず',
+//     {
+//       confirmButtonText: '鏄�',
+//       cancelButtonText: '鍙栨秷',
+//       type: 'warning',
+//     }
+//   )
+//   .then(() => {
+      
+//     })
+// }
+const gridOptions = reactive({
+  border:  "full",//琛ㄦ牸鍔犺竟妗�
+  keepSource: true,//淇濇寔婧愭暟鎹�
+  align: 'center',//鏂囧瓧灞呬腑
+  stripe:true,//鏂戦┈绾�
+  rowConfig: {isCurrent: true, isHover: true,height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
+  id: 'OrderList',
+  showFooter: true,//鏄剧ず鑴�
+  printConfig: {},
+  importConfig: {},
+  exportConfig: {},
+  scrollY:{ enabled: true },//寮�鍚櫄鎷熸粴鍔�
+  showOverflow:true,
+  columnConfig: {
+    resizable: true,
+    useKey: true
+  },
+  filterConfig: {   //绛涢�夐厤缃」
+    remote: true
+  },
+  customConfig: {
+    storage: true
+  },
+  editConfig: {
+    trigger: 'click',
+    mode: 'row',
+    showStatus: true
+  },
+  data:  [
+    {
+      'id': '1',
+      'long': '5',
+      'wide': '1005',
+      'thick': '183.6',
+    }
+  ],
+})
+
+</script>
+
+<template>
+  <div>
+        <el-button type="primary" style="margin-top: 10px;margin-left: 10px;"  size="mini" id="searchButton" @click="add = true">娣诲姞鏉冮檺</el-button>
+        <el-input
+          clearable
+          placeholder="璇疯緭鍏ュ叧閿瓧"
+          size="mini"
+          style="margin-right: 20px; width: 200px;margin-left: 10px;margin-top: 10px;"
+        />
+        <el-button type="primary" size="mini" @click="searchSubmit" style="margin-top: 10px;">鏌ヨ</el-button >
+        <el-button type="primary" size="mini" @click="empty" style="margin-top: 10px;">娓呯┖</el-button>
+    <el-card style="flex: 1;margin-left: 10px;margin-top: 15px;" v-loading="loading">
+      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 200px;">
+        <el-table height="100%" ref="table" 
+        @selection-change="handleSelectionChange"
+        :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
+          <el-table-column prop="id" align="center" label="瑙掕壊" min-width="80" />
+          <el-table-column prop="long" align="center" label="鏉冮檺鎻忚堪" min-width="120" />
+          <el-table-column prop="wide" align="center" label="鏉冮檺鍊�" min-width="120" />
+          <el-table-column prop="time" align="center" label="鍒涘缓鏃堕棿" min-width="120" />
+        <el-table-column align="center"  prop="changer" label="鏄惁婵�娲�"  min-width="140">
+           <template #default="scope">
+           <el-switch  v-model="scope.row.changer"  :before-change="beforeChange" />
+         </template>
+         </el-table-column>
+          <el-table-column fixed="right" label="鎿嶄綔" align="center" width="200">
+            <template #default>
+              <el-button size="mini" type="text" plain  @click="adda = true">缂栬緫</el-button>
+              <el-button size="mini" type="text" plain  @click="delete">鍒犻櫎</el-button>
+            </template>
+        </el-table-column>
+        </el-table>
+      </div>
+    </el-card>
+   
+  </div>
+  
+  <el-dialog v-model="add" top="23vh" width="37%" title="娣诲姞鏉冮檺" >
+    <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
+            <el-form  size="mini" label-width="150px">
+      <el-form label-width="100px" label-position="right">
+        <el-row style="margin-top: 10px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+              <el-form-item label="瑙掕壊锛�" :required="true" style="width: 25vw;">
+                <el-select
+               v-model="value"
+               clearable
+               placeholder="璇烽�夋嫨瑙掕壊"
+               style="width: 330px"
+             >
+               <el-option
+            v-for="item in options"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          />
+        </el-select>
+              </el-form-item></div></div>
+          </el-col>
+        </el-row>
+        <el-row style="margin-top: 10px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+              <el-form-item label="鏉冮檺锛�" :required="true" style="width: 25vw;">
+                <el-select
+               v-model="value"
+               clearable
+               placeholder="璇烽�夋嫨鏉冮檺"
+               style="width: 330px"
+             >
+               <el-option
+            v-for="item in options"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          />
+        </el-select>
+              </el-form-item></div></div>
+          </el-col>
+        </el-row>
+        <el-row style="margin-top: 10px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+              <el-form-item label="鏄惁婵�娲�" :required="true" style="width: 25vw;">
+                <el-select
+               v-model="value"
+               clearable
+               placeholder="璇烽�夋嫨鏄惁婵�娲�"
+               style="width: 330px"
+             >
+               <el-option
+            v-for="item in optionsa"
+            :key="item.valuea"
+            :label="item.labela"
+            :value="item.valuea"
+          />
+        </el-select>
+              </el-form-item></div></div>
+          </el-col>
+        </el-row>
+        </el-form>
+            </el-form>
+          </div>
+    <template #footer>
+      <div id="dialog-footer">
+        <el-button type="primary" @click="getTableRow('edit')">
+          纭
+        </el-button>
+        <el-button @click="add = false">鍙栨秷</el-button>
+      </div>
+    </template>
+  </el-dialog>
+  <el-dialog v-model="adda" top="23vh" width="37%" title="淇敼鏉冮檺" >
+    <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
+            <el-form  size="mini" label-width="150px">
+      <el-form label-width="100px" label-position="right">
+        <el-row style="margin-top: 10px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+              <el-form-item label="瑙掕壊锛�" :required="true" style="width: 25vw;">
+                <el-select
+               v-model="value"
+               clearable
+               placeholder="璇烽�夋嫨瑙掕壊"
+               style="width: 330px"
+             >
+               <el-option
+            v-for="item in options"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          />
+        </el-select>
+              </el-form-item></div></div>
+          </el-col>
+        </el-row>
+        <el-row style="margin-top: 10px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+              <el-form-item label="鏉冮檺锛�" :required="true" style="width: 25vw;">
+                <el-select
+               v-model="value"
+               clearable
+               placeholder="璇烽�夋嫨鏉冮檺"
+               style="width: 330px"
+             >
+               <el-option
+            v-for="item in options"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          />
+        </el-select>
+              </el-form-item></div></div>
+          </el-col>
+        </el-row>
+        <el-row style="margin-top: 10px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+              <el-form-item label="鏄惁婵�娲�" :required="true" style="width: 25vw;">
+                <el-select
+               v-model="value"
+               clearable
+               placeholder="璇烽�夋嫨鏄惁婵�娲�"
+               style="width: 330px"
+             >
+               <el-option
+            v-for="item in optionsa"
+            :key="item.valuea"
+            :label="item.labela"
+            :value="item.valuea"
+          />
+        </el-select>
+              </el-form-item></div></div>
+          </el-col>
+        </el-row>
+        </el-form>
+            </el-form>
+          </div>
+    <template #footer>
+      <div id="dialog-footer">
+        <el-button type="primary" @click="getTableRow('edit')">
+          纭
+        </el-button>
+        <el-button @click="adda = false">鍙栨秷</el-button>
+      </div>
+    </template>
+  </el-dialog>
+</template>
+
+<style scoped>
+
+#dt { display:block; float:left;line-height: 20px;margin-left: 100px;}
+#dta { display:block; float:left;line-height: 20px;margin-left: 80%;}
+#dialog-footer{
+  text-align: center;
+  margin-top: -15px;
+}
+#message{
+  text-align: center;
+  align-items: center;
+  color: black;
+   width: 200px;
+   height: 100px;
+   background-color: #337ecc;
+   margin-left: 28%;
+}
+#awatch{
+  height: 450px;
+}
+#main-body{
+  margin-top: -20px;
+  margin-left: 300px;
+}
+#main-bodya{
+  margin-top: -10px;
+  margin-left: 100px;
+}
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/RegisterView.vue b/UI-Project/src/views/RegisterView.vue
new file mode 100644
index 0000000..9879f09
--- /dev/null
+++ b/UI-Project/src/views/RegisterView.vue
@@ -0,0 +1,235 @@
+<script setup lang="ts">
+  import {useRouter,useRoute} from 'vue-router'
+  import { reactive, ref } from 'vue'
+  import type { FormProps,FormInstance, FormRules } from 'element-plus'
+  import {ElMessage,ElMessageBox} from "element-plus";
+  import request from "@/utils/request";
+import { Lock,Avatar } from '@element-plus/icons-vue'
+  // import {Avatar, UserFilled} from "@element-plus/icons-vue";
+
+  import { useI18n } from 'vue-i18n'
+  const { t } = useI18n()
+  let language = ref(localStorage.getItem('lang') || 'zh')
+
+  const router = useRouter()
+  const route = useRoute()
+  let loginLoadings= ref(false)
+  const labelPosition = ref<FormProps['labelPosition']>('right')
+
+  //娉ㄥ唽鐢ㄦ埛鍙傛暟
+  const register = reactive({
+    userName: '',
+    // loginName: '',
+    passWord: '',
+    confirmPassword:''
+  })
+
+  /*鏂规硶*/
+  const checkName = (rule: any, value: any, callback: any) => {
+    if (value.trim() === '') {
+      callback(new Error(t('login.namea')))
+    }else if(value.length>16){
+      callback(new Error(t('login.len')))
+    }else{
+      callback()
+    }
+  }
+
+  const checkPassword = (rule: any, value: any, callback: any) => {
+    if (value.trim() === '') {
+      callback(new Error(t('login.passnull')))
+    }else if(value.length>16 || value.length<6){
+      callback(new Error(t('login.leng')))
+    }else{
+      callback()
+    }
+  }
+
+  const checkConfirmPassword = (rule: any, value: any, callback: any) => {
+    if (value.trim() === '') {
+      callback(new Error(t('login.spwn')))
+    }else if(value !== register.passWord){
+      callback(new Error(t('login.depass')))
+    }else if(value.length>16 || value.length<6){
+      callback(new Error(t('login.leng')))
+    }else{
+      callback()
+    }
+  }
+
+  const ruleFormRef  = ref<FormInstance>()
+  const rules = reactive<FormRules<typeof register>>({
+    userName: [{ validator: checkName, trigger: 'blur' }],
+    passWord:[{ validator: checkPassword, trigger: 'blur' }],
+    confirmPassword:[{ validator: checkConfirmPassword, trigger: 'blur' }],
+    // loginName: [{ validator: validateString, trigger: 'blur' }]
+  })
+
+  const submitForm = (formEl: FormInstance | undefined) => {
+    if (!formEl) return
+    formEl.validate((valid) => {
+      if (valid) {
+        loginLoadings.value=true
+        request.post('/user/register',
+            register).then((res) => {
+          if(res['code']==200){
+            console.log(res.data)
+            ElMessageBox.alert(
+                `<strong>鐢ㄦ埛:<i style="color: #1890FF;">'${res.data.userName}</i>'
+                 <br>璐﹀彿ID:<i style="color: #1890FF;">${res.data.loginName}</i> </strong>`,
+                '娉ㄥ唽鎻愮ず锛�',
+                {
+                  dangerouslyUseHTMLString: true,
+                  confirmButtonText: '鐧婚檰',
+                  center: true,
+                }
+            ).then(()=>{
+              router.push({
+                path:'/login',
+                query: {
+                  id: res.data.loginName
+                }
+              })
+            })
+
+            ElMessage.success(t('register.registerSuccessful'))
+            loginLoadings.value=false
+          } else {
+            ElMessage.error(res['msg'])
+            return false
+          }
+        }).catch(error => {
+          ElMessage.error(t('main.connectErr'))
+          loginLoadings.value=false
+          return false
+        })
+      }
+    })
+  }
+  const toLogin = () => {
+              router.push({
+                path:'/login',
+              })
+  }
+</script>
+
+<template>
+  
+  <div class="mainDiv" >
+    <div id="main-login">
+     <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);">
+        {{ $t('northglassMESsystem') }}
+      </div>
+    </div>
+    <div id="div-login">
+        <el-form
+            @submit.native.prevent
+            ref="ruleFormRef"
+            :model="register"
+            status-icon
+            :rules="rules"
+            label-width="75px"
+        >
+          <div id="title">{{ $t('register.newuserregister') }}</div>
+        <div id="center">
+            <!-- <div style="color: rgba(78, 89, 105, 1);margin-bottom: 10px;">濮撳悕</div> -->
+          <el-form-item prop="userName" :label="$t('register.name')">
+            <el-input
+            style="width: 200px;"
+                v-model="register.userName"
+                type="text"
+                autocomplete="off"
+                :prefix-icon="Avatar"
+                :placeholder="$t('register.inputname')"
+            />
+          </el-form-item>
+            <!-- <div style="color: rgba(78, 89, 105, 1);margin-bottom: 10px;">瀵嗙爜</div> -->
+          <el-form-item prop="passWord" :label="$t('register.password')">
+            <el-input
+            style="width: 200px;"
+                v-model="register.passWord"
+                type="password"
+                autocomplete="off"
+                :prefix-icon="Lock"
+                :placeholder="$t('register.pwErr')"
+                show-password
+            />
+          </el-form-item>
+            <!-- <div style="color: rgba(78, 89, 105, 1);margin-bottom: 10px;">纭瀵嗙爜</div> -->
+          <el-form-item prop="confirmPassword" :label="$t('register.passwordation')">
+            <el-input
+            style="width: 200px;"
+                v-model="register.confirmPassword" 
+                type="password"
+                :prefix-icon="Lock"
+                autocomplete="off"
+                show-password
+                :placeholder="$t('register.pwErration')"
+            />
+          </el-form-item>
+          <el-form-item id="submitForm">
+            <el-button
+            :loading="loginLoadings"
+                type="primary"
+                @click="submitForm(ruleFormRef)"
+                plain
+            >{{ $t('register.registration') }}
+            </el-button>
+            <el-button
+                type="primary"
+                @click="toLogin"
+                plain
+            >{{ $t('register.false') }}
+            </el-button>
+
+          </el-form-item>
+        </div>
+        </el-form>
+      </div>
+</div>
+</div>
+</template>
+
+<style scoped>
+#div-login{
+  margin-top: 5%;
+  /* margin-top: 20%; */
+  /* margin-left: 650px; */
+  background-color: #fff;
+  border-radius: 4px;
+  float: right;
+  width: 40%;
+  height: 60%;
+  min-width: 318px;
+  box-shadow: 0 8px 16px 0 rgba(0,0,0,0), 0 6px 5px 0 rgba(0,0,0,0.19);
+}
+
+#center{
+  margin-top: 45px;
+  margin-left: 100px;
+}
+.mainDiv{
+  overflow: hidden;
+  min-width: 718px;
+  background-image: url("../../src/assets/background.jpg");
+
+}
+#main-login{
+  margin: 150px auto 0 auto;
+  height: 70vh;
+  width: 80vw;
+}
+#submitForm{
+  margin-top: 30px;
+  margin-left: -10px;
+}
+#title{
+  font-size: 25px;
+  text-align: center;
+  margin-top: 10px;
+}
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/TL/Temperedlayout/Temperedlayout.vue b/UI-Project/src/views/TL/Temperedlayout/Temperedlayout.vue
new file mode 100644
index 0000000..e1edb80
--- /dev/null
+++ b/UI-Project/src/views/TL/Temperedlayout/Temperedlayout.vue
@@ -0,0 +1,212 @@
+<!--  鐗╂枡璧勬枡  -->
+
+
+<script setup>
+import { ref } from "vue";
+import { ArrowLeftBold, ArrowRight, Search } from "@element-plus/icons-vue";
+import request from "@/utils/request";
+import deepClone from "@/utils/deepClone";
+import { ElMessage } from "element-plus";
+import { useRouter } from "vue-router";
+
+
+const router = useRouter()
+let indexFlag = $ref(1)
+function changeRouter(index) {
+  indexFlag = index
+}
+
+
+</script>
+
+<script>
+export default {
+  mounted() {
+    //鑾峰彇鏁版嵁
+    var data="ProcessId="+"P24032508";
+    request.get("/TidyUpGlassModule/SelectTerritoryInfo?"+data).then((res) => {
+      if (res.code == 200) {
+        var StoveCount=0;
+        var temperid;
+        for(var i=0;i<res.data.length;i++){
+          if (temperid != res.data[i].layoutid) {
+            StoveCount++;
+            temperid=res.data[i].layoutid;
+          }
+        }   
+        // console.log(res.data);
+        this.CanvaDraws("mycanvas",res.data,StoveCount);
+        
+      } else {
+        ElMessage.warning(res.msg)
+        router.push("/login")
+      }
+    });
+    // request.get("/TidyUpGlassModule/CurrentCutTerritory").then((res) => {
+    //   if (res.code == 200) {
+    //     console.log(res.data);  
+    //   } else {
+    //     ElMessage.warning(res.msg)
+    //     router.push("/login")
+    //   }
+    // });
+
+    
+
+  },
+  methods: {
+    //Canva(id,鍩虹鏁版嵁,椤甸潰闀匡細瀹為檯闀匡紝鏄剧ず琛屽唴鐗堝浘鏁帮紝 )
+    //鍩虹鏁版嵁锛氬疄闄呯倝闀�,瀹為檯鐐夊, 灏忕墖X杞�, 灏忕墖y杞�, 灏忕墖闀�, 灏忕墖瀹斤紝鏄剧ず鏁版嵁锛堝昂瀵�,ID,娴佺▼鍗″彿,鐗堝浘鍙凤級
+    CanvaDraws(id,Datas,StoveCount) {
+        //var StoveCount=43;//鐐夋暟
+        var ArrangementMode='linefeed';//鎺掑竷鏂瑰紡锛歭inefeed(鎹㈣) /Wholeline  鏁磋
+        var RowMaxCount=3;//姣忚鏈�澶氭樉绀虹殑鍥炬暟
+        var StoveWidth=3000; //瀹為檯鐐夊 2850
+        var StoveLength=5500;//瀹為檯鐐夐暱 5000
+        var StoveColor='#CFC8C5';//鐐夊瓙鑳屾櫙棰滆壊
+        
+
+        var StoveIntervalX=30; //椤甸潰姣忎竴鐐変箣闂寸殑闂磋窛X  px
+        var StoveIntervalY=50; //椤甸潰姣忎竴鐐変箣闂寸殑闂磋窛Y  px
+
+        var HtmlWidth=1800;   //椤甸潰妯悜
+        //var actualWidth=12000;//椤甸潰妯悜鎵�瀵瑰簲鐨勫疄闄呴暱搴�
+        var actualWidth=StoveWidth*RowMaxCount;//椤甸潰妯悜鎵�瀵瑰簲鐨勫疄闄呴暱搴�
+
+        var Bli = actualWidth / (HtmlWidth-StoveIntervalX*RowMaxCount);//姣斾緥锛氬疄闄呴暱搴m/椤甸潰闀垮害px
+
+        var StoveCross=StoveWidth/Bli;   //椤甸潰鐐夊瓙妯悜 鍍忕礌
+        var StoveVertical=StoveLength/Bli;//椤甸潰鐐夊瓙绾靛悜 鍍忕礌
+
+        var Font1=(StoveCross*0.05);
+        var Font2=(StoveCross*0.028);
+        // var TerritoryWidth=dataTempered.loadwidth; //瀹為檯鐗堝浘瀹�
+        //   var TerritoryLength=dataTempered.loadlength;//瀹為檯鐗堝浘闀�
+        //   var TerritoryColor='#0DB637';//鐗堝浘鑳屾櫙棰滆壊
+
+        //   var TerritoryCross=TerritoryWidth/Bli;   //椤甸潰鐗堝浘妯悜 鍍忕礌
+        //   var TerritoryVertical=TerritoryLength/Bli;//椤甸潰鐗堝浘绾靛悜 鍍忕礌
+        console.log(Font1);
+        
+        var canva = this.$refs[id];
+        var content = canva.getContext('2d');
+        canva.width = HtmlWidth;
+        canva.height = StoveCount%RowMaxCount==0?((StoveVertical+StoveIntervalY)*(StoveCount/RowMaxCount)):((StoveVertical+StoveIntervalY)*(StoveCount/RowMaxCount+1));
+        //console.log(StoveCount%RowMaxCount==0?((StoveVertical+StoveIntervalY)*(StoveCount/RowMaxCount)):((StoveVertical+StoveIntervalY)*(StoveCount/RowMaxCount+1)) );
+        var temperid;//鍒濆鐗堝浘
+        var Xlayout = 0; //鐐夊瓙X杞磋捣鐐�
+        var Ylayout = StoveIntervalY; //鐐夊瓙Y杞磋捣鐐�
+        var layoutCount = 0;//鐗堝浘鏁�
+        var row=0;
+        for (var i = 0; i < Datas.length; i++) {
+          var dataTempered = Datas[i];
+
+          var TerritoryWidth=dataTempered.loadwidth; //瀹為檯鐗堝浘瀹�
+          var TerritoryLength=dataTempered.loadlength;//瀹為檯鐗堝浘闀�
+          var TerritoryColor='#0DB637';//鐗堝浘鑳屾櫙棰滆壊
+
+          var TerritoryCross=TerritoryWidth/Bli;   //椤甸潰鐗堝浘妯悜 鍍忕礌
+          var TerritoryVertical=TerritoryLength/Bli;//椤甸潰鐗堝浘绾靛悜 鍍忕礌
+
+          if (temperid != dataTempered.layoutid) {
+            //鐢荤増鍥�  鏇存敼鍩虹鍊嶆暟
+            if(layoutCount>0){
+              Xlayout += StoveCross + StoveIntervalX;
+              if (layoutCount %RowMaxCount== 0) {
+                //鎹㈣
+                Ylayout += StoveVertical+StoveIntervalY;
+                Xlayout=0;
+                row++;
+              }
+            }
+            temperid=dataTempered.layoutid;
+            layoutCount++;
+            content.font ='bold '+Font1+'px Arial' ; //鏂囧瓧鏍峰紡锛氬姞绮� 16鍍忕礌 瀛椾綋Arial
+            content.fillStyle = '#000000'; //瀛椾綋棰滆壊
+            content.textAlign = 'center'; //鏂囧瓧灞呬腑
+            content.fillText((dataTempered.layoutid), (StoveCross / 2+ Xlayout), 50/2+(StoveVertical+50)*row+10);
+            //鐐夊瓙
+            content.fillStyle = StoveColor;
+            content.fillRect(Xlayout, Ylayout, StoveCross, StoveVertical);
+            //鐗堝浘
+            content.fillStyle = TerritoryColor;
+            content.fillRect(Xlayout, Ylayout, TerritoryCross, TerritoryVertical);
+          }
+          
+          var Rx = dataTempered.xaxis / Bli + Xlayout;
+          var Ry = dataTempered.yaxis / Bli + Ylayout;
+          var Rwidth = dataTempered.width / Bli;
+          var Rheight = dataTempered.height / Bli;
+          var Xwidth;
+          var Xheight;
+          content.fillStyle = '#5CADFE';
+          if (dataTempered.rotateangle != 0) {
+            Xwidth = Rwidth;
+            Xheight = Rheight;
+          } else {
+            Xwidth = Rheight;
+            Xheight = Rwidth;
+          }
+          content.fillRect(Rx, Ry, Xwidth, Xheight);
+          content.font = 'bold '+Font2+'px Arial' ; //鏂囧瓧鏍峰紡锛氬姞绮� 16鍍忕礌 瀛椾綋Arial
+          content.fillStyle = '#000000'; //瀛椾綋棰滆壊
+          content.textAlign = 'center'; //鏂囧瓧灞呬腑
+
+          content.fillText(('鐗堝浘:'+dataTempered.layoutid+'-'+dataTempered.sort), (Xwidth / 2) + Rx, (Xheight) / 2 + Ry-Font2);
+          content.fillText((dataTempered.width + '  *  ' + dataTempered.height), (Xwidth / 2) + Rx, (Xheight) / 2 + Ry); //fillText閲岄潰鐨勫彲濉啓鐨勫��(鏂囨湰鍐呭, x鍧愭爣, y鍧愭爣, 鏂囨湰鏈�澶у搴�)
+          content.fillText((dataTempered.processid), (Xwidth / 2) + Rx, (Xheight) / 2 + Ry+Font2);
+          //content.rotate(30*Math.PI/180);
+          content.stroke();
+        }
+    }
+  }
+}
+
+
+</script>
+
+
+
+<template>
+  <div ref="content">
+    <canvas ref="mycanvas"></canvas>
+  </div>
+</template>
+
+<style scoped>
+#main {
+  width: 100%;
+  height: 100%;
+}
+
+
+
+#div-title {
+  height: 5%;
+  width: 100%;
+}
+
+#searchButton {
+  margin-top: -5px;
+  margin-left: 1rem;
+}
+
+#searchButton1 {
+  /* margin-left: 10rem; */
+}
+
+/*main-body鏍峰紡*/
+#main-body {
+  width: 99%;
+  height: 92%;
+  margin-top: 1%;
+}
+
+#select {
+  margin-left: 0.5rem;
+}
+
+:deep(.indexTag .el-breadcrumb__inner) {
+  color: #5CADFE !important;
+}
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/UnLoadGlass.rar b/UI-Project/src/views/UnLoadGlass.rar
new file mode 100644
index 0000000..a4932b3
--- /dev/null
+++ b/UI-Project/src/views/UnLoadGlass.rar
Binary files differ
diff --git a/UI-Project/src/views/UnLoadGlass.zip b/UI-Project/src/views/UnLoadGlass.zip
new file mode 100644
index 0000000..6435317
--- /dev/null
+++ b/UI-Project/src/views/UnLoadGlass.zip
Binary files differ
diff --git a/UI-Project/src/views/User/menu.vue b/UI-Project/src/views/User/menu.vue
new file mode 100644
index 0000000..70e15f5
--- /dev/null
+++ b/UI-Project/src/views/User/menu.vue
@@ -0,0 +1,264 @@
+<script setup>
+import {Search} from "@element-plus/icons-vue";
+import {reactive} from "vue";
+import {useRouter} from "vue-router"
+const router = useRouter()
+const add = ref(false)
+const adda = ref(false)
+import request from "@/utils/request"
+import { ref, onMounted } from "vue";
+// import { ref } from 'vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+  import { useI18n } from 'vue-i18n'
+  const { t } = useI18n()
+  let language = ref(localStorage.getItem('lang') || 'zh')
+//  import LanguageMixin from './lang/LanguageMixin'
+const selectedProjectNoa = ref(null); // 褰撳墠閫変腑鐨勮鑹� 
+// const options = ref<any[]>([]); // 涓嬫媺閫夐」鍒楄〃  
+  const userName = ref('');
+  const account = ref('');
+  const password = ref('');
+
+const tableData = ref([])
+const slot = ref('')
+request.post("/deviceInteraction/menu/findMenusAll").then((res) => {
+          if (res.code == 200) {
+          console.log(res.data);
+          tableData.value = res.data
+          } else {
+          ElMessage.warning(res.msg)
+        
+          }
+          });
+const titleSelectJsona = ref({
+  processType: [],
+ 
+})
+// const handleInputChangea = async (value: string) => {  
+//   if (value) {  
+//     await fetchOptionsa(value);  
+//   } else {  
+//     options.value = []; // 娓呯┖閫夐」鍒楄〃  
+//   }  
+// };  
+onMounted(() => {  
+  // 鍦ㄧ粍浠舵寕杞藉悗璋冪敤 fetchOptions('') 鏉ュ姞杞藉垵濮嬫暟鎹紙濡傛灉闇�瑕侊級  
+  fetchOptionsa('');  
+}); 
+  // 瑙掕壊涓嬫媺閫�  
+  const fetchOptionsa = async () => {  
+  try {  
+    // 鍙戦�佽姹傚埌鍚庣鎺ュ彛  
+    const response = await request.post('/deviceInteraction/role/findRolesAll');  
+    if (response.code === 200) {  
+    titleSelectJsona.value.processTypea = response.data;
+    console.log(response.data);
+ 
+    } else {  
+      ElMessage.warning(response.data);  
+    }  
+  } catch (error) {  
+    console.error('Error fetching options:', error);  
+  }  
+}; 
+// 澶勭悊缂栬緫鎸夐挳鐐瑰嚮  
+function handleEdit(row) {
+  window.localStorage.setItem('ids', row.id);
+  userName.value = row.userName;
+  if (row.roleList && row.roleList.length > 0) {
+    const firstRole = row.roleList[0];
+    selectedProjectNoa.value = firstRole.id; // 璁剧疆涓篒D锛岃�屼笉鏄痭ame  
+  }  
+  adda.value = true; // 鏄剧ず瀵硅瘽妗�  
+}
+
+function closeDialog(row) {
+     add.value = false;
+     userName.value = '';
+     nickName.value = '';
+     password.value = '';
+     selectedProjectNoa.value = '';
+}
+function closeDialoga(row) {
+     adda.value = false;
+     userName.value = '';
+     nickName.value = '';
+     password.value = '';
+}
+// 娣诲姞 
+const getTableRow = async () => {
+  try {
+    const response = await request.post('/deviceInteraction/account/addAccount', {
+      id: 0,
+      menuName: menuName.value,
+      menuNumber: menuNumber.value,
+      remark: passwremarkord.value,
+    }); 
+    if (response.code === 200) {
+      // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
+      ElMessage.success(response.message);
+      add.value = false;
+     tableData.value = response.data;
+    } else {
+      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+      ElMessage.error(response.message);
+    }
+  } catch (error) {
+    // 澶勭悊閿欒
+    console.error(error);
+  }
+};
+// 缂栬緫
+const getTableRowa = async () => {
+  let ids = window.localStorage.getItem('ids')
+  try {
+    const response = await request.post('/deviceInteraction/menu/updateMenu', {
+      account: account.value,
+      roleId: selectedProjectNoa.value,
+      userName: userName.value,
+      password: password.value,
+  }
+  ); 
+    if (response.code === 200) {
+      // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
+      ElMessage.success(response.message);
+      adda.value = false;
+     tableData.value = response.data;
+    } else {
+      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+      ElMessage.error(response.message);
+    }
+  } catch (error) {
+    // 澶勭悊閿欒
+    console.error(error);
+  }
+};
+// 鍒犻櫎 
+ const opena = async(row) => {
+  try {
+    const confirmResult = await ElMessageBox.confirm(  
+      t('customer.deusername'), 
+      t('customer.prompt'),  
+      {  
+        confirmButtonText: t('customer.yes'), 
+        cancelButtonText: t('customer.cancel'),
+        type: 'warning',  
+      } 
+    );
+    if (confirmResult === 'confirm') {  
+      // 鐢ㄦ埛鐐瑰嚮浜嗏�滄槸鈥濓紝鐜板湪璋冪敤鍒犻櫎鎺ュ彛  
+      const response = await request.post("/deviceInteraction/menu/deleteMenu",{
+        id: row.id
+      })
+    if (response.code === 200) {
+      ElMessage.success(response.message);
+      } else {  
+        // 鍒犻櫎澶辫触锛屾偍鍙互澶勭悊閿欒鎴栨樉绀洪敊璇俊鎭粰鐢ㄦ埛  
+      ElMessage.error(response.msg);
+        // alert('鍒犻櫎澶辫触锛�' + deleteResponse.message); 
+      }  
+    }  
+  } catch (error) {  
+    // 澶勭悊鍙兘鍑虹幇鐨勯敊璇紝姣斿 ElMessageBox 鎶涘嚭鐨勫紓甯哥瓑  
+    console.error('鍙戠敓閿欒:', error);  
+  }  
+};   
+
+</script>
+
+<template>
+  <div>
+     <el-button type="primary" style="margin-top: 10px;margin-left: 10px;"  size="mini" id="searchButton" @click="add = true">{{ $t('customer.addmenu') }}</el-button>
+    <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading">
+      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
+        <el-table height="500" ref="table" 
+        @selection-change="handleSelectionChange"
+        :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
+          <el-table-column prop="id" align="center" :label="$t('customer.id')" min-width="180" />
+          <el-table-column prop="menuName" align="center" :label="$t('customer.firstmenu')" min-width="180" />
+          <el-table-column fixed="right" :label="$t('customer.operate')" align="center" width="270">
+            <template #default="scope">
+              <el-button size="mini" type="text" plain @click="handleEdit(scope.row)">{{ $t('customer.edit') }}</el-button>
+              <el-button size="mini" type="text" plain @click="opena(scope.row)">{{ $t('customer.delete') }}</el-button>
+            </template>
+        </el-table-column>
+        </el-table>
+      </div>
+    </el-card>
+  </div>
+  <el-dialog v-model="add" top="23vh" width="37%" :title="$t('customer.addmenu')">
+    <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
+            <el-form  size="mini" label-width="150px">
+      <el-form label-width="100px" label-position="right">
+        <el-row style="margin-top: -15px;margin-bottom: -2px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+          <el-form-item :label="$t('customer.firstmenua')" :required="true" style="width: 25vw">
+                <el-input v-model="userName" autocomplete="off" :placeholder="$t('customer.infirstmenu')" />
+              </el-form-item></div></div>
+          
+          </el-col>
+        </el-row>
+        </el-form>
+            </el-form>
+          </div>
+    <template #footer>
+      <div id="dialog-footer">
+        <el-button type="primary" @click="getTableRow">
+          {{ $t('customer.sure') }}
+        </el-button>
+        <el-button @click="closeDialog">{{ $t('customer.cancel') }}</el-button>
+      </div>
+    </template>
+  </el-dialog> 
+  <el-dialog v-model="adda" top="23vh" width="37%" :title="$t('customer.editmenu')" >
+    <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
+            <el-form  size="mini" label-width="150px">
+      <el-form label-width="100px" label-position="right">
+        <el-row style="margin-top: -15px;margin-bottom: -2px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+          <el-form-item :label="$t('customer.firstmenua')" :required="true" style="width: 25vw">
+                <el-input v-model="userName" autocomplete="off" :placeholder="$t('customer.infirstmenu')" />
+              </el-form-item></div></div>
+          
+          </el-col>
+        </el-row>
+        </el-form>
+            </el-form>
+          </div>
+    <template #footer>
+      <div id="dialog-footer">
+        <el-button type="primary" @click="getTableRow">
+          {{ $t('customer.sure') }}
+        </el-button>
+        <el-button @click="closeDialog">{{ $t('customer.cancel') }}</el-button>
+      </div>
+    </template>
+  </el-dialog> 
+</template>
+
+<style scoped>
+
+#dt { display:block; float:left;line-height: 20px;margin-left: 100px;}
+#dta { display:block; float:left;line-height: 20px;margin-left: 80%;}
+#dialog-footer{
+  text-align: center;
+  margin-top: -15px;
+}
+#message{
+  text-align: center;
+  align-items: center;
+  color: black;
+   width: 200px;
+   height: 100px;
+   background-color: #337ecc;
+   margin-left: 28%;
+}
+#awatch{
+  height: 460px;
+  /* margin-top: -60px; */
+}
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/User/page.vue b/UI-Project/src/views/User/page.vue
new file mode 100644
index 0000000..170104e
--- /dev/null
+++ b/UI-Project/src/views/User/page.vue
@@ -0,0 +1,286 @@
+<script setup>
+import {Search} from "@element-plus/icons-vue";
+import {reactive} from "vue";
+import {useRouter} from "vue-router"
+const router = useRouter()
+const add = ref(false)
+const adda = ref(false)
+import request from "@/utils/request"
+import { ref, onMounted } from "vue";
+// import { ref } from 'vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+  import { useI18n } from 'vue-i18n'
+  const { t } = useI18n()
+  let language = ref(localStorage.getItem('lang') || 'zh')
+//  import LanguageMixin from './lang/LanguageMixin'
+const selectedProjectNoa = ref(null); // 褰撳墠閫変腑鐨勮鑹� 
+// const options = ref<any[]>([]); // 涓嬫媺閫夐」鍒楄〃  
+  const pageName = ref('');
+  const pageUrl = ref('');
+
+const tableData = ref([])
+const slot = ref('')
+request.post("/deviceInteraction/page/findPagesAll").then((res) => {
+          if (res.code == 200) {
+          console.log(res.data);
+          tableData.value = res.data
+          } else {
+          ElMessage.warning(res.msg)
+        
+          }
+          });
+const titleSelectJsona = ref({
+  processType: [],
+ 
+})
+// const handleInputChangea = async (value: string) => {  
+//   if (value) {  
+//     await fetchOptionsa(value);  
+//   } else {  
+//     options.value = []; // 娓呯┖閫夐」鍒楄〃  
+//   }  
+// };  
+onMounted(() => {  
+  // 鍦ㄧ粍浠舵寕杞藉悗璋冪敤 fetchOptions('') 鏉ュ姞杞藉垵濮嬫暟鎹紙濡傛灉闇�瑕侊級  
+  fetchOptionsa('');  
+}); 
+  // 瑙掕壊涓嬫媺閫�  
+  const fetchOptionsa = async () => {  
+  try {  
+    // 鍙戦�佽姹傚埌鍚庣鎺ュ彛  
+    const response = await request.post('/deviceInteraction/role/findRolesAll');  
+    if (response.code === 200) {  
+    titleSelectJsona.value.processTypea = response.data;
+    console.log(response.data);
+ 
+    } else {  
+      ElMessage.warning(response.data);  
+    }  
+  } catch (error) {  
+    console.error('Error fetching options:', error);  
+  }  
+}; 
+// 澶勭悊缂栬緫鎸夐挳鐐瑰嚮  
+function handleEdit(row) {
+  userName.value = row.userName;
+  window.localStorage.setItem('ids', row.id);
+  window.localStorage.setItem('pageNumber', row.pageNumber);
+  if (row.roleList && row.roleList.length > 0) {
+    const firstRole = row.roleList[0];
+    selectedProjectNoa.value = firstRole.id; // 璁剧疆涓篒D锛岃�屼笉鏄痭ame  
+  }  
+  adda.value = true; // 鏄剧ず瀵硅瘽妗�  
+}
+
+function closeDialog(row) {
+     add.value = false;
+     userName.value = '';
+     nickName.value = '';
+     password.value = '';
+     selectedProjectNoa.value = '';
+}
+function closeDialoga(row) {
+     adda.value = false;
+     userName.value = '';
+     nickName.value = '';
+     password.value = '';
+}
+// 娣诲姞 
+const getTableRow = async () => {
+  try {
+    const response = await request.post('/deviceInteraction/page/addPage', {
+      id: 0,
+      pageName: pageName.value,
+      pageNumber: '',
+      pageUrl: pageUrl.value,
+    }); 
+    if (response.code === 200) {
+      // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
+      ElMessage.success(response.message);
+      add.value = false;
+     tableData.value = response.data;
+    } else {
+      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+      ElMessage.error(response.message);
+    }
+  } catch (error) {
+    // 澶勭悊閿欒
+    console.error(error);
+  }
+};
+// 缂栬緫
+const getTable = async () => {
+  let ids = window.localStorage.getItem('ids')
+  let pageNumber = window.localStorage.getItem('pageNumber')
+  try {
+    const response = await request.post('/deviceInteraction/page/updatePage', {
+      id: ids,
+      pageName: pageName.value,
+      pageNumber: pageNumber,
+      pageUrl: pageUrl.value,
+  }
+  ); 
+    if (response.code === 200) {
+      // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
+      ElMessage.success(response.message);
+      adda.value = false;
+     tableData.value = response.data;
+    } else {
+      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+      ElMessage.error(response.message);
+    }
+  } catch (error) {
+    // 澶勭悊閿欒
+    console.error(error);
+  }
+};
+// 鍒犻櫎 
+ const opena = async(row) => {
+  try {
+    const confirmResult = await ElMessageBox.confirm(  
+      t('pagemenu.deusername'), 
+      t('pagemenu.prompt'),  
+      {  
+        confirmButtonText: t('pagemenu.yes'), 
+        cancelButtonText: t('pagemenu.cancel'),
+        type: 'warning',  
+      } 
+    );
+    if (confirmResult === 'confirm') {  
+      // 鐢ㄦ埛鐐瑰嚮浜嗏�滄槸鈥濓紝鐜板湪璋冪敤鍒犻櫎鎺ュ彛  
+      const response = await request.post("/deviceInteraction/page/deletePage",{
+        id: row.id
+      })
+    if (response.code === 200) {
+      ElMessage.success(response.message);
+      } else {  
+        // 鍒犻櫎澶辫触锛屾偍鍙互澶勭悊閿欒鎴栨樉绀洪敊璇俊鎭粰鐢ㄦ埛  
+      ElMessage.error(response.msg);
+        // alert('鍒犻櫎澶辫触锛�' + deleteResponse.message); 
+      }  
+    }  
+  } catch (error) {  
+    // 澶勭悊鍙兘鍑虹幇鐨勯敊璇紝姣斿 ElMessageBox 鎶涘嚭鐨勫紓甯哥瓑  
+    console.error('鍙戠敓閿欒:', error);  
+  }  
+};   
+
+</script>
+
+<template>
+  <div>
+     <el-button type="primary" style="margin-top: 10px;margin-left: 10px;"  size="mini" id="searchButton" @click="add = true">{{ $t('pagemenu.addmenu') }}</el-button>
+    <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading">
+      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
+        <el-table height="500" ref="table" 
+        @selection-change="handleSelectionChange"
+        :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
+          <el-table-column prop="id" align="center" :label="$t('pagemenu.id')" min-width="180" />
+          <el-table-column prop="pageName" align="center" :label="$t('pagemenu.firstmenu')" min-width="180" />
+          <el-table-column prop="pageUrl" align="center" :label="$t('pagemenu.url')" min-width="180" />
+          <el-table-column fixed="right" :label="$t('pagemenu.operate')" align="center" width="270">
+            <template #default="scope">
+              <el-button size="mini" type="text" plain @click="handleEdit(scope.row)">{{ $t('pagemenu.edit') }}</el-button>
+              <el-button size="mini" type="text" plain @click="opena(scope.row)">{{ $t('pagemenu.delete') }}</el-button>
+            </template>
+        </el-table-column>
+        </el-table>
+      </div>
+    </el-card>
+  </div>
+  <el-dialog v-model="add" top="23vh" width="37%" :title="$t('pagemenu.addmenu')">
+    <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
+            <el-form  size="mini" label-width="150px">
+      <el-form label-width="100px" label-position="right">
+        <el-row style="margin-top: -15px;margin-bottom: -2px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+          <el-form-item :label="$t('pagemenu.firstmenua')" :required="true" style="width: 25vw">
+                <el-input v-model="pageName" autocomplete="off" :placeholder="$t('pagemenu.infirstmenu')" />
+              </el-form-item></div></div>
+          
+          </el-col>
+        </el-row>
+        <el-row style="margin-top: 10px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+          <el-form-item :label="$t('pagemenu.urla')" :required="true" style="width: 25vw">
+                <el-input v-model="pageUrl" autocomplete="off" :placeholder="$t('pagemenu.inurl')" />
+              </el-form-item></div></div>
+          
+          </el-col>
+        </el-row>
+        </el-form>
+            </el-form>
+          </div>
+    <template #footer>
+      <div id="dialog-footer">
+        <el-button type="primary" @click="getTableRow">
+          {{ $t('pagemenu.sure') }}
+        </el-button>
+        <el-button @click="closeDialog">{{ $t('pagemenu.cancel') }}</el-button>
+      </div>
+    </template>
+  </el-dialog> 
+  <el-dialog v-model="adda" top="23vh" width="37%" :title="$t('pagemenu.editmenu')" >
+    <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
+            <el-form  size="mini" label-width="150px">
+      <el-form label-width="100px" label-position="right">
+        <el-row style="margin-top: -15px;margin-bottom: -2px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+          <el-form-item :label="$t('pagemenu.firstmenua')" :required="true" style="width: 25vw">
+                <el-input v-model="pageName" autocomplete="off" :placeholder="$t('pagemenu.infirstmenu')" />
+              </el-form-item></div></div>
+          
+          </el-col>
+        </el-row>
+        <el-row style="margin-top: 10px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+          <el-form-item :label="$t('pagemenu.urla')" :required="true" style="width: 25vw">
+                <el-input v-model="pageUrl" autocomplete="off" :placeholder="$t('pagemenu.inurl')" />
+              </el-form-item></div></div>
+          
+          </el-col>
+        </el-row>
+        </el-form>
+            </el-form>
+          </div>
+    <template #footer>
+      <div id="dialog-footer">
+        <el-button type="primary" @click="getTable">
+          {{ $t('pagemenu.sure') }}
+        </el-button>
+        <el-button @click="closeDialog">{{ $t('pagemenu.cancel') }}</el-button>
+      </div>
+    </template>
+  </el-dialog> 
+</template>
+
+<style scoped>
+
+#dt { display:block; float:left;line-height: 20px;margin-left: 100px;}
+#dta { display:block; float:left;line-height: 20px;margin-left: 80%;}
+#dialog-footer{
+  text-align: center;
+  margin-top: -15px;
+}
+#message{
+  text-align: center;
+  align-items: center;
+  color: black;
+   width: 200px;
+   height: 100px;
+   background-color: #337ecc;
+   margin-left: 28%;
+}
+#awatch{
+  height: 460px;
+  /* margin-top: -60px; */
+}
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/User/permissions.vue b/UI-Project/src/views/User/permissions.vue
new file mode 100644
index 0000000..0d5a7e4
--- /dev/null
+++ b/UI-Project/src/views/User/permissions.vue
@@ -0,0 +1,455 @@
+<script setup>
+import {Search} from "@element-plus/icons-vue";
+import {reactive} from "vue";
+import {useRouter} from "vue-router"
+const router = useRouter()
+const add = ref(false)
+const add1 = ref(false)
+const adda = ref(false)
+import request from "@/utils/request"
+import { ref, onMounted } from "vue";
+// import { ref } from 'vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+  import { useI18n } from 'vue-i18n'
+  const { t } = useI18n()
+  let language = ref(localStorage.getItem('lang') || 'zh')
+//  import LanguageMixin from './lang/LanguageMixin'
+const selectedProjectNoa = ref(null);
+const selectedProjectNoa1 = ref(null);
+const selectedProjectNoa2 = ref(null);
+const roleName = ref(null);
+// const options = ref<any[]>([]); // 涓嬫媺閫夐」鍒楄〃  
+  const userName = ref('');
+  const password = ref('');
+
+const tableData = ref([])
+const slot = ref('')
+request.post("/deviceInteraction/roleMenu/findRoleMenusAll").then((res) => {
+          if (res.code == 200) {
+          console.log(res.data);
+          tableData.value = res.data
+          } else {
+          ElMessage.warning(res.msg)
+          }
+          });
+const titleSelectJsona = ref({
+  processType: [],
+})
+const titleSelectJsona1 = ref({
+  processType1: [],
+})
+const titleSelectJsona2 = ref({
+  processType2: [],
+})
+onMounted(() => {  
+  fetchOptionsa('');
+  fetchOptionsa1('');
+  fetchOptionsa2('');
+}); 
+  // 瑙掕壊涓嬫媺閫�  
+  const fetchOptionsa = async () => {  
+  try {  
+    // 鍙戦�佽姹傚埌鍚庣鎺ュ彛  
+    const response = await request.post('/deviceInteraction/role/findRolesAll');  
+    if (response.code === 200) {  
+    titleSelectJsona.value.processTypea = response.data;
+    } else {  
+      ElMessage.warning(response.data);  
+    }  
+  } catch (error) {  
+    console.error('Error fetching options:', error);  
+  }  
+}; 
+  // 鑿滃崟涓嬫媺閫�  
+  const fetchOptionsa1 = async () => {  
+  try {  
+    // 鍙戦�佽姹傚埌鍚庣鎺ュ彛  
+    const response = await request.post('/deviceInteraction/menu/findMenusAll');  
+    if (response.code === 200) {  
+    titleSelectJsona1.value.processTypea1 = response.data;
+    } else {  
+      ElMessage.warning(response.data);  
+    }  
+  } catch (error) {  
+    console.error('Error fetching options:', error);  
+  }  
+}; 
+  // 椤甸潰涓嬫媺閫�  
+  const fetchOptionsa2 = async () => {  
+  try {  
+    // 鍙戦�佽姹傚埌鍚庣鎺ュ彛  
+    const response = await request.post('/deviceInteraction/page/findPagesAll');  
+    if (response.code === 200) {  
+    titleSelectJsona2.value.processTypea2 = response.data;
+    } else {  
+      ElMessage.warning(response.data);  
+    }  
+  } catch (error) {  
+    console.error('Error fetching options:', error);  
+  }  
+}; 
+// 澶勭悊缂栬緫鎸夐挳鐐瑰嚮  
+function handleEdit(row) {  
+  userName.value = row.userName;
+  if (row.roleList && row.roleList.length > 0) {  
+    const firstRole = row.roleList[0];  
+    selectedProjectNoa.value = firstRole.id; // 璁剧疆涓篒D锛岃�屼笉鏄痭ame  
+  }
+  adda.value = true; // 鏄剧ず瀵硅瘽妗�  
+  window.localStorage.setItem('id', row.id)
+
+} 
+
+function closeDialog(row) {
+     add.value = false;
+     userName.value = '';
+     nickName.value = '';
+     password.value = '';
+     selectedProjectNoa.value = '';
+}
+function closeDialoga(row) {
+     adda.value = false;
+     userName.value = '';
+     nickName.value = '';
+     password.value = '';
+}
+// 娣诲姞 
+const getTableRow = async () => {
+  try {
+    const response = await request.post('/deviceInteraction/roleMenu/addRoleMenu', {
+      id: 0,
+      menuSequence: 0,
+      roleId: selectedProjectNoa.value,
+      menuId: selectedProjectNoa1.value,
+      pageId: selectedProjectNoa2.value,
+    });
+    if (response.code === 200) {
+      ElMessage.success(response.message);
+      add.value = false;
+     tableData.value = response.data;
+    } else {
+      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+      ElMessage.error(response.message);
+    }
+  } catch (error) {
+    // 澶勭悊閿欒
+    console.error(error);
+  }
+};
+// 娣诲姞瑙掕壊
+const getTableRow1 = async () => {
+  try {
+    const response = await request.post('/deviceInteraction/role/addRole', {
+      id: 0,
+      remark: roleName.value,
+      roleName: roleName.value,
+      roleNumber: roleName.value,
+    });
+    if (response.code === 200) {
+      ElMessage.success(response.message);
+      add.value = false;
+     tableData.value = response.data;
+    } else {
+      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+      ElMessage.error(response.message);
+    }
+  } catch (error) {
+    // 澶勭悊閿欒
+    console.error(error);
+  }
+};
+// 缂栬緫
+const getTableRowa = async () => {
+  let id = window.localStorage.getItem('id')
+  try {
+    const response = await request.post('/loadGlass/sys/user/updateUser', {
+      id: id,
+      userName: userName.value,
+      roleList: [
+    {
+      id: selectedProjectNoa.value,
+      // roleKey: selectedProjectNoa.value.id,
+    }]
+  }
+  ); 
+    if (response.code === 200) {
+      // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
+      ElMessage.success(response.message);
+      adda.value = false;
+     tableData.value = response.data;
+    } else {
+      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+      ElMessage.error(response.message);
+    }
+  } catch (error) {
+    // 澶勭悊閿欒
+    console.error(error);
+  }
+};
+// 鍒犻櫎 
+ const opena = async(row) => {  
+  try {
+    const confirmResult = await ElMessageBox.confirm(  
+      t('delivery.derole'), 
+      t('delivery.prompt'),  
+      {  
+        confirmButtonText: t('delivery.yes'), 
+        cancelButtonText: t('delivery.cancel'),
+        type: 'warning',  
+      } 
+    );
+    if (confirmResult === 'confirm') {  
+      // 鐢ㄦ埛鐐瑰嚮浜嗏�滄槸鈥濓紝鐜板湪璋冪敤鍒犻櫎鎺ュ彛  
+      const response = await request.post("/deviceInteraction/roleMenu/deleteRoleMenu",{
+        id: row.id
+      })
+    if (response.code === 200) {
+      ElMessage.success(response.message);
+      } else {  
+        // 鍒犻櫎澶辫触锛屾偍鍙互澶勭悊閿欒鎴栨樉绀洪敊璇俊鎭粰鐢ㄦ埛  
+      ElMessage.error(response.msg);
+        // alert('鍒犻櫎澶辫触锛�' + deleteResponse.message); 
+      }  
+    }  
+  } catch (error) {  
+    // 澶勭悊鍙兘鍑虹幇鐨勯敊璇紝姣斿 ElMessageBox 鎶涘嚭鐨勫紓甯哥瓑  
+    console.error('鍙戠敓閿欒:', error);  
+  }  
+};   
+
+</script>
+
+<template>
+  <div>
+     <el-button type="primary" style="margin-top: 10px;margin-left: 10px;"  size="mini" id="searchButton" @click="add1 = true">{{ $t('delivery.addrole1') }}</el-button>
+     <el-button type="primary" style="margin-top: 10px;margin-left: 10px;"  size="mini" id="searchButton" @click="add = true">{{ $t('delivery.addrole') }}</el-button>
+    <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading">
+      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
+        <el-table height="500" ref="table" 
+        @selection-change="handleSelectionChange"
+        :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
+          <el-table-column prop="id" align="center" :label="$t('delivery.id')" min-width="180" />
+          <el-table-column prop="role_name" align="center" :label="$t('delivery.role')" min-width="180" />
+          <el-table-column fixed="right" :label="$t('delivery.operate')" align="center" width="270">
+            <template #default="scope">
+              <el-button size="mini" type="text" plain @click="handleEdit(scope.row)">{{ $t('delivery.edit') }}</el-button>
+              <el-button size="mini" type="text" plain @click="opena(scope.row)">{{ $t('delivery.delete') }}</el-button>
+            </template>
+        </el-table-column>
+        </el-table>
+      </div>
+    </el-card>
+  </div>
+  <el-dialog v-model="add1" top="23vh" width="37%" :title="$t('delivery.addrole1')" >
+    <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
+            <el-form ref="formRef" size="mini" label-width="150px">
+      <el-form label-width="100px" label-position="right">
+        <el-row style="margin-top: -15px;margin-bottom: -2px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+          <el-form-item :label="$t('delivery.rolea')" :required="true" style="width: 25vw">
+                <el-input :placeholder="$t('delivery.inrole')" v-model="roleName" autocomplete="off" />
+              </el-form-item></div></div>
+          </el-col>
+        </el-row>
+        </el-form>
+            </el-form>
+          </div>
+    <template #footer>
+      <div id="dialog-footer">
+        <el-button type="primary" @click="getTableRow1">
+          {{ $t('delivery.sure') }}
+        </el-button>
+        <el-button @click="closeDialog"> {{ $t('delivery.cancel') }}</el-button>
+      </div>
+    </template>
+  </el-dialog> 
+  <el-dialog v-model="add" top="23vh" width="37%" :title="$t('delivery.addrole')">
+    <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
+            <el-form  size="mini" label-width="150px">
+      <el-form label-width="100px" label-position="right">
+        <el-row style="margin-top: 10px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+              <el-form-item :label="$t('delivery.rolea')" :required="true" style="width: 25vw;">
+                <el-select
+               v-model="selectedProjectNoa"
+               filterable
+               clearable
+               :placeholder="$t('delivery.inrole')"
+               style="width: 330px"
+             >
+               <el-option
+         v-for="item in titleSelectJsona['processTypea']"  
+            :key="item.id"
+            :label="item.remark"
+            :value="item.id"
+          />
+        </el-select>
+              </el-form-item></div></div>
+          </el-col>
+        </el-row>
+        <el-row style="margin-top: 10px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+              <el-form-item :label="$t('delivery.menu')" :required="true" style="width: 25vw;">
+                <el-select
+               v-model="selectedProjectNoa1"
+               filterable
+               clearable
+               :placeholder="$t('delivery.menuchoice')"
+               style="width: 330px"
+             >
+               <el-option
+         v-for="item in titleSelectJsona1['processTypea1']"  
+            :key="item.id"
+            :label="item.menuName"
+            :value="item.id"
+          />
+        </el-select>
+              </el-form-item></div></div>
+          </el-col>
+        </el-row>
+        <el-row style="margin-top: 10px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+              <el-form-item :label="$t('delivery.page')" :required="true" style="width: 25vw;">
+                <el-select
+               v-model="selectedProjectNoa2"
+               filterable
+               clearable
+               :placeholder="$t('delivery.pagechoice')"
+               style="width: 330px"
+             >
+               <el-option
+         v-for="item in titleSelectJsona2['processTypea2']"  
+            :key="item.id"
+            :label="item.pageName"
+            :value="item.id"
+          />
+        </el-select>
+              </el-form-item></div></div>
+          </el-col>
+        </el-row>
+        </el-form>
+            </el-form>
+          </div>
+    <template #footer>
+      <div id="dialog-footer">
+        <el-button type="primary" @click="getTableRow">
+          {{ $t('delivery.sure') }}
+        </el-button>
+        <el-button @click="closeDialog">{{ $t('delivery.cancel') }}</el-button>
+      </div>
+    </template>
+  </el-dialog> 
+  <el-dialog v-model="adda" top="23vh" width="37%" :title="$t('delivery.editrole')" >
+    <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
+            <el-form  size="mini" label-width="150px">
+      <el-form label-width="100px" label-position="right">
+        <el-row style="margin-top: 10px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+              <el-form-item :label="$t('delivery.rolea')" :required="true" style="width: 25vw;">
+                <el-select
+               v-model="selectedProjectNoa"
+               filterable
+               clearable
+               :placeholder="$t('delivery.inrole')"
+               style="width: 330px"
+             >
+               <el-option
+         v-for="item in titleSelectJsona['processTypea']"  
+            :key="item.id"
+            :label="item.remark"
+            :value="item.id"
+          />
+        </el-select>
+              </el-form-item></div></div>
+          </el-col>
+        </el-row>
+        <el-row style="margin-top: 10px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+              <el-form-item :label="$t('delivery.menu')" :required="true" style="width: 25vw;">
+                <el-select
+               v-model="selectedProjectNoa"
+               filterable
+               clearable
+               :placeholder="$t('delivery.menuchoice')"
+               style="width: 330px"
+             >
+               <el-option
+         v-for="item in titleSelectJsona1['processTypea1']"  
+            :key="item.id"
+            :label="item.menuName"
+            :value="item.id"
+          />
+        </el-select>
+              </el-form-item></div></div>
+          </el-col>
+        </el-row>
+        <el-row style="margin-top: 10px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+              <el-form-item :label="$t('delivery.page')" :required="true" style="width: 25vw;">
+                <el-select
+               v-model="selectedProjectNoa"
+               filterable
+               clearable
+               :placeholder="$t('delivery.pagechoice')"
+               style="width: 330px"
+             >
+               <el-option
+         v-for="item in titleSelectJsona2['processTypea2']"  
+            :key="item.id"
+            :label="item.pageName"
+            :value="item.id"
+          />
+        </el-select>
+              </el-form-item></div></div>
+          </el-col>
+        </el-row>
+        </el-form>
+            </el-form>
+          </div>
+    <template #footer>
+      <div id="dialog-footer">
+        <el-button type="primary" @click="getTableRowa">
+          {{ $t('delivery.sure') }}
+        </el-button>
+        <el-button @click="closeDialoga">{{ $t('delivery.cancel') }}</el-button>
+      </div>
+    </template>
+  </el-dialog> 
+</template>
+
+<style scoped>
+
+#dt { display:block; float:left;line-height: 20px;margin-left: 100px;}
+#dta { display:block; float:left;line-height: 20px;margin-left: 80%;}
+#dialog-footer{
+  text-align: center;
+  margin-top: -15px;
+}
+#message{
+  text-align: center;
+  align-items: center;
+  color: black;
+   width: 200px;
+   height: 100px;
+   background-color: #337ecc;
+   margin-left: 28%;
+}
+#awatch{
+  height: 460px;
+  /* margin-top: -60px; */
+}
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/User/user.vue b/UI-Project/src/views/User/user.vue
new file mode 100644
index 0000000..d0567d3
--- /dev/null
+++ b/UI-Project/src/views/User/user.vue
@@ -0,0 +1,49 @@
+<script setup>
+import {ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue"
+import {useRouter} from "vue-router";
+let indexFlag=$ref(1)
+function changeRouter(index){
+  indexFlag=index
+}
+
+</script>
+
+<template>
+  <!-- <div id="main-div"> -->
+   
+
+    <div id="main-body">
+      <router-view  />
+    </div>
+  <!-- </div> -->
+</template>
+
+<style scoped>
+#main-div{
+  width: 100%;
+  height: 100%;
+}
+#div-title{
+  height: 2%;
+  width: 100%;
+}
+#searchButton{
+  margin-top: -5px;
+  margin-left: 1rem;
+}
+/* #searchButton1{
+//margin-left: 10rem;
+} */
+/*main-body鏍峰紡*/
+#main-body{
+  width: 100%;
+  height: 95%;
+  /* margin-top: 1%; */
+}
+#select{
+  margin-left:0.5rem;
+}
+:deep(.indexTag .el-breadcrumb__inner){
+  color: #5CADFE !important;
+}
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/User/userlist.vue b/UI-Project/src/views/User/userlist.vue
new file mode 100644
index 0000000..4e7d745
--- /dev/null
+++ b/UI-Project/src/views/User/userlist.vue
@@ -0,0 +1,355 @@
+<script setup>
+import {Search} from "@element-plus/icons-vue";
+import {reactive} from "vue";
+import {useRouter} from "vue-router"
+const router = useRouter()
+const add = ref(false)
+const adda = ref(false)
+import request from "@/utils/request"
+import { ref, onMounted } from "vue";
+// import { ref } from 'vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+  import { useI18n } from 'vue-i18n'
+  const { t } = useI18n()
+  let language = ref(localStorage.getItem('lang') || 'zh')
+//  import LanguageMixin from './lang/LanguageMixin'
+const selectedProjectNoa = ref(null); // 褰撳墠閫変腑鐨勮鑹� 
+// const options = ref<any[]>([]); // 涓嬫媺閫夐」鍒楄〃  
+  const userName = ref('');
+  const account = ref('');
+  const password = ref('');
+
+const tableData = ref([])
+const slot = ref('')
+request.post("/deviceInteraction/account/findAccounts").then((res) => {
+          if (res.code == 200) {
+          console.log(res.data);
+          tableData.value = res.data
+          } else {
+          ElMessage.warning(res.msg)
+        
+          }
+          });
+const titleSelectJsona = ref({
+  processType: [],
+ 
+})
+// const handleInputChangea = async (value: string) => {  
+//   if (value) {  
+//     await fetchOptionsa(value);  
+//   } else {  
+//     options.value = []; // 娓呯┖閫夐」鍒楄〃  
+//   }  
+// };  
+onMounted(() => {  
+  // 鍦ㄧ粍浠舵寕杞藉悗璋冪敤 fetchOptions('') 鏉ュ姞杞藉垵濮嬫暟鎹紙濡傛灉闇�瑕侊級  
+  fetchOptionsa('');  
+}); 
+  // 瑙掕壊涓嬫媺閫�  
+  const fetchOptionsa = async () => {  
+  try {  
+    // 鍙戦�佽姹傚埌鍚庣鎺ュ彛  
+    const response = await request.post('/deviceInteraction/role/findRolesAll');  
+    if (response.code === 200) {  
+    titleSelectJsona.value.processTypea = response.data;
+    console.log(response.data);
+ 
+    } else {  
+      ElMessage.warning(response.data);  
+    }  
+  } catch (error) {  
+    console.error('Error fetching options:', error);  
+  }  
+}; 
+// 澶勭悊缂栬緫鎸夐挳鐐瑰嚮  
+function handleEdit(row) {
+  window.localStorage.setItem('ids', row.id);
+  userName.value = row.userName;
+  if (row.roleList && row.roleList.length > 0) {
+    const firstRole = row.roleList[0];
+    selectedProjectNoa.value = firstRole.id; // 璁剧疆涓篒D锛岃�屼笉鏄痭ame  
+  }  
+  adda.value = true; // 鏄剧ず瀵硅瘽妗�  
+}
+
+function closeDialog(row) {
+     add.value = false;
+     userName.value = '';
+     nickName.value = '';
+     password.value = '';
+     selectedProjectNoa.value = '';
+}
+function closeDialoga(row) {
+     adda.value = false;
+     userName.value = '';
+     nickName.value = '';
+     password.value = '';
+}
+// 娣诲姞 
+const getTableRow = async () => {
+  try {
+    const response = await request.post('/deviceInteraction/account/addAccount', {
+      account: account.value,
+      roleId: selectedProjectNoa.value,
+      userName: userName.value,
+      password: password.value,
+    }); 
+    if (response.code === 200) {
+      // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
+      ElMessage.success(response.message);
+      add.value = false;
+     tableData.value = response.data;
+    } else {
+      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+      ElMessage.error(response.message);
+    }
+  } catch (error) {
+    // 澶勭悊閿欒
+    console.error(error);
+  }
+};
+// 缂栬緫
+const getTableRowa = async () => {
+  let ids = window.localStorage.getItem('ids')
+  try {
+    const response = await request.post('/deviceInteraction/account/updateAccount', {
+      id: ids,
+      account: account.value,
+      roleId: selectedProjectNoa.value,
+      userName: userName.value,
+      password: password.value,
+  }
+  ); 
+    if (response.code === 200) {
+      // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
+      ElMessage.success(response.message);
+      adda.value = false;
+     tableData.value = response.data;
+    } else {
+      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+      ElMessage.error(response.message);
+    }
+  } catch (error) {
+    // 澶勭悊閿欒
+    console.error(error);
+  }
+};
+// 鍒犻櫎 
+ const opena = async(row) => {  
+  try {
+    const confirmResult = await ElMessageBox.confirm(  
+      t('productStock.deusername'), 
+      t('productStock.prompt'),  
+      {  
+        confirmButtonText: t('productStock.yes'), 
+        cancelButtonText: t('productStock.cancel'),
+        type: 'warning',  
+      } 
+    );
+    if (confirmResult === 'confirm') {  
+      // 鐢ㄦ埛鐐瑰嚮浜嗏�滄槸鈥濓紝鐜板湪璋冪敤鍒犻櫎鎺ュ彛  
+      const response = await request.post("/deviceInteraction/account/deleteAccount",{
+        id: row.id
+      })
+    if (response.code === 200) {
+      ElMessage.success(response.message);
+      } else {  
+        // 鍒犻櫎澶辫触锛屾偍鍙互澶勭悊閿欒鎴栨樉绀洪敊璇俊鎭粰鐢ㄦ埛  
+      ElMessage.error(response.msg);
+        // alert('鍒犻櫎澶辫触锛�' + deleteResponse.message); 
+      }  
+    }  
+  } catch (error) {  
+    // 澶勭悊鍙兘鍑虹幇鐨勯敊璇紝姣斿 ElMessageBox 鎶涘嚭鐨勫紓甯哥瓑  
+    console.error('鍙戠敓閿欒:', error);  
+  }  
+};   
+
+</script>
+
+<template>
+  <div>
+     <el-button type="primary" style="margin-top: 10px;margin-left: 10px;"  size="mini" id="searchButton" @click="add = true">{{ $t('productStock.addusers') }}</el-button>
+    <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading">
+      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
+        <el-table height="500" ref="table" 
+        @selection-change="handleSelectionChange"
+        :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
+          <el-table-column prop="id" align="center" :label="$t('productStock.ID')" min-width="180" />
+          <el-table-column prop="user_name" align="center" :label="$t('productStock.username')" min-width="180" />
+          <el-table-column prop="role_name" align="center" :label="$t('productStock.role')" min-width="180" />
+          <el-table-column fixed="right" :label="$t('productStock.operate')" align="center" width="270">
+            <template #default="scope">
+              <el-button size="mini" type="text" plain @click="handleEdit(scope.row)">{{ $t('productStock.exit') }}</el-button>
+              <el-button size="mini" type="text" plain @click="opena(scope.row)">{{ $t('productStock.delete') }}</el-button>
+            </template>
+        </el-table-column>
+        </el-table>
+      </div>
+    </el-card>
+  </div>
+  <el-dialog v-model="add" top="23vh" width="37%" :title="$t('productStock.addusers')">
+    <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
+            <el-form  size="mini" label-width="150px">
+      <el-form label-width="100px" label-position="right">
+        <el-row style="margin-top: -15px;margin-bottom: -2px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+          <el-form-item :label="$t('productStock.usernamea')" :required="true" style="width: 25vw">
+                <el-input v-model="userName" autocomplete="off" :placeholder="$t('productStock.inusername')" />
+              </el-form-item></div></div>
+          
+          </el-col>
+        </el-row>
+        <el-row style="margin-top: 10px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+              <el-form-item :label="$t('productStock.usera')" :required="true" style="width: 25vw">
+                <el-input v-model="account" autocomplete="off" :placeholder="$t('productStock.inusera')" />
+              </el-form-item></div></div>
+          </el-col>
+        </el-row>
+        <el-row style="margin-top: 10px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+              <el-form-item :label="$t('productStock.rolea')" :required="true" style="width: 25vw;">
+                <el-select
+               v-model="selectedProjectNoa"
+               filterable
+               clearable
+               :placeholder="$t('productStock.inrole')"
+               style="width: 330px"
+             >
+               <el-option
+         v-for="item in titleSelectJsona['processTypea']"  
+            :key="item.id"
+            :label="item.remark"
+            :value="item.id"
+          />
+        </el-select>
+              </el-form-item></div></div>
+          </el-col>
+        </el-row>
+        <el-row style="margin-top: 10px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+              <el-form-item :label="$t('productStock.password')" :required="true" style="width: 25vw;">
+                <el-input style="width: 340px;"
+                        v-model="password"
+                        :placeholder="$t('productStock.inpassword')"
+                        autocomplete="off"
+                        :prefix-icon="Lock"
+                        show-password/>
+              </el-form-item></div></div>
+          </el-col>
+        </el-row>
+        </el-form>
+            </el-form>
+          </div>
+    <template #footer>
+      <div id="dialog-footer">
+        <el-button type="primary" @click="getTableRow">
+          {{ $t('productStock.sure') }}
+        </el-button>
+        <el-button @click="closeDialog">{{ $t('productStock.cancel') }}</el-button>
+      </div>
+    </template>
+  </el-dialog> 
+  <el-dialog v-model="adda" top="23vh" width="37%" :title="$t('productStock.reusername')" >
+    <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
+            <el-form  size="mini" label-width="150px">
+      <el-form label-width="100px" label-position="right">
+        <el-row style="margin-top: -15px;margin-bottom: -2px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+          <el-form-item :label="$t('productStock.usernamea')" :required="true" style="width: 25vw">
+                <el-input v-model="userName" autocomplete="off" :placeholder="$t('productStock.inusername')" />
+              </el-form-item></div></div>
+          </el-col>
+        </el-row>
+        <el-row style="margin-top: 10px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+              <el-form-item :label="$t('productStock.usera')" :required="true" style="width: 25vw">
+                <el-input v-model="account" autocomplete="off" :placeholder="$t('productStock.inusera')" />
+              </el-form-item></div></div>
+          </el-col>
+        </el-row>
+        <el-row style="margin-top: 10px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+              <el-form-item :label="$t('productStock.rolea')" :required="true" style="width: 25vw;">
+                <el-select
+               v-model="selectedProjectNoa"
+               filterable
+               clearable
+               :placeholder="$t('productStock.inrole')"
+               style="width: 330px"
+             >
+               <el-option
+         v-for="item in titleSelectJsona['processTypea']"  
+            :key="item.id"
+            :label="item.remark"
+            :value="item.id"
+          />
+        </el-select>
+              </el-form-item></div></div>
+          </el-col>
+        </el-row>
+        <el-row style="margin-top: 10px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+              <el-form-item :label="$t('productStock.password')" :required="true" style="width: 25vw;">
+                <el-input style="width: 340px;"
+                        v-model="password"
+                        :placeholder="$t('productStock.inpassword')"
+                        autocomplete="off"
+                        :prefix-icon="Lock"
+                        show-password/>
+              </el-form-item></div></div>
+          </el-col>
+        </el-row>
+        </el-form>
+            </el-form>
+          </div>
+    <template #footer>
+      <div id="dialog-footer">
+        <el-button type="primary" @click="getTableRowa">
+          {{ $t('productStock.sure') }}
+        </el-button>
+        <el-button @click="closeDialoga">{{ $t('productStock.cancel') }}</el-button>
+      </div>
+    </template>
+  </el-dialog> 
+</template>
+
+<style scoped>
+
+#dt { display:block; float:left;line-height: 20px;margin-left: 100px;}
+#dta { display:block; float:left;line-height: 20px;margin-left: 80%;}
+#dialog-footer{
+  text-align: center;
+  margin-top: -15px;
+}
+#message{
+  text-align: center;
+  align-items: center;
+  color: black;
+   width: 200px;
+   height: 100px;
+   background-color: #337ecc;
+   margin-left: 28%;
+}
+#awatch{
+  height: 460px;
+  /* margin-top: -60px; */
+}
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/mm/purchaseOrder/Create.vue b/UI-Project/src/views/mm/purchaseOrder/Create.vue
new file mode 100644
index 0000000..0fc1826
--- /dev/null
+++ b/UI-Project/src/views/mm/purchaseOrder/Create.vue
@@ -0,0 +1,724 @@
+<template>
+  <el-header height="auto">
+    <el-descriptions
+        class="margin-top"
+        title=""
+        :column="4"
+        :size="'default'"
+        border
+        :rules="rules"
+        :model="ruleForm"
+    >
+
+      <el-descriptions-item label-class-name="label-diy" class-name="content-diy" prop="name">
+        <template #label>
+          <span style="color:red">*</span>
+          閲囪喘绫诲瀷
+        </template>
+<!--        <el-select v-model="form.buyType" class="m-2" placeholder="閫夋嫨閲囪喘绫诲瀷" clearable>-->
+        <el-select v-model="ruleForm.name" class="m-2" placeholder="閫夋嫨閲囪喘绫诲瀷" clearable>
+          <el-option
+              v-for="item in CGTypeOptions"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+          />
+        </el-select>
+      </el-descriptions-item >
+
+      <el-descriptions-item label-class-name="label-diy" class-name="content-diy">
+        <template #label>
+          <span style="color:red">*</span>
+          閲囪喘缁勭粐
+        </template>
+        <el-input v-model="ruleForm.name" placeholder="閲囪喘缁勭粐" clearable prop="name"></el-input>
+      </el-descriptions-item>
+
+      <el-descriptions-item label-class-name="label-diy" class-name="content-diy">
+        <template #label>
+          <span style="color:red">*</span>
+          渚涘簲鍟�
+        </template>
+        <el-cascader
+            placeholder="閫夋嫨渚涘簲鍟�"
+            :options="buyerOptions"
+            filterable
+            clearable
+            empty-text="empty-text"
+            :v-model="form.supplier"
+        >
+        </el-cascader>
+      </el-descriptions-item>
+
+      <el-descriptions-item label-class-name="label-diy" class-name="content-diy">
+        <template #label>
+          <span style="color:red">*</span>
+          閲囪喘閮ㄩ棬
+        </template>
+        <el-select v-model="cgBuMen" class="m-2" placeholder="閫夋嫨閲囪喘閮ㄩ棬" clearable>
+          <el-option
+              v-for="item in CGBuMenOptions"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+          />
+        </el-select>
+      </el-descriptions-item>
+
+
+
+      <el-descriptions-item label-class-name="label-diy" class-name="content-diy">
+        <template #label>
+          <span style="color:red">*</span>
+          閲囪喘鍛�
+        </template>
+        <el-select v-model="form.buyer" class="m-2" placeholder="閫夋嫨閲囪喘鍛�" clearable>
+          <el-option
+              v-for="item in BuyerOptions"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+          />
+        </el-select>
+      </el-descriptions-item>
+
+      <el-descriptions-item label-class-name="label-diy" class-name="content-diy"
+      >
+        <template #label>
+          <span style="color:red">*</span>
+          鍒惰〃鏃ユ湡
+        </template>
+        <el-date-picker
+            v-model="form.date"
+            type="date"
+            placeholder="閫夋嫨鍒惰〃鏃ユ湡"
+
+        />
+      </el-descriptions-item>
+
+      <el-descriptions-item label-class-name="label-diy" class-name="content-diy"></el-descriptions-item>
+    </el-descriptions>
+
+  </el-header>
+
+  <el-main style="padding-top: 5px;height:100%">
+    <!--    <el-button class="mt-4" style="width: 10%" @click="onAddItem"
+        >娣诲姞
+        </el-button>-->
+
+    <vxe-grid
+
+        max-height="500"
+        @filter-change="filterChanged"
+        class="mytable-scrollbar"
+        ref="xGrid"
+        v-bind="gridOptions"
+        @="gridEvents"
+    >
+
+      <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
+      <!--      涓嬫媺鏄剧ず鎵�鏈変俊鎭彃妲�-->
+      <template #content="{ row}">
+        <ul class="expand-wrapper">
+          <li v-for="(item,key,index) in row">
+            <span style="font-weight: bold">{{ key + ':  ' }}</span>
+            <span>{{ item }}</span>
+          </li>
+        </ul>
+      </template>
+
+      <!--宸﹁竟鍥哄畾鏄剧ず鐨勬彃妲�-->
+      <template #button_slot="{ row }">
+        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">缂栬緫</el-button>
+        <!--          <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">鍒犻櫎</el-button>-->
+        <!--          <el-button @click="cellClickEvent" link type="primary" size="small">璇︽儏</el-button>-->
+      </template>
+
+      <template #num1_filter="{ column, $panel }">
+        <div>
+          <div v-for="(option, index) in column.filters" :key="index">
+            <el-input v-model="option.data" @input="changeFilterEvent($event, option, $panel)" />
+          </div>
+        </div>
+      </template>
+    </vxe-grid>
+
+  </el-main>
+
+</template>
+
+<script lang="ts" setup>
+import {ref, reactive} from 'vue'
+import {useRouter} from "vue-router";
+import {ElMessage, ElMessageBox} from "element-plus";
+
+let router = useRouter()
+
+//缁勪欢鎺ユ敹鍙傛暟
+const gridOptions = reactive({
+  border: "full",//琛ㄦ牸鍔犺竟妗�
+  keepSource: true,//淇濇寔婧愭暟鎹�
+  align: 'center',//鏂囧瓧灞呬腑
+  stripe: true,//鏂戦┈绾�
+  rowConfig: {isCurrent: true, isHover: true, height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
+  id: 'CustomerList',
+  showFooter: true,//鏄剧ず鑴�
+  printConfig: {},
+  importConfig: {},
+  exportConfig: {},
+  scrollY: {enabled: true},//寮�鍚櫄鎷熸粴鍔�
+  showOverflow: true,
+  columnConfig: {
+    resizable: true,
+    useKey: true
+  },
+  filterConfig: {   //绛涢�夐厤缃」
+    remote: true
+  },
+  customConfig: {
+    storage: true
+  },
+  editConfig: {
+    trigger: 'click',
+    mode: 'row',
+    showStatus: true
+  },
+  columns: [
+    //{title: '鎿嶄綔', width: '8%', slots: {default: 'button_slot'}, fixed: "left"},
+    {type: 'seq', fixed: "left", title: ' ', width: 50},
+    {type: 'checkbox', fixed: "left", title: '', width: 50},
+    //{type: 'expand', title: '璇︽儏', fixed: "left", slots: {content: 'content'}, width: 50},
+    {
+      field: 'cgdh',
+      width: '10%',
+      title: '鐗╂枡缂栫爜',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      editRender: {name: 'input', attrs: {placeholder: ''}},
+      sortable: true
+    },
+    {
+      field: 'cgzt',
+      width: '10%',
+      title: '鐗╂枡鍚嶇О',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      editRender: {name: 'input', attrs: {placeholder: ''}},
+      sortable: true
+    },
+    {
+      field: 'gys',
+      width: '10%',
+      title: '浜у湴',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      editRender: {name: 'input', attrs: {placeholder: ''}},
+      sortable: true
+    },
+    {
+      field: 'w',
+      width: '8%',
+      title: '瀹藉害', /*filters: [{data: ''}], slots: {filter: 'num1_filter'},*/
+      editRender: {name: 'input', attrs: {placeholder: ''}},
+      sortable: true
+    },
+    {
+      field: 'g',
+      width: '8%',
+      title: '楂樺害', /*filters: [{data: ''}], slots: {filter: 'num1_filter'},*/
+      editRender: {name: 'input', attrs: {placeholder: ''}},
+      sortable: true,
+      type: 'number'
+    },
+    {
+      field: 'h',
+      width: '8%',
+      title: '鍘氬害', /*filters: [{data: ''}], slots: {filter: 'num1_filter'},*/
+      editRender: {name: 'input', attrs: {placeholder: ''}},
+      sortable: true
+    },
+    {
+      field: 'xh',
+      width: '8%',
+      title: '鍨嬪彿',/*filters: [{data: ''}], slots: {filter: 'num1_filter'},*/
+      editRender: {name: 'input', attrs: {placeholder: ''}},
+      sortable: true
+    },
+    {
+      field: 'dw',
+      width: '8%',
+      title: '鍗曚綅', /*filters: [{data: ''}], slots: {filter: 'num1_filter'},*/
+      editRender: {name: 'input', attrs: {placeholder: ''}},
+      sortable: true
+    },
+    {
+      field: 'sl',
+      width: '8%',
+      title: '鏁伴噺', /*filters: [{data: ''}], slots: {filter: 'num1_filter'},*/
+      editRender: {name: 'input', attrs: {placeholder: ''}},
+      sortable: true
+    },
+    {
+      field: 'sl',
+      width: '8%',
+      title: '鎿嶄綔鏁伴噺', /*filters: [{data: ''}], slots: {filter: 'num1_filter'},*/
+      editRender: {name: 'input', attrs: {placeholder: ''}}
+    },
+    {
+      field: 'sl',
+      width: '12%',
+      title: '绠辨暟',    /*filters: [{data: ''}], slots: {filter: 'num1_filter'},*/
+      editRender: {name: 'input', attrs: {placeholder: ''}},
+      sortable: true
+    },
+    {
+      field: 'je',
+      width: '8%',
+      title: '鍗曠墖闈㈢Н', /*filters: [{data: ''}], slots: {filter: 'num1_filter'},*/
+      editRender: {name: 'input', attrs: {placeholder: ''}},
+      sortable: true
+    },
+    {
+      field: 'je',
+      width: '12%',
+      title: '鍗曚环',   /*filters: [{data: ''}], slots: {filter: 'num1_filter'},*/
+      editRender: {name: 'input', attrs: {placeholder: ''}},
+      sortable: true
+    },
+    {
+      field: '6',
+      width: '8%',
+      title: '鎬绘暟閲�',   /*filters: [{data: ''}], slots: {filter: 'num1_filter'},*/
+      editRender: {name: 'input', attrs: {placeholder: ''}},
+      sortable: true
+    },
+    {
+      field: 'sl',
+      width: '8%',
+      title: '鎬婚潰绉�', /*filters: [{data: ''}], slots: {filter: 'num1_filter'},*/
+      editRender: {name: 'input', attrs: {placeholder: ''}},
+      sortable: true
+    },
+    {
+      field: 'yl',
+      width: '10%',
+      title: '鎬婚噾棰�',/*filters: [{data: ''}], slots: {filter: 'num1_filter'},*/
+      editRender: {name: 'input', attrs: {placeholder: ''}},
+      sortable: true
+    },
+    {
+      field: 'yl',
+      width: '10%',
+      title: '澶囨敞', /*filters: [{data: ''}], slots: {filter: 'num1_filter'},*/
+      editRender: {name: 'input', attrs: {placeholder: ''}},
+      sortable: true
+    }
+  ],//琛ㄥご鍙傛暟
+  toolbarConfig: {
+    buttons: [
+      {type: 'text'},
+      {
+        'name': '鏂板',
+
+        'code': 'Add',
+      },
+      {
+        'name': '绉婚櫎',
+
+        'code': 'Remove'
+      },
+      {
+        'name': '淇濆瓨璁㈠崟',
+        status: 'primary',
+        'code': 'Save'
+      }, {
+        'name': '鍏ュ簱',
+        status: 'primary',
+        'code': 'Storage'
+      }/*,
+      {
+        'name': '閫�璐�',
+        status: 'primary',
+        'code': 'Return'
+      },
+      {
+        'name': '杩斿洖鏌ヨ',
+
+        'code':'GoSelect'
+      }*/],
+    import: false,
+    export: true,
+    print: true,
+    zoom: true,
+    custom: true,
+    tools: [],
+
+  },//琛ㄥご鎸夐挳
+  /*data: [{},{},{},{},{},{}],//table body瀹為檯鏁版嵁*/
+  data: [{}, {}, {}],//table body瀹為檯鏁版嵁
+  mergeFooterItems: [
+    {row: 0, col: 0, rowspan: 1, colspan: 3}
+  ],//鍚堝苟鑴�
+  footerMethod({columns, data}) {//椤佃剼鍑芥暟
+    return [
+      columns.map((column, columnIndex) => {
+        if (columnIndex === 0) {
+          return '鍚堣:'
+        }
+        /* if (props.tableProp.footList.includes(column.field)) {
+           return sumNum(data, column.field)
+         }*/
+        return ''
+      })
+    ]
+  },
+
+})
+
+const xGrid = ref()
+const gridEvents = {
+  toolbarButtonClick({code}) {
+    const $grid = xGrid.value
+    if ($grid) {
+      switch (code) {
+//鏂板
+        case 'Add': {
+          const record = {
+            checked: false
+          }
+          $grid.insertAt(record, 0).then(({row}) => {
+            $grid.setEditRow(row)
+          })
+          break
+        }
+//绉婚櫎
+        case 'Remove': {
+          if ($grid.getCheckboxRecords().length === 0) {
+            MessageShow('璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�','warning');
+            return
+          } else {
+
+            MessageConfirmShow('绉婚櫎','鏄惁纭绉婚櫎閫変腑鐨�' + $grid.getCheckboxRecords().length + '鏉℃暟鎹紒');
+
+          }
+          break
+        }
+//淇濆瓨
+        case 'Save': {
+          /*if (form.buyItem === null || form.buyItem === '') {
+            MessageShow('閲囪喘缁勭粐涓嶅彲涓虹┖','warning');
+            return;
+          }
+*/
+          //閫変腑鏁版嵁
+          /* const $table = this.$refs.xTable
+           const selectRecords = $table.getCheckboxRecords()*/
+//+$grid.rows.number
+          if ($grid.getCheckboxRecords().length === 0) {
+            MessageShow('璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�','warning');
+            return
+          } else {
+
+
+            MessageConfirmShow('淇濆瓨璁㈠崟','鏄惁纭畾淇濆瓨褰撳墠璁㈠崟淇℃伅');
+          }
+          break
+        }
+//鍏ュ簱
+        case 'Storage': {
+          if ($grid.getCheckboxRecords().length === 0) {
+            MessageShow('璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�','warning');
+            return
+          } else {
+            MessageConfirmShow('鍏ュ簱','鎮ㄩ�夋嫨浜�' + $grid.getCheckboxRecords().length + '鏉℃暟鎹紒,鏄惁纭鍏ュ簱锛�')
+          }
+          break
+        }
+//閫�搴�
+        case 'Return': {
+          if ($grid.getCheckboxRecords().length === 0) {
+            MessageShow('璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�','warning');
+            return
+          } else {
+
+
+          }
+          break
+        }
+
+      }
+    }
+  },
+  toolbarToolClick({code}) {
+    const $grid = xGrid.value
+    if ($grid) {
+      switch (code) {
+        case 'myPrint': {
+          $grid.print()
+          break
+        }
+      }
+    }
+  },
+}
+
+
+import type { FormInstance, FormRules } from 'element-plus'
+
+
+
+
+interface RuleForm {
+  name: string
+  region: string
+  count: string
+  date1: string
+  date2: string
+  delivery: boolean
+  type: string[]
+  resource: string
+  desc: string
+}
+const ruleFormRef = ref<FormInstance>()
+const ruleForm = reactive<RuleForm>({
+  name: '',
+  region: '',
+  count: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+const rules = reactive<FormRules<RuleForm>>({
+  name: [
+    { required: true, message: 'Please input Activity name', trigger: 'blur' },
+    { min: 3, max: 5, message: 'Length should be 3 to 5', trigger: 'blur' },
+  ],
+  region: [
+    {
+      required: true,
+      message: 'Please select Activity zone',
+      trigger: 'change',
+    },
+  ],
+  count: [
+    {
+      required: true,
+      message: 'Please select Activity count',
+      trigger: 'change',
+    },
+  ],
+  date1: [
+    {
+      type: 'date',
+      required: true,
+      message: 'Please pick a date',
+      trigger: 'change',
+    },
+  ],
+  date2: [
+    {
+      type: 'date',
+      required: true,
+      message: 'Please pick a time',
+      trigger: 'change',
+    },
+  ],
+  type: [
+    {
+      type: 'array',
+      required: true,
+      message: 'Please select at least one activity type',
+      trigger: 'change',
+    },
+  ],
+  resource: [
+    {
+      required: true,
+      message: 'Please select activity resource',
+      trigger: 'change',
+    },
+  ],
+  desc: [
+    { required: true, message: 'Please input activity form', trigger: 'blur' },
+  ],
+})
+
+
+const form = reactive({
+  name: '',
+  region: '',
+  date: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+  supplier: '',
+  buyer: '',
+  buyItem: '',
+  buyType: ''
+
+})
+
+//渚涘簲鍟�
+const buyerOptions = [
+  {value: '0', label: '渚涘簲鍟�1'},
+  {value: '1', label: '渚涘簲鍟�2'},
+  {value: '2', label: '渚涘簲鍟�3'},
+  {value: '3', label: '渚涘簲鍟�4'},
+  {value: '4', label: '渚涘簲鍟�5'},
+  {value: '5', label: '渚涘簲鍟�6'},
+]
+
+
+const value = ref('')
+const cgBuMen = ref('')
+
+//閲囪喘绫诲瀷
+const CGTypeOptions = [
+  {
+    value: '1',
+    label: '鏍囧噯绫诲瀷',
+  },
+  {
+    value: '2',
+    label: '闈炴爣鍑嗙被鍨�',
+  },
+  {
+    value: '3',
+    label: '杩藉姞閲囪喘',
+  },
+
+]
+
+//閲囪喘閮ㄩ棬
+const CGBuMenOptions = [
+  {
+    value: '0',
+    label: '閲囪喘鍗庡寳閮�',
+  },
+  {
+    value: '1',
+    label: '閲囪喘涓滃崡閮�',
+  },
+  {
+    value: '2',
+    label: '閲囪喘瑗垮寳閮�',
+  },
+  {
+    value: '3',
+    label: '閲囪喘涓師閮�',
+  },
+  {
+    value: '4',
+    label: '閲囪喘澶栧浗閮�',
+  },
+
+]
+
+//閲囪喘浜�
+const BuyerOptions = [
+  {
+    value: '0',
+    label: '閲囪喘鍛�1',
+  },
+  {
+    value: '1',
+    label: '閲囪喘鍛�2',
+  },
+  {
+    value: '2',
+    label: '閲囪喘鍛�3',
+  },
+  {
+    value: '3',
+    label: '閲囪喘鍛�4',
+  },
+  {
+    value: '4',
+    label: '閲囪喘鍛�5',
+  },
+
+]
+
+//椤甸潰閫昏緫浠g爜鎵ц
+function logicExecute(type){
+  const $grid = xGrid.value
+  switch (type) {
+    case '鍏ュ簱':
+      //鍏ュ簱閫昏緫浠g爜TODO
+      MessageShow('鍏ュ簱鎴愬姛锛�', 'success');
+      break;
+    case '閫�璐�':
+      //閫�璐ч�昏緫浠g爜TODO
+      MessageShow('閫�璐ф垚鍔燂紒', 'success');
+      break;
+    case '淇濆瓨璁㈠崟':
+      //淇濆瓨璁㈠崟閫昏緫浠g爜TODO
+      const submitForm = async (formEl: FormInstance | undefined) => {
+        if (!formEl) return
+        await formEl.validate((valid, fields) => {
+          if (valid) {
+            console.log('submit!')
+          } else {
+            console.log('error submit!', fields)
+          }
+        })
+      }
+      MessageShow('璁㈠崟淇濆瓨鎴愬姛锛�', 'success');
+      break;
+    case '绉婚櫎':
+      $grid.removeCheckboxRow();
+      break;
+    default:
+      MessageShow('鏈煡鎿嶄綔锛�', 'error');
+      break;
+  }
+  return true;
+
+}
+
+//鎻愮ず淇℃伅
+const MessageShow = (content, type ) => {
+
+  ElMessage({
+    message: content,
+    type: type,
+    showClose: true,
+  })
+}
+
+//鎿嶄綔纭绫讳俊鎭細鎿嶄綔绫诲瀷锛屾彁绀哄唴瀹癸紝鎻愮ず鏍囧ご锛屾彁绀虹被鍨�
+const MessageConfirmShow = (czType, content, title='鎿嶄綔纭鎻愮ず', type='warning') => {
+
+  ElMessageBox.confirm(
+      content,
+      title,
+      {
+        cancelButtonText: '鍙栨秷',
+        confirmButtonText: '纭畾',
+        type: type,
+        center: true,
+      }
+  )
+      //鐐瑰嚮浜嗙‘瀹�
+      .then(() => {
+        return logicExecute(czType);
+      })
+      //鐐瑰嚮浜嗗彇娑�
+      .catch(() => {
+        return false;
+      })
+}
+
+
+</script>
+<style scoped>
+:deep(.el-descriptions__table .label-diy) {
+  text-align: center;
+  width: 100px;
+  /*font-size: large;*/
+}
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/mm/purchaseOrder/CreateHeader.vue b/UI-Project/src/views/mm/purchaseOrder/CreateHeader.vue
new file mode 100644
index 0000000..dce1027
--- /dev/null
+++ b/UI-Project/src/views/mm/purchaseOrder/CreateHeader.vue
@@ -0,0 +1,739 @@
+<template>
+  <el-header height="auto">
+
+
+  </el-header>
+
+  <el-main style="padding-top: 5px;height:100%">
+
+    <!--    鍒涘缓琛ㄥご妯℃嫙鏍峰紡涓�-->
+    <div>鍒涘缓琛ㄥご绫讳竴</div>
+    <el-form label-width="100px" :inline="true" :model="formInline" class="demo-form-inline">
+      <div class="order-primary" style="background-color: white; border: #181818 1px solid">
+        <el-row>
+          <el-col class="elcolStyle" :span="2">
+            <el-text>*椤圭洰鍚嶇О锛�</el-text>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-input/>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-text>*瀹㈡埛閫夋嫨锛�</el-text>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-select clearable placeholder=" ">
+              <el-option/>
+            </el-select>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-text>*璁㈠崟绫诲瀷锛�</el-text>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-select clearable placeholder=" ">
+              <el-option/>
+            </el-select>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-text>璁㈠崟鍒嗙被锛�</el-text>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-select clearable placeholder=" ">
+              <el-option/>
+            </el-select>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-text>鍟嗘爣閫夐」锛�</el-text>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-select clearable placeholder=" ">
+              <el-option/>
+            </el-select>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-text>鍖呰鏂瑰紡锛�</el-text>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-select clearable placeholder=" ">
+              <el-option/>
+            </el-select>
+          </el-col>
+          <!--      <el-col :span="2"><el-text  /></el-col>-->
+        </el-row>
+        <el-row>
+          <el-col class="elcolStyle" :span="2">
+            <el-text>閿�鍞崟鍙凤細</el-text>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-text/>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-text>浜よ揣鏃ユ湡锛�</el-text>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-date-picker
+                type="week"
+                format="[Week] ww"
+                placeholder="閫夋嫨鏃ユ湡" style="width: 100%"/>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-text>鎵规锛�</el-text>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-input/>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-text>璁$畻鏂瑰紡锛�</el-text>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-select clearable placeholder=" ">
+              <el-option/>
+            </el-select>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-text>*涓氬姟鍛橈細</el-text>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-select clearable placeholder=" ">
+              <el-option/>
+            </el-select>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-text>閾濇潯鏂瑰紡锛�</el-text>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-select clearable placeholder=" ">
+              <el-option/>
+            </el-select>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col class="elcolStyle" :span="2">
+            <el-text>鎬婚噾棰濓細</el-text>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-text/>
+          </el-col>
+
+          <el-col class="elcolStyle" :span="2">
+            <el-text>鍚堝悓缂栧彿锛�</el-text>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-input/>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-text>瀹㈡埛鎵规锛�</el-text>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-text/>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-text>鑱旂郴浜猴細</el-text>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-input/>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-text>鑱旂郴鐢佃瘽锛�</el-text>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-input/>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-text>閫佽揣鍦板潃锛�</el-text>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-input/>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col class="elcolStyle" :span="2">
+            <el-text>鍏朵粬閲戦锛�</el-text>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-text/>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-text>鍏朵粬閲戦澶囨敞锛�</el-text>
+          </el-col>
+          <el-col class="elcolStyle" :span="2">
+            <el-text/>
+          </el-col>
+
+        </el-row>
+      </div>
+    </el-form>
+
+    <br/>
+    <div>鍒涘缓琛ㄥご绫讳簩</div>
+    <!--    鍒涘缓琛ㄥご妯℃嫙鏍峰紡浜�-->
+    <!--    <el-form label-width="80px" :inline="true" :model="formInline2" class="demo-form-inline">-->
+    <div class="header2">
+      <el-row :gutter="10" style="height: 35px">
+        <el-col :span="4">
+          <el-form-item label="椤圭洰鍚嶇О" class="item-style">
+            <el-input></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="4">
+          <el-form-item label="瀹㈡埛閫夋嫨" class="item-style" prop="name">
+            <el-select v-model="cgBuMen" class="m-2" placeholder="閫夋嫨閲囪喘閮ㄩ棬" clearable>
+              <el-option
+                  v-for="item in CGBuMenOptions"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="4">
+          <el-form-item label="璁㈠崟绫诲瀷" class="item-style">
+            <el-cascader
+                placeholder="璁㈠崟绫诲瀷"
+                :options="buyerOptions"
+                filterable
+                clearable
+                empty-text="empty-text"
+                :v-model="form.supplier"
+            >
+            </el-cascader>
+          </el-form-item>
+        </el-col>
+        <el-col :span="4">
+          <el-form-item label="璁㈠崟鍒嗙被" class="item-style">
+            <el-select v-model="form.buyer" class="m-2" placeholder="璁㈠崟鍒嗙被" clearable>
+              <el-option
+                  v-for="item in BuyerOptions"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="4">
+          <el-form-item label="鍟嗗搧閫夐」" class="item-style">
+            <el-select v-model="form.buyer" class="m-2" placeholder="鍟嗗搧閫夐」" clearable>
+              <el-option
+                  v-for="item in BuyerOptions"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="4">
+          <el-form-item label="鍖呰鏂瑰紡" class="item-style">
+            <el-select v-model="form.buyer" class="m-2" placeholder="鍖呰鏂瑰紡" clearable>
+              <el-option
+                  v-for="item in BuyerOptions"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="10" style="height: 35px">
+        <el-col :span="4">
+          <el-form-item label="閿�鍞崟鍙�" class="item-style">
+            <el-input></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="4">
+          <el-form-item label="浜よ揣鏃ユ湡" class="item-style">
+            <el-date-picker
+                type="week"
+                format="[Week] ww"
+                placeholder="閫夋嫨鏃ユ湡" style="width: 100%"/>
+          </el-form-item>
+        </el-col>
+        <el-col :span="4">
+          <el-form-item label="璁㈠崟鎵规" class="item-style">
+            <el-input></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="4">
+          <el-form-item label="璁$畻鏂瑰紡" class="item-style">
+            <el-select v-model="form.buyer" class="m-2" placeholder="璁$畻鏂瑰紡" clearable>
+              <el-option
+                  v-for="item in BuyerOptions"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="4">
+          <el-form-item label="涓氬姟鍛�" class="item-style">
+            <el-select v-model="form.buyer" class="m-2" placeholder="涓氬姟鍛�" clearable>
+              <el-option
+                  v-for="item in BuyerOptions"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="4">
+          <el-form-item label="閾濇潯鏂瑰紡" class="item-style">
+            <el-select v-model="form.buyer" class="m-2" placeholder="閾濇潯鏂瑰紡" clearable>
+              <el-option
+                  v-for="item in BuyerOptions"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="10" style="height: 35px">
+        <el-col :span="4">
+          <el-form-item label="鎬婚噾棰�" class="item-style">
+            <el-input></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="4">
+          <el-form-item label="鍚堝悓缂栧彿" class="item-style">
+            <el-input></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="4">
+          <el-form-item label="瀹㈡埛鎵规" class="item-style">
+            <el-input></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="4">
+          <el-form-item label="鑱旂郴浜�" class="item-style">
+            <el-input></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="4">
+          <el-form-item label="鑱旂郴鐢佃瘽" class="item-style">
+            <el-input></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="4">
+          <el-form-item label="閫佽揣鍦板潃" class="item-style">
+            <el-input></el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="10" style="height: 35px">
+        <el-col :span="4">
+          <el-form-item label="鍏朵粬閲戦" class="item-style">
+            <el-input></el-input>
+          </el-form-item>
+        </el-col>
+        <!--          <el-col :span="4">
+                    <span>鍏朵粬閲戦澶囨敞</span>
+                    <el-input ></el-input>
+                  </el-col>-->
+        <el-col :span="4">
+          <el-form-item label="鍏朵粬閲戦澶囨敞" class="item-style">
+            <el-input></el-input>
+          </el-form-item>
+        </el-col>
+
+      </el-row>
+
+    </div>
+    <!--    </el-form>-->
+
+    <!--    鍒涘缓琛ㄥご妯℃嫙鏍峰紡涓�-->
+    <br/>
+    <div>鍒涘缓琛ㄥご绫讳笁</div>
+    <!--    <el-form label-width="100px" :inline="true" :model="formInline3" class="demo-form-inline">-->
+    <el-descriptions
+        class="margin-top"
+        title=""
+        :column="6"
+        :size="'small'"
+        border
+    >
+
+      <el-descriptions-item>
+        <template #label>
+          <span style="color:red">*</span>
+          椤圭洰鍚嶇О
+        </template>
+        <el-input></el-input>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          <span style="color:red">*</span>
+          瀹㈡埛閫夋嫨
+        </template>
+        <el-select></el-select>
+
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          <span style="color:red">*</span>
+          璁㈠崟绫诲瀷
+        </template>
+        <el-select></el-select>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          <span style="color:red">*</span>
+          璁㈠崟鍒嗙被
+        </template>
+        <el-select></el-select>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          <span style="color:red">*</span>
+          鍟嗘爣閫夐」
+        </template>
+        <el-select></el-select>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          <span style="color:red">*</span>
+          鍖呰鏂瑰紡
+        </template>
+        <el-select></el-select>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          <span style="color:red">*</span>
+          閿�鍞崟鍙�
+        </template>
+        <el-input></el-input>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          <span style="color:red">*</span>
+          浜よ揣鏃ユ湡
+        </template>
+        <el-date-picker
+            type="week"
+            format="[Week] ww"
+            placeholder="閫夋嫨鏃ユ湡" style="width: 100%"/>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          <span style="color:red">*</span>
+          鎵规
+        </template>
+        <el-input></el-input>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          <span style="color:red">*</span>
+          璁$畻鏂瑰紡
+        </template>
+        <el-select></el-select>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          <span style="color:red">*</span>
+          涓氬姟鍛�
+        </template>
+        <el-select></el-select>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          閾濇潯鏂瑰紡
+        </template>
+        <el-select></el-select>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          鎬婚噾棰�
+        </template>
+        <el-input></el-input>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          鍚堝悓缂栧彿
+        </template>
+        <el-input></el-input>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          瀹㈡埛鎵规
+        </template>
+        <el-input></el-input>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          鑱旂郴浜�
+        </template>
+        <el-input></el-input>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          鑱旂郴鐢佃瘽
+        </template>
+        <el-input></el-input>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          閫佽揣鍦板潃
+        </template>
+        <el-input></el-input>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+
+          鍏朵粬閲戦
+        </template>
+        <el-input></el-input>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          鍏朵粬閲戦澶囨敞
+        </template>
+       <el-input />
+      </el-descriptions-item>
+
+      <el-descriptions-item></el-descriptions-item>
+<!--      <el-descriptions-item></el-descriptions-item>
+      <el-descriptions-item></el-descriptions-item>
+      <el-descriptions-item></el-descriptions-item>
+      <el-descriptions-item></el-descriptions-item>-->
+    </el-descriptions>
+
+    <!--    </el-form>-->
+  </el-main>
+
+</template>
+
+<script setup>
+import {ref, reactive} from 'vue'
+
+let router = useRouter()
+
+
+const openAlert = (options) => {
+  if (options.type === 'message') {
+    VXETable.modal.message(options)
+  } else {
+    VXETable.modal.alert(options)
+  }
+
+}
+
+
+const form = reactive({
+  name: '',
+  region: '',
+  date: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+  supplier: '',
+  buyer: '',
+  buyItem: '',
+  buyType: ''
+
+})
+
+const onSubmit = () => {
+  console.log('submit!')
+}
+
+//渚涘簲鍟�
+const buyerOptions = [
+  {value: '0', label: '渚涘簲鍟�1'},
+  {value: '1', label: '渚涘簲鍟�2'},
+  {value: '2', label: '渚涘簲鍟�3'},
+  {value: '3', label: '渚涘簲鍟�4'},
+  {value: '4', label: '渚涘簲鍟�5'},
+  {value: '5', label: '渚涘簲鍟�6'},
+]
+
+
+const value = ref('')
+const cgBuMen = ref('')
+
+//閲囪喘绫诲瀷
+const CGTypeOptions = [
+  {
+    value: '1',
+    label: '鏍囧噯绫诲瀷',
+  },
+  {
+    value: '2',
+    label: '闈炴爣鍑嗙被鍨�',
+  },
+  {
+    value: '3',
+    label: '杩藉姞閲囪喘',
+  },
+
+]
+
+//閲囪喘閮ㄩ棬
+const CGBuMenOptions = [
+  {
+    value: '0',
+    label: '閲囪喘鍗庡寳閮�',
+  },
+  {
+    value: '1',
+    label: '閲囪喘涓滃崡閮�',
+  },
+  {
+    value: '2',
+    label: '閲囪喘瑗垮寳閮�',
+  },
+  {
+    value: '3',
+    label: '閲囪喘涓師閮�',
+  },
+  {
+    value: '4',
+    label: '閲囪喘澶栧浗閮�',
+  },
+
+]
+
+//閲囪喘浜�
+const BuyerOptions = [
+  {
+    value: '0',
+    label: '閲囪喘鍛�1',
+  },
+  {
+    value: '1',
+    label: '閲囪喘鍛�2',
+  },
+  {
+    value: '2',
+    label: '閲囪喘鍛�3',
+  },
+  {
+    value: '3',
+    label: '閲囪喘鍛�4',
+  },
+  {
+    value: '4',
+    label: '閲囪喘鍛�5',
+  },
+
+]
+
+import dayjs from 'dayjs'
+import {VXETable} from "vxe-table";
+import {useRouter} from "vue-router";
+import {User} from "@element-plus/icons-vue";
+
+const now = new Date()
+
+const tableData = ref([
+  {
+    wlcode: '202312205101',
+    wlname: '杩欐槸涓�涓墿鏂欏悕绉�',
+    cd: '浜у湴12',
+    hd: '8',
+    gd: '2440',
+    kd: '3660',
+    xh: 'CN10P'
+  },
+  {
+    wlcode: '202312305101',
+    wlname: '杩欐槸涓�涓墿鏂欏悕绉�',
+    cd: '浜у湴1',
+    gd: '2440',
+    kd: '3660',
+    hd: '5',
+    xh: 'CN10P'
+  },
+  {
+    wlcode: '202312405101',
+    wlname: '杩欐槸涓�涓墿鏂欏悕绉�',
+    cd: '浜у湴13',
+    hd: '12',
+    gd: '2440',
+    kd: '3660',
+    xh: 'CN10P'
+  },
+])
+
+
+const onAddItem = () => {
+  now.setDate(now.getDate() + 1)
+  tableData.value.push({
+    wlcode: dayjs(now).format('YYYYMMDDss') + '01',
+    wlname: '杩欐槸涓�涓墿鏂欏悕绉�',
+    cd: '浜у湴1',
+    hd: '6',
+    xh: 'CN10P',
+    gd: '2440',
+    kd: '3660',
+  })
+}
+
+
+</script>
+
+
+<style scoped>
+.custom-header {
+  .el-checkbox {
+    display: flex;
+    height: unset;
+  }
+}
+
+.item-style {
+  width: 92%;
+}
+
+
+.main-div {
+  width: 100%;
+  height: 100%;
+  text-align: center;
+}
+
+/*.el-col{
+  border: #181818 1px solid;
+}*/
+
+.elcolStyle {
+  border: #181818 1px solid;
+}
+
+header2 :deep(.el-col) {
+  padding: 0;
+  margin: 0;
+//height: 35px; color: red;
+
+}
+
+order-primary :deep(.el-input__wrapper) {
+  box-shadow: 0 0 0 0 var(--el-input-border-color, var(--el-border-color)) inset;
+  cursor: default;
+  border: none !important;
+  background-color: transparent;
+}
+
+.order-primary {
+  width: 100%;
+}
+
+.order-detail {
+  width: 100%;
+  height: 80%;
+}
+
+/*.cell-item {
+  display: flex;
+  align-items: center;
+}*/
+
+:deep(.el-descriptions__label) {
+  width: 90px;
+  text-align: center;
+}
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/mm/purchaseOrder/Details.vue b/UI-Project/src/views/mm/purchaseOrder/Details.vue
new file mode 100644
index 0000000..8ee52de
--- /dev/null
+++ b/UI-Project/src/views/mm/purchaseOrder/Details.vue
@@ -0,0 +1,453 @@
+<template>
+  <el-header height="auto">
+    <el-descriptions
+        class="margin-top"
+        title=""
+        :column="4"
+        :size="'default'"
+        border
+    >
+      <el-descriptions-item label-class-name="label-diy" class-name="content-diy">
+        <template #label>
+          鎿嶄綔鍗曞彿
+        </template>
+        <el-input v-model="form.buyItem" placeholder="鍗曞彿" disabled></el-input>
+      </el-descriptions-item>
+
+      <el-descriptions-item label-class-name="label-diy" class-name="content-diy">
+        <template #label>
+          閲囪喘绫诲瀷
+        </template>
+        <el-input v-model="form.buyItem" placeholder="閲囪喘绫诲瀷" disabled></el-input>
+      </el-descriptions-item>
+
+      <el-descriptions-item label-class-name="label-diy" class-name="content-diy">
+        <template #label>
+          閲囪喘閮ㄩ棬
+        </template>
+        <el-input v-model="form.buyItem" placeholder="閲囪喘閮ㄩ棬" disabled></el-input>
+      </el-descriptions-item>
+
+      <el-descriptions-item label-class-name="label-diy" class-name="content-diy">
+        <template #label>
+          渚涘簲鍟�
+        </template>
+        <el-input v-model="form.buyItem" placeholder="渚涘簲鍟�" disabled></el-input>
+      </el-descriptions-item>
+
+      <el-descriptions-item label-class-name="label-diy" class-name="content-diy">
+        <template #label>
+          閲囪喘鍛�
+        </template>
+        <el-input v-model="form.buyItem" placeholder="閲囪喘鍛�" disabled></el-input>
+      </el-descriptions-item>
+
+      <el-descriptions-item label-class-name="label-diy" class-name="content-diy">
+        <template #label>
+          閲囪喘缁勭粐
+        </template>
+        <el-input v-model="form.buyItem" placeholder="閲囪喘缁勭粐" disabled></el-input>
+      </el-descriptions-item>
+
+      <el-descriptions-item label-class-name="label-diy" class-name="content-diy">
+        <template #label>
+          鍒惰〃鏃ユ湡
+        </template>
+        <el-date-picker
+            v-model="form.date"
+            type="date"
+            placeholder="閫夋嫨鍒惰〃鏃ユ湡"
+        />
+      </el-descriptions-item>
+
+      <el-descriptions-item label-class-name="label-diy" class-name="content-diy"></el-descriptions-item>
+
+    </el-descriptions>
+  </el-header>
+
+  <el-main style="padding-top: 5px;height:100%">
+    <vxe-grid
+        max-height="500"
+        @filter-change="filterChanged"
+        ref="xGrid"
+        v-bind="gridOptions"
+        v-on="gridEvents"
+    >
+
+      <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
+      <!--      涓嬫媺鏄剧ず鎵�鏈変俊鎭彃妲�-->
+      <template #content="{ row}">
+        <ul class="expand-wrapper">
+          <li v-for="(item,key,index) in row">
+            <span style="font-weight: bold">{{ key + ':  ' }}</span>
+            <span>{{ item }}</span>
+          </li>
+        </ul>
+      </template>
+
+    </vxe-grid>
+
+  </el-main>
+
+</template>
+
+<script setup>
+import {ref, reactive} from 'vue'
+
+let router = useRouter()
+import {useRouter} from "vue-router";
+import { ElMessage, ElMessageBox} from "element-plus";
+
+const value = ref('')
+
+//缁勪欢鎺ユ敹鍙傛暟
+const gridOptions = reactive({
+  border: "full",//琛ㄦ牸鍔犺竟妗�
+  keepSource: true,//淇濇寔婧愭暟鎹�
+  align: 'center',//鏂囧瓧灞呬腑
+  stripe: true,//鏂戦┈绾�
+  rowConfig: {isCurrent: true, isHover: true, height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
+  id: 'CustomerList',
+  showFooter: true,//鏄剧ず鑴�
+  printConfig: {},
+  importConfig: {},
+  exportConfig: {},
+  //寮�鍚櫄鎷熸粴鍔�
+  scrollY: {enabled: true},
+  showOverflow: true,
+  columnConfig: {
+    resizable: true,
+    useKey: true
+  },
+  //绛涢�夐厤缃」
+  filterConfig: {
+    remote: true
+  },
+  customConfig: {
+    storage: true
+  },
+  editConfig: {
+    trigger: 'click',
+    mode: 'row',
+    showStatus: true
+  },
+  //琛ㄥご鍙傛暟銆佸垪鍚�
+  columns: [
+    {type: 'seq', fixed: "left", title: ' ', width: 50},
+    {type: 'checkbox', fixed: "left", title: '', width: 50},
+    {
+      field: 'cgdh',
+      width: '10%',
+      title: '鐗╂枡缂栫爜',
+      filters: [{data: ''}],
+      sortable: true
+    },
+    {
+      field: 'cgzt',
+      width: '10%',
+      title: '鐗╂枡鍚嶇О',
+      filters: [{data: ''}],
+      sortable: true
+    },
+    {
+      field: 'gys',
+      width: '10%',
+      title: '浜у湴',
+
+      filters: [{data: ''}],
+      sortable: true
+    },
+    {
+      field: 'w',
+      width: '8%',
+      title: '瀹藉害',
+      filters: [{data: ''}],
+      sortable: true
+    },
+    {
+      field: 'g',
+      width: '8%',
+      title: '楂樺害',
+      filters: [{data: ''}],
+      sortable: true,
+
+    },
+    {
+      field: 'h',
+      width: '8%',
+      title: '鍘氬害',
+      filters: [{data: ''}],
+      sortable: true
+    },
+    {
+      field: 'xh',
+      width: '8%',
+      title: '鍨嬪彿',
+      filters: [{data: ''}],
+      sortable: true
+    },
+    {
+      field: 'dw',
+      width: '8%',
+      title: '鍗曚綅',
+      filters: [{data: ''}],
+      sortable: true
+    },
+    {
+      field: 'sl',
+      width: '8%',
+      title: '鏁伴噺',
+      filters: [{data: ''}],
+      sortable: true
+    },
+    {
+      field: 'czsl',
+      width: '8%',
+      title: '鎿嶄綔鏁伴噺',
+      type: 'number',
+      editRender: {name: 'input', type: 'number', attrs: {placeholder: ''}}
+    },
+    {
+      field: 'sl',
+      width: '12%',
+      title: '绠辨暟',
+      filters: [{data: ''}],
+      sortable: true
+    },
+    {
+      field: 'je',
+      width: '8%',
+      title: '鍗曠墖闈㈢Н',
+      filters: [{data: ''}],
+      sortable: true
+    },
+    {
+      field: 'je',
+      width: '12%',
+      title: '鍗曚环',
+      filters: [{data: ''}],
+      sortable: true
+    },
+    {
+      field: 'sl',
+      width: '8%',
+      title: '鎬婚潰绉�',
+      filters: [{data: ''}],
+      sortable: true
+    },
+    {
+      field: 'yl',
+      width: '10%',
+      title: '鎬婚噾棰�',
+      filters: [{data: ''}],
+      sortable: true
+    },
+    {
+      field: 'yl',
+      width: '10%',
+      title: '澶囨敞',
+      filters: [{data: ''}],
+      sortable: true
+    }
+  ],
+  //琛ㄥご鎸夐挳
+  toolbarConfig: {
+    buttons: [
+      {type: 'text'},
+      {
+        'name': '淇濆瓨璁㈠崟',
+        status: 'primary',
+        'code': 'Save'
+      }, {
+        'name': '鍏ュ簱',
+        status: 'primary',
+        'code': 'Storage'
+      },
+      {
+        'name': '閫�璐�',
+        status: 'primary',
+        'code': 'Return'
+      },
+      {
+        'name': '鍙栨秷',
+        status: '',
+        'code': 'Cancel'
+      }],
+    import: false,
+    export: true,
+    print: true,
+    zoom: true,
+    custom: true,
+    tools: [],
+
+  },
+  //table body瀹為檯鏁版嵁
+  data: [{}, {}, {}],
+  //鑴氬悎骞�
+  mergeFooterItems: [
+    {row: 0, col: 0, rowspan: 1, colspan: 3}
+  ],
+  //鍚堝苟鑴�
+  footerMethod({columns, data}) {//椤佃剼鍑芥暟
+    return [
+      columns.map((column, columnIndex) => {
+        if (columnIndex === 0) {
+          return '鍚堣:'
+        }
+        /* if (props.tableProp.footList.includes(column.field)) {
+           return sumNum(data, column.field)
+         }*/
+        return ''
+      })
+    ]
+  },
+
+})
+
+const xGrid = ref()
+const gridEvents = {
+  toolbarButtonClick({code}) {
+    const $grid = xGrid.value
+    if ($grid) {
+      switch (code) {
+//淇濆瓨
+        case 'Save': {
+          MessageAlertShow('鐐瑰嚮浜嗕繚瀛樿鍗�','鎿嶄綔鎻愮ず');
+          //MessageShow('鐐瑰嚮浜嗕繚瀛樿鍗曪紒', 'error');
+          break;
+        }
+//鍙栨秷锛岃繑鍥炴煡璇㈤〉闈�
+        case 'Cancel': {
+          router.push({path: '/main/purchaseOrder/StoragePurchaseOrder'})
+          break
+        }
+//鍏ュ簱
+        case 'Storage': {
+          if ($grid.getCheckboxRecords().length === 0) {
+            MessageShow('璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹紒', 'warning');
+            return
+          } else {
+            MessageConfirmShow('鍏ュ簱', '鏄惁纭瀵归�変腑鐨�' + $grid.getCheckboxRecords().length + '鐗╂枡杩涜鍏ュ簱鎿嶄綔锛�');
+          }
+          break
+        }
+//閫�璐�
+        case 'Return': {
+          if ($grid.getCheckboxRecords().length === 0) {
+            MessageShow('璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹紒', 'warning');
+            return
+          } else {
+
+            MessageConfirmShow('閫�璐�', '鏄惁纭瀵归�変腑鐨�' + $grid.getCheckboxRecords().length + '鐗╂枡杩涜閫�璐ф搷浣滐紒');
+          }
+          break
+        }
+
+      }
+    }
+  },
+  toolbarToolClick({code}) {
+    const $grid = xGrid.value
+    if ($grid) {
+      switch (code) {
+        case 'myPrint': {
+          $grid.print()
+          break
+        }
+      }
+    }
+  },
+}
+
+//琛ㄥ崟鏁版嵁
+const form = reactive({
+  name: '',
+  region: '',
+  date: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+  supplier: '',
+  buyer: '',
+  buyItem: '',
+  buyType: ''
+
+})
+
+
+//椤甸潰閫昏緫浠g爜鎵ц
+function logicExecute(type){
+  const $grid = xGrid.value
+  switch (type) {
+    case '鍏ュ簱':
+      //鍏ュ簱閫昏緫浠g爜TODO
+      MessageShow('鍏ュ簱鎴愬姛锛�', 'success');
+      break;
+    case '閫�璐�':
+      //閫�璐ч�昏緫浠g爜TODO
+      MessageShow('閫�璐ф垚鍔燂紒', 'success');
+      break;
+    default:
+      MessageShow('鏈煡鎿嶄綔锛�', 'error');
+      break;
+  }
+  return true;
+}
+
+//鎻愮ず淇℃伅
+//淇℃伅鍐呭锛屾樉绀烘柟寮忥紝鏄剧ず鏍囬锛岀被鍨�
+const MessageShow = (content,type='success') => {
+    ElMessage({
+      message: content,
+      type: type,
+      showClose: true,
+    })
+}
+
+//鎿嶄綔纭绫讳俊鎭細鎿嶄綔绫诲瀷锛屾彁绀哄唴瀹癸紝鎻愮ず鏍囧ご锛屾彁绀虹被鍨�
+const MessageConfirmShow = (czType, content, title='鎿嶄綔纭鎻愮ず', type='warning') => {
+  ElMessageBox.confirm(
+      content,
+      title,
+      {
+        cancelButtonText: '鍙栨秷',
+        confirmButtonText: '纭畾',
+        type: type,
+        center: true,
+      }
+  )
+      //鐐瑰嚮浜嗙‘瀹�
+      .then(() => {
+
+        return logicExecute(czType);
+      })
+      //鐐瑰嚮浜嗗彇娑�
+      .catch(() => {
+        return false;
+      })
+}
+
+//寮圭獥淇℃伅
+const MessageAlertShow=(content,title,type='info')=>{
+
+  ElMessageBox.alert(content, title, {
+    // 绂佹鑷姩瀵圭劍
+    //autofocus: false,
+    confirmButtonText: 'OK',
+    /*callback: (action: Action) => {
+      MessageShow(`action: ${action}`,type)
+    },*/
+  })
+}
+
+</script>
+
+
+<style scoped>
+:deep(.el-descriptions__table .label-diy) {
+  text-align: center;
+  width: 100px;
+  /*  font-size: large;*/
+}
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/mm/purchaseOrder/Payment.vue b/UI-Project/src/views/mm/purchaseOrder/Payment.vue
new file mode 100644
index 0000000..475da20
--- /dev/null
+++ b/UI-Project/src/views/mm/purchaseOrder/Payment.vue
@@ -0,0 +1,354 @@
+<template>
+  <el-container>
+    <el-header class="m-header" style="height: auto">
+      <el-row :gutter="10" style="margin-bottom: 5px">
+        <el-col :span="7">
+          <el-date-picker
+              v-model="datevalue"
+              type="daterange"
+              unlink-panels
+              range-separator="鍒�"
+              start-placeholder="寮�濮嬫棩鏈�"
+              end-placeholder="缁撴潫鏃ユ湡"
+              :shortcuts="shortcuts"
+              :size="size"
+              format="YYYY/MM/DD"
+              value-format="YYYY-MM-DD"
+          />
+        </el-col>
+
+        <el-col :span="2">
+          <el-button
+              id="select"
+              type="primary"
+              :icon="Search"
+              @click="autoAddRow">鏌ヨ
+          </el-button>
+        </el-col>
+      </el-row>
+
+    </el-header>
+    <el-main style="padding-top: 5px">
+      <vxe-grid
+
+          max-height="600"
+          @filter-change="filterChanged"
+          class="mytable-scrollbar"
+          ref="xGrid"
+          v-bind="PayOptions"
+          @="gridEvents"
+
+      >
+
+        <!--      涓嬫媺鏄剧ず鎵�鏈変俊鎭彃妲�-->
+        <template #content="{ row }">
+          <ul class="expand-wrapper">
+            <li  v-for="(item,index) in gridOptions.columns" v-show="item.field!==undefined ">
+              <span style="font-weight: bold">{{item.title+':  '}}</span>
+              <span>{{ row[item.field] }}</span>
+            </li>
+          </ul>
+        </template>
+
+        <!--宸﹁竟鍥哄畾鏄剧ず鐨勬彃妲�-->
+        <template #button_slot="{ row }">
+          <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">缂栬緫</el-button>
+          <!--          <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">鍒犻櫎</el-button>-->
+          <!--          <el-button @click="cellClickEvent" link type="primary" size="small">璇︽儏</el-button>-->
+        </template>
+
+
+        <template #num1_filter="{ column, $panel }">
+          <div>
+            <div v-for="(option, index) in column.filters" :key="index">
+              <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/>
+            </div>
+          </div>
+        </template>
+      </vxe-grid>
+    </el-main>
+  </el-container>
+</template>
+
+
+<script setup>
+import {ref} from 'vue'
+import {Search} from "@element-plus/icons-vue";
+import 'dayjs/locale/zh-cn'
+import {VXETable} from "vxe-table";
+import {reactive} from "vue";
+import {useRouter} from 'vue-router'
+import {ElMessage, ElMessageBox} from "element-plus";
+
+const datevalue = ref('')//鏃堕棿
+
+//缁勪欢鎺ユ敹鍙傛暟
+const PayOptions = reactive({
+  border: "full",//琛ㄦ牸鍔犺竟妗�
+  keepSource: true,//淇濇寔婧愭暟鎹�
+  align: 'center',//鏂囧瓧灞呬腑
+  stripe: true,//鏂戦┈绾�
+  rowConfig: {isCurrent: true, isHover: true, height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
+  id: 'CustomerList',
+  showFooter: true,//鏄剧ず鑴�
+  printConfig: {},
+  importConfig: {},
+  exportConfig: {},
+  scrollY: {enabled: true},//寮�鍚櫄鎷熸粴鍔�
+  showOverflow: true,
+  columnConfig: {
+    resizable: true,
+    useKey: true
+  },
+  filterConfig: {   //绛涢�夐厤缃」
+    remote: true
+  },
+  customConfig: {
+    storage: true
+  },
+  editConfig: {
+    trigger: 'click',
+    mode: 'row',
+    showStatus: true
+  },
+  columns: [
+    /* {title: '鎿嶄綔', width: '8%', slots: {default: 'button_slot'}, fixed: "left"},*/
+    {type: 'expand', title: '', fixed: "left", slots: {content: 'content'}, width: '5%'},//璇︽儏
+    {type: 'checkbox', fixed: "left", title: '', width: '5%'},
+    {type: 'seq', fixed: "left", title: ' ', width: '5%'},
+    {
+      field: 'cgdh',
+      width: '10%',
+      title: '閲囪喘鍗曞彿',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {field: 'cgzt', width: '10%', title: '鏈堜唤', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
+    {
+      field: 'gys',
+      width: '10%',
+      title: '渚涘簲鍟�',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {
+      field: 'wlbh',
+      width: '10%',
+      title: '鏈熷垵閲戦',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {
+      field: 'wlmc',
+      width: '10%',
+      title: '鏈湡搴斾粯',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {
+      field: 'w',
+      width: '10%',
+      title: '鏈湡宸蹭粯',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {
+      field: 'g',
+      width: '10%',
+      title: '鏈熸湯浣欓',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {field: 'h', width: '9%', title: '绋庣巼', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
+    {field: '6', width: '10%', title: '澶囨敞', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true}
+  ],//琛ㄥご鍙傛暟
+  toolbarConfig: {
+    buttons: [{type: 'text'}, {
+      'name': '搴斾粯纭',
+      status: 'primary',
+      'code': 'Sure',
+    }],
+    import: false,
+    export: true,
+    print: true,
+    zoom: true,
+    custom: true,
+    style: 'paddling-left:10px'
+  },//琛ㄥご鎸夐挳
+  data: [{}, {}, {}, {}],//table body瀹為檯鏁版嵁
+  mergeFooterItems: [
+    {row: 0, col: 0, rowspan: 1, colspan: 3}
+  ],//鍚堝苟鑴�
+  footerMethod({columns, data}) {//椤佃剼鍑芥暟
+    return [
+      columns.map((column, columnIndex) => {
+        if (columnIndex === 0) {
+          return '鍚堣:'
+        }
+        /* if (props.tableProp.footList.includes(column.field)) {
+           return sumNum(data, column.field)
+         }*/
+        return ''
+      })
+    ]
+  },
+
+})
+
+
+const xGrid = ref()
+const gridEvents = {
+  toolbarButtonClick({code}) {
+    const $grid = xGrid.value
+    if ($grid) {
+      switch (code) {
+          //搴斾粯纭
+        case 'Sure': {
+          if ($grid.getCheckboxRecords().length === 0) {
+            MessageShow("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�!", 'warning');
+            return
+          } else {
+            MessageConfirmShow("纭搴斾粯", '鎮ㄩ�夋嫨浜�' + $grid.getCheckboxRecords().length + '鏉℃暟鎹紒,鏄惁纭搴斾粯锛�')
+          }
+          break
+        }
+      }
+    }
+  },
+  toolbarToolClick({code}) {
+    const $grid = xGrid.value
+    if ($grid) {
+      switch (code) {
+        case 'myPrint': {
+          $grid.print()
+          break
+        }
+      }
+    }
+  },
+}
+
+
+
+const shortcuts = [
+  {
+    text: '杩戜竴鍛�',
+    value: () => {
+      const end = new Date()
+      const start = new Date()
+      start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
+      return [start, end]
+    },
+  },
+  {
+    text: '杩戜竴涓湀',
+    value: () => {
+      const end = new Date()
+      const start = new Date()
+      start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
+      return [start, end]
+    },
+  },
+  {
+    text: '杩戜笁涓湀',
+    value: () => {
+      const end = new Date()
+      const start = new Date()
+      start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
+      return [start, end]
+    },
+  },
+]
+
+
+//椤甸潰閫昏緫浠g爜鎵ц
+function logicExecute(type){
+  const $grid = xGrid.value
+  switch (type) {
+    case '纭搴斾粯':
+      //鍏ュ簱閫昏緫浠g爜TODO
+      MessageShow('鎿嶄綔鎴愬姛锛�', 'success');
+      break;
+
+    default:
+      MessageShow('鏈煡鎿嶄綔锛�', 'error');
+      break;
+
+  }
+  return true;
+}
+
+
+//鎻愮ず淇℃伅
+//淇℃伅鍐呭锛屾樉绀烘柟寮忥紝鏄剧ず鏍囬锛岀被鍨�
+const MessageShow = (content, type = 'success') => {
+  ElMessage({
+    message: content,
+    type: type,
+    showClose: true,
+  })
+}
+
+//鎿嶄綔纭绫讳俊鎭細鎿嶄綔绫诲瀷锛屾彁绀哄唴瀹癸紝鎻愮ず鏍囧ご锛屾彁绀虹被鍨�
+const MessageConfirmShow = (czType, content, title = '鎿嶄綔纭鎻愮ず', type = 'warning') => {
+  ElMessageBox.confirm(
+      content,
+      title,
+      {
+        cancelButtonText: '鍙栨秷',
+        confirmButtonText: '纭畾',
+        type: type,
+        center: true,
+      }
+  )
+      //鐐瑰嚮浜嗙‘瀹�
+      .then(() => {
+
+        return  logicExecute(czType);
+
+      })
+      //鐐瑰嚮浜嗗彇娑�
+      .catch(() => {
+        return false;
+      })
+}
+
+//寮圭獥淇℃伅
+const MessageAlertShow = (content, title, type = 'info') => {
+
+  ElMessageBox.alert(content, title, {
+    // 绂佹鑷姩瀵圭劍
+    //autofocus: false,
+    confirmButtonText: 'OK',
+    /*callback: (action: Action) => {
+      MessageShow(`action: ${action}`,type)
+    },*/
+  })
+}
+
+</script>
+
+
+<style scoped>
+.el-row {
+  margin-bottom: 20px;
+}
+
+.el-row:last-child {
+  margin-bottom: 0;
+}
+
+.el-col {
+  border-radius: 4px;
+}
+
+.m-header {
+  height: 32px;
+}
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/mm/purchaseOrder/PurchaseOrder.vue b/UI-Project/src/views/mm/purchaseOrder/PurchaseOrder.vue
new file mode 100644
index 0000000..62b26fb
--- /dev/null
+++ b/UI-Project/src/views/mm/purchaseOrder/PurchaseOrder.vue
@@ -0,0 +1,39 @@
+<template>
+  <div class="common-layout">
+    <el-container>
+      <!-- <el-header style="height: 30px"> -->
+
+        <!-- <el-breadcrumb :separator-icon="ArrowRight">
+          <el-breadcrumb-item>閲囪喘涓庣墿璧�</el-breadcrumb-item>
+          <el-breadcrumb-item> 閲囪喘閫�璐�
+
+          </el-breadcrumb-item>
+          <el-breadcrumb-item :to="{path:'/main/purchaseReturn/SelectPurchaseReturn'}"> 鏌ヨ
+
+          </el-breadcrumb-item>
+
+          <el-breadcrumb-item >
+
+          </el-breadcrumb-item>
+        </el-breadcrumb> -->
+      <!-- </el-header> -->
+      <el-main style="padding: 0;width: 99%;height: 100%;">
+        <router-view/>
+      </el-main>
+      <!--      <el-footer>Footer</el-footer>-->
+    </el-container>
+  </div>
+</template>
+
+
+<script setup>
+
+import {ArrowRight} from "@element-plus/icons-vue";
+
+
+</script>
+
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/mm/purchaseOrder/Return.vue b/UI-Project/src/views/mm/purchaseOrder/Return.vue
new file mode 100644
index 0000000..6d8e32e
--- /dev/null
+++ b/UI-Project/src/views/mm/purchaseOrder/Return.vue
@@ -0,0 +1,593 @@
+<template>
+  <el-container>
+    <el-header class="m-header" style="height: auto">
+      <el-row :gutter="10" style="margin-bottom: 5px">
+        <el-col :span="7">
+          <el-date-picker
+              v-model="datevalue"
+              type="daterange"
+              unlink-panels
+              range-separator="鍒�"
+              start-placeholder="寮�濮嬫棩鏈�"
+              end-placeholder="缁撴潫鏃ユ湡"
+              :shortcuts="shortcuts"
+              :size="size"
+              format="YYYY/MM/DD"
+              value-format="YYYY-MM-DD"
+          />
+
+        </el-col>
+
+        <el-col :span="2">
+          <el-button
+              id="select"
+              type="primary"
+              :icon="Search"
+              @click="BtnSearchPurchaseOrder">鏌ヨ
+          </el-button>
+        </el-col>
+      </el-row>
+    </el-header>
+    <el-main style="padding-top: 5px;height:100%">
+      <vxe-grid
+
+          max-height="600"
+          @filter-change="filterChanged"
+          class="mytable-scrollbar"
+          ref="xGrid"
+          v-bind="gridOptions"
+          v-on="gridEvents"
+          @cell-dblclick="cellClickEvent"
+      >
+
+        <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
+        <!--      涓嬫媺鏄剧ず鎵�鏈変俊鎭彃妲�-->
+        <template #content="{ row }">
+          <ul class="expand-wrapper">
+            <li v-for="(item,index) in gridOptions.columns" v-show="item.field!==undefined ">
+              <span style="font-weight: bold">{{ item.title + ':  ' }}</span>
+              <span>{{ row[item.field] }}</span>
+            </li>
+          </ul>
+        </template>
+
+        <!--宸﹁竟鍥哄畾鏄剧ず鐨勬彃妲�-->
+        <template #button_slot="{ row }">
+          <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">缂栬緫</el-button>
+          <!--          <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">鍒犻櫎</el-button>-->
+          <!--          <el-button @click="cellClickEvent" link type="primary" size="small">璇︽儏</el-button>-->
+        </template>
+
+
+        <template #num1_filter="{ column, $panel }">
+          <div>
+            <div v-for="(option, index) in column.filters" :key="index">
+              <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/>
+            </div>
+          </div>
+        </template>
+      </vxe-grid>
+
+
+      <!--      璇︽儏妗� 閮ㄥ垎1-->
+      <vxe-modal v-model="showDetails" title="鏌ョ湅璇︽儏" width="600" height="80%" :mask="false" :lock-view="false"
+                 resize>
+        <el-container>
+          <el-header height="35px"
+                     style="margin: 0;padding: 0">
+
+            <el-input v-model="showCGDH" placeholder="閲囪喘鍗曞彿" disabled>
+              <template #prepend>閲囪喘鍗曞彿锛�</template>
+            </el-input>
+          </el-header>
+          <el-main>
+            <template #default>
+              <vxe-table
+                  border="default"
+                  auto-resize
+                  show-overflow
+                  max-height="400"
+                  :row-config="{isHover: true}"
+                  :show-header="false"
+                  :sync-resize="showDetails"
+                  :data="detailData"
+
+              >
+                <vxe-column field="label" width="30%" class-name="v-column-label"></vxe-column>
+                <vxe-column field="value"></vxe-column>
+              </vxe-table>
+            </template>
+          </el-main>
+          <el-footer height="40px">
+            <el-row>
+              <el-col :offset="20" :span="4">
+                <el-button
+                    id="Sure"
+                    type="primary"
+                    @click="SureReturn"
+                >纭閫�璐�
+                </el-button>
+              </el-col>
+
+            </el-row>
+          </el-footer>
+        </el-container>
+      </vxe-modal>
+      <!--      璇︽儏妗� 閮ㄥ垎1 缁撴潫-->
+    </el-main>
+  </el-container>
+</template>
+
+
+<script setup>
+
+import {ref} from "vue";
+import {reactive} from "vue";
+import {useRouter} from 'vue-router'
+import {Search} from "@element-plus/icons-vue";
+import dayjs from "dayjs";
+import {ElMessage, ElMessageBox} from "element-plus";
+
+
+let router = useRouter()
+const getTableRow = (row, type) => {
+  switch (type) {
+    case 'edit' : {
+      //alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑缂栬緫淇℃伅')
+      router.push({path: '/main/purchaseOrder/DetailsPurchaseOrder', query: {id: row.id}})
+      break
+    }
+    case 'delete': {
+
+
+      alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑鍒犻櫎淇℃伅' + row.id)
+      break
+    }
+  }
+}
+
+const xGrid = ref()
+
+const gridEvents = {
+  toolbarButtonClick({code}) {
+    const $grid = xGrid.value
+    if ($grid) {
+      switch (code) {
+        case 'Sure': {
+          if ($grid.getCheckboxRecords().length === 0) {
+
+            MessageShow('璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�!', 'warning');
+
+            return
+          } else {
+
+            MessageConfirmShow('纭畾', '鎮ㄩ�夋嫨浜�' + $grid.getCheckboxRecords().length + '鏉℃暟鎹紒,鏄惁纭閫�璐э紵')
+          }
+          break
+        }
+        case 'Log': {
+          MessageAlertShow('鐐瑰嚮浜嗛��璐ц褰�!', '鎿嶄綔鎻愮ず');
+          break
+        }
+      }
+    }
+  },
+  toolbarToolClick({code}) {
+    const $grid = xGrid.value
+    if ($grid) {
+      switch (code) {
+        case 'myPrint': {
+          $grid.print()
+          break
+        }
+      }
+    }
+  },
+}
+
+
+//鏌ヨ鎸夐挳鏂规硶
+const BtnSearchPurchaseOrder = () => {
+
+  //寮�濮嬫椂闂达紝缁撴潫鏃堕棿鑾峰彇
+  //MessageShow("寮�濮嬫椂闂�"+datevalue._rawValue[0]+"\r\n缁撴潫鏃堕棿\r\n"+datevalue._rawValue[1]);
+
+  for (let i = 1; i < 6; i++) {
+    const randomInt = Math.floor(Math.random() * 999) + 1000;//4浣嶆暟闅忔満鏁�
+    const randomSumInt = Math.floor(Math.random() * 99) + 10;//2浣嶆暟闅忔満鏁�
+    const randomOrderInt = Math.floor(Math.random() * 99) + 100;//3浣嶆暟闅忔満鏁�
+    const t = i % 2 === 0 ? 5 : 6;
+    const s = i % 2 === 0 ? '鍏ュ簱' : i % 3 === 0 ? '閫�璐�' : '閮ㄥ垎鍏ュ簱';
+    const thdh = i % 2 === 0 ? '' : i % 3 === 0 ? 'THID' + randomOrderInt : '';
+    const CGNo = 'NGCG231200' + randomOrderInt;//閲囪喘缂栧彿
+    const wlNo = 'NGWL1000' + randomInt;
+    const xh = 'NGXH' + randomSumInt;
+    const wlmc = 'WLMC' + randomInt;
+    const gys = '渚涘簲鍟�' + randomSumInt;
+    const xhdh = 'NG231200' + randomOrderInt;
+    const w = i % 2 === 0 ? '3300' : i % 3 === 0 ? '3660' : i % 4 === 0 ? '2250' : '2580';
+    const h = i % 2 === 0 ? '2440' : i % 3 === 0 ? '2440' : i % 4 === 0 ? '2000' : '2300';
+    const dw = i % 2 === 0 ? '鐗�' : i % 3 === 0 ? '骞崇背' : i % 4 === 0 ? '鍖�' : '鍚�';
+    now.setDate(now.getDate() + 1);
+    gridOptions.data.push({
+      cgdh: CGNo,
+      thdh: thdh,
+      h: t,
+      xh: xh,
+      wlbh: wlNo,
+      wlmc: wlmc,
+      gys: gys,
+      w: w,
+      g: h,
+      dw: dw,
+      cgzt: s,
+      rq: dayjs(now).format('YYYY-MM-DD'),
+      yl: randomSumInt,
+      sl: randomOrderInt,
+      xsdh: xhdh,
+      je: randomInt,
+      6: '139xxxxxxxx',
+
+    })
+  }
+
+}
+
+
+//缁勪欢鎺ユ敹鍙傛暟
+const gridOptions = reactive({
+  border: "full",//琛ㄦ牸鍔犺竟妗�
+  keepSource: true,//淇濇寔婧愭暟鎹�
+  align: 'center',//鏂囧瓧灞呬腑
+  stripe: true,//鏂戦┈绾�
+  rowConfig: {isCurrent: true, isHover: true, height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
+  id: 'CustomerList',
+  showFooter: true,//鏄剧ず鑴�
+  printConfig: {},
+  importConfig: {},
+  exportConfig: {},
+  scrollY: {enabled: true},//寮�鍚櫄鎷熸粴鍔�
+  showOverflow: true,
+  columnConfig: {
+    resizable: true,
+    useKey: true
+  },
+  filterConfig: {   //绛涢�夐厤缃」
+    remote: true
+  },
+  customConfig: {
+    storage: true
+  },
+  editConfig: {
+    trigger: 'click',
+    mode: 'row',
+    showStatus: true
+  },
+  columns: [
+    {type: 'expand', title: '', fixed: "left", slots: {content: 'content'}, width: 50},//璇︽儏
+    {title: '鎿嶄綔', width: '8%', slots: {default: 'button_slot'}, fixed: "left"},
+    {type: 'checkbox', fixed: "left", title: '', width: 50},
+    {type: 'seq', fixed: "left", title: ' ', width: 50},
+
+
+    {
+      field: 'thdh',
+      width: '10%',
+      title: '閫�璐у崟鍙�',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {
+      field: 'cgdh',
+      width: '10%',
+      title: '閲囪喘鍗曞彿',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {field: 'cgzt', width: '10%', title: '鐘舵��', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
+    {
+      field: 'gys',
+      width: '10%',
+      title: '渚涘簲鍟�',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {
+      field: 'wlbh',
+      width: '10%',
+      title: '鐗╂枡缂栧彿',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {
+      field: 'wlmc',
+      width: '10%',
+      title: '鐗╂枡鍚嶇О',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {field: 'w', width: '8%', title: '瀹藉害', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
+    {field: 'g', width: '8%', title: '楂樺害', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
+    {field: 'h', width: '8%', title: '鍘氬害', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
+    {field: 'xh', width: '8%', title: '鍨嬪彿', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
+    {field: 'dw', width: '8%', title: '鍗曚綅', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
+    {
+      field: '6',
+      width: '12%',
+      title: '涓嶅惈绋庡崟浠�',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {field: 'sl', width: '8%', title: '鏁伴噺', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
+    {
+      field: 'sl',
+      width: '12%',
+      title: '宸查噰璐暟閲�',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {field: 'je', width: '8%', title: '閲戦', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
+    {
+      field: 'je',
+      width: '12%',
+      title: '涓嶅惈绋庨噾棰�',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {field: '6', width: '8%', title: '绋庣巼', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
+    {field: 'sl', width: '8%', title: '搴撳瓨', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
+    {field: 'yl', width: '10%', title: '鍛ㄧ敤閲�', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
+    {field: 'yl', width: '10%', title: '鏈堢敤閲�', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
+    {
+      field: 'cgzt',
+      width: '10%',
+      title: '鍗曟嵁鐘舵��',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {
+      field: 'xsdh',
+      width: '10%',
+      title: '閿�鍞崟鍙�',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {
+      field: 'rq',
+      width: '10%',
+      title: '鍒跺崟鏃ユ湡',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {field: '6', width: '10%', title: '鍒跺崟浜�', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
+    {
+      field: '6',
+      width: '10%',
+      title: '閲囪喘閮ㄩ棬',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {
+      field: '6',
+      width: '10%',
+      title: '閲囪喘缁勭粐',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {field: '6', width: '10%', title: '澶囨敞', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true}
+  ],//琛ㄥご鍙傛暟
+  toolbarConfig: {
+    buttons: [{type: 'text'}, {
+      'name': '閫�璐ц褰�',
+
+      'code': 'Log'
+    },
+      {
+        'name': '纭閫�璐�',
+        status: 'primary',
+        'code': 'Sure'
+      }],
+    import: false,
+    export: true,
+    print: true,
+    zoom: true,
+    custom: true,
+    style: 'paddling-left:10px'
+  },//琛ㄥご鎸夐挳
+  data: [],//table body瀹為檯鏁版嵁
+  mergeFooterItems: [
+    {row: 0, col: 0, rowspan: 1, colspan: 4}
+  ],//鍚堝苟鑴�
+  footerMethod({columns, data}) {//椤佃剼鍑芥暟
+    return [
+      columns.map((column, columnIndex) => {
+        if (columnIndex === 0) {
+          return '鍚堣:'
+        }
+        /* if (props.tableProp.footList.includes(column.field)) {
+           return sumNum(data, column.field)
+         }*/
+        return ''
+      })
+    ]
+  },
+
+})
+
+
+//璇︽儏妗� 閮ㄥ垎2
+const showCGDH = ref();
+const showDetails = ref(false);
+let detailData = [];
+const cellClickEvent = ({row}) => {
+  if (isQueryColumnId === false) {
+    queryColumnId();
+  }
+
+  detailData = list.map(field => {
+    return {label: queryColumnsTitle(field), value: row[field]}
+  })
+  showDetails.value = true;
+  showCGDH.value = row['cgdh'];
+}
+
+//鑾峰彇琛ㄥ垪
+let list = [];
+let columnIndex = 4;//鍒楁爣澶翠粠绗嚑鍒楀紑濮嬬殑
+let isQueryColumnId = false;
+const queryColumnId = () => {
+
+  while (columnIndex < gridOptions.columns.length) {
+    list.push(gridOptions.columns[columnIndex].field);
+    columnIndex++;
+  }
+  isQueryColumnId = true;
+  return list;
+}
+
+//鑾峰彇琛ㄥ垪鍚�
+function queryColumnsTitle(cn) {
+  let i = 0;
+  while (i < gridOptions.columns.length + 1) {
+    if (gridOptions.columns[i].field === cn) {
+      return gridOptions.columns[i].title;
+    }
+    i++;
+  }
+}
+
+// 璇︽儏妗嗛儴鍒�2 缁撴潫
+
+const SureReturn = () => {
+
+  MessageConfirmShow('閫�璐�', '鏄惁纭閫�璐э紵')
+
+}
+
+//璇︽儏妗� 閮ㄥ垎2 缁撴潫
+
+
+const now = new Date()
+
+//鏃堕棿蹇嵎閫夋嫨
+const datevalue = ref('')
+const shortcuts = [
+  {
+    text: '杩戜竴鍛�',
+    value: () => {
+      const end = new Date()
+      const start = new Date()
+      start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
+      return [start, end]
+    },
+  },
+  {
+    text: '杩戜竴涓湀',
+    value: () => {
+      const end = new Date()
+      const start = new Date()
+      start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
+      return [start, end]
+    },
+  },
+  {
+    text: '杩戜笁涓湀',
+    value: () => {
+      const end = new Date()
+      const start = new Date()
+      start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
+      return [start, end]
+    },
+  },
+]
+
+
+//椤甸潰閫昏緫浠g爜鎵ц
+function logicExecute(type) {
+  const $grid = xGrid.value
+  switch (type) {
+    case '纭畾':
+      //澶氶�夐��璐ч�昏緫浠g爜TODO
+      MessageShow('鎿嶄綔鎴愬姛锛�', 'success');
+      break;
+    case '閫�璐�':
+      //鍗曢��璐ч�昏緫浠g爜TODO
+      MessageShow('鎿嶄綔鎴愬姛锛�', 'success');
+      break;
+    default:
+      MessageShow('鏈煡鎿嶄綔锛�', 'error');
+      break;
+  }
+  return true;
+}
+
+
+//鎻愮ず淇℃伅
+//淇℃伅鍐呭锛屾樉绀烘柟寮忥紝鏄剧ず鏍囬锛岀被鍨�
+const MessageShow = (content, type = 'success') => {
+  ElMessage({
+    message: content,
+    type: type,
+    showClose: true,
+  })
+}
+
+//鎿嶄綔纭绫讳俊鎭細鎿嶄綔绫诲瀷锛屾彁绀哄唴瀹癸紝鎻愮ず鏍囧ご锛屾彁绀虹被鍨�
+const MessageConfirmShow = (czType, content, title = '鎿嶄綔纭鎻愮ず', type = 'warning') => {
+  ElMessageBox.confirm(
+      content,
+      title,
+      {
+        cancelButtonText: '鍙栨秷',
+        confirmButtonText: '纭畾',
+        type: type,
+        center: true,
+      }
+  )
+      //鐐瑰嚮浜嗙‘瀹�
+      .then(() => {
+
+        logicExecute(czType);
+
+        return true;
+      })
+      //鐐瑰嚮浜嗗彇娑�
+      .catch(() => {
+        return false;
+      })
+}
+
+//寮圭獥淇℃伅
+const MessageAlertShow = (content, title, type = 'info') => {
+
+  ElMessageBox.alert(content, title, {
+    // 绂佹鑷姩瀵圭劍
+    //autofocus: false,
+    confirmButtonText: 'OK',
+    /*callback: (action: Action) => {
+      MessageShow(`action: ${action}`,type)
+    },*/
+  })
+}
+
+</script>
+
+
+<style scoped>
+:deep(.v-column-label div span) {
+  font-weight: bold;
+}
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/mm/purchaseOrder/Select.vue b/UI-Project/src/views/mm/purchaseOrder/Select.vue
new file mode 100644
index 0000000..4b42baf
--- /dev/null
+++ b/UI-Project/src/views/mm/purchaseOrder/Select.vue
@@ -0,0 +1,917 @@
+<script setup>
+import {Search} from "@element-plus/icons-vue";
+import {reactive} from "vue";
+import {useRouter} from "vue-router"
+const router = useRouter()
+
+import { ref } from 'vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+const dialogFormVisible = ref(false)
+const dialogFormVisiblea = ref(false)
+const box = ref(true)
+const boxa = ref(false)
+const boxb = ref(false)
+const tableData = [
+  {
+    id: '1',
+    long: '1005',
+    wide: '183.6',
+    thick: '1991',
+    type: '寰呰瘑鍒�',
+    typea: '1',
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  },
+  {
+    id: '2',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    typea: '1',
+    type: '寰呰瘑鍒�'
+  }
+]
+const tableDataa = [
+  {
+    ida: '3',
+    longa: '1005',
+    widea: '183.6',
+    thicka: '1991',
+  },
+  {
+    ida: '4',
+    longa: '105',
+    widea: '183',
+    thicka: '191',
+  }
+]
+const open = () => {
+  ElMessageBox.confirm(
+    '鏄惁鍒犻櫎璇ユ潯淇℃伅?',
+    '鎻愮ず',
+    {
+      confirmButtonText: '鏄�',
+      cancelButtonText: '鍙栨秷',
+      type: 'warning',
+    }
+  )
+    .then(() => {
+      ElMessage({
+        type: 'success',
+        message: '鍒犻櫎鎴愬姛锛�',
+      })
+    })
+    .catch(() => {
+      ElMessage({
+        type: 'info',
+        message: '鍒犻櫎澶辫触',
+      })
+    })
+}
+const getTableRow = (row,type) =>{
+  switch (type) {
+    case 'edit' :{
+      //alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑缂栬緫淇℃伅')
+      router.push({path: '/main/returns/createReturns', query: { ReturnID: 'TH24010101' }})
+      break
+    }
+    case 'delete':{
+      alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑鍒犻櫎淇℃伅')
+      break
+    }
+  }
+}
+
+
+const dialogForm = () => {
+  ElMessageBox.confirm(
+    '鏄惁鍒囨崲鐗堝浘?',
+    '鎻愮ず',
+    {
+      confirmButtonText: '鏄�',
+      cancelButtonText: '鍙栨秷',
+      type: 'warning',
+    }
+  )
+  .then(() => {
+    // this.boxa = true
+    // this.box = false
+      
+    })
+}
+const selectedRows = ref([]);
+const handleSelectionChange = (selection) => {
+  selectedRows.value = selection;
+};
+const showMessage = () => {
+  if (selectedRows.value.length === 0) {
+    ElMessage('璇疯嚦灏戦�夋嫨涓�涓�夐」')
+  } else{
+    ElMessage({
+    message: '閲嶆柊璇嗗埆鎴愬姛锛�',
+    type: 'success',
+  })
+
+  }
+};
+const pick = () => {
+  if (selectedRows.value.length === 0) {
+    ElMessage('璇疯嚦灏戦�夋嫨涓�涓�夐」')
+  } else{
+    ElMessage({
+    message: '浜哄伐鍖归厤鎴愬姛锛�',
+    type: 'success',
+  })
+
+  }
+};
+const remove = () => {
+  if (selectedRows.value.length === 0) {
+    ElMessage('璇疯嚦灏戦�夋嫨涓�涓�夐」')
+  } else{
+    ElMessage({
+    message: '鎿嶄綔鎴愬姛锛�',
+    type: 'success',
+  })
+
+  }
+};
+
+const gridOptions = reactive({
+  border:  "full",//琛ㄦ牸鍔犺竟妗�
+  keepSource: true,//淇濇寔婧愭暟鎹�
+  align: 'center',//鏂囧瓧灞呬腑
+  stripe:true,//鏂戦┈绾�
+  rowConfig: {isCurrent: true, isHover: true,height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
+  id: 'OrderList',
+  showFooter: true,//鏄剧ず鑴�
+  printConfig: {},
+  importConfig: {},
+  exportConfig: {},
+  scrollY:{ enabled: true },//寮�鍚櫄鎷熸粴鍔�
+  showOverflow:true,
+  columnConfig: {
+    resizable: true,
+    useKey: true
+  },
+  filterConfig: {   //绛涢�夐厤缃」
+    remote: true
+  },
+  customConfig: {
+    storage: true
+  },
+  editConfig: {
+    trigger: 'click',
+    mode: 'row',
+    showStatus: true
+  },
+  data:  [
+    {
+      'id': '1',
+      'long': '5',
+      'wide': '1005',
+      'thick': '183.6',
+    }
+  ],
+})
+</script>
+
+<template>
+  <div>
+     <el-button style="margin-top: 5px;margin-left: 5px;"   id="searchButton" type="primary" @click="showMessage">閲嶆柊璇嗗埆</el-button>
+    <el-button style="margin-top: 5px"  id="searchButton" type="primary" @click="pick">浜哄伐鍖归厤</el-button>
+    <el-button style="margin-top: 5px"  id="searchButton" type="primary" @click="remove">浜哄伐鎷胯蛋</el-button>
+    <el-button style="margin-top: 5px"  id="searchButton" type="primary" >鐮存崯</el-button>
+    <el-button style="margin-top: 5px"  id="searchButton" @click="boxb = true;box = false" >鍚堝苟</el-button>
+    <el-button style="margin-top: 5px"  id="searchButton" @click="box = true;boxb = false" >鍗曠墖</el-button>
+    <el-button style="margin-top: 5px;float: right;margin-right: 50px;"  id="searchButton" type="text"  @click="dialogForm">鐗堝浘鍙�</el-button>
+
+    <div v-if="box">
+    <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading">
+      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 450px;">
+        <el-table height="100%" ref="table" 
+        @selection-change="handleSelectionChange"
+        :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
+          <el-table-column type="selection" width="55"  />
+          <el-table-column prop="id" align="center" label="id" min-width="80" />
+          <el-table-column prop="long" align="center" label="闀�" min-width="120" />
+          <el-table-column prop="wide" align="center" label="瀹�" min-width="120" />
+          <el-table-column prop="type" align="center" label="鐘舵��" min-width="120" />
+          <el-table-column prop="thick" align="center" label="鍏朵粬" min-width="120" />
+          <el-table-column fixed="right" label="鎿嶄綔" align="center" width="200">
+            <template #default>
+              <!-- <el-button size="mini" type="text" plain  @click="dialogFormVisible = true">璇︽儏</el-button> -->
+              <el-button size="mini" type="text" plain  @click="dialogFormVisiblea = true">璁剧疆</el-button>
+            </template>
+        </el-table-column>
+        </el-table>
+      </div>
+    </el-card>
+  </div>
+    <div v-if="boxb">
+    <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading">
+      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 450px;">
+        <el-table height="100%" ref="table" 
+        @selection-change="handleSelectionChange"
+        :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
+          <el-table-column type="selection" width="55"  />
+          <el-table-column prop="id" align="center" label="绫诲瀷搴忓彿" min-width="80" />
+          <el-table-column prop="long" align="center" label="闀�" min-width="120" />
+          <el-table-column prop="wide" align="center" label="瀹�" min-width="120" />
+          <el-table-column prop="typea" align="center" label="鏁伴噺" min-width="120" />
+          <el-table-column prop="thick" align="center" label="鍏朵粬" min-width="120" />
+          <el-table-column fixed="right" label="鎿嶄綔" align="center" width="200">
+            <template #default>
+              <!-- <el-button size="mini" type="text" plain  @click="dialogFormVisible = true">璇︽儏</el-button> -->
+              <el-button size="mini" type="text" plain  @click="dialogFormVisiblea = true">璁剧疆</el-button>
+            </template>
+        </el-table-column>
+        </el-table>
+      </div>
+    </el-card>
+  </div>
+    <!-- <div v-if="boxa">
+    <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading">
+      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto">
+        <el-table height="100%" ref="table" 
+        @selection-change="handleSelectionChange"
+        :data="tableDataa" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
+          <el-table-column type="selection" width="55"  />
+          <el-table-column prop="ida" align="center" label="id" min-width="80" />
+          <el-table-column prop="longa" align="center" label="闀�" min-width="120" />
+          <el-table-column prop="widea" align="center" label="瀹�" min-width="120" />
+          <el-table-column prop="thicka" align="center" label="鍏朵粬" min-width="120" />
+        </el-table>
+      </div>
+    </el-card>
+  </div> -->
+  </div>
+  <!-- <el-dialog v-model="dialogFormVisible" top="21vh" width="30%" title="灏忕墖鍥�" >
+      
+        <div id="message">
+          200*100
+        </div>
+    <template #footer>
+      <div id="dialog-footer">
+        <el-button @click="dialogFormVisible = false">鍏抽棴</el-button>
+      </div>
+    </template>
+  </el-dialog> -->
+  <el-dialog v-model="dialogFormVisiblea" top="21vh" width="30%" title="娴嬮噺璁剧疆" >
+            <el-form  size="mini" label-width="150px">
+      <el-form style="margin-left: 80px;">
+        
+        <el-form-item label="璇樊闀匡細" :required="true" style="width: 16vw;margin-bottom: 30px;">
+            <div style="display: flex;"><el-input  autocomplete="off" /><div style="margin-left: 10px;">mm</div> </div>
+              </el-form-item>
+              <el-form-item label="璇樊瀹斤細" :required="true" style="width: 16vw">
+            <div style="display: flex;"><el-input  autocomplete="off" /><div style="margin-left: 10px;">mm</div> </div>
+              </el-form-item>
+        </el-form>
+            </el-form>
+    <template #footer>
+      <div id="dialog-footer">
+        <el-button type="primary" @click="dialogFormVisiblea = false">
+          纭
+        </el-button>
+        <el-button @click="dialogFormVisiblea = false">鍙栨秷</el-button>
+      </div>
+    </template>
+  </el-dialog>
+  <div id="awatch">灏忕墖鍥撅細
+<div id="watch">200*100</div>
+</div>
+</template>
+
+<style scoped>
+
+#dt { display:block; float:left;line-height: 20px;margin-left: 100px;}
+#dta { display:block; float:left;line-height: 20px;margin-left: 80%;}
+#dialog-footer{
+  text-align: center;
+  margin-top: -15px;
+}
+#message{
+  text-align: center;
+  align-items: center;
+  color: black;
+   width: 200px;
+   height: 100px;
+   background-color: #337ecc;
+   margin-left: 28%;
+}
+#awatch{
+  display: flex;
+  margin-top: 20px;
+  font-size: 20px;
+  margin-left: 50px;
+}
+#watch{
+  text-align: center;
+  align-items: center;
+  color: black;
+   width: 300px;
+   height: 150px;
+   background-color: #337ecc;
+   margin-left: 2%;
+   margin-top: 10px;
+}
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/mm/purchaseOrder/Storage.vue b/UI-Project/src/views/mm/purchaseOrder/Storage.vue
new file mode 100644
index 0000000..98a9156
--- /dev/null
+++ b/UI-Project/src/views/mm/purchaseOrder/Storage.vue
@@ -0,0 +1,603 @@
+<template>
+  <el-container>
+    <el-header class="m-header" style="height: auto">
+      <el-row :gutter="10" style="margin-bottom: 5px">
+        <el-col :span="7">
+          <el-date-picker
+              v-model="datevalue"
+              type="daterange"
+              unlink-panels
+              range-separator="鍒�"
+              start-placeholder="寮�濮嬫棩鏈�"
+              end-placeholder="缁撴潫鏃ユ湡"
+              :shortcuts="shortcuts"
+
+              format="YYYY/MM/DD"
+              value-format="YYYY-MM-DD"
+          />
+
+        </el-col>
+        <el-col :span="2">
+          <el-button
+              id="select"
+              type="primary"
+              :icon="Search"
+              @click="BtnSearchPurchaseOrder">鏌ヨ
+          </el-button>
+        </el-col>
+
+      </el-row>
+
+
+    </el-header>
+    <el-main style="padding-top: 5px;height:100%">
+      <vxe-grid
+
+          max-height="600"
+          @filter-change="filterChanged"
+          class="mytable-scrollbar"
+          ref="xGrid"
+          v-bind="gridOptions"
+          v-on="gridEvents"
+
+          @cell-dblclick="cellClickEvent"
+
+      >
+
+        <!--      涓嬫媺鏄剧ず鎵�鏈変俊鎭彃妲�-->
+        <template #content="{ row }">
+          <ul class="expand-wrapper">
+            <li v-for="(item,index) in gridOptions.columns" v-show="item.field!==undefined ">
+              <span style="font-weight: bold">{{ item.title + ':  ' }}</span>
+              <span>{{ row[item.field] }}</span>
+            </li>
+          </ul>
+        </template>
+
+        <!--宸﹁竟鍥哄畾鏄剧ず鐨勬彃妲�-->
+        <template #button_slot="{ row }">
+          <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">缂栬緫</el-button>
+          <el-button @click="getTableRow(row,'look')" link type="primary" size="small">鏌ョ湅</el-button>
+          <!--          <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">鍒犻櫎</el-button>-->
+          <!--          <el-button @click="cellClickEvent" link type="primary" size="small">璇︽儏</el-button>-->
+        </template>
+
+
+        <template #num1_filter="{ column, $panel }">
+          <div>
+            <div v-for="(option, index) in column.filters" :key="index">
+              <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/>
+            </div>
+          </div>
+        </template>
+      </vxe-grid>
+
+      <!--      璇︽儏妗� 閮ㄥ垎1-->
+      <vxe-modal v-model="showDetails" title="鏌ョ湅璇︽儏" width="600" height="80%" :mask="false" :lock-view="false"
+                 resize>
+        <el-container>
+          <el-header height="35px"
+                     style="margin: 0;padding: 0">
+
+            <el-input v-model="showCGDH" placeholder="閲囪喘鍗曞彿" disabled>
+              <template #prepend>閲囪喘鍗曞彿锛�</template>
+            </el-input>
+          </el-header>
+          <el-main>
+            <template #default>
+              <vxe-table
+                  border="inner"
+                  auto-resize
+                  show-overflow
+                  max-height="400"
+                  :row-config="{isHover: true}"
+                  :show-header="false"
+                  :sync-resize="showDetails"
+                  :data="detailData">
+                <vxe-column field="label" width="30%" class-name="v-column-label"></vxe-column>
+                <vxe-column field="value"></vxe-column>
+              </vxe-table>
+            </template>
+          </el-main>
+          <el-footer height="40px">
+            <el-row>
+              <el-col :offset="20" :span="4">
+                <el-button
+                    id="Sure"
+                    type="primary"
+                    @click="SureStorage"
+                >纭鍏ュ簱
+                </el-button>
+              </el-col>
+
+            </el-row>
+          </el-footer>
+        </el-container>
+      </vxe-modal>
+      <!--      璇︽儏妗� 閮ㄥ垎1 缁撴潫-->
+
+
+    </el-main>
+  </el-container>
+
+
+</template>
+
+
+<script setup>
+import {ref} from "vue";
+import {reactive} from "vue";
+import {useRouter} from 'vue-router'
+import {Search} from "@element-plus/icons-vue";
+import dayjs from "dayjs";
+import {VXETable} from "vxe-table";
+import {ElMessage, ElMessageBox} from "element-plus";
+
+let router = useRouter()
+
+
+const getTableRow = (row, type) => {
+  switch (type) {
+    case 'edit' : {
+      //alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑缂栬緫淇℃伅')
+      router.push({path: '/main/purchaseOrder/DetailsPurchaseOrder', query: {id: row.id}});
+
+      break
+    }
+    case 'look': {
+      /*this.detailData = ['name', 'nickname', 'role', 'sex', 'age', 'amount', 'address'].map(field => {
+        return { label: field, value: row[field] }
+      })*/
+      //this.showDetails = true
+      break
+    }
+    case 'delete': {
+      alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑鍒犻櫎淇℃伅' + row.id)
+      break
+    }
+  }
+}
+
+const xGrid = ref()
+const gridEvents = {
+  toolbarButtonClick({code}) {
+    const $grid = xGrid.value
+    if ($grid) {
+      switch (code) {
+        case 'Sure': {
+          if ($grid.getCheckboxRecords().length === 0) {
+            MessageShow('璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�', 'warning');
+            //openAlert({type: 'message', content: '璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�', status: 'warning'})
+            //VXETable.modal.message( '璇烽�夋嫨涓�鏉℃暟鎹紒')
+            return
+          } else {
+            const type = VXETable.modal.confirm('鎮ㄩ�夋嫨浜�' + $grid.getCheckboxRecords().length + '鏉℃暟鎹紒,鏄惁纭鍏ュ簱锛�');
+            //openAlert({type:'alert', content: '鎴愬姛鍏ュ簱'+$grid.getCheckboxRecords().length+'鏉℃暟鎹紒', status: 'success' })
+            //VXETable.modal.message( '璇烽�夋嫨涓�鏉℃暟鎹紒')
+            return
+          }
+          break
+        }
+        case 'Log': {
+
+          //openAlert({type: 'alert', content: '鐐瑰嚮浜嗛��璐ц褰�', status: 'success'})
+          MessageConfirmShow("閫�璐ц褰�", "鐐瑰嚮浜嗛��璐ц褰�", "", 'success')
+          break
+        }
+      }
+    }
+  },
+  toolbarToolClick({code}) {
+    const $grid = xGrid.value
+    if ($grid) {
+      switch (code) {
+        case 'myPrint': {
+          $grid.print()
+          break
+        }
+      }
+    }
+  },
+}
+
+const openAlert = (options) => {
+  if (options.type === 'message') {
+    VXETable.modal.message(options)
+  } else {
+    VXETable.modal.alert(options)
+  }
+
+}
+const closeAlert = (id) => {
+  VXETable.modal.close(id)
+}
+
+
+//鏌ヨ璋冪敤浜嬩欢
+const BtnSearchPurchaseOrder = () => {
+  //寮�濮嬫椂闂达紝缁撴潫鏃堕棿鑾峰彇
+  //MessageShow(datevalue._rawValue[0]+"\r\n鏃堕棿2\r\n"+datevalue._rawValue[1]);
+
+  for (let i = 1; i < 6; i++) {
+    const randomInt = Math.floor(Math.random() * 999) + 1000;//4浣嶆暟闅忔満鏁�
+    const randomSumInt = Math.floor(Math.random() * 99) + 10;//2浣嶆暟闅忔満鏁�
+    const randomOrderInt = Math.floor(Math.random() * 99) + 100;//3浣嶆暟闅忔満鏁�
+    const t = i % 2 === 0 ? 5 : 6;
+    const s = i % 2 === 0 ? '鍏ュ簱' : i % 3 === 0 ? '寰呭鏍�' : '宸查噰璐�';
+    const rkdh = i % 2 === 0 ? 'RKID' + randomOrderInt : i % 3 === 0 ? '' : '';
+    const CGNo = 'NGCG231200' + randomOrderInt;//閲囪喘缂栧彿
+    const wlNo = 'NGWL1000' + randomInt;
+    const xh = 'NGXH' + randomSumInt;
+    const wlmc = 'WLMC' + randomInt;
+    const gys = '渚涘簲鍟�' + randomSumInt;
+    const xhdh = 'NG231200' + randomOrderInt;
+    const w = i % 2 === 0 ? '3300' : i % 3 === 0 ? '3660' : i % 4 === 0 ? '2250' : '2580';
+    const h = i % 2 === 0 ? '2440' : i % 3 === 0 ? '2440' : i % 4 === 0 ? '2000' : '2300';
+    const dw = i % 2 === 0 ? '鐗�' : i % 3 === 0 ? '骞崇背' : i % 4 === 0 ? '鍖�' : '鍚�';
+    now.setDate(now.getDate() + 1);
+    gridOptions.data.push({
+      cgdh: CGNo,
+      rkdh: rkdh,
+      h: t,
+      xh: xh,
+      wlbh: wlNo,
+      wlmc: wlmc,
+      gys: gys,
+      w: w,
+      g: h,
+      dw: dw,
+      cgzt: s,
+      rq: dayjs(now).format('YYYY-MM-DD'),
+      yl: randomSumInt,
+      sl: randomOrderInt,
+      xsdh: xhdh,
+      je: randomInt,
+      6: '139xxxxxxxx',
+
+    })
+  }
+
+}
+
+
+//缁勪欢鎺ユ敹鍙傛暟
+const gridOptions = reactive({
+  border: "full",//琛ㄦ牸鍔犺竟妗�
+  keepSource: true,//淇濇寔婧愭暟鎹�
+  align: 'center',//鏂囧瓧灞呬腑
+  stripe: true,//鏂戦┈绾�
+  rowConfig: {isCurrent: true, isHover: true, height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
+  id: 'CustomerList',
+  showFooter: true,//鏄剧ず鑴�
+  printConfig: {},
+  importConfig: {},
+  exportConfig: {},
+  scrollY: {enabled: true},//寮�鍚櫄鎷熸粴鍔�
+  showOverflow: true,
+  //showDetails: false,//寮圭獥 鏄惁鏄剧ず
+  columnConfig: {
+    resizable: true,
+    useKey: true
+  },
+  filterConfig: {   //绛涢�夐厤缃」
+    remote: true
+  },
+  customConfig: {
+    storage: true
+  },
+  editConfig: {
+    trigger: 'click',
+    mode: 'row',
+    showStatus: true
+  },
+  columns: [
+    {type: 'expand', title: '', fixed: "left", slots: {content: 'content'}, width: 50},//璇︽儏
+    {title: '鎿嶄綔', width: '8%', slots: {default: 'button_slot'}, fixed: "left"},
+    {type: 'checkbox', fixed: "left", title: '', width: 50},
+    {type: 'seq', fixed: "left", title: ' ', width: 50},
+
+
+    {
+      field: 'rkdh',
+      width: '10%',
+      title: '鍏ュ簱鍗曞彿',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {
+      field: 'cgdh',
+      width: '10%',
+      title: '閲囪喘鍗曞彿',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {field: 'cgzt', width: '10%', title: '鐘舵��', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
+    {
+      field: 'gys',
+      width: '10%',
+      title: '渚涘簲鍟�',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {
+      field: 'wlbh',
+      width: '10%',
+      title: '鐗╂枡缂栧彿',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {
+      field: 'wlmc',
+      width: '10%',
+      title: '鐗╂枡鍚嶇О',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {field: 'w', width: '8%', title: '瀹藉害', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
+    {field: 'g', width: '8%', title: '楂樺害', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
+    {field: 'h', width: '8%', title: '鍘氬害', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
+    {field: 'xh', width: '8%', title: '鍨嬪彿', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
+    {field: 'dw', width: '8%', title: '鍗曚綅', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
+    {
+      field: '6',
+      width: '12%',
+      title: '涓嶅惈绋庡崟浠�',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {field: 'sl', width: '8%', title: '鏁伴噺', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
+    {
+      field: 'sl',
+      width: '12%',
+      title: '宸查噰璐暟閲�',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {field: 'je', width: '8%', title: '閲戦', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
+    {
+      field: 'je',
+      width: '12%',
+      title: '涓嶅惈绋庨噾棰�',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {field: '6', width: '8%', title: '绋庣巼', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
+    {field: 'sl', width: '8%', title: '搴撳瓨', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
+    {field: 'yl', width: '10%', title: '鍛ㄧ敤閲�', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
+    {field: 'yl', width: '10%', title: '鏈堢敤閲�', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
+    {
+      field: 'cgzt',
+      width: '10%',
+      title: '鍗曟嵁鐘舵��',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {
+      field: 'xsdh',
+      width: '10%',
+      title: '閿�鍞崟鍙�',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {
+      field: 'rq',
+      width: '10%',
+      title: '鍒跺崟鏃ユ湡',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {field: '6', width: '10%', title: '鍒跺崟浜�', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
+    {
+      field: '6',
+      width: '10%',
+      title: '閲囪喘閮ㄩ棬',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {
+      field: '7',
+      width: '10%',
+      title: '閲囪喘缁勭粐',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {field: '8', width: '10%', title: '澶囨敞', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true}
+  ],//琛ㄥご鍙傛暟
+  toolbarConfig: {
+    buttons: [{type: 'text'/*,name:'璁㈠崟鍏ュ簱'*/}, {
+      'name': '鍏ュ簱璁板綍',
+
+      'code': 'Log'
+    },
+      {
+        'name': '纭鍏ュ簱',
+        status: 'primary',
+        'code': 'Sure'
+      }],
+    import: false,
+    export: true,
+    print: true,
+    zoom: true,
+    custom: true,
+    style: 'paddling-left:10px'
+  },//琛ㄥご鎸夐挳
+  data: [],//table body瀹為檯鏁版嵁
+  mergeFooterItems: [
+    {row: 0, col: 0, rowspan: 1, colspan: 4}
+  ],//鍚堝苟鑴�
+  footerMethod({columns, data}) {//椤佃剼鍑芥暟
+    return [
+      columns.map((column, columnIndex) => {
+        if (columnIndex === 0) {
+          return '鍚堣:'
+        }
+        /* if (props.tableProp.footList.includes(column.field)) {
+           return sumNum(data, column.field)
+         }*/
+        return ''
+      })
+    ]
+  },
+
+})
+
+
+
+//璇︽儏妗� 閮ㄥ垎2
+const showCGDH = ref();
+const showDetails = ref(false);
+let detailData = [];
+const cellClickEvent = ({row}) => {
+  if(isQueryColumnId===false){
+    queryColumnId();
+  }
+
+  detailData = list.map(field => {
+    return {label: queryColumnsTitle(field), value: row[field]}
+  })
+
+  showDetails.value = true;
+  showCGDH.value = row['cgdh'];
+}
+
+//鑾峰彇琛ㄥ垪
+let list = [];
+let columnIndex = 4;//鍒楁爣澶翠粠绗嚑鍒楀紑濮嬬殑
+let isQueryColumnId = false;
+const queryColumnId = () => {
+  while (columnIndex < gridOptions.columns.length) {
+    list.push(gridOptions.columns[columnIndex].field);
+    columnIndex++;
+  }
+  isQueryColumnId = true;
+  return list;
+}
+
+//鑾峰彇琛ㄥ垪鍚�
+function queryColumnsTitle(cn) {
+  let i = 0;
+  while (i < gridOptions.columns.length + 1) {
+    if (gridOptions.columns[i].field === cn) {
+      return gridOptions.columns[i].title;
+    }
+    i++;
+  }
+}
+//璇︽儏妗� 閮ㄥ垎2 缁撴潫
+
+
+const SureStorage = () => {
+  MessageShow('纭鍏ュ簱鎴愬姛');
+
+}
+
+
+const now = new Date()
+
+//鏃堕棿蹇嵎閫夋嫨
+const datevalue = ref('')
+const shortcuts = [
+  {
+    text: '杩戜竴鍛�',
+    value: () => {
+      const end = new Date()
+      const start = new Date()
+      start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
+      return [start, end]
+    },
+  },
+  {
+    text: '杩戜竴涓湀',
+    value: () => {
+      const end = new Date()
+      const start = new Date()
+      start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
+      return [start, end]
+    },
+  },
+  {
+    text: '杩戜笁涓湀',
+    value: () => {
+      const end = new Date()
+      const start = new Date()
+      start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
+      return [start, end]
+    },
+  },
+]
+
+
+//椤甸潰閫昏緫浠g爜鎵ц
+function logicExecute(type) {
+  const $grid = xGrid.value
+  switch (type) {
+    case '鍏ュ簱':
+      //鍏ュ簱閫昏緫浠g爜TODO
+      MessageShow('鍏ュ簱鎴愬姛锛�', 'success');
+      break;
+    case '閫�璐�':
+      //閫�璐ч�昏緫浠g爜TODO
+      MessageShow('閫�璐ф垚鍔燂紒', 'success');
+      break;
+    default:
+      MessageShow('鏈煡鎿嶄綔锛�', 'error');
+      break;
+  }
+  return true;
+}
+
+//鎻愮ず淇℃伅
+const MessageShow = (content, type = 'success') => {
+  ElMessage({
+    message: content,
+    type: type,
+    showClose: true,
+  })
+}
+
+//鎿嶄綔纭绫讳俊鎭細鎿嶄綔绫诲瀷锛屾彁绀哄唴瀹癸紝鎻愮ず鏍囧ご锛屾彁绀虹被鍨�
+const MessageConfirmShow = (czType, content, title = '鎿嶄綔纭鎻愮ず', type = 'warning') => {
+  ElMessageBox.confirm(
+      content,
+      title,
+      {
+        cancelButtonText: '鍙栨秷',
+        confirmButtonText: '纭畾',
+        type: type,
+        center: true,
+      }
+  )
+      //鐐瑰嚮浜嗙‘瀹�
+      .then(() => {
+        return logicExecute(czType);
+
+      })
+      //鐐瑰嚮浜嗗彇娑�
+      .catch(() => {
+        return false;
+      })
+}
+
+</script>
+
+
+<style scoped>
+:deep(.v-column-label div span) {
+  font-weight: bold;
+}
+
+
+</style>
\ No newline at end of file
diff --git a/UI-Project/vite.config.js b/UI-Project/vite.config.js
new file mode 100644
index 0000000..8fdf859
--- /dev/null
+++ b/UI-Project/vite.config.js
@@ -0,0 +1,61 @@
+import {fileURLToPath, URL} from 'node:url'
+import {defineConfig} from 'vite'
+import vue from '@vitejs/plugin-vue'
+import ReactivityTransform from '@vue-macros/reactivity-transform/vite'
+import AutoImport from 'unplugin-auto-import/vite'
+
+// https://vitejs.dev/config/
+export default defineConfig({
+  plugins: [
+    vue(),
+    ReactivityTransform(),
+    AutoImport({
+      imports: [
+        'vue-i18n',
+      ],
+      dts: './auto-imports.d.ts',
+      eslintrc: {
+        enabled: false, // 閰嶇疆鏇存柊鏃朵复鏃惰涓簍rue,
+      },
+    }),
+  ],
+  resolve: {
+    alias: {
+      'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js',
+      '@': fileURLToPath(new URL('./src', import.meta.url))
+    }
+  }, 
+  server: {
+    port: 801,
+    host: true,
+    open: false,
+    https: false,
+    proxy: {
+      '/api': {
+        target: 'http://127.0.0.1:88/',
+        changeOrigin: true,
+        rewrite: (path) => path.replace(/^\/api/, '/'),
+      },
+      // '/api2': {
+      //   target: 'http://localhost:8085/mesModuleTools',
+      //   changeOrigin: true,
+      //   pathRewrite: {
+      //     '^/api2': '',
+      //   },
+      // },
+    },
+  },
+  configureServer: ({ middlewares }) => {
+    middlewares.use(
+      '/mesModuleTools',
+      createProxyMiddleware({
+        target: 'ws://localhost:8081',
+        ws: true,
+        changeOrigin: true,
+        pathRewrite: {
+          '^/mesModuleTools': '',
+        },
+      })
+    );
+  },
+});
diff --git a/UI-Project/vue.config.js b/UI-Project/vue.config.js
new file mode 100644
index 0000000..1b2c99f
--- /dev/null
+++ b/UI-Project/vue.config.js
@@ -0,0 +1,5 @@
+module.exports = {
+    assetsDir: 'static',
+    parallel: false,
+    publicPath: './',
+};
\ No newline at end of file
diff --git a/logs/deviceInteraction/web-error-2024-09-04.0.log b/logs/deviceInteraction/web-error-2024-09-04.0.log
new file mode 100644
index 0000000..df0e985
--- /dev/null
+++ b/logs/deviceInteraction/web-error-2024-09-04.0.log
@@ -0,0 +1,15 @@
+2024-09-03 11:38:31.890 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 11:38:32.102 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-03 11:38:32.179 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 09:17:07.095 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 09:17:07.307 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 09:17:07.383 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 09:18:04.473 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 09:18:04.655 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 09:18:04.757 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 09:28:09.365 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 09:28:09.582 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 09:28:09.676 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 10:28:17.377 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 10:28:17.507 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-04 10:28:17.637 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
diff --git a/logs/deviceInteraction/web-info-2024-09-04.0.log b/logs/deviceInteraction/web-info-2024-09-04.0.log
new file mode 100644
index 0000000..6a78ed3
--- /dev/null
+++ b/logs/deviceInteraction/web-info-2024-09-04.0.log
@@ -0,0 +1,643 @@
+2024-09-03 11:38:28.335 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$617305f3] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:38:30.465 [main] INFO  com.mes.DeviceInteractionModuleApplication - The following profiles are active: prod
+2024-09-03 11:38:31.299 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-03 11:38:31.309 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-03 11:38:31.354 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 32ms. Found 0 repository interfaces.
+2024-09-03 11:38:31.620 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=451f6aa2-448c-39ce-aa97-85c607eda16b
+2024-09-03 11:38:31.713 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$455902f6] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:38:31.741 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:38:31.744 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$aee773c7] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:38:31.822 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:38:31.847 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$de06cb30] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:38:31.852 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:38:31.854 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@3a2e9f5b' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:38:31.855 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$2db6de2] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:38:31.860 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:38:31.874 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$617305f3] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 11:38:32.167 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8081 (http)
+2024-09-03 11:38:32.179 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8081"]
+2024-09-03 11:38:32.187 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-03 11:38:32.187 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-03 11:38:32.319 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-03 11:38:32.319 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 1837 ms
+2024-09-03 11:38:32.453 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-03 11:38:32.611 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-03 11:38:32.612 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-03 11:38:32.612 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-03 11:38:32.643 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-03 11:38:35.282 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-03 11:38:35.827 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-03 11:38:35.893 [main] INFO  o.s.security.web.DefaultSecurityFilterChain - Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@3a3ad8e7, org.springframework.security.web.context.SecurityContextPersistenceFilter@2026fbff, org.springframework.security.web.header.HeaderWriterFilter@5ed31735, org.springframework.web.filter.CorsFilter@6a6d1ff3, org.springframework.security.web.authentication.logout.LogoutFilter@2084e65a, com.mes.common.filter.JwtAuthenticationTokenFilter@6b70d1fb, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@4b5ad306, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@351e89fc, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@749baa0c, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@64b73e0a, org.springframework.security.web.session.SessionManagementFilter@5a4c98d7, org.springframework.security.web.access.ExceptionTranslationFilter@66f2ec1c, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@677cc4e8]
+2024-09-03 11:38:35.912 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 11:38:35.917 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 11:38:36.080 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-03 11:38:38.248 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 11:38:38.291 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-03 11:38:38.541 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-03 11:38:40.583 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 11:38:40.762 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-03 11:38:40.782 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-03 11:38:40.820 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-03 11:38:41.068 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:38:41.070 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8081"]
+2024-09-03 11:38:41.092 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8081 (http) with context path ''
+2024-09-03 11:38:41.292 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:8081 register finished
+2024-09-03 11:38:42.079 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:38:43.081 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:38:43.284 [main] INFO  org.springframework.cloud.commons.util.InetUtils - Cannot determine local hostname
+2024-09-03 11:38:43.286 [main] INFO  com.mes.DeviceInteractionModuleApplication - Started DeviceInteractionModuleApplication in 17.608 seconds (JVM running for 18.892)
+2024-09-03 11:38:43.288 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-03 11:38:44.093 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:38:45.103 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:38:46.118 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:38:47.126 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:38:48.130 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:38:49.135 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:38:50.147 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:38:51.157 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:38:52.169 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:38:53.184 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:38:54.195 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:38:55.202 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:38:56.210 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:38:57.214 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:38:58.217 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:38:59.231 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:00.236 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:01.245 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:02.258 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:03.260 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:04.272 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:05.272 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:06.284 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:07.294 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:08.308 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:09.323 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:10.336 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:11.337 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:12.346 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:13.361 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:14.368 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:15.382 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:16.391 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:17.404 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:18.416 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:19.426 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:20.427 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:21.439 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:22.454 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:23.465 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:24.478 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:25.489 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:26.499 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:27.507 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:28.520 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:29.526 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:30.539 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:31.553 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:32.562 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:33.571 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:34.583 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:35.596 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:36.608 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:37.617 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:38.632 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:39.645 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:40.646 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:41.655 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:42.663 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:43.674 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:44.685 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:45.690 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:46.693 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:47.707 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:48.715 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:49.726 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:50.736 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:51.748 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:52.758 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:53.766 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:54.778 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:55.788 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:56.793 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:57.802 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:58.802 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:39:59.807 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:00.817 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:01.827 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:02.834 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:03.841 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:04.852 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:05.860 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:06.873 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:07.886 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:08.892 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:09.905 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:10.913 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:11.926 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:12.936 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:13.952 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:14.962 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:15.962 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:16.975 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:17.988 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:19.002 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:20.004 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:21.015 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:22.031 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:23.039 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:24.041 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:25.046 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:26.048 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:27.060 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:28.071 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:29.082 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:30.094 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:31.106 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:32.122 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:33.131 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:34.142 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:35.153 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:36.157 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:37.167 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:38.177 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:39.187 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:40.199 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:41.212 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:42.226 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:43.227 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:44.242 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:45.244 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:46.246 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:47.259 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:48.272 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:49.282 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:50.294 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:51.305 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:52.315 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:53.328 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:54.344 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:55.350 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:56.357 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:57.361 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:58.372 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:40:59.375 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:00.385 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:01.395 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:02.398 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:03.411 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:04.426 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:05.438 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:06.450 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:07.456 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:08.471 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:09.480 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:10.489 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:11.505 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:12.519 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:13.534 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:14.543 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:15.555 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:16.568 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:17.583 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:18.594 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:19.597 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:20.610 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:21.624 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:22.638 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:23.640 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:24.653 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:25.663 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:26.678 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:27.694 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:28.709 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:29.723 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:30.731 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:31.743 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:32.748 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:33.761 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:34.777 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:35.782 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:36.792 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:37.807 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:38.821 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:39.831 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:40.836 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:41.844 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:42.857 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:43.871 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:44.886 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:45.900 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:46.911 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:47.926 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:48.936 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:49.944 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:50.954 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:51.962 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:52.976 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:53.991 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:55.005 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:56.011 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:57.017 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:58.019 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:41:59.032 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:00.046 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:01.052 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:02.060 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:03.067 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:04.068 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:05.079 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:06.089 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:07.096 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:08.106 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:09.110 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:10.115 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:11.119 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:12.134 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:13.146 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:14.162 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:15.173 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:16.184 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:17.198 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:18.213 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:19.225 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:20.226 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:21.229 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:22.231 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:23.249 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:24.259 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:25.274 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:26.290 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:27.309 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:28.312 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:29.319 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:30.329 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:31.329 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:32.338 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:33.348 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:34.360 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:35.369 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:36.378 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:37.389 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:38.394 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:39.409 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:40.418 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:41.419 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:42.439 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:43.451 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:44.453 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:45.469 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:46.469 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:47.479 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:48.498 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:49.499 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:50.509 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:51.519 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:52.539 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:53.555 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:54.556 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:55.569 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:56.589 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:57.595 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:58.599 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:42:59.611 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:00.629 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:01.649 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:02.658 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:03.659 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:04.679 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:05.699 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:06.719 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:07.729 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:08.739 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:09.748 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:10.759 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:11.779 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:12.794 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:13.799 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:14.819 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:15.826 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:16.827 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:17.836 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:18.848 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:19.858 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:20.865 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:21.868 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:22.876 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:23.880 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:24.884 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:25.899 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:26.905 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:27.917 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:28.923 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:29.937 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:30.949 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:31.957 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:32.960 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:33.964 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:34.977 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:35.987 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:36.987 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:37.999 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:39.000 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:40.014 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:41.027 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:42.041 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:43.054 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:44.065 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:45.077 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:46.089 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:47.097 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:48.106 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:49.118 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:50.130 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:51.144 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:52.159 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:53.169 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:54.171 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:55.177 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:56.179 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:57.189 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:58.198 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:43:59.219 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:44:00.220 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:44:01.220 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:44:02.239 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:44:03.258 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:44:04.272 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:44:05.281 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:44:06.288 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:44:07.298 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:44:08.301 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:44:09.318 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:44:10.329 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:44:11.344 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:44:12.347 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:44:13.360 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:44:14.378 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:44:15.399 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:44:16.404 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:44:17.409 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:44:18.418 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:44:19.420 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:44:20.430 [scheduling-1] INFO  com.mes.service.ModbusTcp - 123
+2024-09-03 11:44:20.441 [Thread-45] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-03 11:44:20.442 [Thread-45] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-03 11:44:20.446 [Thread-45] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-03 11:44:20.448 [Thread-45] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-03 11:44:20.452 [Thread-45] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-03 11:44:20.458 [Thread-45] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-03 11:44:20.458 [Thread-45] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-03 16:33:27.131 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$fb56a29e] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 16:33:28.196 [main] INFO  com.mes.DeviceInteractionModuleApplication - The following profiles are active: prod
+2024-09-03 16:33:29.017 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-03 16:33:29.019 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-03 16:33:29.065 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 33ms. Found 0 repository interfaces.
+2024-09-03 16:33:29.322 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=451f6aa2-448c-39ce-aa97-85c607eda16b
+2024-09-03 16:33:29.417 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$df3c9fa1] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 16:33:29.447 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 16:33:29.450 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$48cb1072] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 16:33:29.531 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 16:33:29.561 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$77ea67db] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 16:33:29.567 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 16:33:29.571 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@2dd8ff1d' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 16:33:29.572 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$9cbf0a8d] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 16:33:29.577 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 16:33:29.592 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$fb56a29e] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-03 16:33:30.069 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8081 (http)
+2024-09-03 16:33:30.094 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8081"]
+2024-09-03 16:33:30.105 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-03 16:33:30.106 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-03 16:33:30.255 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-03 16:33:30.256 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 2043 ms
+2024-09-03 16:33:30.403 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-03 16:33:30.602 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-03 16:33:30.603 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-03 16:33:30.604 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-03 16:33:30.643 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-03 16:33:33.496 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-03 16:33:34.075 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-03 16:33:34.158 [main] INFO  o.s.security.web.DefaultSecurityFilterChain - Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@701d2b59, org.springframework.security.web.context.SecurityContextPersistenceFilter@1b4a3a1, org.springframework.security.web.header.HeaderWriterFilter@9f0fc36, org.springframework.web.filter.CorsFilter@1999149e, org.springframework.security.web.authentication.logout.LogoutFilter@37c2f0b4, com.mes.common.filter.JwtAuthenticationTokenFilter@23bd0c81, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@11148dc2, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@786a3477, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@46ea78f0, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@65d73bd, org.springframework.security.web.session.SessionManagementFilter@5a06904, org.springframework.security.web.access.ExceptionTranslationFilter@4fd80300, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@2342f1ff]
+2024-09-03 16:33:34.180 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 16:33:34.188 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-03 16:33:34.378 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-03 16:33:35.554 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-03 16:33:35.822 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-03 16:33:37.058 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-03 16:33:37.076 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-03 16:33:37.127 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-03 16:33:37.382 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8081"]
+2024-09-03 16:33:37.580 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8081 (http) with context path ''
+2024-09-03 16:33:37.626 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:8081 register finished
+2024-09-03 16:33:38.538 [main] INFO  com.mes.DeviceInteractionModuleApplication - Started DeviceInteractionModuleApplication in 12.947 seconds (JVM running for 14.142)
+2024-09-03 16:33:38.539 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-03 16:33:41.856 [http-nio-8081-exec-1] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
+2024-09-03 16:33:41.857 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
+2024-09-03 16:33:41.871 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Completed initialization in 14 ms
+2024-09-04 09:16:34.098 [Thread-30] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-04 09:16:34.100 [Thread-30] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-04 09:16:34.104 [Thread-30] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-04 09:16:34.105 [Thread-30] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-04 09:16:34.109 [Thread-30] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-04 09:16:34.116 [Thread-30] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-04 09:16:34.116 [Thread-30] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-04 09:17:04.692 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$511f4685] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 09:17:05.721 [main] INFO  com.mes.DeviceInteractionModuleApplication - The following profiles are active: prod
+2024-09-04 09:17:06.522 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-04 09:17:06.524 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-04 09:17:06.565 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 29ms. Found 0 repository interfaces.
+2024-09-04 09:17:06.826 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=451f6aa2-448c-39ce-aa97-85c607eda16b
+2024-09-04 09:17:06.915 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$35054388] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 09:17:06.944 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 09:17:06.947 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$9e93b459] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 09:17:07.027 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 09:17:07.051 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$cdb30bc2] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 09:17:07.056 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 09:17:07.058 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@d70f722' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 09:17:07.059 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$f287ae74] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 09:17:07.064 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 09:17:07.078 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$511f4685] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 09:17:07.371 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8081 (http)
+2024-09-04 09:17:07.383 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8081"]
+2024-09-04 09:17:07.390 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-04 09:17:07.390 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-04 09:17:07.508 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-04 09:17:07.508 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 1773 ms
+2024-09-04 09:17:07.637 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-04 09:17:07.798 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-04 09:17:07.799 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-04 09:17:07.799 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-04 09:17:07.829 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-04 09:17:10.451 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-04 09:17:10.995 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-04 09:17:11.064 [main] INFO  o.s.security.web.DefaultSecurityFilterChain - Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@f59da34, org.springframework.security.web.context.SecurityContextPersistenceFilter@1552da16, org.springframework.security.web.header.HeaderWriterFilter@4228f269, org.springframework.web.filter.CorsFilter@752973de, org.springframework.security.web.authentication.logout.LogoutFilter@108b121f, com.mes.common.filter.JwtAuthenticationTokenFilter@216c22ce, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@44bbb7c6, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@77ce88c4, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@37fef327, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@52a67293, org.springframework.security.web.session.SessionManagementFilter@775f15fd, org.springframework.security.web.access.ExceptionTranslationFilter@46b6701e, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@d1c5cf2]
+2024-09-04 09:17:11.083 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 09:17:11.087 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 09:17:11.255 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-04 09:17:12.370 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-04 09:17:12.621 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-04 09:17:13.733 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-04 09:17:13.746 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-04 09:17:13.775 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-04 09:17:14.010 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8081"]
+2024-09-04 09:17:14.176 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8081 (http) with context path ''
+2024-09-04 09:17:14.218 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:8081 register finished
+2024-09-04 09:17:15.106 [main] INFO  com.mes.DeviceInteractionModuleApplication - Started DeviceInteractionModuleApplication in 11.957 seconds (JVM running for 13.138)
+2024-09-04 09:17:15.108 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-04 09:17:37.385 [http-nio-8081-exec-1] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
+2024-09-04 09:17:37.385 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
+2024-09-04 09:17:37.394 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Completed initialization in 9 ms
+2024-09-04 09:17:49.499 [Thread-34] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-04 09:17:49.501 [Thread-34] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-04 09:17:49.506 [Thread-34] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-04 09:17:49.508 [Thread-34] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-04 09:17:49.514 [Thread-34] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-04 09:17:49.519 [Thread-34] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-04 09:17:49.520 [Thread-34] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-04 09:18:01.520 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$a96c682a] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 09:18:02.591 [main] INFO  com.mes.DeviceInteractionModuleApplication - The following profiles are active: prod
+2024-09-04 09:18:03.596 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-04 09:18:03.599 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-04 09:18:03.656 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 41ms. Found 0 repository interfaces.
+2024-09-04 09:18:04.012 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=451f6aa2-448c-39ce-aa97-85c607eda16b
+2024-09-04 09:18:04.144 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$8d52652d] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 09:18:04.192 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 09:18:04.194 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$f6e0d5fe] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 09:18:04.306 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 09:18:04.334 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$26002d67] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 09:18:04.339 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 09:18:04.342 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@123307c4' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 09:18:04.345 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$4ad4d019] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 09:18:04.351 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 09:18:04.448 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$a96c682a] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 09:18:04.744 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8081 (http)
+2024-09-04 09:18:04.758 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8081"]
+2024-09-04 09:18:04.765 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-04 09:18:04.766 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-04 09:18:04.911 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-04 09:18:04.911 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 2300 ms
+2024-09-04 09:18:05.058 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-04 09:18:05.251 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-04 09:18:05.252 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-04 09:18:05.252 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-04 09:18:05.292 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-04 09:18:08.122 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-04 09:18:08.781 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-04 09:18:08.861 [main] INFO  o.s.security.web.DefaultSecurityFilterChain - Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@4b240276, org.springframework.security.web.context.SecurityContextPersistenceFilter@40fcaae7, org.springframework.security.web.header.HeaderWriterFilter@24f3fb87, org.springframework.web.filter.CorsFilter@2a5efbb9, org.springframework.security.web.authentication.logout.LogoutFilter@1fd0ae78, com.mes.common.filter.JwtAuthenticationTokenFilter@23a78c77, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@5f911d24, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@cb1c58c, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@23c00420, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@43b45ce4, org.springframework.security.web.session.SessionManagementFilter@113c4ad6, org.springframework.security.web.access.ExceptionTranslationFilter@64ef2719, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@706d2bae]
+2024-09-04 09:18:08.884 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 09:18:08.890 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 09:18:09.085 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-04 09:18:10.254 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-04 09:18:10.575 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-04 09:18:11.757 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-04 09:18:11.775 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-04 09:18:11.815 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-04 09:18:12.259 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8081"]
+2024-09-04 09:18:12.284 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8081 (http) with context path ''
+2024-09-04 09:18:12.339 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:8081 register finished
+2024-09-04 09:18:13.237 [main] INFO  com.mes.DeviceInteractionModuleApplication - Started DeviceInteractionModuleApplication in 13.403 seconds (JVM running for 15.573)
+2024-09-04 09:18:13.238 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-04 09:18:52.102 [http-nio-8081-exec-4] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
+2024-09-04 09:18:52.102 [http-nio-8081-exec-4] INFO  org.springframework.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
+2024-09-04 09:18:52.121 [http-nio-8081-exec-4] INFO  org.springframework.web.servlet.DispatcherServlet - Completed initialization in 19 ms
+2024-09-04 09:24:52.626 [Thread-36] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-04 09:24:52.628 [Thread-36] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-04 09:24:52.634 [Thread-36] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-04 09:24:52.636 [Thread-36] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-04 09:24:52.641 [Thread-36] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-04 09:24:52.648 [Thread-36] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-04 09:24:52.649 [Thread-36] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-04 09:28:06.818 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$a634e9a5] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 09:28:07.898 [main] INFO  com.mes.DeviceInteractionModuleApplication - The following profiles are active: prod
+2024-09-04 09:28:08.717 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-04 09:28:08.720 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-04 09:28:08.757 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 22ms. Found 0 repository interfaces.
+2024-09-04 09:28:09.056 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=61be6233-9c64-3ebb-a77e-c10af7529d4e
+2024-09-04 09:28:09.181 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$8a1ae6a8] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 09:28:09.228 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 09:28:09.232 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$f3a95779] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 09:28:09.332 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 09:28:09.347 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$a634e9a5] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 09:28:09.662 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8081 (http)
+2024-09-04 09:28:09.677 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8081"]
+2024-09-04 09:28:09.685 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-04 09:28:09.686 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-04 09:28:09.821 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-04 09:28:09.822 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 1907 ms
+2024-09-04 09:28:10.006 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-04 09:28:10.182 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-04 09:28:10.183 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-04 09:28:10.183 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-04 09:28:10.211 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-04 09:28:12.365 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-04 09:28:12.786 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-04 09:28:12.802 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 09:28:12.806 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 09:28:12.984 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-04 09:28:14.196 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-04 09:28:14.568 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-04 09:28:15.784 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-04 09:28:15.802 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-04 09:28:15.846 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-04 09:28:16.009 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8081"]
+2024-09-04 09:28:16.033 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8081 (http) with context path ''
+2024-09-04 09:28:16.142 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:8081 register finished
+2024-09-04 09:28:17.046 [main] INFO  com.mes.DeviceInteractionModuleApplication - Started DeviceInteractionModuleApplication in 11.914 seconds (JVM running for 13.324)
+2024-09-04 09:28:17.047 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-04 09:28:51.487 [http-nio-8081-exec-1] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
+2024-09-04 09:28:51.488 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
+2024-09-04 09:28:51.500 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Completed initialization in 12 ms
+2024-09-04 10:22:54.874 [Thread-34] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-04 10:22:54.878 [Thread-34] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-04 10:22:54.883 [Thread-34] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-04 10:22:54.886 [Thread-34] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-04 10:22:54.894 [Thread-34] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-04 10:22:54.902 [Thread-34] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-04 10:22:54.903 [Thread-34] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-04 10:28:14.914 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$cdef58db] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 10:28:15.954 [main] INFO  com.mes.DeviceInteractionModuleApplication - The following profiles are active: prod
+2024-09-04 10:28:16.767 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-04 10:28:16.770 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-04 10:28:16.804 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 21ms. Found 0 repository interfaces.
+2024-09-04 10:28:17.069 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=61be6233-9c64-3ebb-a77e-c10af7529d4e
+2024-09-04 10:28:17.194 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$b1d555de] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 10:28:17.234 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 10:28:17.237 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$1b63c6af] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 10:28:17.337 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 10:28:17.351 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$cdef58db] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-04 10:28:17.626 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8081 (http)
+2024-09-04 10:28:17.637 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8081"]
+2024-09-04 10:28:17.644 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-04 10:28:17.644 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-04 10:28:17.767 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-04 10:28:17.768 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 1797 ms
+2024-09-04 10:28:17.915 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-04 10:28:18.060 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-04 10:28:18.061 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-04 10:28:18.061 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-04 10:28:18.086 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-04 10:28:20.212 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-04 10:28:20.570 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-04 10:28:20.585 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 10:28:20.589 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-04 10:28:20.791 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-04 10:28:21.922 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-04 10:28:22.197 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-04 10:28:23.338 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-04 10:28:23.351 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-04 10:28:23.382 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-04 10:28:23.521 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8081"]
+2024-09-04 10:28:23.543 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8081 (http) with context path ''
+2024-09-04 10:28:23.632 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:8081 register finished
+2024-09-04 10:28:24.522 [main] INFO  com.mes.DeviceInteractionModuleApplication - Started DeviceInteractionModuleApplication in 11.144 seconds (JVM running for 12.43)
+2024-09-04 10:28:24.524 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-04 10:28:44.939 [http-nio-8081-exec-1] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
+2024-09-04 10:28:44.940 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
+2024-09-04 10:28:44.944 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Completed initialization in 3 ms
+2024-09-04 14:30:46.824 [Thread-33] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-04 14:30:46.840 [Thread-33] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-04 14:30:46.854 [Thread-33] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-04 14:30:46.863 [Thread-33] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-04 14:30:46.884 [Thread-33] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-04 14:30:46.902 [Thread-33] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-04 14:30:46.903 [Thread-33] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
diff --git a/logs/deviceInteraction/web-warn-2024-09-04.0.log b/logs/deviceInteraction/web-warn-2024-09-04.0.log
new file mode 100644
index 0000000..05c12db
--- /dev/null
+++ b/logs/deviceInteraction/web-warn-2024-09-04.0.log
@@ -0,0 +1,115 @@
+2024-09-03 11:38:31.530 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:38:31.530 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:38:31.531 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:38:31.531 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:38:31.531 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:38:31.531 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:38:31.531 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:38:31.531 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:38:31.531 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:38:31.531 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:38:31.531 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:38:31.531 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:38:31.532 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:38:31.532 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:38:31.532 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:38:31.532 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:38:31.532 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:38:31.532 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysMenuMapper' and 'com.mes.menu.mapper.SysMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:38:31.533 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMapper' and 'com.mes.role.mapper.SysRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:38:31.533 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMenuMapper' and 'com.mes.role.mapper.SysRoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:38:31.533 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.mes.userinfo.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:38:31.533 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserRoleMapper' and 'com.mes.userinfo.mapper.SysUserRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-03 11:38:31.533 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-03 11:38:35.912 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-03 11:38:35.917 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-04 09:17:06.731 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:17:06.732 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:17:06.732 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:17:06.732 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:17:06.733 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:17:06.733 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:17:06.733 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:17:06.733 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:17:06.733 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:17:06.733 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:17:06.733 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:17:06.733 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:17:06.734 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:17:06.734 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:17:06.734 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:17:06.734 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:17:06.734 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:17:06.734 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysMenuMapper' and 'com.mes.menu.mapper.SysMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:17:06.734 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMapper' and 'com.mes.role.mapper.SysRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:17:06.734 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMenuMapper' and 'com.mes.role.mapper.SysRoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:17:06.734 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.mes.userinfo.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:17:06.734 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserRoleMapper' and 'com.mes.userinfo.mapper.SysUserRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:17:06.735 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-04 09:17:11.083 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-04 09:17:11.087 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-04 09:18:03.876 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:18:03.877 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:18:03.877 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:18:03.877 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:18:03.877 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:18:03.877 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:18:03.877 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:18:03.877 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:18:03.877 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:18:03.877 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:18:03.877 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:18:03.877 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:18:03.878 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:18:03.878 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:18:03.878 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:18:03.878 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:18:03.878 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:18:03.878 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysMenuMapper' and 'com.mes.menu.mapper.SysMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:18:03.878 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMapper' and 'com.mes.role.mapper.SysRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:18:03.878 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysRoleMenuMapper' and 'com.mes.role.mapper.SysRoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:18:03.878 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.mes.userinfo.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:18:03.878 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'sysUserRoleMapper' and 'com.mes.userinfo.mapper.SysUserRoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:18:03.879 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-04 09:18:08.883 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-04 09:18:08.889 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-04 09:28:08.924 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:28:08.925 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:28:08.925 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:28:08.925 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:28:08.925 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:28:08.925 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:28:08.925 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:28:08.926 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:28:08.926 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:28:08.926 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:28:08.926 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:28:08.926 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:28:08.926 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:28:08.926 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:28:08.926 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:28:08.926 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:28:08.926 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 09:28:08.927 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-04 09:28:12.802 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-04 09:28:12.806 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-04 10:28:16.953 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 10:28:16.953 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 10:28:16.953 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 10:28:16.954 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 10:28:16.954 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 10:28:16.954 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 10:28:16.954 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 10:28:16.954 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 10:28:16.954 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 10:28:16.954 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 10:28:16.954 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 10:28:16.954 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 10:28:16.954 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 10:28:16.954 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 10:28:16.954 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 10:28:16.954 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 10:28:16.955 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-04 10:28:16.955 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-04 10:28:20.585 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-04 10:28:20.589 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
diff --git a/logs/deviceInteraction/web_debug.log b/logs/deviceInteraction/web_debug.log
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/logs/deviceInteraction/web_debug.log
diff --git a/logs/deviceInteraction/web_error.log b/logs/deviceInteraction/web_error.log
new file mode 100644
index 0000000..80bad3a
--- /dev/null
+++ b/logs/deviceInteraction/web_error.log
@@ -0,0 +1,42 @@
+2024-09-05 08:05:40.715 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 08:05:40.843 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 08:05:40.970 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 08:13:33.790 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 08:13:33.927 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 08:13:34.056 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 10:28:33.261 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 10:28:33.395 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 10:28:33.542 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 16:05:38.375 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 16:05:38.582 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 16:05:38.673 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 16:08:58.128 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 16:08:58.351 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 16:08:58.438 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 17:02:36.008 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 17:02:36.189 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 17:02:36.269 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 17:07:38.756 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 17:07:38.939 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 17:07:39.011 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 17:19:09.009 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 17:19:09.194 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 17:19:09.270 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 17:22:28.646 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 17:22:28.832 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 17:22:28.907 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 17:27:06.962 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 17:27:07.153 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 17:27:07.231 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 17:39:22.686 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 17:39:22.868 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 17:39:22.948 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 18:51:41.639 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 18:51:41.821 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 18:51:41.894 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 19:24:53.387 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 19:24:53.572 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 19:24:53.652 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 19:37:08.451 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 19:37:08.629 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
+2024-09-05 19:37:08.705 [main] ERROR org.apache.catalina.core.AprLifecycleListener - An incompatible version [1.2.10] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
diff --git a/logs/deviceInteraction/web_info.log b/logs/deviceInteraction/web_info.log
new file mode 100644
index 0000000..daebb43
--- /dev/null
+++ b/logs/deviceInteraction/web_info.log
@@ -0,0 +1,695 @@
+2024-09-05 08:05:38.225 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$33aef6c4] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:05:39.388 [main] INFO  com.mes.DeviceInteractionModuleApplication - The following profiles are active: prod
+2024-09-05 08:05:40.149 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-05 08:05:40.152 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-05 08:05:40.190 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 23ms. Found 0 repository interfaces.
+2024-09-05 08:05:40.453 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=61be6233-9c64-3ebb-a77e-c10af7529d4e
+2024-09-05 08:05:40.556 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$1794f3c7] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:05:40.597 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:05:40.599 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$81236498] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:05:40.684 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:05:40.699 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$33aef6c4] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:05:40.959 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8081 (http)
+2024-09-05 08:05:40.971 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8081"]
+2024-09-05 08:05:40.978 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-05 08:05:40.978 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-05 08:05:41.115 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-05 08:05:41.116 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 1713 ms
+2024-09-05 08:05:41.268 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-05 08:05:41.410 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-05 08:05:41.411 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-05 08:05:41.411 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-05 08:05:41.435 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-05 08:05:43.624 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-05 08:05:43.998 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-05 08:05:44.013 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 08:05:44.017 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 08:05:44.179 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-05 08:05:45.274 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-05 08:05:45.530 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-05 08:05:46.600 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-05 08:05:46.615 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-05 08:05:46.643 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-05 08:05:46.760 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8081"]
+2024-09-05 08:05:46.782 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8081 (http) with context path ''
+2024-09-05 08:05:46.866 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:8081 register finished
+2024-09-05 08:05:47.772 [main] INFO  com.mes.DeviceInteractionModuleApplication - Started DeviceInteractionModuleApplication in 11.621 seconds (JVM running for 12.962)
+2024-09-05 08:05:47.774 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-05 08:11:05.613 [http-nio-8081-exec-1] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
+2024-09-05 08:11:05.613 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
+2024-09-05 08:11:05.622 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Completed initialization in 9 ms
+2024-09-05 08:13:21.107 [Thread-33] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-05 08:13:21.108 [Thread-33] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-05 08:13:21.111 [Thread-33] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-05 08:13:21.113 [Thread-33] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-05 08:13:21.116 [Thread-33] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-05 08:13:21.121 [Thread-33] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-05 08:13:21.121 [Thread-33] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-05 08:13:31.480 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$7c355e31] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:13:32.499 [main] INFO  com.mes.DeviceInteractionModuleApplication - The following profiles are active: prod
+2024-09-05 08:13:33.258 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-05 08:13:33.260 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-05 08:13:33.295 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 23ms. Found 0 repository interfaces.
+2024-09-05 08:13:33.533 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=61be6233-9c64-3ebb-a77e-c10af7529d4e
+2024-09-05 08:13:33.635 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$601b5b34] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:13:33.665 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:13:33.668 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$c9a9cc05] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:13:33.756 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:13:33.772 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$7c355e31] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 08:13:34.044 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8081 (http)
+2024-09-05 08:13:34.056 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8081"]
+2024-09-05 08:13:34.063 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-05 08:13:34.063 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-05 08:13:34.181 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-05 08:13:34.182 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 1670 ms
+2024-09-05 08:13:34.333 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-05 08:13:34.478 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-05 08:13:34.479 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-05 08:13:34.479 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-05 08:13:34.506 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-05 08:13:36.602 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-05 08:13:36.988 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-05 08:13:37.003 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 08:13:37.007 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 08:13:37.174 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-05 08:13:38.321 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-05 08:13:38.602 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-05 08:13:39.742 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-05 08:13:39.756 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-05 08:13:39.787 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-05 08:13:39.919 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8081"]
+2024-09-05 08:13:39.941 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8081 (http) with context path ''
+2024-09-05 08:13:40.030 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:8081 register finished
+2024-09-05 08:13:40.918 [main] INFO  com.mes.DeviceInteractionModuleApplication - Started DeviceInteractionModuleApplication in 11.018 seconds (JVM running for 13.244)
+2024-09-05 08:13:40.919 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-05 08:16:39.077 [Thread-33] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-05 08:16:39.080 [Thread-33] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-05 08:16:39.090 [Thread-33] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-05 08:16:39.092 [Thread-33] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-05 08:16:39.097 [Thread-33] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-05 08:16:39.108 [Thread-33] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-05 08:16:39.108 [Thread-33] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-05 10:28:30.819 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$deff8ab7] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 10:28:31.880 [main] INFO  com.mes.DeviceInteractionModuleApplication - The following profiles are active: prod
+2024-09-05 10:28:32.681 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-05 10:28:32.684 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-05 10:28:32.722 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 20ms. Found 0 repository interfaces.
+2024-09-05 10:28:32.982 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=61be6233-9c64-3ebb-a77e-c10af7529d4e
+2024-09-05 10:28:33.093 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$c2e587ba] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 10:28:33.122 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 10:28:33.125 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$2c73f88b] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 10:28:33.227 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 10:28:33.242 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$deff8ab7] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 10:28:33.529 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8081 (http)
+2024-09-05 10:28:33.542 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8081"]
+2024-09-05 10:28:33.553 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-05 10:28:33.553 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-05 10:28:33.675 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-05 10:28:33.676 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 1782 ms
+2024-09-05 10:28:33.841 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-05 10:28:34.000 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-05 10:28:34.001 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-05 10:28:34.001 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-05 10:28:34.026 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-05 10:28:36.099 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-05 10:28:36.477 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-05 10:28:36.492 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 10:28:36.495 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 10:28:36.653 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-05 10:28:37.809 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-05 10:28:38.122 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-05 10:28:39.217 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-05 10:28:39.237 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-05 10:28:39.272 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-05 10:28:39.398 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8081"]
+2024-09-05 10:28:39.419 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8081 (http) with context path ''
+2024-09-05 10:28:39.515 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:8081 register finished
+2024-09-05 10:28:40.445 [main] INFO  com.mes.DeviceInteractionModuleApplication - Started DeviceInteractionModuleApplication in 11.884 seconds (JVM running for 13.58)
+2024-09-05 10:28:40.446 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-05 10:28:53.640 [http-nio-8081-exec-1] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
+2024-09-05 10:28:53.640 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
+2024-09-05 10:28:53.651 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Completed initialization in 11 ms
+2024-09-05 16:05:23.758 [Thread-34] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-05 16:05:23.763 [Thread-34] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-05 16:05:23.778 [Thread-34] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-05 16:05:23.781 [Thread-34] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-05 16:05:23.787 [Thread-34] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-05 16:05:23.808 [Thread-34] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-05 16:05:23.808 [Thread-34] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-05 16:05:35.865 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$8a33be65] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 16:05:36.934 [main] INFO  com.mes.DeviceInteractionModuleApplication - The following profiles are active: prod
+2024-09-05 16:05:37.820 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-05 16:05:37.822 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-05 16:05:37.855 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 21ms. Found 0 repository interfaces.
+2024-09-05 16:05:38.111 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=35894f46-5214-361a-aaf5-7efe0e9223ef
+2024-09-05 16:05:38.229 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$6e19bb68] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 16:05:38.257 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 16:05:38.260 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$d7a82c39] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 16:05:38.340 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 16:05:38.354 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$8a33be65] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 16:05:38.656 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8081 (http)
+2024-09-05 16:05:38.673 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8081"]
+2024-09-05 16:05:38.680 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-05 16:05:38.680 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-05 16:05:38.830 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-05 16:05:38.830 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 1882 ms
+2024-09-05 16:05:39.020 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-05 16:05:39.190 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-05 16:05:39.191 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-05 16:05:39.191 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-05 16:05:39.215 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-05 16:05:41.288 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-05 16:05:41.696 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-05 16:05:41.710 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 16:05:41.713 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 16:05:41.875 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-05 16:05:43.022 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-05 16:05:43.278 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-05 16:05:44.417 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-05 16:05:44.444 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-05 16:05:44.478 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-05 16:05:44.731 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8081"]
+2024-09-05 16:05:44.753 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8081 (http) with context path ''
+2024-09-05 16:05:44.845 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:8081 register finished
+2024-09-05 16:05:45.827 [main] INFO  com.mes.DeviceInteractionModuleApplication - Started DeviceInteractionModuleApplication in 11.542 seconds (JVM running for 12.79)
+2024-09-05 16:05:45.829 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-05 16:06:07.153 [http-nio-8081-exec-1] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
+2024-09-05 16:06:07.153 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
+2024-09-05 16:06:07.163 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Completed initialization in 10 ms
+2024-09-05 16:08:46.335 [Thread-34] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-05 16:08:46.336 [Thread-34] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-05 16:08:46.341 [Thread-34] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-05 16:08:46.342 [Thread-34] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-05 16:08:46.345 [Thread-34] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-05 16:08:46.351 [Thread-34] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-05 16:08:46.351 [Thread-34] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-05 16:08:55.889 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$f42a42c8] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 16:08:56.932 [main] INFO  com.mes.DeviceInteractionModuleApplication - The following profiles are active: prod
+2024-09-05 16:08:57.648 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-05 16:08:57.658 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-05 16:08:57.687 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 19ms. Found 0 repository interfaces.
+2024-09-05 16:08:57.908 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=35894f46-5214-361a-aaf5-7efe0e9223ef
+2024-09-05 16:08:57.998 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$d8103fcb] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 16:08:58.031 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 16:08:58.033 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$419eb09c] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 16:08:58.107 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 16:08:58.118 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$f42a42c8] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 16:08:58.421 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8081 (http)
+2024-09-05 16:08:58.438 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8081"]
+2024-09-05 16:08:58.443 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-05 16:08:58.443 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-05 16:08:58.558 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-05 16:08:58.558 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 1611 ms
+2024-09-05 16:08:58.707 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-05 16:08:58.848 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-05 16:08:58.848 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-05 16:08:58.848 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-05 16:08:58.879 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-05 16:09:00.910 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-05 16:09:01.331 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-05 16:09:01.347 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 16:09:01.351 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 16:09:01.518 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-05 16:09:02.759 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-05 16:09:03.018 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-05 16:09:04.197 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-05 16:09:04.209 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-05 16:09:04.237 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-05 16:09:04.417 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8081"]
+2024-09-05 16:09:04.464 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8081 (http) with context path ''
+2024-09-05 16:09:04.552 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:8081 register finished
+2024-09-05 16:09:05.588 [main] INFO  com.mes.DeviceInteractionModuleApplication - Started DeviceInteractionModuleApplication in 11.309 seconds (JVM running for 12.629)
+2024-09-05 16:09:05.590 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-05 16:09:20.038 [http-nio-8081-exec-1] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
+2024-09-05 16:09:20.038 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
+2024-09-05 16:09:20.038 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Completed initialization in 0 ms
+2024-09-05 17:02:20.782 [Thread-33] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-05 17:02:20.783 [Thread-33] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-05 17:02:20.787 [Thread-33] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-05 17:02:20.788 [Thread-33] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-05 17:02:20.792 [Thread-33] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-05 17:02:20.798 [Thread-33] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-05 17:02:20.798 [Thread-33] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-05 17:02:33.678 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$9dd05328] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:02:34.725 [main] INFO  com.mes.DeviceInteractionModuleApplication - The following profiles are active: prod
+2024-09-05 17:02:35.482 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-05 17:02:35.484 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-05 17:02:35.523 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 27ms. Found 0 repository interfaces.
+2024-09-05 17:02:35.775 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=35894f46-5214-361a-aaf5-7efe0e9223ef
+2024-09-05 17:02:35.870 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$81b6502b] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:02:35.900 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:02:35.902 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$eb44c0fc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:02:35.975 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:02:35.991 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$9dd05328] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:02:36.256 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8081 (http)
+2024-09-05 17:02:36.269 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8081"]
+2024-09-05 17:02:36.277 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-05 17:02:36.277 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-05 17:02:36.401 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-05 17:02:36.402 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 1659 ms
+2024-09-05 17:02:36.558 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-05 17:02:36.709 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-05 17:02:36.710 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-05 17:02:36.710 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-05 17:02:36.736 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-05 17:02:38.812 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-05 17:02:39.184 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-05 17:02:39.199 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 17:02:39.203 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 17:02:39.378 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-05 17:02:40.506 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-05 17:02:40.774 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-05 17:02:41.951 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-05 17:02:41.966 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-05 17:02:41.996 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-05 17:02:42.168 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8081"]
+2024-09-05 17:02:42.192 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8081 (http) with context path ''
+2024-09-05 17:02:42.289 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:8081 register finished
+2024-09-05 17:02:43.261 [main] INFO  com.mes.DeviceInteractionModuleApplication - Started DeviceInteractionModuleApplication in 11.201 seconds (JVM running for 12.688)
+2024-09-05 17:02:43.263 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-05 17:03:55.124 [http-nio-8081-exec-1] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
+2024-09-05 17:03:55.124 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
+2024-09-05 17:03:55.134 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Completed initialization in 10 ms
+2024-09-05 17:07:27.398 [Thread-33] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-05 17:07:27.399 [Thread-33] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-05 17:07:27.403 [Thread-33] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-05 17:07:27.405 [Thread-33] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-05 17:07:27.415 [Thread-33] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-05 17:07:27.425 [Thread-33] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-05 17:07:27.425 [Thread-33] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-05 17:07:36.454 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$186ac539] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:07:37.490 [main] INFO  com.mes.DeviceInteractionModuleApplication - The following profiles are active: prod
+2024-09-05 17:07:38.252 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-05 17:07:38.255 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-05 17:07:38.292 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 23ms. Found 0 repository interfaces.
+2024-09-05 17:07:38.523 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=35894f46-5214-361a-aaf5-7efe0e9223ef
+2024-09-05 17:07:38.624 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$fc50c23c] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:07:38.653 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:07:38.655 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$65df330d] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:07:38.726 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:07:38.740 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$186ac539] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:07:39.000 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8081 (http)
+2024-09-05 17:07:39.012 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8081"]
+2024-09-05 17:07:39.019 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-05 17:07:39.019 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-05 17:07:39.143 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-05 17:07:39.143 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 1637 ms
+2024-09-05 17:07:39.292 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-05 17:07:39.436 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-05 17:07:39.436 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-05 17:07:39.437 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-05 17:07:39.461 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-05 17:07:41.485 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-05 17:07:41.856 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-05 17:07:41.885 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 17:07:41.888 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 17:07:42.036 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-05 17:07:43.157 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-05 17:07:43.416 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-05 17:07:44.522 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-05 17:07:44.537 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-05 17:07:44.567 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-05 17:07:44.727 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8081"]
+2024-09-05 17:07:44.752 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8081 (http) with context path ''
+2024-09-05 17:07:44.835 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:8081 register finished
+2024-09-05 17:07:45.731 [main] INFO  com.mes.DeviceInteractionModuleApplication - Started DeviceInteractionModuleApplication in 10.804 seconds (JVM running for 12.013)
+2024-09-05 17:07:45.733 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-05 17:09:00.709 [http-nio-8081-exec-1] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
+2024-09-05 17:09:00.709 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
+2024-09-05 17:09:00.739 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Completed initialization in 30 ms
+2024-09-05 17:18:57.609 [Thread-32] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-05 17:18:57.610 [Thread-32] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-05 17:18:57.617 [Thread-32] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-05 17:18:57.619 [Thread-32] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-05 17:18:57.624 [Thread-32] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-05 17:18:57.630 [Thread-32] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-05 17:18:57.630 [Thread-32] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-05 17:19:06.693 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$938bcebf] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:19:07.739 [main] INFO  com.mes.DeviceInteractionModuleApplication - The following profiles are active: prod
+2024-09-05 17:19:08.491 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-05 17:19:08.494 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-05 17:19:08.529 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 21ms. Found 0 repository interfaces.
+2024-09-05 17:19:08.768 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=35894f46-5214-361a-aaf5-7efe0e9223ef
+2024-09-05 17:19:08.870 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$7771cbc2] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:19:08.899 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:19:08.901 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$e1003c93] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:19:08.978 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:19:08.991 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$938bcebf] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:19:09.259 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8081 (http)
+2024-09-05 17:19:09.270 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8081"]
+2024-09-05 17:19:09.277 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-05 17:19:09.278 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-05 17:19:09.401 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-05 17:19:09.401 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 1646 ms
+2024-09-05 17:19:09.553 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-05 17:19:09.703 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-05 17:19:09.704 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-05 17:19:09.704 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-05 17:19:09.729 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-05 17:19:11.778 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-05 17:19:12.175 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-05 17:19:12.189 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 17:19:12.193 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 17:19:12.369 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-05 17:19:13.489 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-05 17:19:13.749 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-05 17:19:14.843 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-05 17:19:14.857 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-05 17:19:14.887 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-05 17:19:15.054 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8081"]
+2024-09-05 17:19:15.077 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8081 (http) with context path ''
+2024-09-05 17:19:15.164 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:8081 register finished
+2024-09-05 17:19:16.079 [main] INFO  com.mes.DeviceInteractionModuleApplication - Started DeviceInteractionModuleApplication in 10.91 seconds (JVM running for 12.096)
+2024-09-05 17:19:16.081 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-05 17:19:29.806 [http-nio-8081-exec-1] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
+2024-09-05 17:19:29.806 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
+2024-09-05 17:19:29.814 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Completed initialization in 8 ms
+2024-09-05 17:22:15.719 [Thread-32] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-05 17:22:15.720 [Thread-32] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-05 17:22:15.726 [Thread-32] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-05 17:22:15.728 [Thread-32] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-05 17:22:15.734 [Thread-32] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-05 17:22:15.742 [Thread-32] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-05 17:22:15.742 [Thread-32] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-05 17:22:26.346 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$dff1a320] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:22:27.406 [main] INFO  com.mes.DeviceInteractionModuleApplication - The following profiles are active: prod
+2024-09-05 17:22:28.140 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-05 17:22:28.142 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-05 17:22:28.173 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 20ms. Found 0 repository interfaces.
+2024-09-05 17:22:28.412 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=35894f46-5214-361a-aaf5-7efe0e9223ef
+2024-09-05 17:22:28.513 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$c3d7a023] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:22:28.540 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:22:28.543 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$2d6610f4] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:22:28.617 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:22:28.630 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$dff1a320] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:22:28.896 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8081 (http)
+2024-09-05 17:22:28.907 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8081"]
+2024-09-05 17:22:28.914 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-05 17:22:28.914 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-05 17:22:29.037 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-05 17:22:29.037 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 1618 ms
+2024-09-05 17:22:29.196 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-05 17:22:29.347 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-05 17:22:29.348 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-05 17:22:29.348 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-05 17:22:29.372 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-05 17:22:31.410 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-05 17:22:31.792 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-05 17:22:31.807 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 17:22:31.811 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 17:22:31.983 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-05 17:22:33.104 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-05 17:22:33.365 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-05 17:22:34.455 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-05 17:22:34.469 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-05 17:22:34.499 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-05 17:22:34.671 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8081"]
+2024-09-05 17:22:34.692 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8081 (http) with context path ''
+2024-09-05 17:22:34.776 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:8081 register finished
+2024-09-05 17:22:35.674 [main] INFO  com.mes.DeviceInteractionModuleApplication - Started DeviceInteractionModuleApplication in 10.841 seconds (JVM running for 12.027)
+2024-09-05 17:22:35.676 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-05 17:22:46.116 [http-nio-8081-exec-1] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
+2024-09-05 17:22:46.116 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
+2024-09-05 17:22:46.125 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Completed initialization in 9 ms
+2024-09-05 17:26:55.830 [Thread-32] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-05 17:26:55.832 [Thread-32] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-05 17:26:55.836 [Thread-32] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-05 17:26:55.837 [Thread-32] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-05 17:26:55.842 [Thread-32] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-05 17:26:55.847 [Thread-32] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-05 17:26:55.847 [Thread-32] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-05 17:27:04.636 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$ed9e5262] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:27:05.694 [main] INFO  com.mes.DeviceInteractionModuleApplication - The following profiles are active: prod
+2024-09-05 17:27:06.413 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-05 17:27:06.415 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-05 17:27:06.448 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 22ms. Found 0 repository interfaces.
+2024-09-05 17:27:06.706 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=35894f46-5214-361a-aaf5-7efe0e9223ef
+2024-09-05 17:27:06.809 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$d1844f65] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:27:06.838 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:27:06.840 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$3b12c036] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:27:06.932 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:27:06.946 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$ed9e5262] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:27:07.220 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8081 (http)
+2024-09-05 17:27:07.231 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8081"]
+2024-09-05 17:27:07.238 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-05 17:27:07.238 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-05 17:27:07.371 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-05 17:27:07.371 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 1664 ms
+2024-09-05 17:27:07.527 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-05 17:27:07.680 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-05 17:27:07.681 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-05 17:27:07.681 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-05 17:27:07.704 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-05 17:27:09.735 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-05 17:27:10.093 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-05 17:27:10.108 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 17:27:10.112 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 17:27:10.283 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-05 17:27:11.627 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-05 17:27:11.886 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-05 17:27:12.979 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-05 17:27:12.993 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-05 17:27:13.022 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-05 17:27:13.182 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8081"]
+2024-09-05 17:27:13.203 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8081 (http) with context path ''
+2024-09-05 17:27:13.284 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:8081 register finished
+2024-09-05 17:27:14.184 [main] INFO  com.mes.DeviceInteractionModuleApplication - Started DeviceInteractionModuleApplication in 11.11 seconds (JVM running for 12.297)
+2024-09-05 17:27:14.186 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-05 17:27:17.710 [http-nio-8081-exec-1] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
+2024-09-05 17:27:17.710 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
+2024-09-05 17:27:17.719 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Completed initialization in 9 ms
+2024-09-05 17:39:10.006 [Thread-31] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-05 17:39:10.007 [Thread-31] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-05 17:39:10.012 [Thread-31] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-05 17:39:10.013 [Thread-31] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-05 17:39:10.017 [Thread-31] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-05 17:39:10.024 [Thread-31] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-05 17:39:10.024 [Thread-31] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-05 17:39:20.365 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$6f70a08a] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:39:21.402 [main] INFO  com.mes.DeviceInteractionModuleApplication - The following profiles are active: prod
+2024-09-05 17:39:22.172 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-05 17:39:22.174 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-05 17:39:22.208 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 22ms. Found 0 repository interfaces.
+2024-09-05 17:39:22.453 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=35894f46-5214-361a-aaf5-7efe0e9223ef
+2024-09-05 17:39:22.549 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$53569d8d] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:39:22.578 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:39:22.580 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$bce50e5e] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:39:22.650 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:39:22.667 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$6f70a08a] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 17:39:22.937 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8081 (http)
+2024-09-05 17:39:22.948 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8081"]
+2024-09-05 17:39:22.955 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-05 17:39:22.955 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-05 17:39:23.085 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-05 17:39:23.085 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 1670 ms
+2024-09-05 17:39:23.242 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-05 17:39:23.387 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-05 17:39:23.388 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-05 17:39:23.388 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-05 17:39:23.413 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-05 17:39:25.473 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-05 17:39:25.875 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-05 17:39:25.889 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 17:39:25.893 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 17:39:26.047 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-05 17:39:27.185 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-05 17:39:27.454 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-05 17:39:28.551 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-05 17:39:28.565 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-05 17:39:28.594 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-05 17:39:28.769 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8081"]
+2024-09-05 17:39:28.794 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8081 (http) with context path ''
+2024-09-05 17:39:28.881 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:8081 register finished
+2024-09-05 17:39:29.772 [main] INFO  com.mes.DeviceInteractionModuleApplication - Started DeviceInteractionModuleApplication in 10.955 seconds (JVM running for 12.14)
+2024-09-05 17:39:29.774 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-05 17:40:02.791 [http-nio-8081-exec-1] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
+2024-09-05 17:40:02.791 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
+2024-09-05 17:40:02.799 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Completed initialization in 8 ms
+2024-09-05 18:51:30.007 [Thread-32] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-05 18:51:30.008 [Thread-32] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-05 18:51:30.012 [Thread-32] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-05 18:51:30.013 [Thread-32] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-05 18:51:30.018 [Thread-32] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-05 18:51:30.024 [Thread-32] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-05 18:51:30.025 [Thread-32] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-05 18:51:39.350 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$53488161] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 18:51:40.388 [main] INFO  com.mes.DeviceInteractionModuleApplication - The following profiles are active: prod
+2024-09-05 18:51:41.136 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-05 18:51:41.138 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-05 18:51:41.171 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 21ms. Found 0 repository interfaces.
+2024-09-05 18:51:41.409 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=35894f46-5214-361a-aaf5-7efe0e9223ef
+2024-09-05 18:51:41.507 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$372e7e64] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 18:51:41.536 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 18:51:41.538 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$a0bcef35] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 18:51:41.610 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 18:51:41.623 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$53488161] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 18:51:41.883 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8081 (http)
+2024-09-05 18:51:41.894 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8081"]
+2024-09-05 18:51:41.901 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-05 18:51:41.901 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-05 18:51:42.023 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-05 18:51:42.023 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 1620 ms
+2024-09-05 18:51:42.176 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-05 18:51:42.322 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-05 18:51:42.323 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-05 18:51:42.323 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-05 18:51:42.346 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-05 18:51:44.367 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-05 18:51:44.732 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-05 18:51:44.746 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 18:51:44.750 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 18:51:44.921 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-05 18:51:46.047 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-05 18:51:46.305 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-05 18:51:47.397 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-05 18:51:47.412 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-05 18:51:47.442 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-05 18:51:47.609 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8081"]
+2024-09-05 18:51:47.631 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8081 (http) with context path ''
+2024-09-05 18:51:47.716 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:8081 register finished
+2024-09-05 18:51:48.613 [main] INFO  com.mes.DeviceInteractionModuleApplication - Started DeviceInteractionModuleApplication in 10.773 seconds (JVM running for 11.972)
+2024-09-05 18:51:48.614 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-05 18:52:56.510 [http-nio-8081-exec-8] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
+2024-09-05 18:52:56.510 [http-nio-8081-exec-8] INFO  org.springframework.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
+2024-09-05 18:52:56.518 [http-nio-8081-exec-8] INFO  org.springframework.web.servlet.DispatcherServlet - Completed initialization in 8 ms
+2024-09-05 19:24:43.046 [Thread-32] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-05 19:24:43.048 [Thread-32] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-05 19:24:43.054 [Thread-32] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-05 19:24:43.055 [Thread-32] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-05 19:24:43.060 [Thread-32] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-05 19:24:43.066 [Thread-32] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-05 19:24:43.066 [Thread-32] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-05 19:24:51.152 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$c10ef16f] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 19:24:52.174 [main] INFO  com.mes.DeviceInteractionModuleApplication - The following profiles are active: prod
+2024-09-05 19:24:52.888 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-05 19:24:52.890 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-05 19:24:52.925 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 23ms. Found 0 repository interfaces.
+2024-09-05 19:24:53.164 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=35894f46-5214-361a-aaf5-7efe0e9223ef
+2024-09-05 19:24:53.258 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$a4f4ee72] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 19:24:53.287 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 19:24:53.289 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$e835f43] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 19:24:53.360 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 19:24:53.371 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$c10ef16f] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 19:24:53.640 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8081 (http)
+2024-09-05 19:24:53.652 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8081"]
+2024-09-05 19:24:53.659 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-05 19:24:53.659 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-05 19:24:53.776 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-05 19:24:53.776 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 1588 ms
+2024-09-05 19:24:53.921 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-05 19:24:54.066 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-05 19:24:54.068 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-05 19:24:54.068 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-05 19:24:54.091 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-05 19:24:56.139 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-05 19:24:56.499 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-05 19:24:56.513 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 19:24:56.517 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 19:24:56.699 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-05 19:24:57.795 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-05 19:24:58.052 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-05 19:24:59.165 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-05 19:24:59.179 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-05 19:24:59.208 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-05 19:24:59.373 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8081"]
+2024-09-05 19:24:59.393 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8081 (http) with context path ''
+2024-09-05 19:24:59.474 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:8081 register finished
+2024-09-05 19:25:00.365 [main] INFO  com.mes.DeviceInteractionModuleApplication - Started DeviceInteractionModuleApplication in 10.72 seconds (JVM running for 11.879)
+2024-09-05 19:25:00.367 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-05 19:25:12.734 [http-nio-8081-exec-1] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
+2024-09-05 19:25:12.734 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
+2024-09-05 19:25:12.742 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Completed initialization in 8 ms
+2024-09-05 19:36:48.263 [Thread-32] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-05 19:36:48.264 [Thread-32] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-05 19:36:48.269 [Thread-32] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-05 19:36:48.271 [Thread-32] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-05 19:36:48.275 [Thread-32] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-05 19:36:48.282 [Thread-32] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-05 19:36:48.282 [Thread-32] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-05 19:37:06.202 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$aced8993] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 19:37:07.219 [main] INFO  com.mes.DeviceInteractionModuleApplication - The following profiles are active: prod
+2024-09-05 19:37:07.947 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-05 19:37:07.949 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-05 19:37:07.982 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 21ms. Found 0 repository interfaces.
+2024-09-05 19:37:08.214 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=35894f46-5214-361a-aaf5-7efe0e9223ef
+2024-09-05 19:37:08.317 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$90d38696] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 19:37:08.346 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 19:37:08.348 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$fa61f767] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 19:37:08.422 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 19:37:08.435 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$aced8993] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 19:37:08.693 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8081 (http)
+2024-09-05 19:37:08.705 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8081"]
+2024-09-05 19:37:08.712 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-05 19:37:08.713 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-05 19:37:08.843 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-05 19:37:08.843 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 1609 ms
+2024-09-05 19:37:09.012 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-05 19:37:09.169 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-05 19:37:09.170 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-05 19:37:09.170 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-05 19:37:09.194 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-05 19:37:11.233 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-05 19:37:11.606 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-05 19:37:11.621 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 19:37:11.624 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 19:37:11.798 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-05 19:37:12.897 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-05 19:37:13.160 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-05 19:37:14.266 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-05 19:37:14.281 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-05 19:37:14.311 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-05 19:37:14.478 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8081"]
+2024-09-05 19:37:14.499 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8081 (http) with context path ''
+2024-09-05 19:37:14.584 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:8081 register finished
+2024-09-05 19:37:15.475 [main] INFO  com.mes.DeviceInteractionModuleApplication - Started DeviceInteractionModuleApplication in 10.791 seconds (JVM running for 11.979)
+2024-09-05 19:37:15.476 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-05 19:37:59.491 [http-nio-8081-exec-1] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
+2024-09-05 19:37:59.491 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
+2024-09-05 19:37:59.499 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Completed initialization in 8 ms
+2024-09-05 21:18:07.336 [Thread-32] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
+2024-09-05 21:18:07.340 [Thread-32] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registering from Nacos Server now...
+2024-09-05 21:18:07.350 [Thread-32] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - De-registration finished.
+2024-09-05 21:18:07.353 [Thread-32] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
+2024-09-05 21:18:07.362 [Thread-32] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2024-09-05 21:18:07.375 [Thread-32] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2024-09-05 21:18:07.375 [Thread-32] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2024-09-05 21:18:23.263 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$ba37cdb] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 21:18:24.688 [main] INFO  com.mes.DeviceInteractionModuleApplication - The following profiles are active: prod
+2024-09-05 21:18:25.894 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
+2024-09-05 21:18:25.896 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
+2024-09-05 21:18:25.930 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 22ms. Found 0 repository interfaces.
+2024-09-05 21:18:26.218 [main] INFO  o.springframework.cloud.context.scope.GenericScope - BeanFactory id=35894f46-5214-361a-aaf5-7efe0e9223ef
+2024-09-05 21:18:26.316 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$ef8979de] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 21:18:26.356 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 21:18:26.359 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$5917eaaf] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 21:18:26.542 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 21:18:26.555 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$ba37cdb] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2024-09-05 21:18:26.895 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8081 (http)
+2024-09-05 21:18:26.908 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8081"]
+2024-09-05 21:18:26.914 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
+2024-09-05 21:18:26.915 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
+2024-09-05 21:18:27.066 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
+2024-09-05 21:18:27.066 [main] INFO  org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 2361 ms
+2024-09-05 21:18:27.241 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join properties config complete
+2024-09-05 21:18:27.504 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1,jiumumes} inited
+2024-09-05 21:18:27.507 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource - load a datasource named [jiumumes] success
+2024-09-05 21:18:27.507 [main] INFO  c.b.dynamic.datasource.DynamicRoutingDataSource - dynamic-datasource initial loaded [1] datasource,primary datasource named [jiumumes]
+2024-09-05 21:18:27.548 [main] INFO  c.g.y.a.MybatisPlusJoinAutoConfiguration - mybatis plus join SqlInjector init
+2024-09-05 21:18:29.938 [main] INFO  com.mes.service.PlcAgreement - 鍒濆鍖朠lcCacheGlass锛歠alse
+2024-09-05 21:18:30.387 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
+2024-09-05 21:18:30.402 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 21:18:30.406 [main] INFO  com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
+2024-09-05 21:18:30.565 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
+2024-09-05 21:18:31.741 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService
+2024-09-05 21:18:32.069 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
+2024-09-05 21:18:33.178 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
+2024-09-05 21:18:33.203 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
+2024-09-05 21:18:33.236 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
+2024-09-05 21:18:33.420 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8081"]
+2024-09-05 21:18:33.446 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8081 (http) with context path ''
+2024-09-05 21:18:33.533 [main] INFO  c.a.cloud.nacos.registry.NacosServiceRegistry - nacos registry, deviceInteraction 10.153.19.29:8081 register finished
+2024-09-05 21:18:34.444 [main] INFO  com.mes.DeviceInteractionModuleApplication - Started DeviceInteractionModuleApplication in 13.263 seconds (JVM running for 14.893)
+2024-09-05 21:18:34.446 [main] INFO  com.mes.AppRunnerConfig - 鍚姩瀹屾垚
+2024-09-05 21:19:24.828 [http-nio-8081-exec-1] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
+2024-09-05 21:19:24.828 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
+2024-09-05 21:19:24.838 [http-nio-8081-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet - Completed initialization in 10 ms
diff --git a/logs/deviceInteraction/web_warn.log b/logs/deviceInteraction/web_warn.log
new file mode 100644
index 0000000..b7b9a95
--- /dev/null
+++ b/logs/deviceInteraction/web_warn.log
@@ -0,0 +1,280 @@
+2024-09-05 08:05:40.335 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:05:40.337 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:05:40.337 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:05:40.338 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:05:40.338 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:05:40.338 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:05:40.338 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:05:40.338 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:05:40.338 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:05:40.338 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:05:40.338 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:05:40.338 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:05:40.338 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:05:40.338 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:05:40.339 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:05:40.339 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:05:40.339 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:05:40.339 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-05 08:05:44.012 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 08:05:44.016 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 08:13:33.437 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:13:33.438 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:13:33.438 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:13:33.438 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:13:33.438 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:13:33.438 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:13:33.438 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:13:33.438 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:13:33.438 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:13:33.438 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:13:33.438 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:13:33.438 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:13:33.438 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:13:33.438 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:13:33.438 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:13:33.439 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:13:33.439 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 08:13:33.440 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-05 08:13:37.003 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 08:13:37.007 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 10:28:32.861 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 10:28:32.862 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 10:28:32.862 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 10:28:32.862 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 10:28:32.862 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 10:28:32.862 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 10:28:32.862 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 10:28:32.862 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 10:28:32.862 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 10:28:32.863 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 10:28:32.863 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 10:28:32.863 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 10:28:32.863 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 10:28:32.863 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 10:28:32.863 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 10:28:32.863 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 10:28:32.863 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 10:28:32.863 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-05 10:28:36.491 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 10:28:36.495 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 16:05:37.993 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:05:37.994 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:05:37.994 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:05:37.994 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:05:37.994 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:05:37.994 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:05:37.994 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:05:37.994 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:05:37.994 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:05:37.994 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:05:37.994 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:05:37.994 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:05:37.994 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:05:37.995 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:05:37.995 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:05:37.995 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:05:37.995 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:05:37.995 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-05 16:05:41.710 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 16:05:41.713 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 16:08:57.818 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:08:57.818 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:08:57.818 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:08:57.818 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:08:57.818 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:08:57.818 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:08:57.818 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:08:57.818 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:08:57.818 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:08:57.818 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:08:57.818 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:08:57.818 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:08:57.818 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:08:57.818 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:08:57.818 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:08:57.818 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:08:57.818 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 16:08:57.818 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-05 16:09:01.346 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 16:09:01.350 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 17:02:35.664 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:02:35.664 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:02:35.664 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:02:35.664 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:02:35.664 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:02:35.665 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:02:35.665 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:02:35.665 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:02:35.665 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:02:35.665 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:02:35.665 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:02:35.665 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:02:35.665 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:02:35.665 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:02:35.665 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:02:35.665 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:02:35.665 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:02:35.666 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-05 17:02:39.199 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 17:02:39.202 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 17:07:38.424 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:07:38.425 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:07:38.425 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:07:38.425 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:07:38.425 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:07:38.425 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:07:38.425 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:07:38.425 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:07:38.426 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:07:38.426 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:07:38.426 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:07:38.426 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:07:38.426 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:07:38.426 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:07:38.426 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:07:38.426 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:07:38.426 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:07:38.427 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-05 17:07:41.884 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 17:07:41.888 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 17:19:08.665 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:19:08.666 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:19:08.666 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:19:08.666 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:19:08.666 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:19:08.666 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:19:08.666 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:19:08.666 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:19:08.666 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:19:08.667 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:19:08.667 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:19:08.667 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:19:08.667 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:19:08.667 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:19:08.667 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:19:08.667 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:19:08.667 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:19:08.667 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-05 17:19:12.189 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 17:19:12.193 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 17:22:28.309 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:22:28.309 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:22:28.309 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:22:28.309 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:22:28.309 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:22:28.309 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:22:28.309 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:22:28.309 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:22:28.309 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:22:28.309 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:22:28.310 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:22:28.310 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:22:28.310 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:22:28.310 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:22:28.310 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:22:28.310 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:22:28.310 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:22:28.310 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-05 17:22:31.807 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 17:22:31.811 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 17:27:06.593 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:27:06.593 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:27:06.593 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:27:06.593 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:27:06.593 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:27:06.593 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:27:06.594 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:27:06.594 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:27:06.594 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:27:06.594 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:27:06.594 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:27:06.594 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:27:06.594 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:27:06.594 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:27:06.594 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:27:06.594 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:27:06.594 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:27:06.595 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-05 17:27:10.108 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 17:27:10.112 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 17:39:22.347 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:39:22.347 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:39:22.347 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:39:22.347 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:39:22.347 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:39:22.347 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:39:22.348 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:39:22.348 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:39:22.348 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:39:22.348 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:39:22.348 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:39:22.348 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:39:22.348 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:39:22.348 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:39:22.348 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:39:22.348 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:39:22.348 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 17:39:22.349 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-05 17:39:25.889 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 17:39:25.893 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 18:51:41.308 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 18:51:41.308 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 18:51:41.308 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 18:51:41.308 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 18:51:41.308 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 18:51:41.308 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 18:51:41.308 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 18:51:41.308 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 18:51:41.309 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 18:51:41.309 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 18:51:41.309 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 18:51:41.309 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 18:51:41.309 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 18:51:41.309 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 18:51:41.309 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 18:51:41.309 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 18:51:41.309 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 18:51:41.310 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-05 18:51:44.746 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 18:51:44.750 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 19:24:53.060 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:24:53.061 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:24:53.062 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:24:53.062 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:24:53.062 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:24:53.062 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:24:53.062 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:24:53.062 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:24:53.062 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:24:53.062 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:24:53.062 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:24:53.063 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:24:53.063 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:24:53.063 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:24:53.063 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:24:53.063 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:24:53.063 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:24:53.063 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-05 19:24:56.513 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 19:24:56.517 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 19:37:08.117 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgStorageCageMapper' and 'com.mes.edgstoragecage.mapper.EdgStorageCageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:37:08.117 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'accountMapper' and 'com.mes.md.mapper.AccountMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:37:08.117 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'edgeGrindingLogMapper' and 'com.mes.md.mapper.EdgeGrindingLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:37:08.117 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'equipmentLogMapper' and 'com.mes.md.mapper.EquipmentLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:37:08.117 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'glassInfoMapper' and 'com.mes.md.mapper.GlassInfoMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:37:08.117 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'menuMapper' and 'com.mes.md.mapper.MenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:37:08.117 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'orderOriginalPieceMapper' and 'com.mes.md.mapper.OrderOriginalPieceMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:37:08.118 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'pageMapper' and 'com.mes.md.mapper.PageMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:37:08.118 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'primitiveTaskMapper' and 'com.mes.md.mapper.PrimitiveTaskMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:37:08.118 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectLogMapper' and 'com.mes.md.mapper.ProjectLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:37:08.118 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'projectMapper' and 'com.mes.md.mapper.ProjectMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:37:08.118 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMapper' and 'com.mes.md.mapper.RoleMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:37:08.118 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'roleMenuMapper' and 'com.mes.md.mapper.RoleMenuMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:37:08.118 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskLogMapper' and 'com.mes.md.mapper.TaskLogMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:37:08.118 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'taskingMapper' and 'com.mes.md.mapper.TaskingMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:37:08.118 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'workTaskDetailMapper' and 'com.mes.md.mapper.WorkTaskDetailMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:37:08.118 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'engineeringMapper' and 'com.mes.engineering.mapper.EngineeringMapper' mapperInterface. Bean already defined with the same name!
+2024-09-05 19:37:08.119 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.mes.*.mapper]' package. Please check your configuration.
+2024-09-05 19:37:11.620 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.
+2024-09-05 19:37:11.624 [main] WARN  com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as dynamic configuration sources.

--
Gitblit v1.8.0