From dc31792dc1b8ad1658e49ba8fce9a1be924e6fbb Mon Sep 17 00:00:00 2001
From: wu <731351411@qq.com>
Date: 星期四, 30 十一月 2023 08:44:04 +0800
Subject: [PATCH] 理片笼测试修改

---
 springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_3_2_RELEASE.xml      |   13 
 springboot-vue3/package-lock.json                                                                                |    6 
 springboot-vue3/.idea/libraries/Maven__com_github_jsqlparser_jsqlparser_2_1.xml                                  |   13 
 springboot-vue3/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_10_13.xml                                |   13 
 springboot-vue3/src/main/java/com/example/springboot/controller/SpianController.java                             |   46 
 springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java                                      |   63 
 springboot-vue3/src/main/java/com/example/springboot/entity/Role.java                                            |   34 
 springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_ext_1_14.xml                                 |   13 
 springboot-vue3/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_11_1.xml                    |   13 
 springboot-vue3/src/main/java/com/example/springboot/service/impl/RoleMenuListServiceImpl.java                   |   33 
 springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_event_1_8_0.xml                                    |   13 
 springboot-vue3/.idea/libraries/Maven__io_jsonwebtoken_jjwt_jackson_0_10_7.xml                                   |   13 
 springboot-vue3/.idea/libraries/Maven__org_mockito_mockito_junit_jupiter_3_3_3.xml                               |   13 
 springboot-vue3/src/main/java/com/example/springboot/entity/vo/RoleMenuListVo.java                               |   19 
 springboot-vue3/src/main/java/com/example/springboot/entity/vo/Result.java                                       |   40 
 springboot-vue3/src/main/java/com/example/springboot/service/impl/RoleServiceImpl.java                           |   53 
 springboot-vue3/src/main/java/com/example/springboot/entity/vo/CheckResult.java                                  |   15 
 springboot-vue3/src/main/java/com/example/springboot/entity/vo/RolePermissionVo.java                             |   19 
 springboot-vue3/.idea/libraries/Maven__org_glassfish_jakarta_el_3_0_3.xml                                        |   13 
 springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_shared_resources_1_14.xml                    |   13 
 springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_3_2_RELEASE.xml            |   13 
 springboot-vue3/src/main/java/com/example/springboot/service/impl/PermissionServiceImpl.java                     |   13 
 springboot-vue3/.idea/libraries/Maven__org_springframework_spring_websocket_5_2_8_RELEASE.xml                    |   13 
 springboot-vue3/src/main/java/com/example/springboot/entity/vo/PermissionVo.java                                 |   19 
 springboot-vue3/.idea/libraries/Maven__org_mapstruct_mapstruct_1_2_0_Final.xml                                   |   13 
 springboot-vue3/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_13_3.xml                        |   13 
 springboot-vue3/src/main/java/com/example/springboot/security/StatelessDefaultSubjectFactory.java                |   14 
 springboot-vue3/src/main/java/com/example/springboot/service/RolePermissionService.java                          |   16 
 springboot-vue3/src/main/java/com/example/springboot/entity/BaseEntity.java                                      |   19 
 springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_spring_boot_starter_1_8_0.xml                      |   13 
 springboot-vue3/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_6_2.xml                             |   13 
 springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java                                 |    2 
 springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_crypto_core_1_8_0.xml                              |   13 
 springboot-vue3/src/main/java/com/example/springboot/AuthorityApplication.java                                   |   22 
 springboot-vue3/.idea/libraries/Maven__org_mybatis_mybatis_spring_2_0_2.xml                                      |   13 
 springboot-vue3/src/main/java/com/example/springboot/mapper/PermissionMapper.java                                |   11 
 springboot-vue3/src/main/java/com/example/springboot/util/ValidatorUtil.java                                     |   38 
 springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_3_2_RELEASE.xml    |   13 
 CanadaMes-ui/src/views/home/index.vue                                                                            |  172 
 springboot-vue3/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_metadata_1_2_0_RELEASE.xml       |   13 
 springboot-vue3/.idea/libraries/Maven__commons_io_commons_io_2_11_0.xml                                          |   13 
 springboot-vue3/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_6_2.xml                          |   13 
 springboot-vue3/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_4_1_Final.xml                           |   13 
 springboot-vue3/.idea/libraries/Maven__com_github_xingshuangs_iot_communication_1_4_2.xml                        |   13 
 springboot-vue3/.idea/vcs.xml                                                                                    |    6 
 springboot-vue3/src/main/java/com/example/springboot/component/Plcsign.java                                      |  106 
 springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_config_core_1_8_0.xml                              |   13 
 springboot-vue3/.idea/libraries/Maven__com_zaxxer_HikariCP_3_4_5.xml                                             |   13 
 springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_lang_1_8_0.xml                                     |   13 
 springboot-vue3/src/main/java/com/example/springboot/service/AlarmService.java                                   |    8 
 springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_dom_1_14.xml                                 |   13 
 springboot-vue3/src/main/resources/com/example/springboot/mapper/DeviceMapper.xml                                |   40 
 springboot-vue3/.idea/artifacts/springboot_vue3_war_exploded.xml                                                 |  150 
 springboot-vue3/.idea/libraries/Maven__org_yaml_snakeyaml_1_26.xml                                               |   13 
 springboot-vue3/src/main/java/com/example/springboot/mapper/RoleMenuListMapper.java                              |   11 
 springboot-vue3/src/main/java/com/example/springboot/common/Result.java                                          |   63 
 springboot-vue3/src/main/java/com/example/springboot/controller/AlarmController.java                             |   48 
 springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_svggen_1_14.xml                              |   13 
 springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_awt_util_1_14.xml                            |   13 
 springboot-vue3/.idea/libraries/Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml                       |   13 
 springboot-vue3/src/main/java/com/example/springboot/security/util/JwtUtil.java                                  |   68 
 springboot-vue3/.idea/modules.xml                                                                                |    8 
 springboot-vue3/.idea/libraries/Maven__commons_codec_commons_codec_1_14.xml                                      |   13 
 springboot-vue3/.idea/libraries/Maven__jakarta_validation_jakarta_validation_api_2_0_2.xml                       |   13 
 springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_util_1_14.xml                                |   13 
 springboot-vue3/.idea/libraries/Maven__io_springfox_springfox_swagger2_2_9_2.xml                                 |   13 
 springboot-vue3/src/main/java/com/example/springboot/entity/CarPosition.java                                     |   32 
 springboot-vue3/src/main/java/com/example/springboot/controller/DefaultController.java                           |  103 
 springboot-vue3/src/main/java/com/example/springboot/mapper/RoleMapper.java                                      |   11 
 springboot-vue3/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_7_0.xml                                        |   13 
 springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_spring_1_8_0.xml                                   |   13 
 springboot-vue3/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_30.xml                                         |   13 
 springboot-vue3/src/main/java/com/example/springboot/entity/alarmmg.java                                         |   57 
 springboot-vue3/src/main/java/com/example/springboot/entity/vo/UserVo.java                                       |   30 
 springboot-vue3/.idea/libraries/Maven__org_springframework_spring_tx_5_2_8_RELEASE.xml                           |   13 
 springboot-vue3/src/main/java/com/example/springboot/service/RoleService.java                                    |   17 
 springboot-vue3/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml                                     |   13 
 springboot-vue3/.idea/libraries/Maven__org_springframework_spring_web_5_2_8_RELEASE.xml                          |   13 
 springboot-vue3/.idea/libraries/Maven__io_jsonwebtoken_jjwt_api_0_10_7.xml                                       |   13 
 springboot-vue3/src/main/java/com/example/springboot/entity/StorageCage.java                                     |  173 +
 springboot-vue3/.idea/libraries/Maven__junit_junit_4_13.xml                                                      |   13 
 springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java                                      |   16 
 springboot-vue3/src/main/java/com/example/springboot/service/RoleMenuListService.java                            |   10 
 springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_css_1_14.xml                                 |   13 
 springboot-vue3/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_37.xml                 |   13 
 springboot-vue3/src/main/java/com/example/springboot/service/device/DeviceService.java                           |   16 
 springboot-vue3/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml                                  |   13 
 springboot-vue3/.idea/libraries/Maven__org_springframework_spring_expression_5_2_8_RELEASE.xml                   |   13 
 springboot-vue3/.idea/misc.xml                                                                                   |   14 
 springboot-vue3/src/main/java/MyGenerator.java                                                                   |  176 +
 springboot-vue3/src/main/java/com/example/springboot/controller/device/DeviceController.java                     |   43 
 springboot-vue3/src/main/java/com/example/springboot/service/impl/RolePermissionServiceImpl.java                 |   35 
 springboot-vue3/.idea/libraries/Maven__com_google_guava_guava_20_0.xml                                           |   13 
 springboot-vue3/.idea/libraries/Maven__org_assertj_assertj_core_3_16_1.xml                                       |   13 
 springboot-vue3/src/main/java/com/example/springboot/service/device/impl/DeviceServiceImpl.java                  |   50 
 springboot-vue3/.idea/libraries/Maven__org_apache_commons_commons_math3_3_6_1.xml                                |   13 
 springboot-vue3/src/main/java/com/example/springboot/entity/vo/BaseVo.java                                       |   22 
 springboot-vue3/src/main/java/com/example/springboot/security/util/SecurityUtil.java                             |   20 
 springboot-vue3/src/main/java/com/example/springboot/entity/Queue.java                                           |  113 
 springboot-vue3/.idea/libraries/Maven__org_ow2_asm_asm_5_0_4.xml                                                 |   13 
 springboot-vue3/.idea/libraries/Maven__com_fasterxml_classmate_1_5_1.xml                                         |   13 
 springboot-vue3/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_11_1.xml           |   13 
 springboot-vue3/src/main/java/com/example/springboot/service/MenuListService.java                                |   34 
 springboot-vue3/.idea/compiler.xml                                                                               |   22 
 springboot-vue3/src/main/resources/com/example/springboot/mapper/RoleMapper.xml                                  |    5 
 springboot-vue3/.idea/libraries/Maven__com_baomidou_mybatis_plus_core_3_2_0.xml                                  |   13 
 springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_transcoder_1_14.xml                          |   13 
 springboot-vue3/src/main/java/com/example/springboot/entity/User.java                                            |   59 
 springboot-vue3/src/main/java/com/example/springboot/controller/CategoryController.java                          |   97 
 springboot-vue3/src/main/java/com/example/springboot/service/OutSlice.java                                       |   66 
 springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_anim_1_14.xml                                |   13 
 springboot-vue3/src/main/resources/com/example/springboot/mapper/PermissionMapper.xml                            |    5 
 springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_gvt_1_14.xml                                 |   13 
 springboot-vue3/.idea/libraries/Maven__net_minidev_accessors_smart_1_2.xml                                       |   13 
 springboot-vue3/src/main/java/com/example/springboot/entity/dto/BaseDto.java                                     |   24 
 springboot-vue3/.idea/libraries/Maven__org_mockito_mockito_core_3_3_3.xml                                        |   13 
 springboot-vue3/.idea/libraries/Maven__com_baomidou_mybatis_plus_boot_starter_3_2_0.xml                          |   13 
 springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_3_2_RELEASE.xml               |   13 
 springboot-vue3/springboot-vue3.iml                                                                              |  186 +
 springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_svg_dom_1_14.xml                             |   13 
 springboot-vue3/.idea/libraries/Maven__org_apache_commons_commons_collections4_4_4.xml                           |   13 
 springboot-vue3/.idea/.gitignore                                                                                 |    8 
 springboot-vue3/pom.xml                                                                                          |  190 +
 springboot-vue3/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_10_13.xml                                      |   13 
 springboot-vue3/.idea/libraries/Maven__com_deepoove_poi_tl_1_12_1.xml                                            |   13 
 springboot-vue3/.idea/libraries/Maven__org_apache_poi_poi_ooxml_lite_5_2_2.xml                                   |   13 
 springboot-vue3/src/main/java/com/example/springboot/controller/RolePermissionController.java                    |  168 +
 springboot-vue3/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_6_2.xml                                 |   13 
 springboot-vue3/.idea/libraries/Maven__com_baomidou_mybatis_plus_3_2_0.xml                                       |   13 
 springboot-vue3/src/main/java/com/example/springboot/controller/RoleMenuListController.java                      |   29 
 springboot-vue3/src/main/resources/com/example/springboot/mapper/MenuListMapper.xml                              |   16 
 springboot-vue3/.idea/libraries/Maven__org_springframework_spring_aop_5_2_8_RELEASE.xml                          |   13 
 springboot-vue3/.idea/libraries/Maven__io_jsonwebtoken_jjwt_impl_0_10_7.xml                                      |   13 
 springboot-vue3/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_6_2.xml                          |   13 
 springboot-vue3/src/main/java/com/example/springboot/entity/OrderOut.java                                        |   43 
 springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_core_1_8_0.xml                                     |   13 
 springboot-vue3/src/main/java/com/example/springboot/entity/MenuList.java                                        |   34 
 springboot-vue3/.idea/libraries/Maven__com_baomidou_mybatis_plus_extension_3_2_0.xml                             |   13 
 springboot-vue3/src/main/java/com/example/springboot/advice/GlobalExceptionHandler.java                          |   42 
 springboot-vue3/src/main/java/com/example/springboot/security/UserRealm.java                                     |  102 
 springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_i18n_1_14.xml                                |   13 
 springboot-vue3/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_4_0.xml                                   |   13 
 springboot-vue3/.idea/libraries/Maven__org_apache_xmlbeans_xmlbeans_5_0_3.xml                                    |   13 
 springboot-vue3/src/main/java/com/example/springboot/controller/RoleController.java                              |   75 
 springboot-vue3/.idea/libraries/Maven__org_springframework_spring_webmvc_5_2_8_RELEASE.xml                       |   13 
 springboot-vue3/src/main/resources/application.properties                                                        |   25 
 springboot-vue3/.idea/libraries/Maven__org_apache_poi_poi_5_2_2.xml                                              |   13 
 springboot-vue3/.idea/libraries/Maven__jakarta_xml_bind_jakarta_xml_bind_api_2_3_3.xml                           |   13 
 springboot-vue3/.idea/libraries/Maven__com_zaxxer_SparseBitSet_1_2.xml                                           |   13 
 springboot-vue3/src/main/java/com/example/springboot/config/SwaggerConfig.java                                   |   59 
 springboot-vue3/.idea/libraries/Maven__commons_collections_commons_collections_3_2_2.xml                         |   13 
 springboot-vue3/src/main/java/com/example/springboot/mapper/MenuListMapper.java                                  |   16 
 springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_constants_1_14.xml                           |   13 
 springboot-vue3/src/main/java/com/example/springboot/entity/Out_slice.java                                       |  101 
 springboot-vue3/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_6_2.xml                        |   13 
 springboot-vue3/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_30.xml                                            |   13 
 springboot-vue3/src/main/java/com/example/springboot/service/impl/MenuListServiceImpl.java                       |   73 
 springboot-vue3/.idea/libraries/Maven__cn_hutool_hutool_all_5_5_4.xml                                            |   13 
 springboot-vue3/src/main/java/com/example/springboot/entity/north_glass_buffer1.java                             |    2 
 springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_config_ogdl_1_8_0.xml                              |   13 
 springboot-vue3/.idea/libraries/Maven__io_swagger_swagger_models_1_5_20.xml                                      |   13 
 springboot-vue3/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_10.xml                                 |   13 
 springboot-vue3/.idea/encodings.xml                                                                              |    7 
 springboot-vue3/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_11_1.xml         |   13 
 springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_3_2_RELEASE.xml       |   13 
 springboot-vue3/src/main/java/com/example/springboot/security/entity/JwtToken.java                               |   22 
 springboot-vue3/.idea/libraries/Maven__com_baomidou_mybatis_plus_annotation_3_2_0.xml                            |   13 
 springboot-vue3/.idea/libraries/Maven__io_springfox_springfox_core_2_9_2.xml                                     |   13 
 springboot-vue3/.idea/libraries/Maven__org_springframework_spring_context_5_2_8_RELEASE.xml                      |   13 
 springboot-vue3/src/main/java/com/example/springboot/entity/vo/ProductVo.java                                    |   21 
 springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_xml_1_14.xml                                 |   13 
 springboot-vue3/.idea/libraries/Maven__org_mybatis_mybatis_3_5_2.xml                                             |   13 
 springboot-vue3/src/main/java/com/example/springboot/entity/RolePermission.java                                  |   34 
 springboot-vue3/src/main/java/com/example/springboot/controller/MenuListController.java                          |   72 
 springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_3_2_RELEASE.xml        |   13 
 springboot-vue3/.idea/libraries/Maven__io_springfox_springfox_swagger_ui_2_9_2.xml                               |   13 
 springboot-vue3/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_1_2_0_RELEASE.xml           |   13 
 springboot-vue3/src/main/java/com/example/springboot/entity/vo/MenuListVo.java                                   |   23 
 springboot-vue3/src/main/java/com/example/springboot/service/HomeService.java                                    |    9 
 springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_3_2_RELEASE.xml |   13 
 springboot-vue3/src/main/java/com/example/springboot/security/constant/SystemConstant.java                       |   27 
 springboot-vue3/.idea/libraries/Maven__io_springfox_springfox_spring_web_2_9_2.xml                               |   13 
 springboot-vue3/.idea/libraries/Maven__org_freemarker_freemarker_2_3_30.xml                                      |   13 
 springboot-vue3/.idea/libraries/Maven__org_objenesis_objenesis_2_6.xml                                           |   13 
 springboot-vue3/src/main/java/com/example/springboot/entity/StorageTask.java                                     |   63 
 springboot-vue3/src/main/java/com/example/springboot/mapper/CategoryMapper.java                                  |   23 
 springboot-vue3/src/main/java/com/example/springboot/service/PermissionService.java                              |    7 
 springboot-vue3/src/main/java/com/example/springboot/component/Plcaction.java                                    |  138 
 springboot-vue3/src/main/resources/com/example/springboot/mapper/CategoryMapper.xml                              |   50 
 springboot-vue3/.idea/libraries/Maven__org_springframework_spring_messaging_5_2_8_RELEASE.xml                    |   13 
 springboot-vue3/src/main/java/com/example/springboot/entity/RoleMenuList.java                                    |   30 
 springboot-vue3/.idea/libraries/Maven__org_springframework_spring_context_support_5_2_8_RELEASE.xml              |   13 
 springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java                              |   45 
 springboot-vue3/src/main/java/com/example/springboot/config/MybatisPlusConfig.java                               |   17 
 springboot-vue3/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_0.xml                                      |   13 
 springboot-vue3/.idea/libraries/Maven__org_springframework_spring_beans_5_2_8_RELEASE.xml                        |   13 
 springboot-vue3/src/main/resources/com/example/springboot/mapper/RolePermissionMapper.xml                        |    5 
 springboot-vue3/src/main/resources/sql/canadames.sql                                                             | 1354 ++++++++
 springboot-vue3/.idea/artifacts/springboot_vue3_war.xml                                                          |   14 
 springboot-vue3/.idea/libraries/Maven__org_springframework_spring_jdbc_5_2_8_RELEASE.xml                         |   13 
 springboot-vue3/.idea/libraries/Maven__org_springframework_spring_core_5_2_8_RELEASE.xml                         |   13 
 springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_freemarker_2_3_2_RELEASE.xml |   13 
 springboot-vue3/src/main/java/com/example/springboot/service/CategoryService.java                                |   51 
 springboot-vue3/src/main/java/com/example/springboot/entity/vo/AuthorizedUser.java                               |   13 
 springboot-vue3/.idea/libraries/Maven__com_github_virtuald_curvesapi_1_07.xml                                    |   13 
 springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_parser_1_14.xml                              |   13 
 springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_script_1_14.xml                              |   13 
 springboot-vue3/src/main/java/com/example/springboot/entity/Glass.java                                           |   58 
 springboot-vue3/.idea/libraries/Maven__org_apache_commons_commons_compress_1_21.xml                              |   13 
 springboot-vue3/src/main/java/com/example/springboot/entity/vo/OrderVo.java                                      |   24 
 springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_bridge_1_14.xml                              |   13 
 springboot-vue3/.idea/libraries/Maven__org_projectlombok_lombok_1_18_12.xml                                      |   13 
 springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_3_2_RELEASE.xml     |   13 
 springboot-vue3/src/main/java/com/example/springboot/mapper/UserMapper.java                                      |   15 
 springboot-vue3/.idea/libraries/Maven__io_springfox_springfox_swagger_common_2_9_2.xml                           |   13 
 springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_websocket_2_3_2_RELEASE.xml  |   13 
 springboot-vue3/.idea/jarRepositories.xml                                                                        |   25 
 springboot-vue3/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_13_3.xml                             |   13 
 springboot-vue3/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_11_1.xml                        |   13 
 CanadaMes-ui/src/api/home.js                                                                                     |   22 
 springboot-vue3/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_0.xml                                 |   13 
 springboot-vue3/src/main/java/com/example/springboot/security/NoSessionFilter.java                               |   93 
 springboot-vue3/.idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_1_5_Final.xml               |   13 
 springboot-vue3/.idea/libraries/Maven__com_baomidou_mybatis_plus_generator_3_2_0.xml                             |   13 
 springboot-vue3/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml          |   13 
 springboot-vue3/.idea/libraries/Maven__commons_beanutils_commons_beanutils_1_9_4.xml                             |   13 
 springboot-vue3/src/main/java/com/example/springboot/entity/Category.java                                        |   44 
 springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_codec_1_14.xml                               |   13 
 springboot-vue3/src/main/java/com/example/springboot/config/CrossOriginConfig.java                               |   26 
 springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java                                     |   11 
 springboot-vue3/src/main/java/com/example/springboot/service/UserService.java                                    |   21 
 springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java                                   |    4 
 springboot-vue3/.idea/libraries/Maven__commons_logging_commons_logging_1_0_4.xml                                 |   13 
 springboot-vue3/.idea/libraries/Maven__net_minidev_json_smart_2_3.xml                                            |   13 
 springboot-vue3/src/main/resources/com/example/springboot/mapper/RoleMenuListMapper.xml                          |    5 
 springboot-vue3/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_6_2.xml                       |   13 
 springboot-vue3/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_11_1.xml                 |   13 
 springboot-vue3/src/main/java/com/example/springboot/component/WebSocketServer.java                              |  144 
 springboot-vue3/.idea/libraries/Maven__jakarta_activation_jakarta_activation_api_1_2_2.xml                       |   13 
 .vscode/launch.json                                                                                              |    7 
 springboot-vue3/.idea/libraries/Maven__io_swagger_swagger_annotations_1_5_20.xml                                 |   13 
 springboot-vue3/.idea/libraries/Maven__io_springfox_springfox_schema_2_9_2.xml                                   |   13 
 springboot-vue3/.idea/libraries/Maven__mysql_mysql_connector_java_8_0_21.xml                                     |   13 
 springboot-vue3/src/main/java/com/example/springboot/mapper/AlarmMapper.java                                     |   25 
 springboot-vue3/.idea/libraries/Maven__io_springfox_springfox_spi_2_9_2.xml                                      |   13 
 springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_cache_1_8_0.xml                                    |   13 
 springboot-vue3/src/main/java/com/example/springboot/service/impl/UserServiceImpl.java                           |   65 
 springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_3_2_RELEASE.xml                    |   13 
 springboot-vue3/src/main/java/com/example/springboot/service/impl/CategoryServiceImpl.java                       |   79 
 springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_crypto_cipher_1_8_0.xml                            |   13 
 springboot-vue3/src/main/resources/com/example/springboot/mapper/UserMapper.xml                                  |   25 
 springboot-vue3/.idea/libraries/Maven__org_hamcrest_hamcrest_2_2.xml                                             |   13 
 springboot-vue3/src/main/java/com/example/springboot/service/JdbcConnections.java                                |   32 
 springboot-vue3/.idea/libraries/Maven__xml_apis_xml_apis_ext_1_3_04.xml                                          |   13 
 springboot-vue3/.idea/libraries/Maven__org_springframework_spring_test_5_2_8_RELEASE.xml                         |   13 
 springboot-vue3/src/main/java/com/example/springboot/entity/Permission.java                                      |   26 
 springboot-vue3/src/main/java/com/example/springboot/entity/device/DeviceEntity.java                             |   61 
 springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_crypto_hash_1_8_0.xml                              |   13 
 springboot-vue3/.idea/libraries/Maven__xml_apis_xml_apis_1_4_01.xml                                              |   13 
 springboot-vue3/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_37.xml                      |   13 
 springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_2_3_2_RELEASE.xml       |   13 
 springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java                                     |   94 
 springboot-vue3/.idea/libraries/Maven__org_junit_vintage_junit_vintage_engine_5_6_2.xml                          |   13 
 springboot-vue3/.idea/libraries/Maven__org_apache_poi_poi_ooxml_5_2_2.xml                                        |   13 
 springboot-vue3/src/main/java/com/example/springboot/security/config/ShiroConfig.java                            |  185 +
 springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_web_1_8_0.xml                                      |   13 
 springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_xmlgraphics_commons_2_6.xml                        |   13 
 springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_3_2_RELEASE.xml       |   13 
 springboot-vue3/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_11_1.xml    |   13 
 springboot-vue3/src/main/java/com/example/springboot/config/WebSocketConfig.java                                 |   16 
 springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java                                      |  122 
 springboot-vue3/src/main/java/com/example/springboot/security/JWTRealm.java                                      |   89 
 springboot-vue3/.idea/libraries/Maven__org_springframework_spring_jcl_5_2_8_RELEASE.xml                          |   13 
 springboot-vue3/src/main/java/com/example/springboot/entity/vo/RoleVo.java                                       |   19 
 springboot-vue3/src/main/java/com/example/springboot/controller/PermissionController.java                        |   40 
 springboot-vue3/src/main/java/com/example/springboot/mapper/device/DeviceMapper.java                             |   21 
 springboot-vue3/.idea/libraries/Maven__org_opentest4j_opentest4j_1_2_0.xml                                       |   13 
 springboot-vue3/.idea/libraries/Maven__org_owasp_encoder_encoder_1_2_2.xml                                       |   13 
 springboot-vue3/src/main/java/com/example/springboot/controller/UserController.java                              |  179 +
 springboot-vue3/src/main/java/com/example/springboot/mapper/RolePermissionMapper.java                            |   30 
 springboot-vue3/src/main/java/com/example/springboot/entity/vo/CategoryVo.java                                   |   22 
 281 files changed, 8,995 insertions(+), 255 deletions(-)

diff --git a/.vscode/launch.json b/.vscode/launch.json
index a0df939..8f88eb2 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -6,6 +6,13 @@
     "configurations": [
         {
             "type": "java",
+            "name": "AuthorityApplication",
+            "request": "launch",
+            "mainClass": "com.example.springboot.AuthorityApplication",
+            "projectName": "canadames"
+        },
+        {
+            "type": "java",
             "name": "Current File",
             "request": "launch",
             "mainClass": "${file}"
diff --git a/CanadaMes-ui/src/api/home.js b/CanadaMes-ui/src/api/home.js
index 05cc8b4..22841f0 100644
--- a/CanadaMes-ui/src/api/home.js
+++ b/CanadaMes-ui/src/api/home.js
@@ -21,13 +21,6 @@
     })
 }
 
-export function loadtask(type) {
-    return request({
-        url: '/home/loadinout?types=' + type,
-        method: 'get',
-    })
-}
-
 export function InsertOrder(orderid) {
     return request({
         url: '/home/InsertOrder?orderid=' + orderid,
@@ -132,11 +125,11 @@
     })
 }
 
-export function InsertQueueGlassId(glassid, id) {
+export function InsertQueueGlassId(id,data) {
     return request({
-        url: '/home/InsertQueueGlassId?glassid=' + glassid + '&id=' + id,
+        url: '/home/InsertQueueGlassId?id=' + id,
         method: 'post',
-        data: ""
+        data
     })
 }
 
@@ -195,3 +188,12 @@
         data
     })
 }
+
+export function isAllowQueues(isAllowQueue) {
+    return request({
+        url: '/home/AddOutSliceS?isAllowQueue'+isAllowQueue,
+        method: 'post',
+        data:""
+    })
+}
+
diff --git a/CanadaMes-ui/src/views/home/index.vue b/CanadaMes-ui/src/views/home/index.vue
index cf98cf8..b7cc24a 100644
--- a/CanadaMes-ui/src/views/home/index.vue
+++ b/CanadaMes-ui/src/views/home/index.vue
@@ -215,14 +215,13 @@
                     <el-table-column :width="130" prop="cage" :label="$t('Cage No')"></el-table-column>
                     <el-table-column :width="130" prop="cell" :label="$t('Slot No')"></el-table-column>
                     <el-table-column :width="180" prop="glassId" :label="$t('Outfeed glass barcode')"></el-table-column>
-                    <el-table-column :width="130" prop="north_glass_buffer1s.ordernumber"
+                    <el-table-column :width="130" prop="orderId"
                         :label="$t('Order No')"></el-table-column>
-                    <el-table-column prop="north_glass_buffer1s.listnumber" :label="$t('List No')"></el-table-column>
-                    <el-table-column prop="north_glass_buffer1s.boxnumber" :label="$t('Box No')"></el-table-column>
+                    <el-table-column prop="orderId" :label="$t('List No')"></el-table-column>
+                    <el-table-column prop="orderId" :label="$t('Box No')"></el-table-column>
                     <el-table-column :width="130" prop="lengthWidth" :label="$t('Dim')">
                         <template slot-scope='scope'>
-                            {{ scope.row.north_glass_buffer1s.glasslength }}*{{ scope.row.north_glass_buffer1s.glassheight
-                            }}
+                            {{ scope.row.glasswidthmm }}*1{{ scope.row.glassheightmm }}
                         </template>
                     </el-table-column>
                     <el-table-column :label="$t('Terminate Task')">
@@ -237,14 +236,13 @@
                     <el-table-column :width="130" prop="cage" :label="$t('Cage No')"></el-table-column>
                     <el-table-column :width="130" prop="cell" :label="$t('Slot No')"></el-table-column>
                     <el-table-column :width="180" prop="glassId" :label="$t('Infeed glass barcode')"></el-table-column>
-                    <el-table-column :width="130" prop="north_glass_buffer1s.ordernumber"
+                    <el-table-column :width="130" prop="orderId"
                         :label="$t('Order No')"></el-table-column>
-                    <el-table-column prop="north_glass_buffer1s.listnumber" :label="$t('List No')"></el-table-column>
-                    <el-table-column prop="north_glass_buffer1s.boxnumber" :label="$t('Box No')"></el-table-column>
+                    <el-table-column prop="orderId" :label="$t('List No')"></el-table-column>
+                    <el-table-column prop="orderId" :label="$t('Box No')"></el-table-column>
                     <el-table-column :width="130" prop="lengthWidth" :label="$t('Dim')">
                         <template slot-scope='scope'>
-                            {{ scope.row.north_glass_buffer1s.glasslength }}*{{ scope.row.north_glass_buffer1s.glassheight
-                            }}
+                            {{ scope.row.glasswidthmm }}*1{{ scope.row.glassheightmm }}
                         </template>
                     </el-table-column>
 
@@ -336,28 +334,28 @@
                     <el-button type="primary" @click="showform(3)">{{ $t('Query') }}</el-button>
                 </el-form-item>
                 <el-form-item :label="$t('Barcode')">
-                    <el-input v-model="form.barcode" readonly autocomplete="off" />
+                    <el-input v-model="form.glassId" readonly autocomplete="off" />
                 </el-form-item>
                 <el-form-item :label="$t('Order No')">
-                    <el-input v-model="form.ordernumber" readonly autocomplete="off" />
+                    <el-input v-model="form.orderId" readonly autocomplete="off" />
                 </el-form-item>
                 <el-form-item :label="$t('List No')">
-                    <el-input v-model="form.listnumber" readonly autocomplete="off" />
+                    <el-input v-model="form.listId" readonly autocomplete="off" />
                 </el-form-item>
                 <el-form-item :label="$t('Box No')">
-                    <el-input v-model="form.boxnumber" readonly autocomplete="off" />
+                    <el-input v-model="form.boxId" readonly autocomplete="off" />
                 </el-form-item>
                 <el-form-item :label="$t('Length')">
-                    <el-input v-model="form.glasslength" readonly autocomplete="off" />
-                </el-form-item>
-                <el-form-item :label="$t('Width')">
-                    <el-input v-model="form.glassheight" readonly autocomplete="off" />
-                </el-form-item>
-                <el-form-item :label="$t('Length')">
-                    <el-input v-model="form.glasslengthmm" readonly autocomplete="off" />
+                    <el-input v-model="form.glasswidthmm" readonly autocomplete="off" />
                 </el-form-item>
                 <el-form-item :label="$t('Width')">
                     <el-input v-model="form.glassheightmm" readonly autocomplete="off" />
+                </el-form-item>
+                <el-form-item :label="$t('Length')">
+                    <el-input v-model="form.glasswidth" readonly autocomplete="off" />
+                </el-form-item>
+                <el-form-item :label="$t('Width')">
+                    <el-input v-model="form.glassheight" readonly autocomplete="off" />
                 </el-form-item>
 
             </el-form>
@@ -407,10 +405,19 @@
                 <el-table-column :width="55" prop="tier" :label="$t('The Side')"></el-table-column>
                 <el-table-column :width="145" prop="glassId" :label="$t('Barcode')"></el-table-column>
                 <el-table-column :width="100" prop="orderId" :label="$t('Order No')"></el-table-column>
-                <el-table-column :width="80" prop="north_glass_buffer1s.listnumber"
+                <el-table-column :width="80" prop="listId"
                     :label="$t('List No')"></el-table-column>
-                <el-table-column :width="100" prop="north_glass_buffer1s.boxnumber" :label="$t('Box No')"></el-table-column>
-                <el-table-column :width="150" prop="lengthWidth" :label="$t('Dim')"></el-table-column>
+                <el-table-column :width="100" prop="boxId" :label="$t('Box No')"></el-table-column>
+                <el-table-column :width="100" prop="state" :label="$t('State')">
+                    <template slot-scope='scope'>
+                        {{ scope.row.state==1?"1":"2" }}
+                    </template>
+                </el-table-column>
+                <el-table-column :width="150" prop="lengthWidth" :label="$t('Dim')">
+                    <template slot-scope='scope'>
+                        {{ scope.row.glassWidthMm }}{{scope.row.glassWidthMm>0?"*":""}}{{ scope.row.glassHeightMm }}
+                    </template>
+                </el-table-column>
                 <el-table-column :width="280" :label="$t('Operate')">
                     <template slot-scope='scope'>
                         <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
@@ -420,7 +427,7 @@
                         <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                             @click="UpdateDisabled(scope.row.cage, scope.row.cell, scope.row.disabled == 0 ? 1 : 0)">
                             {{ scope.row.disabled == 0 ? $t('Enable') : $t('Disable') }}</el-button>
-                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
+                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" :disabled="scope.row.glassId!=null?true:false"
                             @click="insertglass(scope.row.cage, scope.row.cell, scope.row.tier)">{{ $t('Increase')
                             }}</el-button>
                     </template>
@@ -465,106 +472,106 @@
                     <el-form-item>
                         <el-input style="width:50%;margin-left: 20%;" :placeholder="$t('Enter the glass barcode')"
                             v-model="glassid2"></el-input>
-                        <el-button type="primary" @click="SelectGlassByGlassIDs(1)" :disabled="disabled">{{ $t('Query')
+                        <el-button type="primary" @click="SelectGlassByGlassIDs(1)" >{{ $t('Query')
                         }}</el-button>
                     </el-form-item>
                     <el-form-item>
                         <el-input style="width:50%;margin-left: 20%;" :placeholder="$t('Enter the glass barcode')"
                             v-model="glassid1"></el-input>
-                        <el-button type="primary" @click="SelectGlassByGlassIDs(2)" :disabled="disabled">{{ $t('Query')
+                        <el-button type="primary" @click="SelectGlassByGlassIDs(2)" >{{ $t('Query')
                         }}</el-button>
                     </el-form-item>
                 </div>
                 <div style="display: flex;justify-content: space-around;">
                     <el-form-item :label="$t('Barcode')">
-                        <el-input v-model="form2.barcode" readonly autocomplete="off" />
+                        <el-input v-model="form2.glassId" readonly autocomplete="off" />
                     </el-form-item>
                     <el-form-item :label="$t('Barcode')">
-                        <el-input v-model="form4.barcode" readonly autocomplete="off" />
+                        <el-input v-model="form4.glassId" readonly autocomplete="off" />
                     </el-form-item>
                     <el-form-item :label="$t('Barcode')">
-                        <el-input v-model="form3.barcode" readonly autocomplete="off" />
+                        <el-input v-model="form3.glassId" readonly autocomplete="off" />
                     </el-form-item>
                     <el-form-item :label="$t('Barcode')">
-                        <el-input v-model="form5.barcode" readonly autocomplete="off" />
+                        <el-input v-model="form5.glassId" readonly autocomplete="off" />
                     </el-form-item>
                 </div>
                 <div style="display: flex;justify-content: space-around;">
                     <el-form-item :label="$t('Order No')">
-                        <el-input v-model="form2.ordernumber" readonly autocomplete="off" />
+                        <el-input v-model="form2.orderId" readonly autocomplete="off" />
                     </el-form-item>
                     <el-form-item :label="$t('Order No')">
-                        <el-input v-model="form4.ordernumber" readonly autocomplete="off" />
+                        <el-input v-model="form4.orderId" readonly autocomplete="off" />
                     </el-form-item>
                     <el-form-item :label="$t('Order No')">
-                        <el-input v-model="form3.ordernumber" readonly autocomplete="off" />
+                        <el-input v-model="form3.orderId" readonly autocomplete="off" />
                     </el-form-item>
                     <el-form-item :label="$t('Order No')">
-                        <el-input v-model="form5.ordernumber" readonly autocomplete="off" />
+                        <el-input v-model="form5.orderId" readonly autocomplete="off" />
                     </el-form-item>
                 </div>
                 <div style="display: flex;justify-content: space-around;">
                     <el-form-item :label="$t('List No')">
-                        <el-input v-model="form2.listnumber" readonly autocomplete="off" />
+                        <el-input v-model="form2.listId" readonly autocomplete="off" />
                     </el-form-item>
                     <el-form-item :label="$t('List No')">
-                        <el-input v-model="form4.listnumber" readonly autocomplete="off" />
+                        <el-input v-model="form4.listId" readonly autocomplete="off" />
                     </el-form-item>
                     <el-form-item :label="$t('List No')">
-                        <el-input v-model="form3.listnumber" readonly autocomplete="off" />
+                        <el-input v-model="form3.listId" readonly autocomplete="off" />
                     </el-form-item>
                     <el-form-item :label="$t('List No')">
-                        <el-input v-model="form5.listnumber" readonly autocomplete="off" />
+                        <el-input v-model="form5.listId" readonly autocomplete="off" />
                     </el-form-item>
                 </div>
                 <div style="display: flex;justify-content: space-around;">
                     <el-form-item :label="$t('Box No')">
-                        <el-input v-model="form2.boxnumber" readonly autocomplete="off" />
+                        <el-input v-model="form2.boxId" readonly autocomplete="off" />
                     </el-form-item>
                     <el-form-item :label="$t('Box No')">
-                        <el-input v-model="form4.boxnumber" readonly autocomplete="off" />
+                        <el-input v-model="form4.boxId" readonly autocomplete="off" />
                     </el-form-item>
                     <el-form-item :label="$t('Box No')">
-                        <el-input v-model="form3.boxnumber" readonly autocomplete="off" />
+                        <el-input v-model="form3.boxId" readonly autocomplete="off" />
                     </el-form-item>
                     <el-form-item :label="$t('Box No')">
-                        <el-input v-model="form5.boxnumber" readonly autocomplete="off" />
+                        <el-input v-model="form5.boxId" readonly autocomplete="off" />
                     </el-form-item>
                 </div>
                 <div style="display: flex;justify-content: space-around;">
                     <el-form-item :label="$t('Length')">
-                        <el-input v-model="form2.glasslength" readonly autocomplete="off" />
+                        <el-input v-model="form2.glasswidthmm" readonly autocomplete="off" />
                     </el-form-item>
                     <el-form-item :label="$t('Length')">
-                        <el-input v-model="form4.glasslength" readonly autocomplete="off" />
+                        <el-input v-model="form4.glasswidthmm" readonly autocomplete="off" />
                     </el-form-item>
                     <el-form-item :label="$t('Length')">
-                        <el-input v-model="form3.glasslength" readonly autocomplete="off" />
+                        <el-input v-model="form3.glasswidthmm" readonly autocomplete="off" />
                     </el-form-item>
                     <el-form-item :label="$t('Length')">
-                        <el-input v-model="form5.glasslength" readonly autocomplete="off" />
+                        <el-input v-model="form5.glasswidthmm" readonly autocomplete="off" />
                     </el-form-item>
                 </div>
                 <div style="display: flex;justify-content: space-around;">
                     <el-form-item :label="$t('Width')">
-                        <el-input v-model="form2.glassheight" readonly autocomplete="off" />
+                        <el-input v-model="form2.glassheightmm" readonly autocomplete="off" />
                     </el-form-item>
                     <el-form-item :label="$t('Width')">
-                        <el-input v-model="form4.glassheight" readonly autocomplete="off" />
+                        <el-input v-model="form4.glassheightmm" readonly autocomplete="off" />
                     </el-form-item>
                     <el-form-item :label="$t('Width')">
-                        <el-input v-model="form3.glassheight" readonly autocomplete="off" />
+                        <el-input v-model="form3.glassheightmm" readonly autocomplete="off" />
                     </el-form-item>
                     <el-form-item :label="$t('Width')">
-                        <el-input v-model="form5.glassheight" readonly autocomplete="off" />
+                        <el-input v-model="form5.glassheightmm" readonly autocomplete="off" />
                     </el-form-item>
                 </div>
                 <div style="display: flex;justify-content: space-around;">
-                    <el-button @click="DeleteQueueGlasss(2)" type="primary" :disabled="disabled">{{ $t('Clear Current')
+                    <el-button @click="DeleteQueueGlasss(2)" type="primary" >{{ $t('Clear Current')
                     }}</el-button>
                     <el-button @click="InsertQueueGlass(2)" type="primary" :disabled="disabled">
                         {{ $t('Confirm Modification') }}</el-button>
-                    <el-button @click="DeleteQueueGlasss(1)" type="primary" :disabled="disabled">{{ $t('Clear Current')
+                    <el-button @click="DeleteQueueGlasss(1)" type="primary" >{{ $t('Clear Current')
                     }}</el-button>
                     <el-button @click="InsertQueueGlass(1)" type="primary" :disabled="disabled1">
                         {{ $t('Confirm Modification') }}</el-button>
@@ -581,12 +588,12 @@
             <el-button type="primary" @click="showform7()">{{ $t('Increase') }}</el-button>
             <el-table :data="this.OutSlice" :height="700" border style="width: 100%;overflow: auto;">
                 <el-table-column prop="glassId" :label="$t('Barcode')"></el-table-column>
-                <el-table-column prop="north_glass_buffer1s.ordernumber" :label="$t('Order No')"></el-table-column>
-                <el-table-column prop="north_glass_buffer1s.listnumber" :label="$t('List No')"></el-table-column>
-                <el-table-column prop="north_glass_buffer1s.boxnumber" :label="$t('Box No')"></el-table-column>
+                <el-table-column prop="orderId" :label="$t('Order No')"></el-table-column>
+                <el-table-column prop="listId" :label="$t('List No')"></el-table-column>
+                <el-table-column prop="boxId" :label="$t('Box No')"></el-table-column>
                 <el-table-column prop="barCode" :label="$t('Frame No')"></el-table-column>
-                <el-table-column prop="north_glass_buffer1s.glasslength" :label="$t('Length')"></el-table-column>
-                <el-table-column prop="north_glass_buffer1s.glassheight" :label="$t('Width')"></el-table-column>
+                <el-table-column prop="glasswidthmm" :label="$t('Length')"></el-table-column>
+                <el-table-column prop="glassheightmm" :label="$t('Width')"></el-table-column>
                 <el-table-column :width="280" :label="$t('Operate')">
                     <template slot-scope='scope'>
                         <el-button type="text" size="small" @click="getTopMove(scope.row, scope.$index)"
@@ -651,7 +658,7 @@
 <script>
 
 import {
-    home, home2, loadtask, InsertOrder, Addglassid, UpdateTask, SelectAlarmmgInfo, SelectCageInfo, DeleteByGlassID, OutByGlassID, Loadcarlist,
+    home, home2, InsertOrder, Addglassid, UpdateTask, SelectAlarmmgInfo, SelectCageInfo, DeleteByGlassID, OutByGlassID, Loadcarlist,
     SelectPassword, SelectGlassByGlassID, Disabled, Inglassid, SelectGlass, InsertQueueGlassId, UpdateQueueState, DeleteQueueGlass, SelectGlassNo,
     SelectAluminumFrameInfoById, SelectProductionqueue, DeleteProductionQueueGlass, AddOutSliceS
 } from "../../api/home";
@@ -791,7 +798,7 @@
                     if (obj.form3 != null && obj.form3 != "" && obj.state[0] == 0) {
                         this.form5 = obj.form3[0];
                         this.showform3();
-                        if (this.form5.glassheightmm < 380 || this.form5.glasslengthmm < 390 || this.form5.glassheightmm > 1810 || this.form5.glasslengthmm > 2760) {
+                        if (this.form5.glassheight < 380 || this.form5.glasswidth < 390 || this.form5.glassheight > 1810 || this.form5.glasswidth > 2760) {
                             if (this.disabled1 == false) {
                                 this.disabled1 = true;
                                 this.$message.error(this.$t('The glass size is not within the range'));
@@ -800,7 +807,7 @@
                             this.disabled1 = false;
                         }
                     } else {
-                        if (this.form5.glassheightmm < 380 || this.form5.glasslengthmm < 390 || this.form5.glassheightmm > 1810 || this.form5.glasslengthmm > 2760) {
+                        if (this.form5.glassheight < 380 || this.form5.glasswidth < 390 || this.form5.glassheight > 1810 || this.form5.glasswidth > 2760) {
                             if (this.disabled1 == false) {
                                 this.disabled1 = true;
                                 // this.$message.error(this.$t('The glass size is not within the range'));
@@ -817,9 +824,6 @@
                             this.cageinfo = res.data.cageinfo;
                         });
                     }
-                    SelectGlass(this.orderid).then(res => {
-                        this.GlassInfo = res.data.glass;
-                    });
 
                     this.$forceUpdate();
 
@@ -846,14 +850,14 @@
                 this.cagelist3 = res.data.list3;
                 this.cagelist4 = res.data.list4;
             });
-            //鍔犺浇杩涚墖浠诲姟鏁版嵁
-            loadtask(this.task1).then(res => {
-                this.tasklist1 = res.data.list;
-            });
-            //鍔犺浇杩涘嚭鐗囦换鍔℃暟鎹�
-            loadtask(this.task2).then(res => {
-                this.tasklist2 = res.data.list;
-            });
+            // //鍔犺浇杩涚墖浠诲姟鏁版嵁
+            // loadtask(this.task1).then(res => {
+            //     this.tasklist1 = res.data.list;
+            // });
+            // //鍔犺浇杩涘嚭鐗囦换鍔℃暟鎹�
+            // loadtask(this.task2).then(res => {
+            //     this.tasklist2 = res.data.list;
+            // });
             //鍔犺浇鎶ヨ淇℃伅
             SelectAlarmmgInfo().then(res => {
                 this.alarm = res.data.alarmmg;
@@ -937,6 +941,7 @@
             SelectGlassByGlassID(this.glassid).then(res => {
                 if (res.data.form != null) {
                     this.form = res.data.form;
+                    console.log(this.form);
                     this.dialogFormVisible = true;
                     this.$message.success(this.$t('query was successful'));
                 } else {
@@ -967,6 +972,14 @@
                     if (res.data.form != null) {
                         this.form4 = res.data.form;
                         this.$message.success(this.$t('query was successful'));
+                        if (this.form4.glassheight < 380 || this.form4.glasswidth < 390 || this.form4.glassheight > 1810 || this.form4.glasswidth > 2760) {
+                            if (this.disabled == false) {
+                                this.disabled = true;
+                                this.$message.error(this.$t('The glass size is not within the range'));
+                            }
+                        } else {
+                            this.disabled = false;
+                        }
                     } else {
                         this.$message.error(this.$t('There is no such glass'));
                     }
@@ -984,13 +997,12 @@
                     if (res.data.form != null) {
                         this.form5 = res.data.form;
                         this.$message.success(this.$t('query was successful'));
-                        if (this.form5.glassheightmm < 380 || this.form5.glasslengthmm < 390 || this.form5.glassheightmm > 1810 || this.form5.glasslengthmm > 2760) {
+                        if (this.form5.glassheight < 380 || this.form5.glasswidth < 390 || this.form5.glassheight > 1810 || this.form5.glasswidth > 2760) {
                             if (this.disabled1 == false) {
                                 this.disabled1 = true;
                                 this.$message.error(this.$t('The glass size is not within the range'));
                             }
                         } else {
-                            alert(1);
                             this.disabled1 = false;
                         }
                     } else {
@@ -1245,9 +1257,9 @@
         },
         //鎵嬪姩娣诲姞鎵爜浣嶇幓鐠�
         InsertQueueGlass(parameter) {
-            if (parameter == 1 && this.form5.barcode != "") {
-                if (this.form5.barcode != this.form2.barcode) {
-                    InsertQueueGlassId(this.form5.barcode, 1).then(res => {
+            if (parameter == 1 && this.form5.glassId != "") {
+                if (this.form5.glassId != this.form2.glassId) {
+                    InsertQueueGlassId(1,this.form5).then(res => {
                         if (res.data.message == 200) {
                             this.form5 = {};
                             this.$message.success(this.$t('Operation successful'));
@@ -1258,9 +1270,9 @@
                 } else {
                     this.$message.error(this.$t('The glass ID already exists in the loading queue'));
                 }
-            } else if (parameter == 2 && this.form4.barcode != "") {
-                if (this.form4.barcode != this.form3.barcode) {
-                    InsertQueueGlassId(this.form4.barcode, 2).then(res => {
+            } else if (parameter == 2 && this.form4.glassId != "") {
+                if (this.form4.glassId != this.form3.glassId) {
+                    InsertQueueGlassId(2,this.form4).then(res => {
                         if (res.data.message == 200) {
                             this.form4 = {};
                             this.$message.success(this.$t('Operation successful'));
diff --git a/springboot-vue3/.idea/.gitignore b/springboot-vue3/.idea/.gitignore
new file mode 100644
index 0000000..081b737
--- /dev/null
+++ b/springboot-vue3/.idea/.gitignore
@@ -0,0 +1,8 @@
+# 榛樿蹇界暐鐨勬枃浠�
+/shelf/
+/workspace.xml
+# 鏁版嵁婧愭湰鍦板瓨鍌ㄥ凡蹇界暐鏂囦欢
+/dataSources/
+/dataSources.local.xml
+# 鍩轰簬缂栬緫鍣ㄧ殑 HTTP 瀹㈡埛绔姹�
+/httpRequests/
diff --git a/springboot-vue3/.idea/artifacts/springboot_vue3_war.xml b/springboot-vue3/.idea/artifacts/springboot_vue3_war.xml
new file mode 100644
index 0000000..e2e6706
--- /dev/null
+++ b/springboot-vue3/.idea/artifacts/springboot_vue3_war.xml
@@ -0,0 +1,14 @@
+<component name="ArtifactManager">
+  <artifact type="war" name="springboot-vue3:war">
+    <output-path>$PROJECT_DIR$/target</output-path>
+    <properties id="maven-jee-properties">
+      <options>
+        <module>springboot-vue3</module>
+        <packaging>war</packaging>
+      </options>
+    </properties>
+    <root id="archive" name="springboot-vue3-0.0.1-SNAPSHOT.war">
+      <element id="artifact" artifact-name="springboot-vue3:war exploded" />
+    </root>
+  </artifact>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/artifacts/springboot_vue3_war_exploded.xml b/springboot-vue3/.idea/artifacts/springboot_vue3_war_exploded.xml
new file mode 100644
index 0000000..dbac47c
--- /dev/null
+++ b/springboot-vue3/.idea/artifacts/springboot_vue3_war_exploded.xml
@@ -0,0 +1,150 @@
+<component name="ArtifactManager">
+  <artifact type="exploded-war" name="springboot-vue3:war exploded">
+    <output-path>$PROJECT_DIR$/target/springboot-vue3-0.0.1-SNAPSHOT</output-path>
+    <properties id="maven-jee-properties">
+      <options>
+        <exploded>true</exploded>
+        <module>springboot-vue3</module>
+        <packaging>war</packaging>
+      </options>
+    </properties>
+    <root id="root">
+      <element id="directory" name="WEB-INF">
+        <element id="directory" name="classes">
+          <element id="module-output" name="springboot-vue3" />
+        </element>
+        <element id="directory" name="lib">
+          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter-web:2.3.2.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter:2.3.2.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot:2.3.2.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.3.2.RELEASE" />
+          <element id="library" level="project" name="Maven: ch.qos.logback:logback-classic:1.2.3" />
+          <element id="library" level="project" name="Maven: ch.qos.logback:logback-core:1.2.3" />
+          <element id="library" level="project" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.13.3" />
+          <element id="library" level="project" name="Maven: org.slf4j:jul-to-slf4j:1.7.30" />
+          <element id="library" level="project" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" />
+          <element id="library" level="project" name="Maven: org.yaml:snakeyaml:1.26" />
+          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter-json:2.3.2.RELEASE" />
+          <element id="library" level="project" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.11.1" />
+          <element id="library" level="project" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.11.1" />
+          <element id="library" level="project" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.11.1" />
+          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.3.2.RELEASE" />
+          <element id="library" level="project" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.37" />
+          <element id="library" level="project" name="Maven: org.glassfish:jakarta.el:3.0.3" />
+          <element id="library" level="project" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.37" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-web:5.2.8.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-beans:5.2.8.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-webmvc:5.2.8.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-aop:5.2.8.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-context:5.2.8.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-expression:5.2.8.RELEASE" />
+          <element id="library" level="project" name="Maven: mysql:mysql-connector-java:8.0.21" />
+          <element id="library" level="project" name="Maven: net.bytebuddy:byte-buddy:1.10.13" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-core:5.2.8.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-jcl:5.2.8.RELEASE" />
+          <element id="library" level="project" name="Maven: cn.hutool:hutool-all:5.5.4" />
+          <element id="library" level="project" name="Maven: org.hibernate.validator:hibernate-validator:6.1.5.Final" />
+          <element id="library" level="project" name="Maven: jakarta.validation:jakarta.validation-api:2.0.2" />
+          <element id="library" level="project" name="Maven: org.jboss.logging:jboss-logging:3.4.1.Final" />
+          <element id="library" level="project" name="Maven: com.fasterxml:classmate:1.5.1" />
+          <element id="library" level="project" name="Maven: io.jsonwebtoken:jjwt-api:0.10.7" />
+          <element id="library" level="project" name="Maven: io.jsonwebtoken:jjwt-impl:0.10.7" />
+          <element id="library" level="project" name="Maven: io.jsonwebtoken:jjwt-jackson:0.10.7" />
+          <element id="library" level="project" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.11.1" />
+          <element id="library" level="project" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.11.1" />
+          <element id="library" level="project" name="Maven: com.fasterxml.jackson.core:jackson-core:2.11.1" />
+          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-spring-boot-starter:1.8.0" />
+          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-spring:1.8.0" />
+          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-core:1.8.0" />
+          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-lang:1.8.0" />
+          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-cache:1.8.0" />
+          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-crypto-hash:1.8.0" />
+          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-crypto-core:1.8.0" />
+          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-crypto-cipher:1.8.0" />
+          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-config-core:1.8.0" />
+          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-config-ogdl:1.8.0" />
+          <element id="library" level="project" name="Maven: commons-beanutils:commons-beanutils:1.9.4" />
+          <element id="library" level="project" name="Maven: commons-collections:commons-collections:3.2.2" />
+          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-event:1.8.0" />
+          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-web:1.8.0" />
+          <element id="library" level="project" name="Maven: org.owasp.encoder:encoder:1.2.2" />
+          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.3.2.RELEASE" />
+          <element id="library" level="project" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.2.0" />
+          <element id="library" level="project" name="Maven: com.baomidou:mybatis-plus:3.2.0" />
+          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.3.2.RELEASE" />
+          <element id="library" level="project" name="Maven: com.zaxxer:HikariCP:3.4.5" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-jdbc:5.2.8.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-tx:5.2.8.RELEASE" />
+          <element id="library" level="project" name="Maven: com.baomidou:mybatis-plus-core:3.2.0" />
+          <element id="library" level="project" name="Maven: com.baomidou:mybatis-plus-annotation:3.2.0" />
+          <element id="library" level="project" name="Maven: com.github.jsqlparser:jsqlparser:2.1" />
+          <element id="library" level="project" name="Maven: org.mybatis:mybatis:3.5.2" />
+          <element id="library" level="project" name="Maven: com.baomidou:mybatis-plus-generator:3.2.0" />
+          <element id="library" level="project" name="Maven: com.baomidou:mybatis-plus-extension:3.2.0" />
+          <element id="library" level="project" name="Maven: org.mybatis:mybatis-spring:2.0.2" />
+          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter-freemarker:2.3.2.RELEASE" />
+          <element id="library" level="project" name="Maven: org.freemarker:freemarker:2.3.30" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-context-support:5.2.8.RELEASE" />
+          <element id="library" level="project" name="Maven: io.springfox:springfox-swagger2:2.9.2" />
+          <element id="library" level="project" name="Maven: io.swagger:swagger-annotations:1.5.20" />
+          <element id="library" level="project" name="Maven: io.swagger:swagger-models:1.5.20" />
+          <element id="library" level="project" name="Maven: io.springfox:springfox-spi:2.9.2" />
+          <element id="library" level="project" name="Maven: io.springfox:springfox-core:2.9.2" />
+          <element id="library" level="project" name="Maven: io.springfox:springfox-schema:2.9.2" />
+          <element id="library" level="project" name="Maven: io.springfox:springfox-swagger-common:2.9.2" />
+          <element id="library" level="project" name="Maven: io.springfox:springfox-spring-web:2.9.2" />
+          <element id="library" level="project" name="Maven: com.google.guava:guava:20.0" />
+          <element id="library" level="project" name="Maven: org.slf4j:slf4j-api:1.7.30" />
+          <element id="library" level="project" name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE" />
+          <element id="library" level="project" name="Maven: org.mapstruct:mapstruct:1.2.0.Final" />
+          <element id="library" level="project" name="Maven: io.springfox:springfox-swagger-ui:2.9.2" />
+          <element id="library" level="project" name="Maven: com.deepoove:poi-tl:1.12.1" />
+          <element id="library" level="project" name="Maven: org.apache.commons:commons-lang3:3.10" />
+          <element id="library" level="project" name="Maven: org.apache.poi:poi-ooxml:5.2.2" />
+          <element id="library" level="project" name="Maven: org.apache.poi:poi:5.2.2" />
+          <element id="library" level="project" name="Maven: commons-codec:commons-codec:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.commons:commons-math3:3.6.1" />
+          <element id="library" level="project" name="Maven: com.zaxxer:SparseBitSet:1.2" />
+          <element id="library" level="project" name="Maven: org.apache.poi:poi-ooxml-lite:5.2.2" />
+          <element id="library" level="project" name="Maven: org.apache.xmlbeans:xmlbeans:5.0.3" />
+          <element id="library" level="project" name="Maven: org.apache.commons:commons-compress:1.21" />
+          <element id="library" level="project" name="Maven: commons-io:commons-io:2.11.0" />
+          <element id="library" level="project" name="Maven: com.github.virtuald:curvesapi:1.07" />
+          <element id="library" level="project" name="Maven: org.apache.logging.log4j:log4j-api:2.13.3" />
+          <element id="library" level="project" name="Maven: org.apache.commons:commons-collections4:4.4" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-transcoder:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-anim:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-css:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-ext:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-parser:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-svg-dom:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-awt-util:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:xmlgraphics-commons:2.6" />
+          <element id="library" level="project" name="Maven: commons-logging:commons-logging:1.0.4" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-bridge:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-script:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-dom:1.14" />
+          <element id="library" level="project" name="Maven: xml-apis:xml-apis:1.4.01" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-gvt:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-shared-resources:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-svggen:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-util:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-constants:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-i18n:1.14" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-xml:1.14" />
+          <element id="library" level="project" name="Maven: xml-apis:xml-apis-ext:1.3.04" />
+          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-codec:1.14" />
+          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter-websocket:2.3.2.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-messaging:5.2.8.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-websocket:5.2.8.RELEASE" />
+          <element id="library" level="project" name="Maven: com.github.xingshuangs:iot-communication:1.4.2" />
+        </element>
+      </element>
+      <element id="directory" name="META-INF">
+        <element id="file-copy" path="$PROJECT_DIR$/target/springboot-vue3-0.0.1-SNAPSHOT/META-INF/MANIFEST.MF" />
+      </element>
+      <element id="javaee-facet-resources" facet="springboot-vue3/web/Web" />
+    </root>
+  </artifact>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/compiler.xml b/springboot-vue3/.idea/compiler.xml
new file mode 100644
index 0000000..aea3015
--- /dev/null
+++ b/springboot-vue3/.idea/compiler.xml
@@ -0,0 +1,22 @@
+<?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="springboot-vue3" />
+      </profile>
+    </annotationProcessing>
+    <bytecodeTargetLevel>
+      <module name="springboot-vue3" target="8" />
+    </bytecodeTargetLevel>
+  </component>
+  <component name="JavacSettings">
+    <option name="ADDITIONAL_OPTIONS_OVERRIDE">
+      <module name="springboot-vue3" options="-parameters" />
+    </option>
+  </component>
+</project>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/encodings.xml b/springboot-vue3/.idea/encodings.xml
new file mode 100644
index 0000000..aa00ffa
--- /dev/null
+++ b/springboot-vue3/.idea/encodings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding">
+    <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/jarRepositories.xml b/springboot-vue3/.idea/jarRepositories.xml
new file mode 100644
index 0000000..52f4dcd
--- /dev/null
+++ b/springboot-vue3/.idea/jarRepositories.xml
@@ -0,0 +1,25 @@
+<?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="http://maven.aliyun.com/nexus/content/groups/public/" />
+    </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="nexus-aliyun" />
+      <option name="name" value="nexus-aliyun" />
+      <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>
+  </component>
+</project>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml b/springboot-vue3/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml
new file mode 100644
index 0000000..6fec8f4
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: ch.qos.logback:logback-classic:1.2.3">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml b/springboot-vue3/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml
new file mode 100644
index 0000000..9eb8596
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: ch.qos.logback:logback-core:1.2.3">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__cn_hutool_hutool_all_5_5_4.xml b/springboot-vue3/.idea/libraries/Maven__cn_hutool_hutool_all_5_5_4.xml
new file mode 100644
index 0000000..2c37d9e
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__cn_hutool_hutool_all_5_5_4.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: cn.hutool:hutool-all:5.5.4">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/cn/hutool/hutool-all/5.5.4/hutool-all-5.5.4.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/cn/hutool/hutool-all/5.5.4/hutool-all-5.5.4-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/cn/hutool/hutool-all/5.5.4/hutool-all-5.5.4-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__com_baomidou_mybatis_plus_3_2_0.xml b/springboot-vue3/.idea/libraries/Maven__com_baomidou_mybatis_plus_3_2_0.xml
new file mode 100644
index 0000000..af36493
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__com_baomidou_mybatis_plus_3_2_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.baomidou:mybatis-plus:3.2.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus/3.2.0/mybatis-plus-3.2.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus/3.2.0/mybatis-plus-3.2.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus/3.2.0/mybatis-plus-3.2.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__com_baomidou_mybatis_plus_annotation_3_2_0.xml b/springboot-vue3/.idea/libraries/Maven__com_baomidou_mybatis_plus_annotation_3_2_0.xml
new file mode 100644
index 0000000..ed7c028
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__com_baomidou_mybatis_plus_annotation_3_2_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.baomidou:mybatis-plus-annotation:3.2.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-annotation/3.2.0/mybatis-plus-annotation-3.2.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-annotation/3.2.0/mybatis-plus-annotation-3.2.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-annotation/3.2.0/mybatis-plus-annotation-3.2.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__com_baomidou_mybatis_plus_boot_starter_3_2_0.xml b/springboot-vue3/.idea/libraries/Maven__com_baomidou_mybatis_plus_boot_starter_3_2_0.xml
new file mode 100644
index 0000000..64ee3b1
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__com_baomidou_mybatis_plus_boot_starter_3_2_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.baomidou:mybatis-plus-boot-starter:3.2.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-boot-starter/3.2.0/mybatis-plus-boot-starter-3.2.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-boot-starter/3.2.0/mybatis-plus-boot-starter-3.2.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-boot-starter/3.2.0/mybatis-plus-boot-starter-3.2.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__com_baomidou_mybatis_plus_core_3_2_0.xml b/springboot-vue3/.idea/libraries/Maven__com_baomidou_mybatis_plus_core_3_2_0.xml
new file mode 100644
index 0000000..997e69b
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__com_baomidou_mybatis_plus_core_3_2_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.baomidou:mybatis-plus-core:3.2.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-core/3.2.0/mybatis-plus-core-3.2.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-core/3.2.0/mybatis-plus-core-3.2.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-core/3.2.0/mybatis-plus-core-3.2.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__com_baomidou_mybatis_plus_extension_3_2_0.xml b/springboot-vue3/.idea/libraries/Maven__com_baomidou_mybatis_plus_extension_3_2_0.xml
new file mode 100644
index 0000000..32aac0b
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__com_baomidou_mybatis_plus_extension_3_2_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.baomidou:mybatis-plus-extension:3.2.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-extension/3.2.0/mybatis-plus-extension-3.2.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-extension/3.2.0/mybatis-plus-extension-3.2.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-extension/3.2.0/mybatis-plus-extension-3.2.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__com_baomidou_mybatis_plus_generator_3_2_0.xml b/springboot-vue3/.idea/libraries/Maven__com_baomidou_mybatis_plus_generator_3_2_0.xml
new file mode 100644
index 0000000..6e572fd
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__com_baomidou_mybatis_plus_generator_3_2_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.baomidou:mybatis-plus-generator:3.2.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-generator/3.2.0/mybatis-plus-generator-3.2.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-generator/3.2.0/mybatis-plus-generator-3.2.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-generator/3.2.0/mybatis-plus-generator-3.2.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__com_deepoove_poi_tl_1_12_1.xml b/springboot-vue3/.idea/libraries/Maven__com_deepoove_poi_tl_1_12_1.xml
new file mode 100644
index 0000000..666b745
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__com_deepoove_poi_tl_1_12_1.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.deepoove:poi-tl:1.12.1">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/deepoove/poi-tl/1.12.1/poi-tl-1.12.1.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/deepoove/poi-tl/1.12.1/poi-tl-1.12.1-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/deepoove/poi-tl/1.12.1/poi-tl-1.12.1-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__com_fasterxml_classmate_1_5_1.xml b/springboot-vue3/.idea/libraries/Maven__com_fasterxml_classmate_1_5_1.xml
new file mode 100644
index 0000000..bc7d7fd
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__com_fasterxml_classmate_1_5_1.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.fasterxml:classmate:1.5.1">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/classmate/1.5.1/classmate-1.5.1.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/classmate/1.5.1/classmate-1.5.1-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/classmate/1.5.1/classmate-1.5.1-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_11_1.xml b/springboot-vue3/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_11_1.xml
new file mode 100644
index 0000000..3aa8175
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_11_1.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.11.1">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.11.1/jackson-annotations-2.11.1.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.11.1/jackson-annotations-2.11.1-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.11.1/jackson-annotations-2.11.1-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_11_1.xml b/springboot-vue3/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_11_1.xml
new file mode 100644
index 0000000..bd0d979
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_11_1.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.fasterxml.jackson.core:jackson-core:2.11.1">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.11.1/jackson-core-2.11.1.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.11.1/jackson-core-2.11.1-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.11.1/jackson-core-2.11.1-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_11_1.xml b/springboot-vue3/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_11_1.xml
new file mode 100644
index 0000000..08c0010
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_11_1.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.fasterxml.jackson.core:jackson-databind:2.11.1">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.11.1/jackson-databind-2.11.1.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.11.1/jackson-databind-2.11.1-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.11.1/jackson-databind-2.11.1-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_11_1.xml b/springboot-vue3/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_11_1.xml
new file mode 100644
index 0000000..ea31a53
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_11_1.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.11.1">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.11.1/jackson-datatype-jdk8-2.11.1.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.11.1/jackson-datatype-jdk8-2.11.1-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.11.1/jackson-datatype-jdk8-2.11.1-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_11_1.xml b/springboot-vue3/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_11_1.xml
new file mode 100644
index 0000000..50b2736
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_11_1.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.11.1">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.11.1/jackson-datatype-jsr310-2.11.1.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.11.1/jackson-datatype-jsr310-2.11.1-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.11.1/jackson-datatype-jsr310-2.11.1-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_11_1.xml b/springboot-vue3/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_11_1.xml
new file mode 100644
index 0000000..6eac973
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_11_1.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.11.1">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/module/jackson-module-parameter-names/2.11.1/jackson-module-parameter-names-2.11.1.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/module/jackson-module-parameter-names/2.11.1/jackson-module-parameter-names-2.11.1-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/module/jackson-module-parameter-names/2.11.1/jackson-module-parameter-names-2.11.1-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__com_github_jsqlparser_jsqlparser_2_1.xml b/springboot-vue3/.idea/libraries/Maven__com_github_jsqlparser_jsqlparser_2_1.xml
new file mode 100644
index 0000000..e9b391b
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__com_github_jsqlparser_jsqlparser_2_1.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.github.jsqlparser:jsqlparser:2.1">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/github/jsqlparser/jsqlparser/2.1/jsqlparser-2.1.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/github/jsqlparser/jsqlparser/2.1/jsqlparser-2.1-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/github/jsqlparser/jsqlparser/2.1/jsqlparser-2.1-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__com_github_virtuald_curvesapi_1_07.xml b/springboot-vue3/.idea/libraries/Maven__com_github_virtuald_curvesapi_1_07.xml
new file mode 100644
index 0000000..6b2810c
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__com_github_virtuald_curvesapi_1_07.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.github.virtuald:curvesapi:1.07">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/github/virtuald/curvesapi/1.07/curvesapi-1.07.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/github/virtuald/curvesapi/1.07/curvesapi-1.07-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/github/virtuald/curvesapi/1.07/curvesapi-1.07-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__com_github_xingshuangs_iot_communication_1_4_2.xml b/springboot-vue3/.idea/libraries/Maven__com_github_xingshuangs_iot_communication_1_4_2.xml
new file mode 100644
index 0000000..73b6bdf
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__com_github_xingshuangs_iot_communication_1_4_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.github.xingshuangs:iot-communication:1.4.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/github/xingshuangs/iot-communication/1.4.2/iot-communication-1.4.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/github/xingshuangs/iot-communication/1.4.2/iot-communication-1.4.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/github/xingshuangs/iot-communication/1.4.2/iot-communication-1.4.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__com_google_guava_guava_20_0.xml b/springboot-vue3/.idea/libraries/Maven__com_google_guava_guava_20_0.xml
new file mode 100644
index 0000000..c5bd322
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__com_google_guava_guava_20_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.google.guava:guava:20.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/google/guava/guava/20.0/guava-20.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/google/guava/guava/20.0/guava-20.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/google/guava/guava/20.0/guava-20.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_4_0.xml b/springboot-vue3/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_4_0.xml
new file mode 100644
index 0000000..f19f6eb
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_4_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.jayway.jsonpath:json-path:2.4.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/jayway/jsonpath/json-path/2.4.0/json-path-2.4.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/jayway/jsonpath/json-path/2.4.0/json-path-2.4.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/jayway/jsonpath/json-path/2.4.0/json-path-2.4.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml b/springboot-vue3/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml
new file mode 100644
index 0000000..b8581a6
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__com_zaxxer_HikariCP_3_4_5.xml b/springboot-vue3/.idea/libraries/Maven__com_zaxxer_HikariCP_3_4_5.xml
new file mode 100644
index 0000000..97e2291
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__com_zaxxer_HikariCP_3_4_5.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.zaxxer:HikariCP:3.4.5">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/zaxxer/HikariCP/3.4.5/HikariCP-3.4.5.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/zaxxer/HikariCP/3.4.5/HikariCP-3.4.5-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/zaxxer/HikariCP/3.4.5/HikariCP-3.4.5-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__com_zaxxer_SparseBitSet_1_2.xml b/springboot-vue3/.idea/libraries/Maven__com_zaxxer_SparseBitSet_1_2.xml
new file mode 100644
index 0000000..6ce4aae
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__com_zaxxer_SparseBitSet_1_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.zaxxer:SparseBitSet:1.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/zaxxer/SparseBitSet/1.2/SparseBitSet-1.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/zaxxer/SparseBitSet/1.2/SparseBitSet-1.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/zaxxer/SparseBitSet/1.2/SparseBitSet-1.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__commons_beanutils_commons_beanutils_1_9_4.xml b/springboot-vue3/.idea/libraries/Maven__commons_beanutils_commons_beanutils_1_9_4.xml
new file mode 100644
index 0000000..84eb115
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__commons_beanutils_commons_beanutils_1_9_4.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: commons-beanutils:commons-beanutils:1.9.4">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/commons-beanutils/commons-beanutils/1.9.4/commons-beanutils-1.9.4.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/commons-beanutils/commons-beanutils/1.9.4/commons-beanutils-1.9.4-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/commons-beanutils/commons-beanutils/1.9.4/commons-beanutils-1.9.4-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__commons_codec_commons_codec_1_14.xml b/springboot-vue3/.idea/libraries/Maven__commons_codec_commons_codec_1_14.xml
new file mode 100644
index 0000000..50b8f2b
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__commons_codec_commons_codec_1_14.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: commons-codec:commons-codec:1.14">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.14/commons-codec-1.14.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.14/commons-codec-1.14-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.14/commons-codec-1.14-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__commons_collections_commons_collections_3_2_2.xml b/springboot-vue3/.idea/libraries/Maven__commons_collections_commons_collections_3_2_2.xml
new file mode 100644
index 0000000..13afda2
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__commons_collections_commons_collections_3_2_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: commons-collections:commons-collections:3.2.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/commons-collections/commons-collections/3.2.2/commons-collections-3.2.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/commons-collections/commons-collections/3.2.2/commons-collections-3.2.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/commons-collections/commons-collections/3.2.2/commons-collections-3.2.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__commons_io_commons_io_2_11_0.xml b/springboot-vue3/.idea/libraries/Maven__commons_io_commons_io_2_11_0.xml
new file mode 100644
index 0000000..f94fc5a
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__commons_io_commons_io_2_11_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: commons-io:commons-io:2.11.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/commons-io/commons-io/2.11.0/commons-io-2.11.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/commons-io/commons-io/2.11.0/commons-io-2.11.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/commons-io/commons-io/2.11.0/commons-io-2.11.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__commons_logging_commons_logging_1_0_4.xml b/springboot-vue3/.idea/libraries/Maven__commons_logging_commons_logging_1_0_4.xml
new file mode 100644
index 0000000..217d6e0
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__commons_logging_commons_logging_1_0_4.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: commons-logging:commons-logging:1.0.4">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__io_jsonwebtoken_jjwt_api_0_10_7.xml b/springboot-vue3/.idea/libraries/Maven__io_jsonwebtoken_jjwt_api_0_10_7.xml
new file mode 100644
index 0000000..7c4bd05
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__io_jsonwebtoken_jjwt_api_0_10_7.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: io.jsonwebtoken:jjwt-api:0.10.7">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/jsonwebtoken/jjwt-api/0.10.7/jjwt-api-0.10.7.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/io/jsonwebtoken/jjwt-api/0.10.7/jjwt-api-0.10.7-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/jsonwebtoken/jjwt-api/0.10.7/jjwt-api-0.10.7-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__io_jsonwebtoken_jjwt_impl_0_10_7.xml b/springboot-vue3/.idea/libraries/Maven__io_jsonwebtoken_jjwt_impl_0_10_7.xml
new file mode 100644
index 0000000..d36f102
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__io_jsonwebtoken_jjwt_impl_0_10_7.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: io.jsonwebtoken:jjwt-impl:0.10.7">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/jsonwebtoken/jjwt-impl/0.10.7/jjwt-impl-0.10.7.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/io/jsonwebtoken/jjwt-impl/0.10.7/jjwt-impl-0.10.7-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/jsonwebtoken/jjwt-impl/0.10.7/jjwt-impl-0.10.7-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__io_jsonwebtoken_jjwt_jackson_0_10_7.xml b/springboot-vue3/.idea/libraries/Maven__io_jsonwebtoken_jjwt_jackson_0_10_7.xml
new file mode 100644
index 0000000..35a0e46
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__io_jsonwebtoken_jjwt_jackson_0_10_7.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: io.jsonwebtoken:jjwt-jackson:0.10.7">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/jsonwebtoken/jjwt-jackson/0.10.7/jjwt-jackson-0.10.7.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/io/jsonwebtoken/jjwt-jackson/0.10.7/jjwt-jackson-0.10.7-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/jsonwebtoken/jjwt-jackson/0.10.7/jjwt-jackson-0.10.7-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__io_springfox_springfox_core_2_9_2.xml b/springboot-vue3/.idea/libraries/Maven__io_springfox_springfox_core_2_9_2.xml
new file mode 100644
index 0000000..03588dc
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__io_springfox_springfox_core_2_9_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: io.springfox:springfox-core:2.9.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-core/2.9.2/springfox-core-2.9.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-core/2.9.2/springfox-core-2.9.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-core/2.9.2/springfox-core-2.9.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__io_springfox_springfox_schema_2_9_2.xml b/springboot-vue3/.idea/libraries/Maven__io_springfox_springfox_schema_2_9_2.xml
new file mode 100644
index 0000000..4a47148
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__io_springfox_springfox_schema_2_9_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: io.springfox:springfox-schema:2.9.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-schema/2.9.2/springfox-schema-2.9.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-schema/2.9.2/springfox-schema-2.9.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-schema/2.9.2/springfox-schema-2.9.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__io_springfox_springfox_spi_2_9_2.xml b/springboot-vue3/.idea/libraries/Maven__io_springfox_springfox_spi_2_9_2.xml
new file mode 100644
index 0000000..f934649
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__io_springfox_springfox_spi_2_9_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: io.springfox:springfox-spi:2.9.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-spi/2.9.2/springfox-spi-2.9.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-spi/2.9.2/springfox-spi-2.9.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-spi/2.9.2/springfox-spi-2.9.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__io_springfox_springfox_spring_web_2_9_2.xml b/springboot-vue3/.idea/libraries/Maven__io_springfox_springfox_spring_web_2_9_2.xml
new file mode 100644
index 0000000..7898a19
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__io_springfox_springfox_spring_web_2_9_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: io.springfox:springfox-spring-web:2.9.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-spring-web/2.9.2/springfox-spring-web-2.9.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-spring-web/2.9.2/springfox-spring-web-2.9.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-spring-web/2.9.2/springfox-spring-web-2.9.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__io_springfox_springfox_swagger2_2_9_2.xml b/springboot-vue3/.idea/libraries/Maven__io_springfox_springfox_swagger2_2_9_2.xml
new file mode 100644
index 0000000..4ed7d0d
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__io_springfox_springfox_swagger2_2_9_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: io.springfox:springfox-swagger2:2.9.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger2/2.9.2/springfox-swagger2-2.9.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger2/2.9.2/springfox-swagger2-2.9.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger2/2.9.2/springfox-swagger2-2.9.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__io_springfox_springfox_swagger_common_2_9_2.xml b/springboot-vue3/.idea/libraries/Maven__io_springfox_springfox_swagger_common_2_9_2.xml
new file mode 100644
index 0000000..c40ef9f
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__io_springfox_springfox_swagger_common_2_9_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: io.springfox:springfox-swagger-common:2.9.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger-common/2.9.2/springfox-swagger-common-2.9.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger-common/2.9.2/springfox-swagger-common-2.9.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger-common/2.9.2/springfox-swagger-common-2.9.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__io_springfox_springfox_swagger_ui_2_9_2.xml b/springboot-vue3/.idea/libraries/Maven__io_springfox_springfox_swagger_ui_2_9_2.xml
new file mode 100644
index 0000000..0700f01
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__io_springfox_springfox_swagger_ui_2_9_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: io.springfox:springfox-swagger-ui:2.9.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger-ui/2.9.2/springfox-swagger-ui-2.9.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger-ui/2.9.2/springfox-swagger-ui-2.9.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger-ui/2.9.2/springfox-swagger-ui-2.9.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__io_swagger_swagger_annotations_1_5_20.xml b/springboot-vue3/.idea/libraries/Maven__io_swagger_swagger_annotations_1_5_20.xml
new file mode 100644
index 0000000..1c4a621
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__io_swagger_swagger_annotations_1_5_20.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: io.swagger:swagger-annotations:1.5.20">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/swagger/swagger-annotations/1.5.20/swagger-annotations-1.5.20.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/io/swagger/swagger-annotations/1.5.20/swagger-annotations-1.5.20-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/swagger/swagger-annotations/1.5.20/swagger-annotations-1.5.20-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__io_swagger_swagger_models_1_5_20.xml b/springboot-vue3/.idea/libraries/Maven__io_swagger_swagger_models_1_5_20.xml
new file mode 100644
index 0000000..395508f
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__io_swagger_swagger_models_1_5_20.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: io.swagger:swagger-models:1.5.20">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/swagger/swagger-models/1.5.20/swagger-models-1.5.20.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/io/swagger/swagger-models/1.5.20/swagger-models-1.5.20-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/swagger/swagger-models/1.5.20/swagger-models-1.5.20-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__jakarta_activation_jakarta_activation_api_1_2_2.xml b/springboot-vue3/.idea/libraries/Maven__jakarta_activation_jakarta_activation_api_1_2_2.xml
new file mode 100644
index 0000000..be90656
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__jakarta_activation_jakarta_activation_api_1_2_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: jakarta.activation:jakarta.activation-api:1.2.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/jakarta/activation/jakarta.activation-api/1.2.2/jakarta.activation-api-1.2.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/jakarta/activation/jakarta.activation-api/1.2.2/jakarta.activation-api-1.2.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/jakarta/activation/jakarta.activation-api/1.2.2/jakarta.activation-api-1.2.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml b/springboot-vue3/.idea/libraries/Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml
new file mode 100644
index 0000000..cba9dd2
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/jakarta/annotation/jakarta.annotation-api/1.3.5/jakarta.annotation-api-1.3.5.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/jakarta/annotation/jakarta.annotation-api/1.3.5/jakarta.annotation-api-1.3.5-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/jakarta/annotation/jakarta.annotation-api/1.3.5/jakarta.annotation-api-1.3.5-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__jakarta_validation_jakarta_validation_api_2_0_2.xml b/springboot-vue3/.idea/libraries/Maven__jakarta_validation_jakarta_validation_api_2_0_2.xml
new file mode 100644
index 0000000..e66afb9
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__jakarta_validation_jakarta_validation_api_2_0_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: jakarta.validation:jakarta.validation-api:2.0.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/jakarta/validation/jakarta.validation-api/2.0.2/jakarta.validation-api-2.0.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/jakarta/validation/jakarta.validation-api/2.0.2/jakarta.validation-api-2.0.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/jakarta/validation/jakarta.validation-api/2.0.2/jakarta.validation-api-2.0.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__jakarta_xml_bind_jakarta_xml_bind_api_2_3_3.xml b/springboot-vue3/.idea/libraries/Maven__jakarta_xml_bind_jakarta_xml_bind_api_2_3_3.xml
new file mode 100644
index 0000000..04213f7
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__jakarta_xml_bind_jakarta_xml_bind_api_2_3_3.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: jakarta.xml.bind:jakarta.xml.bind-api:2.3.3">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/jakarta/xml/bind/jakarta.xml.bind-api/2.3.3/jakarta.xml.bind-api-2.3.3.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/jakarta/xml/bind/jakarta.xml.bind-api/2.3.3/jakarta.xml.bind-api-2.3.3-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/jakarta/xml/bind/jakarta.xml.bind-api/2.3.3/jakarta.xml.bind-api-2.3.3-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__junit_junit_4_13.xml b/springboot-vue3/.idea/libraries/Maven__junit_junit_4_13.xml
new file mode 100644
index 0000000..59fc5c4
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__junit_junit_4_13.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: junit:junit:4.13">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.13/junit-4.13.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.13/junit-4.13-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.13/junit-4.13-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__mysql_mysql_connector_java_8_0_21.xml b/springboot-vue3/.idea/libraries/Maven__mysql_mysql_connector_java_8_0_21.xml
new file mode 100644
index 0000000..85958a1
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__mysql_mysql_connector_java_8_0_21.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: mysql:mysql-connector-java:8.0.21">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/mysql/mysql-connector-java/8.0.21/mysql-connector-java-8.0.21.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/mysql/mysql-connector-java/8.0.21/mysql-connector-java-8.0.21-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/mysql/mysql-connector-java/8.0.21/mysql-connector-java-8.0.21-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_10_13.xml b/springboot-vue3/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_10_13.xml
new file mode 100644
index 0000000..74f49f3
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_10_13.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: net.bytebuddy:byte-buddy:1.10.13">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy/1.10.13/byte-buddy-1.10.13.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy/1.10.13/byte-buddy-1.10.13-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy/1.10.13/byte-buddy-1.10.13-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_10_13.xml b/springboot-vue3/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_10_13.xml
new file mode 100644
index 0000000..768d1aa
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_10_13.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: net.bytebuddy:byte-buddy-agent:1.10.13">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy-agent/1.10.13/byte-buddy-agent-1.10.13.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy-agent/1.10.13/byte-buddy-agent-1.10.13-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy-agent/1.10.13/byte-buddy-agent-1.10.13-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__net_minidev_accessors_smart_1_2.xml b/springboot-vue3/.idea/libraries/Maven__net_minidev_accessors_smart_1_2.xml
new file mode 100644
index 0000000..b3d3858
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__net_minidev_accessors_smart_1_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: net.minidev:accessors-smart:1.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/net/minidev/accessors-smart/1.2/accessors-smart-1.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/net/minidev/accessors-smart/1.2/accessors-smart-1.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/net/minidev/accessors-smart/1.2/accessors-smart-1.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__net_minidev_json_smart_2_3.xml b/springboot-vue3/.idea/libraries/Maven__net_minidev_json_smart_2_3.xml
new file mode 100644
index 0000000..1083023
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__net_minidev_json_smart_2_3.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: net.minidev:json-smart:2.3">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/net/minidev/json-smart/2.3/json-smart-2.3.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/net/minidev/json-smart/2.3/json-smart-2.3-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/net/minidev/json-smart/2.3/json-smart-2.3-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_commons_commons_collections4_4_4.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_commons_commons_collections4_4_4.xml
new file mode 100644
index 0000000..5871c95
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_commons_commons_collections4_4_4.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.commons:commons-collections4:4.4">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-collections4/4.4/commons-collections4-4.4.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-collections4/4.4/commons-collections4-4.4-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-collections4/4.4/commons-collections4-4.4-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_commons_commons_compress_1_21.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_commons_commons_compress_1_21.xml
new file mode 100644
index 0000000..49cd123
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_commons_commons_compress_1_21.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.commons:commons-compress:1.21">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-compress/1.21/commons-compress-1.21.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-compress/1.21/commons-compress-1.21-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-compress/1.21/commons-compress-1.21-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_10.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_10.xml
new file mode 100644
index 0000000..00de553
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_10.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.commons:commons-lang3:3.10">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.10/commons-lang3-3.10.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.10/commons-lang3-3.10-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.10/commons-lang3-3.10-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_commons_commons_math3_3_6_1.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_commons_commons_math3_3_6_1.xml
new file mode 100644
index 0000000..ebfe0a8
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_commons_commons_math3_3_6_1.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.commons:commons-math3:3.6.1">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-math3/3.6.1/commons-math3-3.6.1.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-math3/3.6.1/commons-math3-3.6.1-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-math3/3.6.1/commons-math3-3.6.1-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_13_3.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_13_3.xml
new file mode 100644
index 0000000..8ad4996
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_13_3.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.logging.log4j:log4j-api:2.13.3">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-api/2.13.3/log4j-api-2.13.3.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-api/2.13.3/log4j-api-2.13.3-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-api/2.13.3/log4j-api-2.13.3-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_13_3.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_13_3.xml
new file mode 100644
index 0000000..57e6ac4
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_13_3.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.13.3">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-to-slf4j/2.13.3/log4j-to-slf4j-2.13.3.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-to-slf4j/2.13.3/log4j-to-slf4j-2.13.3-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-to-slf4j/2.13.3/log4j-to-slf4j-2.13.3-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_poi_poi_5_2_2.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_poi_poi_5_2_2.xml
new file mode 100644
index 0000000..c177798
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_poi_poi_5_2_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.poi:poi:5.2.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi/5.2.2/poi-5.2.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi/5.2.2/poi-5.2.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi/5.2.2/poi-5.2.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_poi_poi_ooxml_5_2_2.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_poi_poi_ooxml_5_2_2.xml
new file mode 100644
index 0000000..42c2b77
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_poi_poi_ooxml_5_2_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.poi:poi-ooxml:5.2.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-ooxml/5.2.2/poi-ooxml-5.2.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-ooxml/5.2.2/poi-ooxml-5.2.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-ooxml/5.2.2/poi-ooxml-5.2.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_poi_poi_ooxml_lite_5_2_2.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_poi_poi_ooxml_lite_5_2_2.xml
new file mode 100644
index 0000000..c136b22
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_poi_poi_ooxml_lite_5_2_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.poi:poi-ooxml-lite:5.2.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-ooxml-lite/5.2.2/poi-ooxml-lite-5.2.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-ooxml-lite/5.2.2/poi-ooxml-lite-5.2.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-ooxml-lite/5.2.2/poi-ooxml-lite-5.2.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_cache_1_8_0.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_cache_1_8_0.xml
new file mode 100644
index 0000000..5272a36
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_cache_1_8_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.shiro:shiro-cache:1.8.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-cache/1.8.0/shiro-cache-1.8.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-cache/1.8.0/shiro-cache-1.8.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-cache/1.8.0/shiro-cache-1.8.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_config_core_1_8_0.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_config_core_1_8_0.xml
new file mode 100644
index 0000000..4578d1b
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_config_core_1_8_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.shiro:shiro-config-core:1.8.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-config-core/1.8.0/shiro-config-core-1.8.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-config-core/1.8.0/shiro-config-core-1.8.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-config-core/1.8.0/shiro-config-core-1.8.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_config_ogdl_1_8_0.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_config_ogdl_1_8_0.xml
new file mode 100644
index 0000000..e699787
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_config_ogdl_1_8_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.shiro:shiro-config-ogdl:1.8.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-config-ogdl/1.8.0/shiro-config-ogdl-1.8.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-config-ogdl/1.8.0/shiro-config-ogdl-1.8.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-config-ogdl/1.8.0/shiro-config-ogdl-1.8.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_core_1_8_0.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_core_1_8_0.xml
new file mode 100644
index 0000000..aa3fdcf
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_core_1_8_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.shiro:shiro-core:1.8.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-core/1.8.0/shiro-core-1.8.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-core/1.8.0/shiro-core-1.8.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-core/1.8.0/shiro-core-1.8.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_crypto_cipher_1_8_0.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_crypto_cipher_1_8_0.xml
new file mode 100644
index 0000000..77a90b8
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_crypto_cipher_1_8_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.shiro:shiro-crypto-cipher:1.8.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-cipher/1.8.0/shiro-crypto-cipher-1.8.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-cipher/1.8.0/shiro-crypto-cipher-1.8.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-cipher/1.8.0/shiro-crypto-cipher-1.8.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_crypto_core_1_8_0.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_crypto_core_1_8_0.xml
new file mode 100644
index 0000000..dddd497
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_crypto_core_1_8_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.shiro:shiro-crypto-core:1.8.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-core/1.8.0/shiro-crypto-core-1.8.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-core/1.8.0/shiro-crypto-core-1.8.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-core/1.8.0/shiro-crypto-core-1.8.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_crypto_hash_1_8_0.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_crypto_hash_1_8_0.xml
new file mode 100644
index 0000000..ece1eae
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_crypto_hash_1_8_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.shiro:shiro-crypto-hash:1.8.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-hash/1.8.0/shiro-crypto-hash-1.8.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-hash/1.8.0/shiro-crypto-hash-1.8.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-hash/1.8.0/shiro-crypto-hash-1.8.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_event_1_8_0.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_event_1_8_0.xml
new file mode 100644
index 0000000..b7a65df
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_event_1_8_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.shiro:shiro-event:1.8.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-event/1.8.0/shiro-event-1.8.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-event/1.8.0/shiro-event-1.8.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-event/1.8.0/shiro-event-1.8.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_lang_1_8_0.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_lang_1_8_0.xml
new file mode 100644
index 0000000..499eb00
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_lang_1_8_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.shiro:shiro-lang:1.8.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-lang/1.8.0/shiro-lang-1.8.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-lang/1.8.0/shiro-lang-1.8.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-lang/1.8.0/shiro-lang-1.8.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_spring_1_8_0.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_spring_1_8_0.xml
new file mode 100644
index 0000000..264c53f
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_spring_1_8_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.shiro:shiro-spring:1.8.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-spring/1.8.0/shiro-spring-1.8.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-spring/1.8.0/shiro-spring-1.8.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-spring/1.8.0/shiro-spring-1.8.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_spring_boot_starter_1_8_0.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_spring_boot_starter_1_8_0.xml
new file mode 100644
index 0000000..0946e78
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_spring_boot_starter_1_8_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.shiro:shiro-spring-boot-starter:1.8.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-spring-boot-starter/1.8.0/shiro-spring-boot-starter-1.8.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-spring-boot-starter/1.8.0/shiro-spring-boot-starter-1.8.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-spring-boot-starter/1.8.0/shiro-spring-boot-starter-1.8.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_web_1_8_0.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_web_1_8_0.xml
new file mode 100644
index 0000000..7be49ba
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_shiro_shiro_web_1_8_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.shiro:shiro-web:1.8.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-web/1.8.0/shiro-web-1.8.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-web/1.8.0/shiro-web-1.8.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-web/1.8.0/shiro-web-1.8.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_37.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_37.xml
new file mode 100644
index 0000000..7e39935
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_37.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.37">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-core/9.0.37/tomcat-embed-core-9.0.37.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-core/9.0.37/tomcat-embed-core-9.0.37-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-core/9.0.37/tomcat-embed-core-9.0.37-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_37.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_37.xml
new file mode 100644
index 0000000..6a30056
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_37.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.37">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-websocket/9.0.37/tomcat-embed-websocket-9.0.37.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-websocket/9.0.37/tomcat-embed-websocket-9.0.37-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-websocket/9.0.37/tomcat-embed-websocket-9.0.37-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_xmlbeans_xmlbeans_5_0_3.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlbeans_xmlbeans_5_0_3.xml
new file mode 100644
index 0000000..09b083d
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlbeans_xmlbeans_5_0_3.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.xmlbeans:xmlbeans:5.0.3">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlbeans/xmlbeans/5.0.3/xmlbeans-5.0.3.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlbeans/xmlbeans/5.0.3/xmlbeans-5.0.3-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlbeans/xmlbeans/5.0.3/xmlbeans-5.0.3-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_anim_1_14.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_anim_1_14.xml
new file mode 100644
index 0000000..5331413
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_anim_1_14.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.xmlgraphics:batik-anim:1.14">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-anim/1.14/batik-anim-1.14.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-anim/1.14/batik-anim-1.14-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-anim/1.14/batik-anim-1.14-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_awt_util_1_14.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_awt_util_1_14.xml
new file mode 100644
index 0000000..89e6c4e
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_awt_util_1_14.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.xmlgraphics:batik-awt-util:1.14">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-awt-util/1.14/batik-awt-util-1.14.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-awt-util/1.14/batik-awt-util-1.14-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-awt-util/1.14/batik-awt-util-1.14-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_bridge_1_14.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_bridge_1_14.xml
new file mode 100644
index 0000000..2d1d862
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_bridge_1_14.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.xmlgraphics:batik-bridge:1.14">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-bridge/1.14/batik-bridge-1.14.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-bridge/1.14/batik-bridge-1.14-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-bridge/1.14/batik-bridge-1.14-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_codec_1_14.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_codec_1_14.xml
new file mode 100644
index 0000000..6cab06b
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_codec_1_14.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.xmlgraphics:batik-codec:1.14">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-codec/1.14/batik-codec-1.14.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-codec/1.14/batik-codec-1.14-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-codec/1.14/batik-codec-1.14-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_constants_1_14.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_constants_1_14.xml
new file mode 100644
index 0000000..e0fdd88
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_constants_1_14.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.xmlgraphics:batik-constants:1.14">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-constants/1.14/batik-constants-1.14.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-constants/1.14/batik-constants-1.14-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-constants/1.14/batik-constants-1.14-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_css_1_14.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_css_1_14.xml
new file mode 100644
index 0000000..d43695a
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_css_1_14.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.xmlgraphics:batik-css:1.14">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-css/1.14/batik-css-1.14.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-css/1.14/batik-css-1.14-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-css/1.14/batik-css-1.14-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_dom_1_14.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_dom_1_14.xml
new file mode 100644
index 0000000..e546a70
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_dom_1_14.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.xmlgraphics:batik-dom:1.14">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-dom/1.14/batik-dom-1.14.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-dom/1.14/batik-dom-1.14-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-dom/1.14/batik-dom-1.14-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_ext_1_14.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_ext_1_14.xml
new file mode 100644
index 0000000..f86b604
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_ext_1_14.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.xmlgraphics:batik-ext:1.14">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-ext/1.14/batik-ext-1.14.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-ext/1.14/batik-ext-1.14-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-ext/1.14/batik-ext-1.14-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_gvt_1_14.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_gvt_1_14.xml
new file mode 100644
index 0000000..6ba9994
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_gvt_1_14.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.xmlgraphics:batik-gvt:1.14">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-gvt/1.14/batik-gvt-1.14.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-gvt/1.14/batik-gvt-1.14-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-gvt/1.14/batik-gvt-1.14-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_i18n_1_14.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_i18n_1_14.xml
new file mode 100644
index 0000000..1b830c7
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_i18n_1_14.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.xmlgraphics:batik-i18n:1.14">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-i18n/1.14/batik-i18n-1.14.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-i18n/1.14/batik-i18n-1.14-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-i18n/1.14/batik-i18n-1.14-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_parser_1_14.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_parser_1_14.xml
new file mode 100644
index 0000000..c18bd43
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_parser_1_14.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.xmlgraphics:batik-parser:1.14">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-parser/1.14/batik-parser-1.14.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-parser/1.14/batik-parser-1.14-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-parser/1.14/batik-parser-1.14-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_script_1_14.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_script_1_14.xml
new file mode 100644
index 0000000..f9d2e9f
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_script_1_14.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.xmlgraphics:batik-script:1.14">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-script/1.14/batik-script-1.14.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-script/1.14/batik-script-1.14-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-script/1.14/batik-script-1.14-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_shared_resources_1_14.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_shared_resources_1_14.xml
new file mode 100644
index 0000000..b7622ee
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_shared_resources_1_14.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.xmlgraphics:batik-shared-resources:1.14">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-shared-resources/1.14/batik-shared-resources-1.14.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-shared-resources/1.14/batik-shared-resources-1.14-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-shared-resources/1.14/batik-shared-resources-1.14-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_svg_dom_1_14.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_svg_dom_1_14.xml
new file mode 100644
index 0000000..69fec82
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_svg_dom_1_14.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.xmlgraphics:batik-svg-dom:1.14">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-svg-dom/1.14/batik-svg-dom-1.14.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-svg-dom/1.14/batik-svg-dom-1.14-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-svg-dom/1.14/batik-svg-dom-1.14-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_svggen_1_14.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_svggen_1_14.xml
new file mode 100644
index 0000000..71dd6df
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_svggen_1_14.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.xmlgraphics:batik-svggen:1.14">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-svggen/1.14/batik-svggen-1.14.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-svggen/1.14/batik-svggen-1.14-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-svggen/1.14/batik-svggen-1.14-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_transcoder_1_14.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_transcoder_1_14.xml
new file mode 100644
index 0000000..ec79cab
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_transcoder_1_14.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.xmlgraphics:batik-transcoder:1.14">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-transcoder/1.14/batik-transcoder-1.14.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-transcoder/1.14/batik-transcoder-1.14-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-transcoder/1.14/batik-transcoder-1.14-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_util_1_14.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_util_1_14.xml
new file mode 100644
index 0000000..6be66b8
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_util_1_14.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.xmlgraphics:batik-util:1.14">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-util/1.14/batik-util-1.14.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-util/1.14/batik-util-1.14-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-util/1.14/batik-util-1.14-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_xml_1_14.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_xml_1_14.xml
new file mode 100644
index 0000000..6f865af
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_batik_xml_1_14.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.xmlgraphics:batik-xml:1.14">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-xml/1.14/batik-xml-1.14.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-xml/1.14/batik-xml-1.14-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-xml/1.14/batik-xml-1.14-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_xmlgraphics_commons_2_6.xml b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_xmlgraphics_commons_2_6.xml
new file mode 100644
index 0000000..55c255c
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apache_xmlgraphics_xmlgraphics_commons_2_6.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.xmlgraphics:xmlgraphics-commons:2.6">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/xmlgraphics-commons/2.6/xmlgraphics-commons-2.6.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/xmlgraphics-commons/2.6/xmlgraphics-commons-2.6-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/xmlgraphics-commons/2.6/xmlgraphics-commons-2.6-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_0.xml b/springboot-vue3/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_0.xml
new file mode 100644
index 0000000..f854ab0
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apiguardian:apiguardian-api:1.1.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_assertj_assertj_core_3_16_1.xml b/springboot-vue3/.idea/libraries/Maven__org_assertj_assertj_core_3_16_1.xml
new file mode 100644
index 0000000..8976500
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_assertj_assertj_core_3_16_1.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.assertj:assertj-core:3.16.1">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/assertj/assertj-core/3.16.1/assertj-core-3.16.1.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/assertj/assertj-core/3.16.1/assertj-core-3.16.1-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/assertj/assertj-core/3.16.1/assertj-core-3.16.1-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_freemarker_freemarker_2_3_30.xml b/springboot-vue3/.idea/libraries/Maven__org_freemarker_freemarker_2_3_30.xml
new file mode 100644
index 0000000..d0830ed
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_freemarker_freemarker_2_3_30.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.freemarker:freemarker:2.3.30">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/freemarker/freemarker/2.3.30/freemarker-2.3.30.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/freemarker/freemarker/2.3.30/freemarker-2.3.30-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/freemarker/freemarker/2.3.30/freemarker-2.3.30-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_glassfish_jakarta_el_3_0_3.xml b/springboot-vue3/.idea/libraries/Maven__org_glassfish_jakarta_el_3_0_3.xml
new file mode 100644
index 0000000..ae5020d
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_glassfish_jakarta_el_3_0_3.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.glassfish:jakarta.el:3.0.3">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jakarta.el/3.0.3/jakarta.el-3.0.3.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jakarta.el/3.0.3/jakarta.el-3.0.3-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jakarta.el/3.0.3/jakarta.el-3.0.3-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_hamcrest_hamcrest_2_2.xml b/springboot-vue3/.idea/libraries/Maven__org_hamcrest_hamcrest_2_2.xml
new file mode 100644
index 0000000..6b5496f
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_hamcrest_hamcrest_2_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.hamcrest:hamcrest:2.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest/2.2/hamcrest-2.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest/2.2/hamcrest-2.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest/2.2/hamcrest-2.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_1_5_Final.xml b/springboot-vue3/.idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_1_5_Final.xml
new file mode 100644
index 0000000..6d045ad
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_1_5_Final.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.hibernate.validator:hibernate-validator:6.1.5.Final">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/hibernate/validator/hibernate-validator/6.1.5.Final/hibernate-validator-6.1.5.Final.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/hibernate/validator/hibernate-validator/6.1.5.Final/hibernate-validator-6.1.5.Final-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/hibernate/validator/hibernate-validator/6.1.5.Final/hibernate-validator-6.1.5.Final-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_4_1_Final.xml b/springboot-vue3/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_4_1_Final.xml
new file mode 100644
index 0000000..0b76247
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_4_1_Final.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.jboss.logging:jboss-logging:3.4.1.Final">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/jboss/logging/jboss-logging/3.4.1.Final/jboss-logging-3.4.1.Final.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/jboss/logging/jboss-logging/3.4.1.Final/jboss-logging-3.4.1.Final-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/jboss/logging/jboss-logging/3.4.1.Final/jboss-logging-3.4.1.Final-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_6_2.xml b/springboot-vue3/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_6_2.xml
new file mode 100644
index 0000000..7171153
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_6_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.junit.jupiter:junit-jupiter:5.6.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter/5.6.2/junit-jupiter-5.6.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter/5.6.2/junit-jupiter-5.6.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter/5.6.2/junit-jupiter-5.6.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_6_2.xml b/springboot-vue3/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_6_2.xml
new file mode 100644
index 0000000..ef160d2
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_6_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.junit.jupiter:junit-jupiter-api:5.6.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-api/5.6.2/junit-jupiter-api-5.6.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-api/5.6.2/junit-jupiter-api-5.6.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-api/5.6.2/junit-jupiter-api-5.6.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_6_2.xml b/springboot-vue3/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_6_2.xml
new file mode 100644
index 0000000..fc4c644
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_6_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.junit.jupiter:junit-jupiter-engine:5.6.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-engine/5.6.2/junit-jupiter-engine-5.6.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-engine/5.6.2/junit-jupiter-engine-5.6.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-engine/5.6.2/junit-jupiter-engine-5.6.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_6_2.xml b/springboot-vue3/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_6_2.xml
new file mode 100644
index 0000000..45b4af3
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_6_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.junit.jupiter:junit-jupiter-params:5.6.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-params/5.6.2/junit-jupiter-params-5.6.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-params/5.6.2/junit-jupiter-params-5.6.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-params/5.6.2/junit-jupiter-params-5.6.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_6_2.xml b/springboot-vue3/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_6_2.xml
new file mode 100644
index 0000000..f2699b9
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_6_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.junit.platform:junit-platform-commons:1.6.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-commons/1.6.2/junit-platform-commons-1.6.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-commons/1.6.2/junit-platform-commons-1.6.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-commons/1.6.2/junit-platform-commons-1.6.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_6_2.xml b/springboot-vue3/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_6_2.xml
new file mode 100644
index 0000000..c13a302
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_6_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.junit.platform:junit-platform-engine:1.6.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-engine/1.6.2/junit-platform-engine-1.6.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-engine/1.6.2/junit-platform-engine-1.6.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-engine/1.6.2/junit-platform-engine-1.6.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_junit_vintage_junit_vintage_engine_5_6_2.xml b/springboot-vue3/.idea/libraries/Maven__org_junit_vintage_junit_vintage_engine_5_6_2.xml
new file mode 100644
index 0000000..697c91f
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_junit_vintage_junit_vintage_engine_5_6_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.junit.vintage:junit-vintage-engine:5.6.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/vintage/junit-vintage-engine/5.6.2/junit-vintage-engine-5.6.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/vintage/junit-vintage-engine/5.6.2/junit-vintage-engine-5.6.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/vintage/junit-vintage-engine/5.6.2/junit-vintage-engine-5.6.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_mapstruct_mapstruct_1_2_0_Final.xml b/springboot-vue3/.idea/libraries/Maven__org_mapstruct_mapstruct_1_2_0_Final.xml
new file mode 100644
index 0000000..87cb599
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_mapstruct_mapstruct_1_2_0_Final.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.mapstruct:mapstruct:1.2.0.Final">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/mapstruct/mapstruct/1.2.0.Final/mapstruct-1.2.0.Final.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/mapstruct/mapstruct/1.2.0.Final/mapstruct-1.2.0.Final-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/mapstruct/mapstruct/1.2.0.Final/mapstruct-1.2.0.Final-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_mockito_mockito_core_3_3_3.xml b/springboot-vue3/.idea/libraries/Maven__org_mockito_mockito_core_3_3_3.xml
new file mode 100644
index 0000000..d2f4afa
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_mockito_mockito_core_3_3_3.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.mockito:mockito-core:3.3.3">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/mockito/mockito-core/3.3.3/mockito-core-3.3.3.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/mockito/mockito-core/3.3.3/mockito-core-3.3.3-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/mockito/mockito-core/3.3.3/mockito-core-3.3.3-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_mockito_mockito_junit_jupiter_3_3_3.xml b/springboot-vue3/.idea/libraries/Maven__org_mockito_mockito_junit_jupiter_3_3_3.xml
new file mode 100644
index 0000000..6c02a63
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_mockito_mockito_junit_jupiter_3_3_3.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.mockito:mockito-junit-jupiter:3.3.3">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/mockito/mockito-junit-jupiter/3.3.3/mockito-junit-jupiter-3.3.3.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/mockito/mockito-junit-jupiter/3.3.3/mockito-junit-jupiter-3.3.3-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/mockito/mockito-junit-jupiter/3.3.3/mockito-junit-jupiter-3.3.3-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_mybatis_mybatis_3_5_2.xml b/springboot-vue3/.idea/libraries/Maven__org_mybatis_mybatis_3_5_2.xml
new file mode 100644
index 0000000..5a8050c
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_mybatis_mybatis_3_5_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.mybatis:mybatis:3.5.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis/3.5.2/mybatis-3.5.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis/3.5.2/mybatis-3.5.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis/3.5.2/mybatis-3.5.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_mybatis_mybatis_spring_2_0_2.xml b/springboot-vue3/.idea/libraries/Maven__org_mybatis_mybatis_spring_2_0_2.xml
new file mode 100644
index 0000000..d35eb55
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_mybatis_mybatis_spring_2_0_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.mybatis:mybatis-spring:2.0.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis-spring/2.0.2/mybatis-spring-2.0.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis-spring/2.0.2/mybatis-spring-2.0.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis-spring/2.0.2/mybatis-spring-2.0.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_objenesis_objenesis_2_6.xml b/springboot-vue3/.idea/libraries/Maven__org_objenesis_objenesis_2_6.xml
new file mode 100644
index 0000000..af41e3b
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_objenesis_objenesis_2_6.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.objenesis:objenesis:2.6">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/objenesis/objenesis/2.6/objenesis-2.6.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/objenesis/objenesis/2.6/objenesis-2.6-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/objenesis/objenesis/2.6/objenesis-2.6-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_opentest4j_opentest4j_1_2_0.xml b/springboot-vue3/.idea/libraries/Maven__org_opentest4j_opentest4j_1_2_0.xml
new file mode 100644
index 0000000..fbc1b16
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_opentest4j_opentest4j_1_2_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.opentest4j:opentest4j:1.2.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_ow2_asm_asm_5_0_4.xml b/springboot-vue3/.idea/libraries/Maven__org_ow2_asm_asm_5_0_4.xml
new file mode 100644
index 0000000..0bf8cf2
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_ow2_asm_asm_5_0_4.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.ow2.asm:asm:5.0.4">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/ow2/asm/asm/5.0.4/asm-5.0.4.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/ow2/asm/asm/5.0.4/asm-5.0.4-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/ow2/asm/asm/5.0.4/asm-5.0.4-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_owasp_encoder_encoder_1_2_2.xml b/springboot-vue3/.idea/libraries/Maven__org_owasp_encoder_encoder_1_2_2.xml
new file mode 100644
index 0000000..c21f786
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_owasp_encoder_encoder_1_2_2.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.owasp.encoder:encoder:1.2.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/owasp/encoder/encoder/1.2.2/encoder-1.2.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/owasp/encoder/encoder/1.2.2/encoder-1.2.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/owasp/encoder/encoder/1.2.2/encoder-1.2.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_projectlombok_lombok_1_18_12.xml b/springboot-vue3/.idea/libraries/Maven__org_projectlombok_lombok_1_18_12.xml
new file mode 100644
index 0000000..46cf8a8
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_projectlombok_lombok_1_18_12.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.projectlombok:lombok:1.18.12">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.18.12/lombok-1.18.12.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.18.12/lombok-1.18.12-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.18.12/lombok-1.18.12-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_0.xml b/springboot-vue3/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_0.xml
new file mode 100644
index 0000000..c4c54d6
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.skyscreamer:jsonassert:1.5.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/skyscreamer/jsonassert/1.5.0/jsonassert-1.5.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/skyscreamer/jsonassert/1.5.0/jsonassert-1.5.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/skyscreamer/jsonassert/1.5.0/jsonassert-1.5.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_30.xml b/springboot-vue3/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_30.xml
new file mode 100644
index 0000000..27229ce
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_30.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.slf4j:jul-to-slf4j:1.7.30">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/jul-to-slf4j/1.7.30/jul-to-slf4j-1.7.30.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/jul-to-slf4j/1.7.30/jul-to-slf4j-1.7.30-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/jul-to-slf4j/1.7.30/jul-to-slf4j-1.7.30-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_30.xml b/springboot-vue3/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_30.xml
new file mode 100644
index 0000000..02b6812
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_30.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.slf4j:slf4j-api:1.7.30">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.30/slf4j-api-1.7.30.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.30/slf4j-api-1.7.30-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.30/slf4j-api-1.7.30-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_3_2_RELEASE.xml b/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_3_2_RELEASE.xml
new file mode 100644
index 0000000..158ddd9
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_3_2_RELEASE.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework.boot:spring-boot:2.3.2.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot/2.3.2.RELEASE/spring-boot-2.3.2.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot/2.3.2.RELEASE/spring-boot-2.3.2.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot/2.3.2.RELEASE/spring-boot-2.3.2.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_3_2_RELEASE.xml b/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_3_2_RELEASE.xml
new file mode 100644
index 0000000..d547da6
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_3_2_RELEASE.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.3.2.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-autoconfigure/2.3.2.RELEASE/spring-boot-autoconfigure-2.3.2.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-autoconfigure/2.3.2.RELEASE/spring-boot-autoconfigure-2.3.2.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-autoconfigure/2.3.2.RELEASE/spring-boot-autoconfigure-2.3.2.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_3_2_RELEASE.xml b/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_3_2_RELEASE.xml
new file mode 100644
index 0000000..0cfdca9
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_3_2_RELEASE.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework.boot:spring-boot-starter:2.3.2.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter/2.3.2.RELEASE/spring-boot-starter-2.3.2.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter/2.3.2.RELEASE/spring-boot-starter-2.3.2.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter/2.3.2.RELEASE/spring-boot-starter-2.3.2.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_freemarker_2_3_2_RELEASE.xml b/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_freemarker_2_3_2_RELEASE.xml
new file mode 100644
index 0000000..1412c2f
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_freemarker_2_3_2_RELEASE.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework.boot:spring-boot-starter-freemarker:2.3.2.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-freemarker/2.3.2.RELEASE/spring-boot-starter-freemarker-2.3.2.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-freemarker/2.3.2.RELEASE/spring-boot-starter-freemarker-2.3.2.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-freemarker/2.3.2.RELEASE/spring-boot-starter-freemarker-2.3.2.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_3_2_RELEASE.xml b/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_3_2_RELEASE.xml
new file mode 100644
index 0000000..1046f12
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_3_2_RELEASE.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.3.2.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-jdbc/2.3.2.RELEASE/spring-boot-starter-jdbc-2.3.2.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-jdbc/2.3.2.RELEASE/spring-boot-starter-jdbc-2.3.2.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-jdbc/2.3.2.RELEASE/spring-boot-starter-jdbc-2.3.2.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_3_2_RELEASE.xml b/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_3_2_RELEASE.xml
new file mode 100644
index 0000000..b2bec55
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_3_2_RELEASE.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework.boot:spring-boot-starter-json:2.3.2.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-json/2.3.2.RELEASE/spring-boot-starter-json-2.3.2.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-json/2.3.2.RELEASE/spring-boot-starter-json-2.3.2.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-json/2.3.2.RELEASE/spring-boot-starter-json-2.3.2.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_3_2_RELEASE.xml b/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_3_2_RELEASE.xml
new file mode 100644
index 0000000..30cfcb1
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_3_2_RELEASE.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework.boot:spring-boot-starter-logging:2.3.2.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-logging/2.3.2.RELEASE/spring-boot-starter-logging-2.3.2.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-logging/2.3.2.RELEASE/spring-boot-starter-logging-2.3.2.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-logging/2.3.2.RELEASE/spring-boot-starter-logging-2.3.2.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_2_3_2_RELEASE.xml b/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_2_3_2_RELEASE.xml
new file mode 100644
index 0000000..8353935
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_2_3_2_RELEASE.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework.boot:spring-boot-starter-test:2.3.2.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-test/2.3.2.RELEASE/spring-boot-starter-test-2.3.2.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-test/2.3.2.RELEASE/spring-boot-starter-test-2.3.2.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-test/2.3.2.RELEASE/spring-boot-starter-test-2.3.2.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_3_2_RELEASE.xml b/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_3_2_RELEASE.xml
new file mode 100644
index 0000000..2aed09e
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_3_2_RELEASE.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.3.2.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-tomcat/2.3.2.RELEASE/spring-boot-starter-tomcat-2.3.2.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-tomcat/2.3.2.RELEASE/spring-boot-starter-tomcat-2.3.2.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-tomcat/2.3.2.RELEASE/spring-boot-starter-tomcat-2.3.2.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_3_2_RELEASE.xml b/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_3_2_RELEASE.xml
new file mode 100644
index 0000000..af10dc8
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_3_2_RELEASE.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework.boot:spring-boot-starter-web:2.3.2.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-web/2.3.2.RELEASE/spring-boot-starter-web-2.3.2.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-web/2.3.2.RELEASE/spring-boot-starter-web-2.3.2.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-web/2.3.2.RELEASE/spring-boot-starter-web-2.3.2.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_websocket_2_3_2_RELEASE.xml b/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_websocket_2_3_2_RELEASE.xml
new file mode 100644
index 0000000..82d831f
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_websocket_2_3_2_RELEASE.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework.boot:spring-boot-starter-websocket:2.3.2.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-websocket/2.3.2.RELEASE/spring-boot-starter-websocket-2.3.2.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-websocket/2.3.2.RELEASE/spring-boot-starter-websocket-2.3.2.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-websocket/2.3.2.RELEASE/spring-boot-starter-websocket-2.3.2.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_3_2_RELEASE.xml b/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_3_2_RELEASE.xml
new file mode 100644
index 0000000..8465350
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_3_2_RELEASE.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework.boot:spring-boot-test:2.3.2.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test/2.3.2.RELEASE/spring-boot-test-2.3.2.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test/2.3.2.RELEASE/spring-boot-test-2.3.2.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test/2.3.2.RELEASE/spring-boot-test-2.3.2.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_3_2_RELEASE.xml b/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_3_2_RELEASE.xml
new file mode 100644
index 0000000..686327e
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_3_2_RELEASE.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.3.2.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test-autoconfigure/2.3.2.RELEASE/spring-boot-test-autoconfigure-2.3.2.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test-autoconfigure/2.3.2.RELEASE/spring-boot-test-autoconfigure-2.3.2.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test-autoconfigure/2.3.2.RELEASE/spring-boot-test-autoconfigure-2.3.2.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_1_2_0_RELEASE.xml b/springboot-vue3/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_1_2_0_RELEASE.xml
new file mode 100644
index 0000000..fbc0452
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_1_2_0_RELEASE.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/plugin/spring-plugin-core/1.2.0.RELEASE/spring-plugin-core-1.2.0.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/plugin/spring-plugin-core/1.2.0.RELEASE/spring-plugin-core-1.2.0.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/plugin/spring-plugin-core/1.2.0.RELEASE/spring-plugin-core-1.2.0.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_metadata_1_2_0_RELEASE.xml b/springboot-vue3/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_metadata_1_2_0_RELEASE.xml
new file mode 100644
index 0000000..7e6f096
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_metadata_1_2_0_RELEASE.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/plugin/spring-plugin-metadata/1.2.0.RELEASE/spring-plugin-metadata-1.2.0.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/plugin/spring-plugin-metadata/1.2.0.RELEASE/spring-plugin-metadata-1.2.0.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/plugin/spring-plugin-metadata/1.2.0.RELEASE/spring-plugin-metadata-1.2.0.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_aop_5_2_8_RELEASE.xml b/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_aop_5_2_8_RELEASE.xml
new file mode 100644
index 0000000..000f9ff
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_aop_5_2_8_RELEASE.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-aop:5.2.8.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.2.8.RELEASE/spring-aop-5.2.8.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.2.8.RELEASE/spring-aop-5.2.8.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.2.8.RELEASE/spring-aop-5.2.8.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_beans_5_2_8_RELEASE.xml b/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_beans_5_2_8_RELEASE.xml
new file mode 100644
index 0000000..ca7aa33
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_beans_5_2_8_RELEASE.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-beans:5.2.8.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-beans/5.2.8.RELEASE/spring-beans-5.2.8.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-beans/5.2.8.RELEASE/spring-beans-5.2.8.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-beans/5.2.8.RELEASE/spring-beans-5.2.8.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_context_5_2_8_RELEASE.xml b/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_context_5_2_8_RELEASE.xml
new file mode 100644
index 0000000..3194e8e
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_context_5_2_8_RELEASE.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-context:5.2.8.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/5.2.8.RELEASE/spring-context-5.2.8.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/5.2.8.RELEASE/spring-context-5.2.8.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/5.2.8.RELEASE/spring-context-5.2.8.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_context_support_5_2_8_RELEASE.xml b/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_context_support_5_2_8_RELEASE.xml
new file mode 100644
index 0000000..19410b2
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_context_support_5_2_8_RELEASE.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-context-support:5.2.8.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context-support/5.2.8.RELEASE/spring-context-support-5.2.8.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context-support/5.2.8.RELEASE/spring-context-support-5.2.8.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context-support/5.2.8.RELEASE/spring-context-support-5.2.8.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_core_5_2_8_RELEASE.xml b/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_core_5_2_8_RELEASE.xml
new file mode 100644
index 0000000..e7d5de5
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_core_5_2_8_RELEASE.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-core:5.2.8.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.2.8.RELEASE/spring-core-5.2.8.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.2.8.RELEASE/spring-core-5.2.8.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.2.8.RELEASE/spring-core-5.2.8.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_expression_5_2_8_RELEASE.xml b/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_expression_5_2_8_RELEASE.xml
new file mode 100644
index 0000000..2d2456d
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_expression_5_2_8_RELEASE.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-expression:5.2.8.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-expression/5.2.8.RELEASE/spring-expression-5.2.8.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-expression/5.2.8.RELEASE/spring-expression-5.2.8.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-expression/5.2.8.RELEASE/spring-expression-5.2.8.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_jcl_5_2_8_RELEASE.xml b/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_jcl_5_2_8_RELEASE.xml
new file mode 100644
index 0000000..4fea859
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_jcl_5_2_8_RELEASE.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-jcl:5.2.8.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jcl/5.2.8.RELEASE/spring-jcl-5.2.8.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jcl/5.2.8.RELEASE/spring-jcl-5.2.8.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jcl/5.2.8.RELEASE/spring-jcl-5.2.8.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_jdbc_5_2_8_RELEASE.xml b/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_jdbc_5_2_8_RELEASE.xml
new file mode 100644
index 0000000..a1290a5
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_jdbc_5_2_8_RELEASE.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-jdbc:5.2.8.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jdbc/5.2.8.RELEASE/spring-jdbc-5.2.8.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jdbc/5.2.8.RELEASE/spring-jdbc-5.2.8.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jdbc/5.2.8.RELEASE/spring-jdbc-5.2.8.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_messaging_5_2_8_RELEASE.xml b/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_messaging_5_2_8_RELEASE.xml
new file mode 100644
index 0000000..ce343d6
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_messaging_5_2_8_RELEASE.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-messaging:5.2.8.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-messaging/5.2.8.RELEASE/spring-messaging-5.2.8.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-messaging/5.2.8.RELEASE/spring-messaging-5.2.8.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-messaging/5.2.8.RELEASE/spring-messaging-5.2.8.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_test_5_2_8_RELEASE.xml b/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_test_5_2_8_RELEASE.xml
new file mode 100644
index 0000000..5fa25dc
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_test_5_2_8_RELEASE.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-test:5.2.8.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-test/5.2.8.RELEASE/spring-test-5.2.8.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-test/5.2.8.RELEASE/spring-test-5.2.8.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-test/5.2.8.RELEASE/spring-test-5.2.8.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_tx_5_2_8_RELEASE.xml b/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_tx_5_2_8_RELEASE.xml
new file mode 100644
index 0000000..6c8bcb7
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_tx_5_2_8_RELEASE.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-tx:5.2.8.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-tx/5.2.8.RELEASE/spring-tx-5.2.8.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-tx/5.2.8.RELEASE/spring-tx-5.2.8.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-tx/5.2.8.RELEASE/spring-tx-5.2.8.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_web_5_2_8_RELEASE.xml b/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_web_5_2_8_RELEASE.xml
new file mode 100644
index 0000000..ae46cf0
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_web_5_2_8_RELEASE.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-web:5.2.8.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-web/5.2.8.RELEASE/spring-web-5.2.8.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-web/5.2.8.RELEASE/spring-web-5.2.8.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-web/5.2.8.RELEASE/spring-web-5.2.8.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_webmvc_5_2_8_RELEASE.xml b/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_webmvc_5_2_8_RELEASE.xml
new file mode 100644
index 0000000..d584e24
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_webmvc_5_2_8_RELEASE.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-webmvc:5.2.8.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-webmvc/5.2.8.RELEASE/spring-webmvc-5.2.8.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-webmvc/5.2.8.RELEASE/spring-webmvc-5.2.8.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-webmvc/5.2.8.RELEASE/spring-webmvc-5.2.8.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_websocket_5_2_8_RELEASE.xml b/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_websocket_5_2_8_RELEASE.xml
new file mode 100644
index 0000000..139eee0
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_springframework_spring_websocket_5_2_8_RELEASE.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-websocket:5.2.8.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-websocket/5.2.8.RELEASE/spring-websocket-5.2.8.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-websocket/5.2.8.RELEASE/spring-websocket-5.2.8.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-websocket/5.2.8.RELEASE/spring-websocket-5.2.8.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_7_0.xml b/springboot-vue3/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_7_0.xml
new file mode 100644
index 0000000..006a8d3
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_7_0.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.xmlunit:xmlunit-core:2.7.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/xmlunit/xmlunit-core/2.7.0/xmlunit-core-2.7.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/xmlunit/xmlunit-core/2.7.0/xmlunit-core-2.7.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/xmlunit/xmlunit-core/2.7.0/xmlunit-core-2.7.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__org_yaml_snakeyaml_1_26.xml b/springboot-vue3/.idea/libraries/Maven__org_yaml_snakeyaml_1_26.xml
new file mode 100644
index 0000000..e998675
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__org_yaml_snakeyaml_1_26.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.yaml:snakeyaml:1.26">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.26/snakeyaml-1.26.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.26/snakeyaml-1.26-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.26/snakeyaml-1.26-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__xml_apis_xml_apis_1_4_01.xml b/springboot-vue3/.idea/libraries/Maven__xml_apis_xml_apis_1_4_01.xml
new file mode 100644
index 0000000..9aadd29
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__xml_apis_xml_apis_1_4_01.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: xml-apis:xml-apis:1.4.01">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/xml-apis/xml-apis/1.4.01/xml-apis-1.4.01.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/xml-apis/xml-apis/1.4.01/xml-apis-1.4.01-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/xml-apis/xml-apis/1.4.01/xml-apis-1.4.01-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/libraries/Maven__xml_apis_xml_apis_ext_1_3_04.xml b/springboot-vue3/.idea/libraries/Maven__xml_apis_xml_apis_ext_1_3_04.xml
new file mode 100644
index 0000000..6baf5e0
--- /dev/null
+++ b/springboot-vue3/.idea/libraries/Maven__xml_apis_xml_apis_ext_1_3_04.xml
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: xml-apis:xml-apis-ext:1.3.04">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/xml-apis/xml-apis-ext/1.3.04/xml-apis-ext-1.3.04.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/xml-apis/xml-apis-ext/1.3.04/xml-apis-ext-1.3.04-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/xml-apis/xml-apis-ext/1.3.04/xml-apis-ext-1.3.04-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/misc.xml b/springboot-vue3/.idea/misc.xml
new file mode 100644
index 0000000..f234ebc
--- /dev/null
+++ b/springboot-vue3/.idea/misc.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="FrameworkDetectionExcludesConfiguration">
+    <file type="web" url="file://$PROJECT_DIR$" />
+  </component>
+  <component name="MavenProjectsManager">
+    <option name="originalFiles">
+      <list>
+        <option value="$PROJECT_DIR$/pom.xml" />
+      </list>
+    </option>
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="11" project-jdk-type="JavaSDK" />
+</project>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/modules.xml b/springboot-vue3/.idea/modules.xml
new file mode 100644
index 0000000..550d16a
--- /dev/null
+++ b/springboot-vue3/.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$/springboot-vue3.iml" filepath="$PROJECT_DIR$/springboot-vue3.iml" />
+    </modules>
+  </component>
+</project>
\ No newline at end of file
diff --git a/springboot-vue3/.idea/vcs.xml b/springboot-vue3/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/springboot-vue3/.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/springboot-vue3/package-lock.json b/springboot-vue3/package-lock.json
new file mode 100644
index 0000000..b9a900f
--- /dev/null
+++ b/springboot-vue3/package-lock.json
@@ -0,0 +1,6 @@
+{
+  "name": "springboot-vue3",
+  "lockfileVersion": 3,
+  "requires": true,
+  "packages": {}
+}
diff --git a/springboot-vue3/pom.xml b/springboot-vue3/pom.xml
new file mode 100644
index 0000000..32b4261
--- /dev/null
+++ b/springboot-vue3/pom.xml
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.3.2.RELEASE</version>
+        <relativePath/>
+    </parent>
+<!--    <packaging>war</packaging>-->
+
+    <groupId>com.springboot-vue3</groupId>
+    <artifactId>springboot-vue3</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <name>springboot-vue3</name>
+    <description>springboot-vue3 System</description>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <encoding>UTF-8</encoding>
+        <java.version>8</java.version>
+        <maven.compiler.source>${java.version}</maven.compiler.source>
+        <maven.compiler.target>${java.version}</maven.compiler.target>
+
+        <spring-boot.version>2.3.2.RELEASE</spring-boot.version>
+    </properties>
+
+    <dependencies>
+     <dependencies>
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+            <version>2.8.7</version>
+        </dependency>
+        <dependency>
+          <groupId>commons-io</groupId>
+          <artifactId>commons-io</artifactId>
+          <version>2.10.0</version>
+          </dependency>
+        </dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.5.4</version>
+        </dependency>
+        <!--鍙傛暟鏍¢獙-->
+        <dependency>
+            <groupId>org.hibernate.validator</groupId>
+            <artifactId>hibernate-validator</artifactId>
+        </dependency>
+        <!--JWT-->
+        <dependency>
+            <groupId>io.jsonwebtoken</groupId>
+            <artifactId>jjwt-api</artifactId>
+            <version>0.10.7</version>
+        </dependency>
+        <dependency>
+            <groupId>io.jsonwebtoken</groupId>
+            <artifactId>jjwt-impl</artifactId>
+            <version>0.10.7</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.jsonwebtoken</groupId>
+            <artifactId>jjwt-jackson</artifactId>
+            <version>0.10.7</version>
+            <scope>runtime</scope>
+        </dependency>
+        <!--shiro-->
+        <dependency>
+            <groupId>org.apache.shiro</groupId>
+            <artifactId>shiro-spring-boot-starter</artifactId>
+            <version>1.8.0</version>  
+        </dependency>
+        <!--mybatis-plus-->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.2.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-core</artifactId>
+            <version>3.2.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-generator</artifactId>
+            <version>3.2.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-freemarker</artifactId>
+        </dependency>
+        <!-- swagger -->
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+            <version>2.9.2</version>
+        </dependency>
+        <!-- swagger-ui -->
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+            <version>2.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>com.deepoove</groupId>
+            <artifactId>poi-tl</artifactId>
+            <version>1.12.1</version>
+        </dependency>
+
+
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-websocket</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.github.xingshuangs</groupId>
+            <artifactId>iot-communication</artifactId>
+            <version>1.4.2</version>
+        </dependency>
+
+         <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-websocket</artifactId>
+         </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>${spring-boot.version}</version>
+            </plugin>
+            <plugin>
+                <groupId>com.spotify</groupId>
+                <artifactId>dockerfile-maven-plugin</artifactId>
+                <version>1.3.6</version>
+                <configuration>
+                    <repository>docker/${project.artifactId}</repository>
+                    <buildArgs>
+                        <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
+                    </buildArgs>
+                </configuration>
+            </plugin>
+        </plugins>
+
+    </build>
+
+    <repositories>
+
+        <repository>
+            <id>nexus-aliyun</id>
+            <name>nexus-aliyun</name>
+            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </repository>
+
+    </repositories>
+</project>
diff --git a/springboot-vue3/springboot-vue3.iml b/springboot-vue3/springboot-vue3.iml
new file mode 100644
index 0000000..1581352
--- /dev/null
+++ b/springboot-vue3/springboot-vue3.iml
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="web" name="Web">
+      <configuration>
+        <webroots>
+          <root url="file://$MODULE_DIR$/src/main/webapp" relative="/" />
+        </webroots>
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/src/main/java" />
+          <root url="file://$MODULE_DIR$/src/main/resources" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+    <facet type="Spring" name="Spring">
+      <configuration />
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <output-test url="file://$MODULE_DIR$/target/test-classes" />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+      <excludeFolder url="file://$MODULE_DIR$/target" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.3.2.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.3.2.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.3.2.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.3.2.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
+    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.13.3" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.30" level="project" />
+    <orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
+    <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.26" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.3.2.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.11.1" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.11.1" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.11.1" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.3.2.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.37" level="project" />
+    <orderEntry type="library" name="Maven: org.glassfish:jakarta.el:3.0.3" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.37" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-web:5.2.8.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.2.8.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.2.8.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.2.8.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-context:5.2.8.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.2.8.RELEASE" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: mysql:mysql-connector-java:8.0.21" level="project" />
+    <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.12" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.3.2.RELEASE" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:2.3.2.RELEASE" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.3.2.RELEASE" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.4.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:1.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.ow2.asm:asm:5.0.4" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: jakarta.xml.bind:jakarta.xml.bind-api:2.3.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: jakarta.activation:jakarta.activation-api:1.2.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:3.16.1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest:2.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter:5.6.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-api:5.6.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.opentest4j:opentest4j:1.2.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-commons:1.6.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-params:5.6.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-engine:5.6.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.vintage:junit-vintage-engine:5.6.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.apiguardian:apiguardian-api:1.1.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-engine:1.6.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.13" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:3.3.3" level="project" />
+    <orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.10.13" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy-agent:1.10.13" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.6" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-junit-jupiter:3.3.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.5.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-core:5.2.8.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.2.8.RELEASE" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:5.2.8.RELEASE" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.xmlunit:xmlunit-core:2.7.0" level="project" />
+    <orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.5.4" level="project" />
+    <orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.1.5.Final" level="project" />
+    <orderEntry type="library" name="Maven: jakarta.validation:jakarta.validation-api:2.0.2" level="project" />
+    <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.4.1.Final" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml:classmate:1.5.1" level="project" />
+    <orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt-api:0.10.7" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: io.jsonwebtoken:jjwt-impl:0.10.7" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: io.jsonwebtoken:jjwt-jackson:0.10.7" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.11.1" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.11.1" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.11.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-spring-boot-starter:1.8.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-spring:1.8.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-core:1.8.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-lang:1.8.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-cache:1.8.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-hash:1.8.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-core:1.8.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-cipher:1.8.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-core:1.8.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-ogdl:1.8.0" level="project" />
+    <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.4" level="project" />
+    <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-event:1.8.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-web:1.8.0" level="project" />
+    <orderEntry type="library" name="Maven: org.owasp.encoder:encoder:1.2.2" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.3.2.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.2.0" level="project" />
+    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.2.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.3.2.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.4.5" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.2.8.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.2.8.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:3.2.0" level="project" />
+    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.2.0" level="project" />
+    <orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:2.1" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.2" level="project" />
+    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-generator:3.2.0" level="project" />
+    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-extension:3.2.0" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.2" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-freemarker:2.3.2.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.freemarker:freemarker:2.3.30" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.2.8.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.9.2" level="project" />
+    <orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.20" level="project" />
+    <orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.20" level="project" />
+    <orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.9.2" level="project" />
+    <orderEntry type="library" name="Maven: io.springfox:springfox-core:2.9.2" level="project" />
+    <orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.9.2" level="project" />
+    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-common:2.9.2" level="project" />
+    <orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:2.9.2" level="project" />
+    <orderEntry type="library" name="Maven: com.google.guava:guava:20.0" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.2.0.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.9.2" level="project" />
+    <orderEntry type="library" name="Maven: com.deepoove:poi-tl:1.12.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.10" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:5.2.2" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.poi:poi:5.2.2" level="project" />
+    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.14" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.commons:commons-math3:3.6.1" level="project" />
+    <orderEntry type="library" name="Maven: com.zaxxer:SparseBitSet:1.2" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-lite:5.2.2" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:5.0.3" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.commons:commons-compress:1.21" level="project" />
+    <orderEntry type="library" name="Maven: commons-io:commons-io:2.11.0" level="project" />
+    <orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.07" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.13.3" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.4" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-transcoder:1.14" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-anim:1.14" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-css:1.14" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-ext:1.14" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-parser:1.14" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-svg-dom:1.14" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-awt-util:1.14" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:xmlgraphics-commons:2.6" level="project" />
+    <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.0.4" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-bridge:1.14" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-script:1.14" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-dom:1.14" level="project" />
+    <orderEntry type="library" name="Maven: xml-apis:xml-apis:1.4.01" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-gvt:1.14" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-shared-resources:1.14" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-svggen:1.14" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-util:1.14" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-constants:1.14" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-i18n:1.14" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-xml:1.14" level="project" />
+    <orderEntry type="library" name="Maven: xml-apis:xml-apis-ext:1.3.04" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-codec:1.14" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-websocket:2.3.2.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-messaging:5.2.8.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-websocket:5.2.8.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.github.xingshuangs:iot-communication:1.4.2" level="project" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/MyGenerator.java b/springboot-vue3/src/main/java/MyGenerator.java
new file mode 100644
index 0000000..46475de
--- /dev/null
+++ b/springboot-vue3/src/main/java/MyGenerator.java
@@ -0,0 +1,176 @@
+
+
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.baomidou.mybatisplus.generator.AutoGenerator;
+import com.baomidou.mybatisplus.generator.InjectionConfig;
+import com.baomidou.mybatisplus.generator.config.*;
+import com.baomidou.mybatisplus.generator.config.po.TableInfo;
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * mybatis-plus-generator浠g爜鐢熸垚鍣�
+ * 淇敼閰嶇疆鍚庣洿鎺ヨ繍琛宮ain鏂规硶鍗冲彲
+ */
+public class MyGenerator {
+
+    /** 鏁版嵁婧愰厤缃�*/
+    private static final String jdbc = "jdbc:mysql://localhost:3306/canadames?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai";
+    private static final String driverName = "com.mysql.cj.jdbc.Driver";
+
+    private static final String username = "root";
+    private static final String password = "beibo.123/";
+    /** 鍖呭悕*/
+    private static final String moduleName = "device";
+    /** 琛ㄥ悕鍓嶇紑*/
+    private static final String beginName = "device";
+    /** 闇�瑕佺敓鎴愪唬鐮佺殑琛�*/
+    private static final String [] tables = new String[]{"device"};
+
+
+
+
+    public static void main(String[] args) {
+
+        // 瀹樻柟缃戠珯锛歨ttps://baomidou.com/pages/d357af/#%E8%87%AA%E5%AE%9A%E4%B9%89%E5%B1%9E%E6%80%A7%E6%B3%A8%E5%85%A5
+
+        // 鍙傝�冪綉绔欙細https://blog.csdn.net/kinghmj01/article/details/97748509
+
+        // 浠g爜鐢熸垚鍣�
+        AutoGenerator mpg = new AutoGenerator();
+
+        // 鍏ㄥ眬閰嶇疆
+        GlobalConfig gc = new GlobalConfig();
+        // 褰撳墠椤圭洰璺緞
+        String projectPath = System.getProperty("user.dir");
+        // 褰撳墠椤圭洰鐨勪笅鐨勮矾寰�
+        gc.setOutputDir(projectPath + "/src/main/java");
+        // 浣滆��
+        gc.setAuthor("yyq");
+        // 鏄惁鎵撳紑杈撳嚭鐩綍 榛樿涓簍rue
+        gc.setOpen(false);
+        // 瀹炰綋灞炴�� Swagger2 娉ㄨВ
+        gc.setSwagger2(true);
+
+        // 鑷畾涔夋枃浠跺懡鍚嶏紝娉ㄦ剰 %s 浼氳嚜鍔ㄥ~鍏呰〃瀹炰綋灞炴�э紒
+        gc.setControllerName("%sController");
+        gc.setServiceName("%sService");
+        gc.setServiceImplName("%sServiceImpl");
+        gc.setMapperName("%sDao");
+        gc.setEntityName("%sEntity");
+        mpg.setGlobalConfig(gc);
+
+        // 鏁版嵁婧愰厤缃�
+        DataSourceConfig dsc = new DataSourceConfig();
+        // dsc.setSchemaName("public");
+        dsc.setUrl(jdbc);
+        dsc.setDriverName(driverName);
+        dsc.setUsername(username);
+        dsc.setPassword(password);
+        mpg.setDataSource(dsc);
+
+        // 璁剧疆鍖呭悕
+        PackageConfig pc = new PackageConfig();
+        // 鐢ㄤ簬鍖呭悕銆佽〃鍚嶅墠缂�
+        //pc.setModuleName(moduleName);
+        // 鐢熸垚鍒伴偅浜涘寘涓� 濡� com.modules涓诲寘涓嬬殑 controller.sys.TestController
+        pc.setParent("com.canadames");
+        pc.setController("controller."+moduleName);
+        pc.setService("service."+moduleName);
+        pc.setServiceImpl("service."+moduleName+".impl");
+        pc.setMapper("mapper."+moduleName);
+        pc.setEntity("entity."+moduleName);
+        mpg.setPackageInfo(pc);
+
+        // 鑷畾涔夐厤缃�
+        InjectionConfig cfg = new InjectionConfig() {
+            @Override
+            public void initMap() {
+                // to do nothing
+            }
+        };
+
+        // 濡傛灉妯℃澘寮曟搸鏄� freemarker
+        String templatePath = "/templates/mapper.xml.ftl";
+        // 濡傛灉妯℃澘寮曟搸鏄� velocity
+        // String templatePath = "/templates/mapper.xml.vm";
+
+        // 鑷畾涔夎緭鍑洪厤缃�
+        List<FileOutConfig> focList = new ArrayList<>();
+        // 鑷畾涔夐厤缃細琚紭鍏堣緭鍑�
+        focList.add(new FileOutConfig(templatePath) {
+            @Override
+            public String outputFile(TableInfo tableInfo) {
+                // 鑷畾涔夎緭鍑烘枃浠跺悕 锛� 濡傛灉浣� Entity 璁剧疆浜嗗墠鍚庣紑銆佹澶勬敞鎰� xml 鐨勫悕绉颁細璺熺潃鍙戠敓鍙樺寲锛侊紒
+                return projectPath + "/src/main/resources/mapper/" + moduleName + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
+            }
+        });
+        /*
+        cfg.setFileCreate(new IFileCreate() {
+            @Override
+            public boolean isCreate(ConfigBuilder configBuilder, FileType fileType, String filePath) {
+                // 鍒ゆ柇鑷畾涔夋枃浠跺す鏄惁闇�瑕佸垱寤�
+                checkDir("璋冪敤榛樿鏂规硶鍒涘缓鐨勭洰褰曪紝鑷畾涔夌洰褰曠敤");
+                if (fileType == FileType.MAPPER) {
+                    // 宸茬粡鐢熸垚 mapper 鏂囦欢鍒ゆ柇瀛樺湪锛屼笉鎯抽噸鏂扮敓鎴愯繑鍥� false
+                    return !new File(filePath).exists();
+                }
+                // 鍏佽鐢熸垚妯℃澘鏂囦欢
+                return true;
+            }
+        });
+        */
+        cfg.setFileOutConfigList(focList);
+        mpg.setCfg(cfg);
+
+        // 閰嶇疆妯℃澘
+        TemplateConfig templateConfig = new TemplateConfig();
+
+        // 閰嶇疆鑷畾涔夎緭鍑烘ā鏉�
+        //鎸囧畾鑷畾涔夋ā鏉胯矾寰勶紝娉ㄦ剰涓嶈甯︿笂.ftl/.vm, 浼氭牴鎹娇鐢ㄧ殑妯℃澘寮曟搸鑷姩璇嗗埆
+        // templateConfig.setEntity("templates/entity2.java");
+        // templateConfig.setService();
+        // templateConfig.setController();
+
+        templateConfig.setXml(null);
+        mpg.setTemplate(templateConfig);
+
+        // 绛栫暐閰嶇疆
+        StrategyConfig strategy = new StrategyConfig();
+
+        //闇�瑕佺敓鎴愮殑琛�
+        strategy.setInclude(tables);
+        strategy.setControllerMappingHyphenStyle(true);
+        //绫诲悕鐢熸垚绛栫暐锛氶┘宄板懡鍚�
+        strategy.setNaming(NamingStrategy.underline_to_camel);
+        //瀛楁鍚嶇敓鎴愭柟寮忥細椹煎嘲鍛藉悕
+        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
+        // 琛ㄥ墠缂�
+        strategy.setTablePrefix(beginName+"_");
+
+        // 鍐欎簬鐖剁被涓殑鍏叡瀛楁锛堝湪鐖剁被涓凡缁忔湁鐨勪笉闇�瑕佺敓鎴愮殑瀛楁锛�
+        strategy.setSuperEntityColumns("id", "updateTime", "createTime");
+        // 姣忓眰鐨勭户鎵匡紙涓嶉渶瑕佸彲涓嶈缃級
+//        strategy.setSuperControllerClass("com.common.controller.MyController");
+        strategy.setSuperServiceClass("com.baomidou.mybatisplus.extension.service.IService");
+        strategy.setSuperServiceImplClass("com.baomidou.mybatisplus.extension.service.impl.ServiceImpl");
+        strategy.setSuperMapperClass("com.baomidou.mybatisplus.core.mapper.BaseMapper");
+        //缁ф壙鐨勫睘鎬х埗绫�
+//        strategy.setSuperEntityClass("com.common.entity.MyEntity");
+        strategy.setEntityLombokModel(true);
+        strategy.setRestControllerStyle(true);
+
+        mpg.setStrategy(strategy);
+
+        mpg.setTemplateEngine(new FreemarkerTemplateEngine());
+
+        mpg.execute();
+    }
+
+
+
+}
+
diff --git a/springboot-vue3/src/main/java/com/example/springboot/AuthorityApplication.java b/springboot-vue3/src/main/java/com/example/springboot/AuthorityApplication.java
new file mode 100644
index 0000000..689a34d
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/AuthorityApplication.java
@@ -0,0 +1,22 @@
+package com.example.springboot;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.ConfigurableApplicationContext;
+
+import com.example.springboot.component.WebSocketServer;
+
+
+@SpringBootApplication
+
+public class AuthorityApplication {
+
+  public static void main(String[] args) {
+
+   
+    SpringApplication springApplication = new SpringApplication(AuthorityApplication.class);
+    ConfigurableApplicationContext configurableApplicationContext = springApplication.run(args);
+    WebSocketServer.setApplicationContext(configurableApplicationContext);
+  }
+
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/advice/GlobalExceptionHandler.java b/springboot-vue3/src/main/java/com/example/springboot/advice/GlobalExceptionHandler.java
new file mode 100644
index 0000000..82ace50
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/advice/GlobalExceptionHandler.java
@@ -0,0 +1,42 @@
+package com.example.springboot.advice;
+
+import com.example.springboot.entity.vo.Result;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.authz.AuthorizationException;
+import org.apache.shiro.authz.UnauthorizedException;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * 鍏ㄥ眬寮傚父
+ */
+@Slf4j
+@ControllerAdvice
+public class GlobalExceptionHandler {
+    @ExceptionHandler(value = Exception.class)
+    @ResponseBody
+    public Result exception(HttpServletRequest req, Exception e) {
+        log.error("---exception Handler---Host {} invokes url {} ERROR: ", req.getRemoteHost(), req.getRequestURL(), e);
+        return Result.fail("绯荤粺閿欒锛岃鑱旂郴缃戠珯绠$悊鍛橈紒");
+    }
+
+    @ExceptionHandler(value = RuntimeException.class)
+    @ResponseBody
+    public Result runtimeException(HttpServletRequest req, RuntimeException e) {
+        log.error("---runtimeException Handler---Host {} invokes url {} ERROR: ", req.getRemoteHost(), req.getRequestURL(), e);
+        return Result.fail(e.getMessage());
+    }
+
+    /**
+     * 澶勭悊Shiro鏉冮檺鎷︽埅寮傚父
+     */
+    @ExceptionHandler(value = {AuthorizationException.class, UnauthorizedException.class})
+    @ResponseBody
+    public Result authorizationException(HttpServletRequest req, UnauthorizedException e) {
+        log.error("---authorizationException Handler---Host {} invokes url {} ERROR: ", req.getRemoteHost(), req.getRequestURL(), e);
+        return Result.fail("鏉冮檺涓嶈冻");
+    }
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/common/Result.java b/springboot-vue3/src/main/java/com/example/springboot/common/Result.java
new file mode 100644
index 0000000..8b285f9
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/common/Result.java
@@ -0,0 +1,63 @@
+package com.example.springboot.common;
+
+/**
+ * Controller缁熶竴杩斿洖鐨勫寘瑁呯被
+ */
+public class Result {
+    private static final String SUCCESS_CODE = "200";
+    private static final String ERROR_CODE = "500";
+
+    private String code;   // 杩斿洖鐨勭姸鎬佺爜銆傚憡璇夊墠绔繖娆¤姹傛垚鍔熻繕鏄け璐�
+    private String msg;    // 閿欒淇℃伅
+    private Object data;   // 鍖呰鐨勬暟鎹�
+
+    public Result(String code, String msg, Object data) {
+        this.code = code;
+        this.msg = msg;
+        this.data = data;
+    }
+
+    public Result(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public Result() {
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public Object getData() {
+        return data;
+    }
+
+    public void setData(Object data) {
+        this.data = data;
+    }
+
+    public static Result success(Object data) {
+        return new Result(SUCCESS_CODE, "", data);
+    }
+
+    public static Result success() {
+        return new Result(SUCCESS_CODE, "");
+    }
+
+    public static Result error(String msg) {
+        return new Result(SUCCESS_CODE, msg);
+    }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
index a38d1f2..da4a94e 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
@@ -48,78 +48,69 @@
       // // TODO Auto-generated catch block
       // e.printStackTrace();
       // }
-
       // 鍒ゆ柇杩涚墖璇锋眰
       List<Short> datas1List = S7control.getinstance().ReadWord("DB106.24", 1);// 鑾峰彇prc杩涚墖璇锋眰鏁版嵁
       List<Short> datas1ListState = S7control.getinstance().ReadWord("DB106.8", 1);// 鑾峰彇杩涚墖杞︾姸鎬�
       List<Short> datas1ListState2 = S7control.getinstance().ReadWord("DB105.16", 1);// 鑾峰彇杩涚墖杞︿换鍔℃槸鍚﹀惎鍔�
 
-    
-      boolean B01backs =spianService.listbool("DB106.60");// b01姹囨姤
+      boolean B01backs = spianService.listbool("DB106.60");// b01姹囨姤
       boolean B02backs = spianService.listbool("DB106.62");// b02姹囨姤
-      StringBuilder B01glassid=spianService.queGlassid("DB106.DBB26");//BO1鐨勭幓鐠僫d
-      StringBuilder B02glassid=spianService.queGlassid("DB106.DBB26");//B02鐨勭幓鐠僫d
-      //褰撹繘鐗囧皬杞﹀畬鎴愪换鍔℃椂
-      if(B01backs==true){
-        //褰揃01灏忚溅姹囨姤瀹屾垚鏃舵洿鏀圭幓鐠冪姸鎬佷负1
-        spianMapper.UpdateCageOver(B01glassid.toString(),1);//鏇存敼绗煎瓙琛ㄨ繘鐗囩姸鎬�
-        spianMapper.Updatetask(1,0);//鏇存敼杩涚墖浠诲姟鐘舵�佷负1
-        spianMapper.overqueue(B01glassid.toString(),0);//鏇存敼涓婄墖浠诲姟琛ㄧ殑鐘舵�佷负0
-        S7control.getinstance().WriteWord("DB105.48", (short) 1);//搴旂瓟B01灏忚溅鏀跺埌
-        S7control.getinstance().WriteWord("DB105.16", (short) 0);//杩涚墖浠诲姟鍚姩鏀逛负0
-      }else{
-        S7control.getinstance().WriteWord("DB105.48", (short) 0);//鎭㈠B01灏忚溅搴旂瓟
+      StringBuilder B01glassid = spianService.queGlassid("DB103.184", 14);// BO1鐨勭幓鐠僫d
+      StringBuilder B02glassid = spianService.queGlassid("DB103.212", 14);// B02鐨勭幓鐠僫d
+      // 褰撹繘鐗囧皬杞﹀畬鎴愪换鍔℃椂
+      if (B01backs == true) {
+        // 褰揃01灏忚溅姹囨姤瀹屾垚鏃舵洿鏀圭幓鐠冪姸鎬佷负1
+        spianMapper.UpdateCageOver(B01glassid.toString(), 1);// 鏇存敼绗煎瓙琛ㄨ繘鐗囩姸鎬�
+        spianMapper.Updatetask(1, 0);// 鏇存敼杩涚墖浠诲姟鐘舵�佷负1
+        spianMapper.overqueue(B01glassid.toString(), 0);// 鏇存敼涓婄墖浠诲姟琛ㄧ殑鐘舵�佷负0
+        S7control.getinstance().WriteWord("DB106.60", (short) 0);// 鎭㈠B01灏忚溅搴旂瓟鏀逛负0
+        S7control.getinstance().WriteWord("DB105.48", (short) 1);//姹囨姤B01灏忚溅鏀跺埌
       }
-      //褰撳嚭鐗囧皬杞﹀畬鎴愪换鍔℃椂
-      if(B02backs==true){
-        //褰揃02灏忚溅姹囨姤瀹屾垚鏃舵洿鏀圭幓鐠冪姸鎬佷负0
-        spianMapper.UpdateCageOver(B02glassid.toString(),0);//鏇存敼绗煎瓙琛ㄥ嚭鐗囩姸鎬�
+
+      // 褰撳嚭鐗囧皬杞﹀畬鎴愪换鍔℃椂
+      if (B02backs == true) {
+        // 褰揃02灏忚溅姹囨姤瀹屾垚鏃舵洿鏀圭幓鐠冪姸鎬佷负0
+        spianMapper.UpdateCageOver(B02glassid.toString(), 0);// 鏇存敼绗煎瓙琛ㄥ嚭鐗囩姸鎬�
         spianMapper.UpdatetaskOut(B02glassid.toString()); // 瀹屾垚涓婁竴娆″嚭鐗囨垨鑰呰皟搴︿换鍔�
-        S7control.getinstance().WriteWord("DB105.50", (short) 1);//搴旂瓟B02灏忚溅鏀跺埌
-      }else{
-        S7control.getinstance().WriteWord("DB105.50", (short) 0);//鎭㈠B02灏忚溅搴旂瓟
+        S7control.getinstance().WriteWord("DB105.50", (short) 0);// 鎭㈠B02灏忚溅搴旂瓟鏀逛负0
+        // S7control.getinstance().WriteWord("DB105.50", (short) 1);//姹囨姤B02灏忚溅鏀跺埌
       }
-
-
 
       // 鑾峰彇DO1鏁版嵁
-      StringBuilder queueid1 = spianService.queGlassid("DB106.DBB26");
+      StringBuilder queueid1 = spianService.queGlassid("DB103.44", 14);
       // 鑾峰彇DO2鏁版嵁
-      StringBuilder queueid2 = spianService.queGlassid("DB103.DBB78");
-      System.out.println("D01"+queueid1);
-      System.out.println("D02"+queueid2);
-      int questate = spianMapper.Selectqueuestate();//鍒ゆ柇鎵爜浣嶆槸鍚︽湁鐜荤拑宸茬‘璁�
+      StringBuilder queueid2 = spianService.queGlassid("DB103.58", 14);
+      System.out.println("D01|" + queueid1);
+      System.out.println("D02|" + queueid2);
+      int questate = spianMapper.Selectquecount(queueid1.toString());// 鍒ゆ柇鎵爜浣嶆槸鍚︽湁鐜荤拑宸茬‘璁�
       // queueid1.toString().isEmpty()
-      north_glass_buffer1 glass1 = spianMapper.selectGlass(queueid1.toString());//D01鐨勭幓鐠冧俊鎭�
-      north_glass_buffer1 glass2 = spianMapper.selectGlass(queueid2.toString());//D02鐜荤拑淇℃伅
-      double quewitdh=0;
-      double quewitdh2=0;
-      //褰撴壂鐮佷綅鐜荤拑id涓虹┖鏃� 瀹藉害涓�0
-      if(glass1==null){
-         quewitdh=0;
-         queueid1=new StringBuilder("");
-      }else{
-        quewitdh=glass1.getglasslengthmm();
-      }
-      if(glass2==null){
-         quewitdh2=0;
-         queueid2=new StringBuilder("");
-      }else{
-        quewitdh2=glass2.getglasslengthmm();
-      }
-      
-
-      if (queueid1!=null&& questate == 0) {
+      north_glass_buffer1 glass1 = spianMapper.selectGlass(queueid1.toString());// D01鐨勭幓鐠冧俊鎭�
+      north_glass_buffer1 glass2 = spianMapper.selectGlass(queueid2.toString());// D02鐜荤拑淇℃伅
+      // 褰撴壂鐮佷綅鐜荤拑id涓虹┖鏃� 瀹藉害涓�0
+       
+      if (queueid1 != null&&questate==0) {
         // 鍐欏叆D01鐨勬暟鎹埌涓婄墖闃熷垪琛�
-        spianMapper.insertqueue(queueid1.toString(), 1, quewitdh);
+        if (glass1 == null) { //褰撴病鏈夊�兼椂浼犵┖
+          spianMapper.Updatequeue(null,null,null,null, 0, null, null, null, null, 1);
+        } else {
+          spianMapper.overqueue2(queueid2.toString(), 0, 1);// 鏇存敼鎵爜浣嶄换鍔¤〃鐨勭姸鎬佷负0
+          spianMapper.Updatequeue(queueid1.toString(),glass1.getordernumber(),glass1.getlistnumber(),glass1.getboxnumber(),0,glass1.getglasslengthmm().toString(),glass1.getglassheightmm().toString(),glass1.getglasslength().toString(),glass1.getglassheight().toString(),1);
+        }
+
       }
-      if (queueid2!=null) {
-        // 鍐欏叆D02鐨勬暟鎹埌涓婄墖闃熷垪琛�
-        spianMapper.insertqueue(queueid2.toString(), 2, quewitdh2);
-        spianMapper.overqueue2(queueid2.toString(),0,1);//鏇存敼涓婄墖浠诲姟琛ㄧ殑鐘舵�佷负0
+    if (queueid2 != null) {
+        // 鍐欏叆D02鐨勬暟鎹埌涓婄墖闃熷垪琛�  
+        if(glass2==null){
+          spianMapper.Updatequeue(null,null,null,null, 0, null, null, null, null, 2);
+        }else{
+        spianMapper.Updatequeue(queueid1.toString(),glass2.getordernumber(),glass2.getlistnumber(),glass2.getboxnumber(),0,glass2.getglasslengthmm().toString(),glass2.getglassheightmm().toString(),glass2.getglasslength().toString(),glass2.getglassheight().toString(),2);
+        
+        S7control.getinstance().WriteWord("DB105.16", (short) 0);//鍏抽棴浠诲姟鍚姩
+        }
+        
       }
 
-       // 鍑虹墖浠诲姟////////////////////////////////
+      // 鍑虹墖浠诲姟////////////////////////////////
       List<Short> outlist = S7control.getinstance().ReadWord("DB106.20", 1); // 鍑虹墖杞︾姸鎬�
       List<Short> outlist1 = S7control.getinstance().ReadWord("DB105.18", 1); // 鍑虹墖浠诲姟鏄惁鍚姩
       // StringBuilder writedstrIdOut = new StringBuilder();
@@ -127,7 +118,6 @@
       byte[] writedglassidbytesOut = S7control.getinstance().ReadByte("DB105.30", 14);
       String writedstrIdOut = new String(writedglassidbytesOut);
 
-     
       boolean outstate = false;// 鍑虹墖杞︾┖闂插垽鏂�
       boolean outstate1 = false;// 鍑虹墖杞︿换鍔℃槸鍚﹀惎鍔�
       if (outlist != null && outlist1 != null) {
@@ -143,25 +133,25 @@
         }
         if (outglassbegin & outstate)// 褰撲换鍔″紑濮嬩笖鍑虹墖杞︾┖闂叉椂
         {
-          outglassbegin = false;  
+          outglassbegin = false;
         }
 
         if (outstate == true & glass.getbarcode() != null) { // 褰撳嚭鐗囪溅绌洪棽涓旀湁鍑虹墖浠诲姟寰呭畬鎴愭椂
           // 鍒ゆ柇鏈変袱涓嚭鐗囨垨璋冩嫧浠诲姟鏃跺苟涓斿嚭鐗噄d鍜屾湭瀹屾垚鐨勫嚭鐗囦换鍔d涓嶄竴鏍锋椂鎵ц鍑虹墖
           if (!writedstrIdOut.toString().equals(glass.getbarcode().toString())) {
             spianService.selectout2(glass.getbarcode().toString());
-            outstate=false;
+            outstate = false;
           }
         }
         // 鍒ゆ柇褰撳墠鏄惁鏈夋湭鎵ц鐨勪换鍔�
         int outnum = spianMapper.SelectOutSliceshu();
-        //褰撴病鏈変换鍔℃墽琛屽苟涓斿嚭鐗囪溅绌洪棽鏃�
-        if (outnum == 0&&outstate == true ) {
+        // 褰撴病鏈変换鍔℃墽琛屽苟涓斿嚭鐗囪溅绌洪棽鏃�
+        if (outnum == 0 && outstate == true) {
           // 鍒ゆ柇閾濇鍑虹墖闃熷垪琛ㄦ槸鍚︽湁寰呭嚭鐗囩殑鐜荤拑
           String outglassid = spianMapper.SelectOutSlice();
           if (outglassid != null) {
             spianService.selectout2(outglassid);
-            outstate=false;
+            outstate = false;
           }
         }
         if (outstate == true) {// 涓嬪彂浠诲姟鍚庡皢浠诲姟鍚姩鏀逛负0//鍑虹墖杞︾┖闂插垽鏂�
@@ -172,12 +162,12 @@
       }
 
       // if (outstate == true) { // 鍑虹墖杞︾姸鎬佺┖闂叉椂
-      //   Integer state = spianMapper.Selectoutstate();
-      //   String orderid = spianMapper.SelectOrderout();
+      // Integer state = spianMapper.Selectoutstate();
+      // String orderid = spianMapper.SelectOrderout();
 
-      //   if (orderid != null && state == 0) {
-      //     spianService.selectout(orderid);
-      //   }
+      // if (orderid != null && state == 0) {
+      // spianService.selectout(orderid);
+      // }
       // }
 
       // 鏌ヨ鏁版嵁搴�
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/Plcaction.java b/springboot-vue3/src/main/java/com/example/springboot/component/Plcaction.java
new file mode 100644
index 0000000..d7938fd
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/Plcaction.java
@@ -0,0 +1,138 @@
+package com.example.springboot.component;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class Plcaction extends Thread {
+  String name = "";
+  Integer count = 0;
+
+  public void readValue() {
+    String str = "";
+    BufferedReader bufferedReader = null;
+    FileInputStream fileInputStream;
+    try {
+      // 浠庢枃浠朵腑璇诲彇瀛楄妭鏁版嵁瀛樺叆 fileInputStream
+      fileInputStream = new FileInputStream("CanadaMes-ui/src/configuration/Action.json");
+      // 璇诲彇 fileInputStream 涓瓧鑺傚苟灏嗗叾瑙g爜涓哄瓧绗�
+      InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
+      // 鎻愰珮璇诲彇鏁堢巼锛屽湪 BufferedReader 鍐呭寘瑁� InputStreamReader
+      bufferedReader = new BufferedReader(inputStreamReader);
+      String line = null;
+      // 灏� bufferedReader 鍐呭涓�琛屼竴琛岃祴鍊肩粰str
+      while ((line = bufferedReader.readLine()) != null) {
+        str += line;
+      }
+
+      // 灏唖tr瀛楃涓叉牸寮忚浆涓簀son
+      JSONObject jsonObject = new JSONObject(str);
+
+      // 鑾峰彇json涓殑鍊�
+      JSONArray address = jsonObject.getJSONArray("address");
+      for (int i = 0; i < address.size(); i++) {
+        JSONObject ress = (JSONObject) address.get(i);
+
+        this.name = ress.getStr("name");
+        this.count = ress.getInt("count");
+
+      }
+
+    } catch (FileNotFoundException e) {
+      e.printStackTrace();
+    } catch (UnsupportedEncodingException e) {
+      e.printStackTrace();
+    } catch (IOException e) {
+      e.printStackTrace();
+    }
+  }
+
+  @Override
+  public void run() {
+    while (this != null) {
+      try {
+        Thread.sleep(1000);
+      } catch (InterruptedException e) {
+        e.printStackTrace();
+      }
+
+      // 璋冪敤鏂规硶锛岃繘琛岃祴鍊�
+      this.readValue();
+      String PlcAddress = this.name;
+      Integer Plccount = this.count;
+      // System.out.println(PlcAddress);
+
+      // List<Boolean> paramlist = S7control.getinstance().ReadBits("DB2.0.0", 26);
+      Boolean[] values = { false, true, true, true, true, true, true, true, true,
+          true, true, true, true, true, true, true, true, true, true, true, true, true, true,
+          true, false, true };
+      List<Boolean> paramlist = new ArrayList<>(Arrays.asList(values));
+
+      if (paramlist != null) {
+
+        short[] params = new short[paramlist.size()];
+
+        for (int i = 0; i < paramlist.size(); i++) {
+          boolean value = paramlist.get(i);
+          params[i] = value ? (short) 1 : (short) 0;
+        }
+
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.append("params", params);
+        WebSocketServer sendwServer = WebSocketServer.sessionMap.get("action");
+        if (sendwServer != null) {
+          sendwServer.sendMessage(jsonObject.toString());
+        }
+      }
+
+      WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("action");
+      if (webSocketServer != null) {
+
+        List<String> messages = webSocketServer.getMessages();
+
+        String addressList = "DB2.0.0";
+
+        if (!messages.isEmpty()) {
+          // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
+          String lastMessage = messages.get(messages.size() - 1);
+          System.out.println("messages锛�" + messages);
+          String[] parts = lastMessage.split(",");
+          List<Integer> messageValues = new ArrayList<>();
+          for (String part : parts) {
+            try {
+              // 浣跨敤姝e垯琛ㄨ揪寮忔竻闄ら潪鏁板瓧瀛楃
+              String cleanedPart = part.replaceAll("[^0-9-]", "");
+              Integer value = Integer.parseInt(cleanedPart.trim());
+              messageValues.add(value);
+            } catch (NumberFormatException e) {
+              // 濡傛灉鏃犳硶瑙f瀽涓烘暣鏁扮被鍨嬶紝鍒欏拷鐣ヨ閮ㄥ垎
+              e.printStackTrace();
+            }
+          }
+
+          // 灏嗘秷鎭�艰浆鎹负甯冨皵鍒楄〃
+          List<Boolean> messageBooleans = new ArrayList<>();
+          for (Integer value : messageValues) {
+            messageBooleans.add(value == 1 ? true : false);
+          }
+
+          // 灏嗗竷灏斿垪琛ㄥ啓鍏� PLC
+          S7control.getinstance().WriteBit(addressList, messageBooleans);
+          System.out.println("messageValues锛�" + messageBooleans);
+          System.out.println("addressList锛�" + addressList);
+          // 娓呯┖娑堟伅鍒楄〃
+          webSocketServer.clearMessages();
+        }
+      }
+    }
+  }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java b/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
index 0d53465..a8e397e 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
@@ -4,17 +4,21 @@
 
 import java.sql.SQLException;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import org.springframework.beans.factory.annotation.Autowired;
 
 import com.example.springboot.entity.Out_slice;
+import com.example.springboot.entity.Queue;
 import com.example.springboot.entity.StorageCage;
 import com.example.springboot.entity.alarmmg;
 import com.example.springboot.entity.north_glass_buffer1;
 import com.example.springboot.mapper.HomeMapper;
 import com.example.springboot.mapper.SpianMapper;
 import com.example.springboot.service.JdbcConnections;
+
 
 public class Plchome extends Thread {
 
@@ -24,6 +28,10 @@
     private JdbcConnections dbserve;
     private JdbcConnections jdbcConnections;
 
+
+    // public static int a=1;
+    // public static Map b=new HashMap<>();
+    // b.put()
     @Override
     public void run() {
         while (this != null) {
@@ -53,30 +61,6 @@
             // 杩涘嚭鐗囦换鍔�
             List<StorageCage> tasklist1 = homeMapper.selectinout(3);
             List<StorageCage> tasklist2 = homeMapper.selectinout(2);
-            for (StorageCage storageCage : tasklist1) {
-                // storageCage.setnorth_glass_buffer1s(homeMapper.SelectBoxNo(storageCage.getGlassId()));
-                try {
-                    storageCage.setnorth_glass_buffer1s(jdbcConnections.SelectGlassByGlassIdOrderIdFrameId("", "", ""));
-                } catch (SQLException e) {
-                    e.printStackTrace();
-                }
-                try {
-                    storageCage.setnorth_glass_buffer1s(
-                            jdbcConnections.SelectGlassByGlassIdOrderIdFrameId(storageCage.getGlassId(), "", ""));
-                } catch (SQLException e) {
-                    e.printStackTrace();
-                }
-            }
-            for (StorageCage storageCage : tasklist2) {
-                // storageCage.setnorth_glass_buffer1s(homeMapper.SelectBoxNo(storageCage.getGlassId()));
-                try {
-                    storageCage.setnorth_glass_buffer1s(
-                            jdbcConnections.SelectGlassByGlassIdOrderIdFrameId(storageCage.getGlassId(), "", ""));
-                } catch (SQLException e) {
-                    e.printStackTrace();
-                }
-
-            }
             jsonObject.append("tasklist1", tasklist1);
             jsonObject.append("tasklist2", tasklist2);
             // 鏌ヨ鎶ヨ淇℃伅
@@ -107,36 +91,17 @@
             jsonObject.append("queid", queid);
             jsonObject.append("state", state);
             // 鑾峰彇鎵爜浣嶄笌涓婄墖浣嶇幓鐠冧俊鎭�
-            String queueglassid2 = homeMapper.GetQueueInfo(2);
-            String queueglassid1 = homeMapper.GetQueueInfo(1);
-            // north_glass_buffer1 form2 = homeMapper.SelectGlassByGlassID(queueglassid2);
-            // north_glass_buffer1 form3 = homeMapper.SelectGlassByGlassID(queueglassid1);
-
-            north_glass_buffer1 form2;
-            if(queueglassid2.length()!=0){
-                try {
-                    form2 = jdbcConnections.SelectGlassByGlassIdOrderIdFrameId(queueglassid2, "", "");
-                    jsonObject.append("form2", form2);
-                } catch (SQLException e) {
-                    e.printStackTrace();
-                }
+            Queue form2 = homeMapper.GetQueueInfo(2);
+            Queue form3 = homeMapper.GetQueueInfo(1);
+            if(form2.getglassId()!=null&&form2.getglassId()!=""){
+                jsonObject.append("form2", form2);
             }
-                
-            north_glass_buffer1 form3;
-            if(queueglassid1.length()!=0){
-                try {
-                    form3 = jdbcConnections.SelectGlassByGlassIdOrderIdFrameId(queueglassid1, "", "");
-                    jsonObject.append("form3", form3);
-                } catch (SQLException e) {
-                    e.printStackTrace();
-                }
+            if(form3.getglassId()!=null&&form3.getglassId()!=""){
+                jsonObject.append("form3", form3);
             }
-                
-
             // 鑾峰彇鍑虹墖闃熷垪淇℃伅
             List<Out_slice> listoutslice = homeMapper.SelectProductionqueue();
             for (Out_slice out_slice : listoutslice) {
-                out_slice.setnorth_glass_buffer1s(homeMapper.SelectBoxNo(out_slice.getGlassId()));
                 out_slice.setstorageCage(homeMapper.SelectStorageGlassById(out_slice.getGlassId()));
             }
             jsonObject.append("listoutslice", listoutslice);
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/Plcsign.java b/springboot-vue3/src/main/java/com/example/springboot/component/Plcsign.java
new file mode 100644
index 0000000..0e503c4
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/Plcsign.java
@@ -0,0 +1,106 @@
+package com.example.springboot.component;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Arrays;
+
+public class Plcsign extends Thread {
+  String name = "";
+  Integer count = 0;
+
+  public void readValue() {
+    String str = "";
+    BufferedReader bufferedReader = null;
+    FileInputStream fileInputStream;
+    try {
+      // 浠庢枃浠朵腑璇诲彇瀛楄妭鏁版嵁瀛樺叆 fileInputStream
+      fileInputStream = new FileInputStream("CanadaMes-ui/src/configuration/Sign.json");
+      // 璇诲彇 fileInputStream 涓瓧鑺傚苟灏嗗叾瑙g爜涓哄瓧绗�
+      InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
+      // 鎻愰珮璇诲彇鏁堢巼锛屽湪 BufferedReader 鍐呭寘瑁� InputStreamReader
+      bufferedReader = new BufferedReader(inputStreamReader);
+      String line = null;
+      // 灏� bufferedReader 鍐呭涓�琛屼竴琛岃祴鍊肩粰str
+      while ((line = bufferedReader.readLine()) != null) {
+        str += line;
+      }
+
+      // 灏唖tr瀛楃涓叉牸寮忚浆涓簀son
+      JSONObject jsonObject = new JSONObject(str);
+
+      // 鑾峰彇json涓殑鍊�
+      JSONArray address = jsonObject.getJSONArray("address");
+      for (int i = 0; i < address.size(); i++) {
+        JSONObject ress = (JSONObject) address.get(i);
+
+        this.name = ress.getStr("name");
+        this.count = ress.getInt("count");
+
+      }
+
+    } catch (FileNotFoundException e) {
+      e.printStackTrace();
+    } catch (UnsupportedEncodingException e) {
+      e.printStackTrace();
+    } catch (IOException e) {
+      e.printStackTrace();
+    }
+  }
+
+  @Override
+  public void run() {
+    while (this != null) {
+      try {
+        Thread.sleep(1000);
+      } catch (InterruptedException e) {
+        e.printStackTrace();
+      }
+
+      this.readValue();
+      String PlcAddress = this.name;
+      Integer Plccount = this.count;
+      // System.out.println(PlcAddress);
+
+      // List<Boolean> plclist = S7control.getinstance().ReadBits("DB102.0.0", 44);
+      // List<Boolean> plclist2 = S7control.getinstance().ReadBits("DB102.5.5", 13);
+
+      Boolean[] values = { true, true, true, true, true, false, true, false,
+          true, false, true, false, true, false,
+          true, false, true, false, true, false, true, false, true, false, true, false,
+          true, false, true, false, true,
+          false, true, false, true, false,
+          true, false, true, false, true, false, true, false, null,
+          true, false,
+          true, false, true, false, true, false,
+          true, false, true, false, true, };
+      List<Boolean> plclist = new ArrayList<>(Arrays.asList(values));
+
+      if (plclist != null) {
+        // 灏嗚幏鍙栫殑甯冨皵绫诲瀷杞崲涓烘暣鏁扮被鍨�
+        List<Integer> Intlist = new ArrayList<>();
+        for (Boolean value : plclist) {
+          if (value != null) {
+            Intlist.add(value == true ? 0 : 1);
+          }
+
+        }
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.append("sig", Intlist);
+        WebSocketServer sendwServer3 = WebSocketServer.sessionMap.get("Sign");
+        if (sendwServer3 != null) {
+          sendwServer3.sendMessage(jsonObject.toString());
+        }
+
+      }
+    }
+  }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java b/springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java
new file mode 100644
index 0000000..61c28f0
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java
@@ -0,0 +1,94 @@
+package com.example.springboot.component;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Arrays;
+
+public class Plcstate extends Thread {
+  String name = "";
+  Integer count = 0;
+
+  public void readValue() {
+    String str = "";
+    BufferedReader bufferedReader = null;
+    FileInputStream fileInputStream;
+    try {
+      // 浠庢枃浠朵腑璇诲彇瀛楄妭鏁版嵁瀛樺叆 fileInputStream
+      fileInputStream = new FileInputStream("CanadaMes-ui/src/configuration/State.json");
+      // 璇诲彇 fileInputStream 涓瓧鑺傚苟灏嗗叾瑙g爜涓哄瓧绗�
+      InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
+      // 鎻愰珮璇诲彇鏁堢巼锛屽湪 BufferedReader 鍐呭寘瑁� InputStreamReader
+      bufferedReader = new BufferedReader(inputStreamReader);
+      String line = null;
+      // 灏� bufferedReader 鍐呭涓�琛屼竴琛岃祴鍊肩粰str
+      while ((line = bufferedReader.readLine()) != null) {
+        str += line;
+      }
+
+      // 灏唖tr瀛楃涓叉牸寮忚浆涓簀son
+      JSONObject jsonObject = new JSONObject(str);
+
+      // 鑾峰彇json涓殑鍊�
+      JSONArray address = jsonObject.getJSONArray("address");
+      for (int i = 0; i < address.size(); i++) {
+        JSONObject ress = (JSONObject) address.get(i);
+
+        this.name = ress.getStr("name");
+        this.count = ress.getInt("count");
+
+      }
+
+    } catch (FileNotFoundException e) {
+      e.printStackTrace();
+    } catch (UnsupportedEncodingException e) {
+      e.printStackTrace();
+    } catch (IOException e) {
+      e.printStackTrace();
+    }
+  }
+
+  @Override
+  public void run() {
+    while (this != null) {
+      try {
+        Thread.sleep(1000);
+      } catch (InterruptedException e) {
+        e.printStackTrace();
+      }
+
+      this.readValue();
+      String PlcAddress = this.name;
+      Integer Plccount = this.count;
+      // System.out.println(PlcAddress);
+
+      // List<Short> plclist = S7control.getinstance().ReadWord("DB103.0", 10);
+      Short[] values = { 0, 1, 1, 0, 1, 0, 1, 0,
+          1, 0, };
+      List<Short> plclist = new ArrayList<>(Arrays.asList(values));
+      if (plclist != null) {
+
+        List<String> Intlist = new ArrayList<>();
+        for (Short value : plclist) {
+          Intlist.add(value == 1 ? "鑷姩" : "鎵嬪姩");
+
+        }
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.append("sta", Intlist);
+        WebSocketServer sendwServer = WebSocketServer.sessionMap.get("State");
+        if (sendwServer != null) {
+          sendwServer.sendMessage(jsonObject.toString());
+        }
+
+      }
+    }
+  }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/WebSocketServer.java b/springboot-vue3/src/main/java/com/example/springboot/component/WebSocketServer.java
new file mode 100644
index 0000000..9515c0d
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/WebSocketServer.java
@@ -0,0 +1,144 @@
+package com.example.springboot.component;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+import javax.websocket.OnClose;
+import javax.websocket.OnError;
+import javax.websocket.OnMessage;
+import javax.websocket.OnOpen;
+import javax.websocket.Session;
+import javax.websocket.server.PathParam;
+import javax.websocket.server.ServerEndpoint;
+
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.stereotype.Component;
+
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+
+@ServerEndpoint(value = "/api/talk/{username}")
+@Component
+public class WebSocketServer {
+
+    // @Autowired
+    // HomeMapper homeMapper;
+
+    static ConfigurableApplicationContext applicationContext;
+ 
+    //瑙e喅鏃犳硶娉ㄥ叆mapper闂  //浣跨敤鏂规硶 homeMapper=WebSocketServer.applicationContext.getBean(HomeMapper.class);
+    public static void setApplicationContext(ConfigurableApplicationContext configurableApplicationContext) {
+        WebSocketServer.applicationContext = configurableApplicationContext;
+    }
+
+
+   private static final Logger log = LoggerFactory.getLogger(WebSocketServer.class);
+    private List<String> messages;
+    /**
+     * 璁板綍褰撳墠鍦ㄧ嚎杩炴帴鏁�
+     */
+    public static final Map<String, WebSocketServer> sessionMap = new ConcurrentHashMap<>();
+    
+    String username;
+    Session session;
+    public WebSocketServer() {
+        this.messages = new ArrayList<>();
+    }
+    /**
+     * 杩炴帴寤虹珛鎴愬姛璋冪敤鐨勬柟娉�
+     */
+    @OnOpen
+    public void onOpen(Session session, @PathParam("username") String username) {
+        this.username=username;
+        this.session=session;
+        sessionMap.put(username, this);
+        log.info("鏈夋柊鐢ㄦ埛鍔犲叆锛寀sername={}, 褰撳墠鍦ㄧ嚎浜烘暟涓猴細{}", username, sessionMap.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) {
+        sessionMap.remove(username);
+        log.info("鏈変竴杩炴帴鍏抽棴锛岀Щ闄sername={}鐨勭敤鎴穝ession, 褰撳墠鍦ㄧ嚎浜烘暟涓猴細{}", 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);
+         this.sendMessage(jsonObject.toString()); //JSONUtil.toJsonStr(jsonObject)
+         
+    }
+
+    @OnError
+    public void onError(Session session, Throwable error) {
+        log.error("鍙戠敓閿欒");
+        error.printStackTrace();
+    }
+
+    /**
+     * 鏈嶅姟绔彂閫佹秷鎭粰瀹㈡埛绔�
+     */
+    public void sendMessage(String message) {
+        try {
+           // log.info("鏈嶅姟绔粰瀹㈡埛绔痆{}]鍙戦�佹秷鎭瘂}", this.session.getId(), message);
+            this.session.getBasicRemote().sendText(message);
+        } catch (Exception e) {
+            log.error("鏈嶅姟绔彂閫佹秷鎭粰瀹㈡埛绔け璐�", 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/springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java b/springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
index 79680e0..22ec077 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
@@ -35,7 +35,7 @@
 
     // new Plcaction().start();
     //
-    // new Plchome().start();
+    new Plchome().start();
     //
     // new PlcParameter().start();
     //
diff --git a/springboot-vue3/src/main/java/com/example/springboot/config/CrossOriginConfig.java b/springboot-vue3/src/main/java/com/example/springboot/config/CrossOriginConfig.java
new file mode 100644
index 0000000..9cf3bdc
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/config/CrossOriginConfig.java
@@ -0,0 +1,26 @@
+package com.example.springboot.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+@Configuration
+public class CrossOriginConfig {
+
+    // 褰撳墠璺ㄥ煙璇锋眰鏈�澶ф湁鏁堟椂闀裤�傝繖閲岄粯璁�1澶�
+    private static final long MAX_AGE = 24 * 60 * 60;
+
+    @Bean
+    public CorsFilter corsFilter() {
+        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+        CorsConfiguration corsConfiguration = new CorsConfiguration();
+        corsConfiguration.addAllowedOrigin("*"); // 1 璁剧疆璁块棶婧愬湴鍧�
+        corsConfiguration.addAllowedHeader("*"); // 2 璁剧疆璁块棶婧愯姹傚ご
+        corsConfiguration.addAllowedMethod("*"); // 3 璁剧疆璁块棶婧愯姹傛柟娉�
+        corsConfiguration.setMaxAge(MAX_AGE);
+        source.registerCorsConfiguration("/**", corsConfiguration); // 4 瀵规帴鍙i厤缃法鍩熻缃�
+        return new CorsFilter(source);
+    }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/config/MybatisPlusConfig.java b/springboot-vue3/src/main/java/com/example/springboot/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..73c1a64
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/config/MybatisPlusConfig.java
@@ -0,0 +1,17 @@
+package com.example.springboot.config;
+
+import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisPlusConfig {
+    @Bean
+    public PaginationInterceptor paginationInterceptor() {
+        // 閰嶇疆mybatis-plus鍒嗛〉鎻掍欢
+        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
+        // 鏂硅█
+        paginationInterceptor.setDialectType("mysql");
+        return paginationInterceptor;
+    }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/config/SwaggerConfig.java b/springboot-vue3/src/main/java/com/example/springboot/config/SwaggerConfig.java
new file mode 100644
index 0000000..1166481
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/config/SwaggerConfig.java
@@ -0,0 +1,59 @@
+package com.example.springboot.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.service.Contact;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+/**
+ * swagger閰嶇疆
+ * 椤圭洰杩愯鍚庤闂細http://localhost:port/swagger-ui.html
+ */
+@Configuration
+@EnableSwagger2
+public class SwaggerConfig {
+    // 閰嶇疆swagger2鏍稿績閰嶇疆 docket
+    @Bean
+    public Docket createRestApi() {
+        return new Docket(DocumentationType.SWAGGER_2) // 鎸囧畾api绫诲瀷涓簊wagger2
+                .groupName("authority") // 鍒嗙粍
+                .apiInfo(apiInfo()) // 鐢ㄤ簬瀹氫箟api鏂囨。姹囨�讳俊鎭�
+                .select() // 閫氳繃.select()鏂规硶锛屽幓閰嶇疆鎵弿鎺ュ彛銆俁equestHandlerSelectors閰嶇疆濡備綍鎵弿鎺ュ彛
+                /*
+                    // RequestHandlerSelectors閰嶇疆鏂规硶
+                    any() // 鎵弿鎵�鏈夛紝椤圭洰涓殑鎵�鏈夋帴鍙i兘浼氳鎵弿鍒�
+                    none() // 涓嶆壂鎻忔帴鍙�
+                    // 閫氳繃鏂规硶涓婄殑娉ㄨВ鎵弿锛屽withMethodAnnotation(GetMapping.class)鍙壂鎻廹et璇锋眰
+                    withMethodAnnotation( final Class<? extends Annotation> annotation)
+                    // 閫氳繃绫讳笂鐨勬敞瑙f壂鎻忥紝濡�.withClassAnnotation(Controller.class)鍙壂鎻忔湁controller娉ㄨВ鐨勭被涓殑鎺ュ彛
+                    withClassAnnotation( final Class<? extends Annotation> annotation)
+                    basePackage( final String basePackage) // 鏍规嵁鍖呰矾寰勬壂鎻忔帴鍙�
+                */
+                .apis(RequestHandlerSelectors.basePackage("com.canadames")) // 鎸囧畾鎵弿鍖�
+                /*
+                    // 閰嶇疆濡備綍閫氳繃path杩囨护,鍗宠繖閲屽彧鎵弿璇锋眰浠�/寮�澶寸殑鎺ュ彛
+                    any() // 浠讳綍璇锋眰閮芥壂鎻�
+                    none() // 浠讳綍璇锋眰閮戒笉鎵弿
+                    regex(final String pathRegex) // 閫氳繃姝e垯琛ㄨ揪寮忔帶鍒�
+                    ant(final String antPattern) // 閫氳繃ant()鎺у埗
+                */
+                .paths(PathSelectors.any()) // 鎵�鏈塩ontroller
+                .build();
+    }
+
+    //鏋勫缓 api鏂囨。鐨勮缁嗕俊鎭嚱鏁�,娉ㄦ剰杩欓噷鐨勬敞瑙e紩鐢ㄧ殑鏄摢涓�
+    private ApiInfo apiInfo() {
+        return new ApiInfoBuilder()
+                .title("鏉冮檺绠$悊绯荤粺 API") // 鏂囨。椤垫爣棰�
+                .contact(new Contact("canadames", "https://jonssonyan.com", "yz808@outlook.com")) // 鑱旂郴浜轰俊鎭�
+                .version("1.0") // 鏂囨。鐗堟湰鍙�
+                .description("API 鎻忚堪") // 鎻忚堪
+                .build();
+    }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/config/WebSocketConfig.java b/springboot-vue3/src/main/java/com/example/springboot/config/WebSocketConfig.java
new file mode 100644
index 0000000..2c566bc
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/config/WebSocketConfig.java
@@ -0,0 +1,16 @@
+package com.example.springboot.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.socket.server.standard.ServerEndpointExporter;
+
+@Configuration
+public class WebSocketConfig {
+    
+
+     @Bean
+    public ServerEndpointExporter serverEndpointExporter() {
+        return new ServerEndpointExporter();
+    }
+
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/AlarmController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/AlarmController.java
new file mode 100644
index 0000000..b141d58
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/controller/AlarmController.java
@@ -0,0 +1,48 @@
+package com.example.springboot.controller;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.example.springboot.common.Result;
+import com.example.springboot.entity.alarmmg;
+import com.example.springboot.mapper.AlarmMapper;
+import com.example.springboot.service.AlarmService;
+import com.microsoft.schemas.office.office.STInsetMode;
+
+@RestController
+@RequestMapping("/alarm")
+public class AlarmController {
+  @Autowired
+  AlarmMapper alarmMapper;
+
+  @Autowired
+  AlarmService alarmService;
+
+  @GetMapping("/load")
+  public Result selectAll() {// 鏌ヨ褰撳ぉ宸茬粨鏉熺殑鎶ヨ淇℃伅
+
+    Map<String, Object> map = new HashMap<>();
+    List<alarmmg> storageCagelist = alarmMapper.selectAll();
+    map.put("list", storageCagelist);
+    return Result.success(map);
+  }
+
+  @GetMapping("/stTime")
+  public Result selecttime(String shijian1, String shijian2) {// 鏍规嵁鏃ユ湡鏌ヨ鎶ヨ淇℃伅
+    // 灏唃et鏂规硶浼犺繃鏉ョ殑鍙傛暟涓�"#20"鏇挎崲涓�" "
+    String sj1 = shijian1.replace("#20", " ");
+    String sj2 = shijian2.replace("#20", " ");
+    List<alarmmg> storageCagelist = alarmMapper.selecttime(sj1, sj2);
+    Map<String, Object> map = new HashMap<>();
+    map.put("list", storageCagelist);
+    return Result.success(map);
+
+  }
+
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/CategoryController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/CategoryController.java
new file mode 100644
index 0000000..3ecf88b
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/controller/CategoryController.java
@@ -0,0 +1,97 @@
+package com.example.springboot.controller;
+
+import cn.hutool.core.collection.CollectionUtil;
+import com.example.springboot.security.util.SecurityUtil;
+import com.example.springboot.service.CategoryService;
+import com.example.springboot.entity.Category;
+import com.example.springboot.entity.vo.CategoryVo;
+import com.example.springboot.entity.vo.Result;
+import com.example.springboot.service.UserService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@Slf4j
+@Api(tags = "鍒嗙被")
+@RequestMapping("/api/category")
+public class CategoryController {
+    @Autowired
+    private CategoryService categoryService;
+    @Autowired
+    private UserService userService;
+
+    @ApiOperation(value = "鍒嗛〉鏌ヨ鍒嗙被")
+    @GetMapping("/selectPage")
+    @RequiresPermissions({"category:select"})
+    public Result selectPage(CategoryVo categoryVO) {
+        return Result.success(categoryService.selectPage(categoryVO));
+    }
+
+    @ApiOperation(value = "鍗曚釜鍒犻櫎鍒嗙被")
+    @PostMapping("/removeById")
+    @RequiresPermissions({"category:delete"})
+    public Result removeById(@RequestBody CategoryVo categoryVO) {
+        List<Category> categories = categoryService.selectList(categoryVO.getId(), false);
+        if (CollectionUtil.isNotEmpty(categories)) return Result.fail("璇ュ垎绫讳笅鍚湁瀛愰泦,涓嶅彲浠ュ垹闄�");
+        List<Long> longs = userService.selectChild(SecurityUtil.getCurrentUser().getId(), true);
+        boolean remove = categoryService.lambdaUpdate()
+                .in(Category::getCreator, longs)
+                .eq(Category::getId, categoryVO.getId())
+                .remove();
+        if (remove) log.info("鐢ㄦ埛id{}鍒犻櫎鍒嗙被{}", SecurityUtil.getCurrentUser().getId(), categoryVO.getName());
+        return Result.success();
+    }
+
+    @ApiOperation(value = "淇敼鎴栬�呮洿鏂板垎绫�")
+    @PostMapping("/saveOrUpdate")
+    @RequiresPermissions({"category:update", "category:add"})
+    public Result saveOrUpdate(@RequestBody Category category) {
+        List<Long> longs = userService.selectChild(SecurityUtil.getCurrentUser().getId(), true);
+        Integer count = categoryService.lambdaQuery()
+                .eq(Category::getName, category.getName())
+                .in(Category::getCreator, longs)
+                .ne(category.getId() != null, Category::getId, category.getId())
+                .count();
+        if (count > 0) return Result.fail("璇ュ垎绫诲悕绉板凡瀛樺湪");
+        category.setCreator(category.getId() == null ? SecurityUtil.getCurrentUser().getId() : null);
+        categoryService.saveOrUpdate(category);
+        return Result.success();
+    }
+
+    @ApiOperation(value = "鏌ヨ鏌愪汉鍒涘缓鐨勫垎绫伙紝浣嗘槸鎺掗櫎褰撳墠閫変腑鐨勫垎绫伙紝鐢ㄦ埛淇敼鍒嗙被浣跨敤")
+    @GetMapping("/select")
+    @RequiresPermissions({"category:select"})
+    public Result select(Category category) {
+        List<Category> categories = categoryService.lambdaQuery()
+                .ne(category.getId() != null, Category::getId, category.getId())
+                .eq(Category::getCreator, SecurityUtil.getCurrentUser().getId())
+                .list();
+        return Result.success(categories);
+    }
+
+    @ApiOperation(value = "鏌ヨ鍒嗙被锛屽祵濂楁暟鎹粨鏋�")
+    @GetMapping("/selectChilds")
+    @RequiresPermissions({"category:select"})
+    public Result selectChilds(Category category) {
+        return Result.success(categoryService.selectChilds(SecurityUtil.getCurrentUser().getId()));
+    }
+
+    @ApiOperation(value = "閫氳繃id鏌ヨ鍒嗙被")
+    @GetMapping("/getById")
+    @RequiresPermissions({"category:select"})
+    public Result getById(Category category) {
+        Category one = categoryService.lambdaQuery().eq(Category::getCreator, SecurityUtil.getCurrentUser().getId())
+                .eq(Category::getId, category.getId()).one();
+        return Result.success(one);
+    }
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/DefaultController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/DefaultController.java
new file mode 100644
index 0000000..76d6d6a
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/controller/DefaultController.java
@@ -0,0 +1,103 @@
+package com.example.springboot.controller;
+
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.example.springboot.security.util.JwtUtil;
+import com.example.springboot.security.util.SecurityUtil;
+import com.example.springboot.entity.User;
+import com.example.springboot.entity.vo.Result;
+import com.example.springboot.entity.vo.UserVo;
+import com.example.springboot.security.constant.SystemConstant;
+import com.example.springboot.service.UserService;
+import com.example.springboot.util.ValidatorUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authc.DisabledAccountException;
+import org.apache.shiro.authc.ExcessiveAttemptsException;
+import org.apache.shiro.authc.ExpiredCredentialsException;
+import org.apache.shiro.authc.IncorrectCredentialsException;
+import org.apache.shiro.authc.LockedAccountException;
+import org.apache.shiro.authc.UnknownAccountException;
+import org.apache.shiro.authc.UsernamePasswordToken;
+import org.apache.shiro.authz.UnauthorizedException;
+import org.apache.shiro.crypto.hash.SimpleHash;
+import org.apache.shiro.util.ByteSource;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+
+@RestController
+
+@Slf4j
+@Api(tags = "鐧诲綍鍜屾敞鍐�")
+public class DefaultController {
+    @Autowired
+    private UserService userService;
+
+    @ApiOperation(value = "娉ㄥ唽鐢ㄦ埛")
+    @PostMapping("/register")
+    public Result register(@RequestBody User user) {
+        // 鏍¢獙鍙傛暟
+        if (StringUtils.isNotEmpty(user.getEmail())) {
+            ValidatorUtil.validateEntity(user);
+        }
+
+        Integer integer = userService.countByUsername(user.getUsername());
+        if (integer > 0) return Result.fail("鐢ㄦ埛鍚嶅凡缁忓瓨鍦�");
+        // 閫氳繃shiro榛樿鐨勫姞瀵嗗伐鍏风被涓烘敞鍐岀敤鎴风殑瀵嗙爜杩涜鍔犲瘑
+        Object salt = ByteSource.Util.bytes(SystemConstant.JWT_SECRET_KEY);
+        String md5 = new SimpleHash("MD5", user.getPassword(), salt, 1024).toHex();
+        user.setPassword(md5);
+        userService.saveOrUpdate(user);
+        return Result.success();
+    }
+
+    @ApiOperation(value = "鐧诲綍")
+
+    @PostMapping("/login")
+    public Result login(@RequestBody UserVo userVO) {
+        ValidatorUtil.validateEntity(userVO);
+        if (!SecurityUtils.getSubject().isAuthenticated()) {
+            UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(userVO.getUsername(), userVO.getPassword(), true);
+            try {
+                // shiro楠岃瘉鐢ㄦ埛鍚嶅瘑鐮�
+                SecurityUtils.getSubject().login(usernamePasswordToken);
+                // 鐢熸垚token
+                String token = JwtUtil.createToken(userVO.getUsername(), false);
+                // 灏嗙敤鎴锋埛鍚嶅拰token杩斿洖
+                HashMap<String, String> map = new HashMap<>();
+                map.put("username", userVO.getUsername());
+                map.put("Authorization", token);
+                map.put("role_id", SecurityUtil.getCurrentUser().getRoleId().toString());
+                return Result.success(map);
+            } catch (IncorrectCredentialsException e) {
+                return Result.fail("鐧诲綍瀵嗙爜閿欒");
+            } catch (ExcessiveAttemptsException e) {
+                return Result.fail("鐧诲綍澶辫触娆℃暟杩囧");
+            } catch (LockedAccountException e) {
+                return Result.fail("甯愬彿宸茶閿佸畾");
+            } catch (DisabledAccountException e) {
+                return Result.fail("甯愬彿宸茶绂佺敤");
+            } catch (ExpiredCredentialsException e) {
+                return Result.fail("璇烽噸鏂扮櫥褰�");
+
+            } catch (UnknownAccountException e) {
+                return Result.fail("甯愬彿涓嶅瓨鍦�");
+            } catch (UnauthorizedException e) {
+                return Result.fail("鎮ㄦ病鏈夊緱鍒扮浉搴旂殑鎺堟潈");
+            } catch (Exception e) {
+                e.printStackTrace();
+                return Result.fail("鐧诲綍澶辫触锛侊紒锛�");
+            }
+        }
+        return Result.fail("浣犲凡缁忕櫥褰曚簡");
+    }
+
+    @ApiOperation(value = "娉ㄥ唽鏃舵牎楠岀敤鎴峰悕鏄惁瀛樺湪")
+    @GetMapping("/countUsername")
+    public Result countUsername(String username) {
+        return Result.success(userService.countByUsername(username));
+    }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
index 9e66cf1..b55acfa 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
@@ -19,6 +19,8 @@
 import com.example.springboot.entity.alarmmg;
 import com.example.springboot.entity.north_glass_buffer1;
 import com.example.springboot.entity.Out_slice;
+import com.example.springboot.entity.Queue;
+
 import org.springframework.web.bind.annotation.*;
 
 
@@ -61,21 +63,6 @@
     map.put("list2", storageCagelist2);
     map.put("list3", storageCagelist3);
     map.put("list4", storageCagelist4);
-    return Result.success(map);
-  }
-
-  // 鏌ヨ杩�/鍑虹墖浠诲姟
-  @GetMapping("/loadinout")
-  public Result selectinout(Integer types) throws SQLException{
-    List<StorageCage> storageCageinout = homeMapper.selectinout(types);
-    
-    for (StorageCage storageCage : storageCageinout) {
-      storageCage.setnorth_glass_buffer1s(jdbcConnections.SelectGlassByGlassIdOrderIdFrameId(storageCage.getGlassId(), "", ""));
-      // storageCage.setnorth_glass_buffer1s(homeMapper.SelectBoxNo(storageCage.getGlassId()));
-    }
-    
-    Map<String, Object> map = new HashMap<>();
-    map.put("list", storageCageinout);
     return Result.success(map);
   }
 
@@ -146,11 +133,6 @@
   @GetMapping("/SelectCageInfo")
   public Result SelectCageInfo(short cage) throws SQLException {
     List<StorageCage> cageinfo = homeMapper.SelectCageInfo(cage);
-    for (StorageCage storageCage : cageinfo) {
-      // storageCage.setnorth_glass_buffer1s(homeMapper.SelectBoxNo(storageCage.getGlassId()));
-      storageCage.setnorth_glass_buffer1s(jdbcConnections.SelectGlassByGlassIdOrderIdFrameId(storageCage.getGlassId(), "", ""));
-      
-    }
     Map<String, Object> map = new HashMap<>();
     map.put("cageinfo", cageinfo);
     return Result.success(map);
@@ -209,13 +191,10 @@
   @GetMapping("/SelectGlassByGlassID")
   public Result SelectGlassByGlassID(String glassid) throws SQLException {
     // north_glass_buffer1 north_glass_buffer1s = homeMapper.SelectGlassByGlassID(glassid);
-    
-    north_glass_buffer1 north_glass_buffer1s=jdbcConnections.SelectGlassByGlassIdOrderIdFrameId(glassid, "", "");
+    Queue queue=jdbcConnections.SelectGlassByGlassIdOrderIdFrameIdQueue(glassid, "", "");
     Map<String, Object> map = new HashMap<>();
     if(glassid!=""){
-      
-    map.put("form", north_glass_buffer1s);
-    
+      map.put("form", queue);
     }
     return Result.success(map);
   }
@@ -231,14 +210,14 @@
 
   // 鎵嬪姩寰�鐞嗙墖绗兼坊鍔犵幓鐠�
   @PostMapping("/Inglassid")
-  public Result Inglassid(short cage, short cell, short tier, @RequestBody north_glass_buffer1 north_glass_buffer1s) {
+  public Result Inglassid(short cage, short cell, short tier, @RequestBody Queue queue) {
     Map<String, Object> map = new HashMap<>();
-    short result = homeMapper.SelectStorageByGlassId(north_glass_buffer1s.getbarcode());
+    short result = homeMapper.SelectStorageByGlassId(queue.getglassId());
     if (result > 0) {
       map.put("message", "300");
     } else {
-      homeMapper.Inglassid(north_glass_buffer1s, cage, cell, tier);
-      spianMapper.UpdataAddCage1(north_glass_buffer1s.getglasslengthmm(), cage, cell);
+      homeMapper.Inglassid(queue, cage, cell, tier);
+      spianMapper.UpdataAddCage1(queue.getglasswidth(), cage, cell);
     }
     return Result.success(map);
   }
@@ -254,15 +233,15 @@
 
   // 鎵嬪姩娣诲姞鎵爜浣嶇幓鐠�
   @PostMapping("/InsertQueueGlassId")
-  public Result InsertQueueGlassId(String glassid, Short id) {
+  public Result InsertQueueGlassId(Short id,@RequestBody Queue queue) {
     Map<String, Object> map = new HashMap<>();
-    short result = homeMapper.SelectStorageByGlassId(glassid);
+    short result = homeMapper.SelectStorageByGlassId(queue.getglassId());
     if (result > 0) {
       map.put("message", "300");
     } else {
-      homeMapper.InsertQueueGlassId(glassid, id);
+      homeMapper.InsertQueueGlassId(queue, id);
     //璋冪敤浼嶅瓨鍌ㄨ繃绋�
-    spianService.selectAll(glassid);
+    spianService.selectAll(queue.getglassId());
       map.put("message", "200");
     }
     return Result.success(map);
diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/MenuListController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/MenuListController.java
new file mode 100644
index 0000000..d2b9a90
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/controller/MenuListController.java
@@ -0,0 +1,72 @@
+package com.example.springboot.controller;
+
+import cn.hutool.core.collection.CollectionUtil;
+import com.example.springboot.security.util.SecurityUtil;
+import com.example.springboot.entity.MenuList;
+import com.example.springboot.entity.vo.MenuListVo;
+import com.example.springboot.entity.vo.Result;
+import com.example.springboot.service.MenuListService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.apache.shiro.authz.annotation.RequiresRoles;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@Slf4j
+@Api(tags = "鑿滃崟")
+@RequestMapping("/api/menuList")
+public class MenuListController {
+    @Autowired
+    private MenuListService menuListService;
+
+    @ApiOperation(value = "鏌ヨ鑿滃崟鍒楄〃")
+    @GetMapping("/selectList")
+    @RequiresPermissions({"menuList:select"})
+    public Result selectList(MenuList menuList) {
+        return Result.success(menuListService.selectList(SecurityUtil.getCurrentUser().getRoleId()));
+    }
+
+    @ApiOperation(value = "鍒嗛〉鏌ヨ鑿滃崟")
+    @GetMapping("/selectPage")
+    @RequiresRoles({"admin"})
+    @RequiresPermissions({"menuList:select"})
+    public Result selectPage(MenuListVo MenuListVO) {
+        return Result.success(menuListService.selectPage(MenuListVO));
+    }
+
+    @ApiOperation(value = "鏍规嵁id鍒犻櫎鑿滃崟")
+    @PostMapping("/removeById")
+    @RequiresRoles({"admin"})
+    @RequiresPermissions({"menuList:delete"})
+    public Result removeById(@RequestBody MenuListVo MenuListVO) {
+        menuListService.removeById(MenuListVO.getId());
+        return Result.success();
+    }
+
+    @ApiOperation(value = "娣诲姞鎴栬�呮洿鏂拌彍鍗�")
+    @PostMapping("/saveOrUpdate")
+    @RequiresRoles({"admin"})
+    @RequiresPermissions({"menuList:add", "menuList:update"})
+    public Result saveOrUpdate(@RequestBody MenuList menuList) {
+        List<MenuList> menuLists = menuListService.lambdaQuery()
+                .eq(MenuList::getName, menuList.getName())
+                .or()
+                .eq(MenuList::getRouter, menuList.getRouter())
+                .ne(menuList.getId() != null, MenuList::getId, menuList.getId())
+                .list();
+        if (CollectionUtil.isNotEmpty(menuLists)) {
+            return Result.fail("鑿滃崟鍚嶇О鎴栬�呰矾鐢卞凡瀛樺湪");
+        }
+        menuListService.saveOrUpdate(menuList);
+        return Result.success();
+    }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/PermissionController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/PermissionController.java
new file mode 100644
index 0000000..c650bd9
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/controller/PermissionController.java
@@ -0,0 +1,40 @@
+package com.example.springboot.controller;
+
+import com.example.springboot.entity.vo.PermissionVo;
+import com.example.springboot.entity.vo.Result;
+import com.example.springboot.service.PermissionService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.apache.shiro.authz.annotation.RequiresRoles;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@Slf4j
+@Api(tags = "鏉冮檺")
+@RequestMapping("/api/permission")
+public class PermissionController {
+
+    @Autowired
+    private PermissionService permissionService;
+
+    @ApiOperation(value = "鏍规嵁id鏌ヨ鏉冮檺")
+    @GetMapping("/getById")
+    @RequiresRoles({"admin"})
+    @RequiresPermissions({"permission:select"})
+    public Result getById(PermissionVo permissionVO) {
+        return Result.success(permissionService.getById(permissionVO.getId()));
+    }
+
+    @ApiOperation(value = "鏌ヨ鏉冮檺鍒楄〃")
+    @GetMapping("/select")
+    @RequiresRoles({"admin"})
+    @RequiresPermissions({"permission:select"})
+    public Result select(PermissionVo permissionVO) {
+        return Result.success(permissionService.lambdaQuery().list());
+    }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/RoleController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/RoleController.java
new file mode 100644
index 0000000..f108103
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/controller/RoleController.java
@@ -0,0 +1,75 @@
+package com.example.springboot.controller;
+
+import com.example.springboot.entity.Role;
+import com.example.springboot.entity.vo.Result;
+import com.example.springboot.entity.vo.RoleVo;
+import com.example.springboot.service.RoleService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.apache.shiro.authz.annotation.RequiresRoles;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@Slf4j
+@Api(tags = "瑙掕壊")
+@RequestMapping("/api/role")
+public class RoleController {
+    @Autowired
+    private RoleService roleService;
+
+    @ApiOperation(value = "娣诲姞鎴栬�呮洿鏂拌鑹�")
+    @PostMapping("/saveOrUpdate")
+    @RequiresRoles({"admin"})
+    @RequiresPermissions({"role:add", "role:update"})
+    public Result saveOrUpdate(@RequestBody Role role) {
+        Integer count = roleService.lambdaQuery().eq(Role::getName, role.getName())
+                .ne(role.getId() != null, Role::getId, role.getId())
+                .count();
+        if (count > 0) return Result.fail("宸插瓨鍦ㄨ瑙掕壊鍚嶇О");
+        roleService.saveOrUpdate(role);
+        return Result.success();
+    }
+
+
+    @ApiOperation(value = "鏍规嵁id鍒犻櫎瑙掕壊")
+    @PostMapping("/removeById")
+    @RequiresRoles({"admin"})
+    @RequiresPermissions({"role:delete"})
+    public Result removeById(@RequestBody RoleVo roleVO) {
+        roleService.removeById(roleVO.getId());
+        return Result.success();
+    }
+
+    @ApiOperation(value = "鏍规嵁id鏌ヨ瑙掕壊")
+    @GetMapping("/getById")
+    @RequiresRoles({"admin"})
+    @RequiresPermissions({"role:select"})
+    public Result getById(Role role) {
+        return Result.success(roleService.getById(role.getId()));
+    }
+
+
+
+    @ApiOperation(value = "鍒嗛〉鏌ヨ瑙掕壊")
+    @GetMapping("/selectPage")
+    @RequiresRoles({"admin"})
+    @RequiresPermissions({"role:select"})
+    public Result selectPage(RoleVo roleVO) {
+        return Result.success(roleService.selectPage(roleVO));
+    }
+
+    @ApiOperation(value = "鏌ヨ瑙掕壊鍒楄〃")
+    @GetMapping("/select")
+    @RequiresRoles({"admin"})
+    @RequiresPermissions({"role:select"})
+    public Result select(RoleVo roleVO) {
+        return Result.success(roleService.lambdaQuery().list());
+    }
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/RoleMenuListController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/RoleMenuListController.java
new file mode 100644
index 0000000..8c47976
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/controller/RoleMenuListController.java
@@ -0,0 +1,29 @@
+package com.example.springboot.controller;
+
+import com.example.springboot.entity.vo.Result;
+import com.example.springboot.entity.vo.RoleMenuListVo;
+import com.example.springboot.service.RoleMenuListService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.authz.annotation.RequiresRoles;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@Slf4j
+@Api(tags = "瑙掕壊鍜岃彍鍗曞叧绯�")
+@RequestMapping("/api/roleMenuList")
+public class RoleMenuListController {
+    @Autowired
+    private RoleMenuListService roleMenuListService;
+
+    @ApiOperation(value = "鍒嗛〉鏌ヨ瑙掕壊鍜岃彍鍗曞叧绯�")
+    @GetMapping("/selectPage")
+    @RequiresRoles({"admin"})
+    public Result selectPage(RoleMenuListVo roleMenuListVO) {
+        return Result.success(roleMenuListService.selectPage(roleMenuListVO));
+    }
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/RolePermissionController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/RolePermissionController.java
new file mode 100644
index 0000000..32044f9
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/controller/RolePermissionController.java
@@ -0,0 +1,168 @@
+package com.example.springboot.controller;
+
+import com.example.springboot.entity.*;
+import com.example.springboot.entity.vo.Result;
+import com.example.springboot.entity.vo.RolePermissionVo;
+import com.example.springboot.mapper.RolePermissionMapper;
+import com.example.springboot.service.PermissionService;
+import com.example.springboot.service.RolePermissionService;
+import com.example.springboot.service.RoleService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.apache.shiro.authz.annotation.RequiresRoles;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@Slf4j
+@Api(tags = "瑙掕壊鍜屾潈闄愬叧绯�")
+@RequestMapping("/api/rolePermission")
+public class RolePermissionController {
+    @Autowired
+    private RolePermissionService rolePermissionService;
+    @Autowired
+    private RoleService roleService;
+    @Autowired
+    private PermissionService permissionService;
+
+
+
+        @ApiOperation(value = "娣诲姞鎴栬�呮洿鏂拌鑹插拰鏉冮檺鍏崇郴")
+        @PostMapping("/saveOrUpdate")
+        @RequiresPermissions({"rolePermission:add"})
+        @RequiresRoles({"admin"})
+        public Result saveOrUpdate(@RequestBody RolePermission rolePermission) {
+            Integer count = rolePermissionService.lambdaQuery()
+                    .eq(RolePermission::getRoleId, rolePermission.getRoleId())
+                    .eq(RolePermission::getPermissionId, rolePermission.getPermissionId())
+                    .ne(rolePermission.getId() != null, RolePermission::getId, rolePermission.getId())
+                    .count();
+            if (count > 0) return Result.fail("鎺堟潈宸插瓨鍦�");
+            rolePermissionService.saveOrUpdate(rolePermission);
+            return Result.success();
+        }
+
+        @ApiOperation(value = "鏍规嵁id鍒犻櫎瑙掕壊鍜屾潈闄愬叧绯�")
+        @PostMapping("/removeById")
+        @RequiresPermissions({"rolePermission:delete"})
+        @RequiresRoles({"admin"})
+        public Result removeById(@RequestBody RolePermissionVo rolePermissionVO) {
+            rolePermissionService.removeById(rolePermissionVO.getId());
+            return Result.success();
+        }
+
+        @ApiOperation(value = "鍒嗛〉鏌ヨ瑙掕壊鍜屾潈闄愬叧绯�")
+        @GetMapping("/selectPage")
+        @RequiresRoles({"admin"})
+        @RequiresPermissions({"rolePermission:select"})
+        public Result selectPage(RolePermissionVo rolePermissionVO) {
+            return Result.success(rolePermissionService.selectPage(rolePermissionVO));
+        }
+
+        @ApiOperation(value = "鏍规嵁id鏌ヨ瑙掕壊鍜屾潈闄愬叧绯�")
+        @GetMapping("/getById")
+        @RequiresRoles({"admin"})
+        @RequiresPermissions({"rolePermission:select"})
+        public Result getById(RolePermissionVo rolePermissionVO) {
+            RolePermission rolePermission = rolePermissionService.getById(rolePermissionVO.getId());
+            if (rolePermission != null) {
+                Role role = roleService.getById(rolePermission.getRoleId());
+                Permission permission = permissionService.getById(rolePermission.getPermissionId());
+                rolePermission.setRole(role);
+                rolePermission.setPermission(permission);
+            }
+            return Result.success(rolePermission);
+
+
+
+
+
+        }
+    @Autowired
+    private JdbcTemplate jdbcTemplate;
+
+    @Autowired RolePermissionMapper RolePermissionMapper;
+    ;
+
+
+    @GetMapping("/getByRoleId")
+    public com.example.springboot.common.Result selectquanxian(@RequestParam("roleId") int roleId) {
+        List<Map<String, Object>> resultSet = RolePermissionMapper.selectquanxian(roleId);
+
+        List<Map<String, Object>> permissions = new ArrayList<>();
+        for (Map<String, Object> result : resultSet) {
+
+            Long role_id2 = (Long) result.get("role_id");
+            int state = (int) result.get("state");
+            Long permission_id = (Long) result.get("permission_id"); // 娉ㄦ剰杩欓噷鐨勭被鍨嬫槸Long
+            String permissionName = (String) result.get("name");
+
+            Map<String, Object> permission = new HashMap<>();
+            permission.put("roleId", role_id2.intValue());
+            permission.put("name", permissionName);
+            permission.put("permission_id", permission_id.intValue()); // 灏哃ong绫诲瀷杞崲涓篿nt绫诲瀷
+            permission.put("state", state);
+            permissions.add(permission);
+        }
+
+        Map<String, Object> map = new HashMap<>();
+        map.put("permissionList", permissions);
+        return com.example.springboot.common.Result.success(map);
+    }
+
+
+    @PostMapping("/savePermissions")
+    public Result savePermissions(@RequestBody Map<String, Object> requestBody) {
+        try {
+            // 鑾峰彇鏉冮檺鏁版嵁鍒楄〃
+            List<Map<String, Object>> permissions = (List<Map<String, Object>>) requestBody.get("permissions");
+            // 閬嶅巻鎺ユ敹鍒扮殑鏉冮檺鏁版嵁
+            for (Map<String, Object> permission : permissions) {
+                // 鑾峰彇鏉冮檺椤圭殑roleId銆乶ame銆乻tate鍜宲ermission_id
+                int roleId = (int) permission.get("roleId");
+                String name = (String) permission.get("name");
+                int state = (int) permission.get("state");
+                int permissionId = (int) permission.get("permission_id");
+
+                // 鏍规嵁roleId鍜宲ermissionId鏌ヨ鏄惁宸插瓨鍦ㄨ鏉冮檺璁板綍
+                boolean exists = RolePermissionMapper.checkExists(roleId, permissionId);
+
+                if (exists) {
+                    // 濡傛灉宸插瓨鍦ㄨ鏉冮檺璁板綍锛屽垯鏇存柊鐘舵��
+                    RolePermissionMapper.updateState(roleId, permissionId, state);
+                } else {
+                    // 濡傛灉涓嶅瓨鍦ㄨ鏉冮檺璁板綍锛屽垯鏂板涓�鏉℃潈闄愯褰�
+                    RolePermissionMapper.insert(roleId, permissionId, state);
+                }
+            }
+
+            return Result.success(); // 鎴愬姛淇濆瓨鏉冮檺鍚庤繑鍥炵粨鏋�
+        } catch (Exception e) {
+            e.printStackTrace();
+            return Result.fail("淇濆瓨鏉冮檺澶辫触"); // 淇濆瓨鏉冮檺澶辫触鏃惰繑鍥為敊璇俊鎭�
+        }
+    }
+
+
+
+
+
+
+
+}
+
+
+
+
+
+
+
+
diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/SpianController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/SpianController.java
new file mode 100644
index 0000000..7ab5b9a
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/controller/SpianController.java
@@ -0,0 +1,46 @@
+package com.example.springboot.controller;
+
+import com.example.springboot.mapper.SpianMapper;
+import com.example.springboot.service.SpianService;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@RestController
+@RequestMapping("/spian")
+
+ 
+public class SpianController {
+    
+    @Autowired
+    SpianMapper spianMapper;
+    @Autowired
+    SpianService spianservice;
+    //鍑虹墖浠诲姟
+@GetMapping("/all2")
+    public void selectdd(String orderid){
+       SpianService service=new SpianService();
+       service.selectout(orderid);
+    
+}
+
+   @GetMapping("/all")
+   //杩涚墖浠诲姟,浼犺鍗昳d
+   //鎸夎鍗曚紭鍏堣繘鐗�
+    public void selectAll(Short glassid){
+       SpianService service=new SpianService();
+       service.selectAll(Short.toString(glassid));
+      
+    }
+    
+
+ 
+
+
+
+
+}   
diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/UserController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/UserController.java
new file mode 100644
index 0000000..a40ae9e
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/controller/UserController.java
@@ -0,0 +1,179 @@
+package com.example.springboot.controller;
+
+import com.example.springboot.security.constant.SystemConstant;
+import com.example.springboot.security.util.SecurityUtil;
+import com.example.springboot.entity.User;
+import com.example.springboot.entity.vo.Result;
+import com.example.springboot.entity.vo.UserVo;
+import com.example.springboot.service.UserService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authz.annotation.RequiresAuthentication;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.apache.shiro.authz.annotation.RequiresRoles;
+import org.apache.shiro.crypto.hash.SimpleHash;
+import org.apache.shiro.util.ByteSource;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@RestController
+@Slf4j
+@RequestMapping("/api/user")
+@Api(tags = "鐢ㄦ埛")
+public class UserController {
+    @Autowired
+    private UserService userService;
+
+
+    @ApiOperation(value = "淇敼瀵嗙爜")
+    @PostMapping("/changePassword")
+    @RequiresAuthentication
+    public Result changePassword(@RequestBody Map<String, String> request) {
+        User currentUser = SecurityUtil.getCurrentUser();
+        String oldPassword = request.get("oldPassword");
+        String newPassword = request.get("newPassword");
+
+        // 鏍¢獙鏃у瘑鐮佹槸鍚︽纭�
+        if (!verifyPassword(currentUser, oldPassword)) {
+            return Result.fail("鏃у瘑鐮佷笉姝g‘");
+        }
+
+        // 鏇存柊瀵嗙爜
+        updatePassword(currentUser, newPassword);
+
+        return Result.success("瀵嗙爜淇敼鎴愬姛");
+    }
+    /**
+     * 楠岃瘉瀵嗙爜鏄惁姝g‘
+     */
+    private boolean verifyPassword(User user, String password) {
+        Object salt = ByteSource.Util.bytes(SystemConstant.JWT_SECRET_KEY);
+        String md5 = new SimpleHash("MD5", password, salt, 1024).toHex();
+        return md5.equals(user.getPassword());
+    }
+
+    /**
+     * 鏇存柊瀵嗙爜
+     */
+    private void updatePassword(User user, String newPassword) {
+        Object salt = ByteSource.Util.bytes(SystemConstant.JWT_SECRET_KEY);
+        String md5 = new SimpleHash("MD5", newPassword, salt, 1024).toHex();
+        user.setPassword(md5);
+        userService.saveOrUpdate(user);
+    }
+
+    @ApiOperation(value = "閲嶇疆瀵嗙爜")
+    @PostMapping("/resetPass")
+    @RequiresRoles({"admin"})
+
+    public Result resetPassword(@RequestBody UserVo userVO) {
+        User user = userService.getById(userVO.getId());
+        if (user == null) {
+            return Result.fail("鐢ㄦ埛涓嶅瓨鍦�");
+        }
+
+        // 鐢熸垚榛樿瀵嗙爜
+        String newPassword = "123456";
+
+        // 鏇存柊瀵嗙爜
+        updatePassword(user, newPassword);
+
+        return Result.success("瀵嗙爜閲嶇疆鎴愬姛锛屾柊瀵嗙爜涓猴細" + newPassword);
+    }
+
+    /**
+     * 鏇存柊瀵嗙爜
+     */
+
+
+
+    @ApiOperation(value = "鍒嗛〉鏌ヨ鐢ㄦ埛")
+    @GetMapping("/selectPage")
+//    @RequiresRoles({"admin"})
+    @RequiresPermissions({"user:select"})
+    public Result selectPage(UserVo userVO) {
+        return Result.success(userService.selectPage(userVO));
+    }
+
+    @ApiOperation(value = "娣诲姞鎴栦慨鏀圭敤鎴�")
+    @PostMapping("/saveOrUpdate")
+    @RequiresRoles({"admin"})
+    @RequiresPermissions({"user:update", "user:add"})
+    public Result saveOrUpdate(@RequestBody User user) {
+        if ("admin".equals(user.getUsername())) {
+            return Result.fail("绠$悊鍛樹笉鍙互琚鐢�");
+        }
+        Integer count = userService.lambdaQuery()
+                .eq(User::getUsername, user.getUsername())
+                .ne(user.getId() != null, User::getId, user.getId())
+                .count();
+        if (count > 0) {
+            return Result.fail("鐢ㄦ埛鍚嶅凡瀛樺湪");
+        }
+
+        // 濡傛灉瀵嗙爜鏈慨鏀癸紝鍒欎笉杩涜鍔犲瘑鎿嶄綔
+        if (user.getId() != null) {
+            User existingUser = userService.getById(user.getId());
+            if (existingUser != null && existingUser.getPassword().equals(user.getPassword())) {
+                user.setPassword(existingUser.getPassword());
+            } else {
+                // 瀵嗙爜鍙戠敓浜嗗彉鍖栵紝杩涜鍔犲瘑鎿嶄綔
+                Object salt = ByteSource.Util.bytes(SystemConstant.JWT_SECRET_KEY);
+                String md5 = new SimpleHash("MD5", user.getPassword(), salt, 1024).toHex();
+                user.setPassword(md5);
+            }
+        }
+
+        userService.saveOrUpdate(user);
+        return Result.success();
+    }
+
+    @ApiOperation(value = "閫氳繃id鍒犻櫎鐢ㄦ埛")
+    @PostMapping("/removeById")
+    @RequiresRoles({"admin"})
+    @RequiresPermissions({"user:delete"})
+    public Result removeById(@RequestBody UserVo userVO) {
+        userService.removeById(userVO.getId());
+        return Result.success();
+    }
+
+    @ApiOperation(value = "閫氳繃id鏌ヨ鐢ㄦ埛")
+    @GetMapping("/getById")
+    @RequiresPermissions({"user:select"})
+    public Result selectById(UserVo userVO) {
+        return Result.success(userService.getById(userVO.getId()));
+    }
+
+
+
+    @ApiOperation(value = "娉ㄩ攢鐧诲綍锛屽墠鎻愭槸鍦ㄧ櫥褰曠姸鎬�")
+    @PostMapping("/loginOut")
+    public Result loginOut() {
+        User currentUser = SecurityUtil.getCurrentUser();
+        if (currentUser == null) {
+            return Result.fail("鎮ㄦ殏鏈櫥褰�");
+        }
+        SecurityUtils.getSubject().logout();
+        return Result.success("娉ㄩ攢鎴愬姛");
+    }
+
+    private class UpdatePasswordRequest {
+    }
+
+
+
+
+
+
+
+
+
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/device/DeviceController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/device/DeviceController.java
new file mode 100644
index 0000000..86c397e
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/controller/device/DeviceController.java
@@ -0,0 +1,43 @@
+package com.example.springboot.controller.device;
+
+
+
+import com.example.springboot.service.device.DeviceService;
+import com.example.springboot.entity.device.DeviceEntity;
+import com.example.springboot.entity.vo.Result;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/api/device") // 淇敼璇锋眰璺緞涓� "/api/device"
+public class DeviceController {
+
+    private final DeviceService deviceService;
+
+    @Autowired
+    public DeviceController(DeviceService deviceService) {
+        this.deviceService = deviceService;
+    }
+
+    @GetMapping("/getAllDevices")  // 淇敼鎺ュ彛璺緞涓� "/getAllDevices"
+    public Result getAllDevices() {
+        List<DeviceEntity> devices = deviceService.getAllDevices();
+        return Result.success(devices);
+    }
+
+    @PostMapping("/updateDeviceName")  // 淇敼鎺ュ彛璺緞涓� "/updateDeviceName"
+    public Result updateDeviceName(@RequestBody DeviceEntity device) {
+        deviceService.updateDeviceName(device);
+        return Result.success();
+    }
+    @PostMapping("/call-stored-proc")
+    public Result  callStoredProc(@RequestBody DeviceEntity device) {
+        List<DeviceEntity> result = deviceService.callStoredProc(device); // 鑾峰彇澶氳鏌ヨ缁撴灉
+        return Result.success(result); // 杩斿洖鍖呭惈澶氳缁撴灉鐨� Result 瀵硅薄
+    }
+
+}
+
+
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/BaseEntity.java b/springboot-vue3/src/main/java/com/example/springboot/entity/BaseEntity.java
new file mode 100644
index 0000000..698d86d
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/BaseEntity.java
@@ -0,0 +1,19 @@
+package com.example.springboot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class BaseEntity {
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty("涓婚敭")
+    private Long id;
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    private Date createTime;
+    @ApiModelProperty("鏇存柊鏃堕棿")
+    private Date updateTime;
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/CarPosition.java b/springboot-vue3/src/main/java/com/example/springboot/entity/CarPosition.java
new file mode 100644
index 0000000..c307c00
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/CarPosition.java
@@ -0,0 +1,32 @@
+package com.example.springboot.entity;
+
+public class CarPosition {
+    public int carid;
+    public int start;
+    public int end;
+
+    public void setcarId(Integer carid) {
+        this.carid = carid;
+    }
+
+    public Integer getcarId() {
+        return carid;
+    }
+
+    public void setStart(Integer start) {
+        this.start = start;
+    }
+
+    public Integer getStart() {
+        return start;
+    }
+
+    public void setEnd(Integer end) {
+        this.end = end;
+    }
+
+    public Integer getEnd() {
+        return end;
+    }
+
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/Category.java b/springboot-vue3/src/main/java/com/example/springboot/entity/Category.java
new file mode 100644
index 0000000..5e74722
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/Category.java
@@ -0,0 +1,44 @@
+package com.example.springboot.entity;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@TableName("`category`")
+@ApiModel("鍒嗙被")
+public class Category extends BaseEntity implements Serializable {
+    private static final long serialVersionUID = -5888981197198625157L;
+
+    @ApiModelProperty("鐖剁骇id")
+    private Long parentId;
+    @TableField("`path`")
+    @ApiModelProperty("璺緞")
+    private String path;
+    @ApiModelProperty("绛夌骇")
+    private Integer level;
+    @ApiModelProperty("鍚嶇О")
+    private String name;
+    @ApiModelProperty("鍒涘缓浜�")
+    private Long creator;
+    @ApiModelProperty("鐘舵�� 0/涓嬫灦 1/涓婃灦 榛樿涓婃灦")
+    private Integer state; // 鐘舵�� 0/涓嬫灦 1/涓婃灦 榛樿涓婃灦
+
+    @TableField(exist = false)
+    private List<Category> Categorys;
+
+    public final void parent(@NotNull Category category) {
+        this.parentId = category.getId();
+        this.path = (category.getPath() == null ? "" : category.getPath()) + category.getId() + "-";
+        this.level = StrUtil.count(this.path, "-");
+    }
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/Glass.java b/springboot-vue3/src/main/java/com/example/springboot/entity/Glass.java
new file mode 100644
index 0000000..1e448ec
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/Glass.java
@@ -0,0 +1,58 @@
+package com.example.springboot.entity;
+
+public class Glass {
+  private Integer id;
+  private String orderId;
+  private double width;
+  private double height;
+  private String glassId;
+
+  public Integer id() {
+    return id;
+  }
+
+  public void setId(Integer id) {
+    this.id = id;
+  }
+
+  public Integer getId() {
+    return id;
+  }
+
+  public String getOrderId() {
+    return orderId;
+  }
+
+  public void setOrderId(String orderId) {
+    this.orderId = orderId;
+  }
+
+  public double getwidth() {
+    return width;
+  }
+
+  public void setHeight(double height) {
+    this.height = height;
+  }
+
+  public double getHeight() {
+    return height;
+  }
+
+  public void setWidth(double width) {
+    this.width = width;
+  }
+
+  public void getWidth(double width) {
+    this.width = width;
+  }
+
+  public String getGlassId() {
+    return glassId;
+  }
+
+  public void setGlassId(String glassId) {
+    this.glassId = glassId;
+  }
+
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/MenuList.java b/springboot-vue3/src/main/java/com/example/springboot/entity/MenuList.java
new file mode 100644
index 0000000..e6bf6e5
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/MenuList.java
@@ -0,0 +1,34 @@
+package com.example.springboot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@TableName("`menu_list`")
+@ApiModel("鑿滃崟")
+public class MenuList extends BaseEntity implements Serializable {
+    private static final long serialVersionUID = 6371298069578228652L;
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+    private Long parentId;
+    private String name;
+    private String icon;
+    private Integer priority;
+    private String router;
+    private Integer state;
+    private Date createTime;
+    private Date updateTime;
+
+    @TableField(exist = false)
+    private List<MenuList> menuLists;
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/OrderOut.java b/springboot-vue3/src/main/java/com/example/springboot/entity/OrderOut.java
new file mode 100644
index 0000000..044d19b
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/OrderOut.java
@@ -0,0 +1,43 @@
+package com.example.springboot.entity;
+
+import java.sql.Date;
+
+public class OrderOut {
+    private Integer id;
+    private String orderid;
+    private Integer state;
+    private Date modtime;
+
+    public Integer id() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setOrderId(String orderid) {
+        this.orderid = orderid;
+    }
+    public String getOrderId() {
+        return orderid;
+    }
+
+    public void setState(Integer state) {
+        this.state = state;
+    }
+    public Integer getState() {
+        return state;
+    }
+
+    public void setModTime(Date modtime) {
+        this.modtime = modtime;
+    }
+    public Date getModTime() {
+        return modtime;
+    }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/Out_slice.java b/springboot-vue3/src/main/java/com/example/springboot/entity/Out_slice.java
new file mode 100644
index 0000000..6b13c63
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/Out_slice.java
@@ -0,0 +1,101 @@
+package com.example.springboot.entity;
+
+public class Out_slice {
+    private int id;
+    private String glassId;
+    private String barcode;
+    private double glasswidth;
+    private double glassheight;
+    private int state;
+    private String time;
+
+    private north_glass_buffer1 north_glass_buffer1s;
+
+    public void setnorth_glass_buffer1s(north_glass_buffer1 north_glass_buffer1s) {
+        this.north_glass_buffer1s = north_glass_buffer1s;
+    }
+    
+    public north_glass_buffer1 getnorth_glass_buffer1s() {
+        return north_glass_buffer1s;
+    }
+
+    private StorageCage storageCage;
+
+    public void setstorageCage(StorageCage storageCage) {
+        this.storageCage = storageCage;
+    }
+    
+    public StorageCage getstorageCage() {
+        return storageCage;
+    }
+
+    public Out_slice() {
+    }
+
+    public Out_slice(int ID, String glassId, String barCode, double glasswidth, double glassheight, int state, String time) {
+        this.id = ID;
+        this.glassId = glassId;
+        this.barcode = barCode;
+        this.glasswidth = glasswidth;
+        this.glassheight = glassheight;
+        this.state = state;
+        this.time = time;
+    }
+
+    public int getID() {
+        return id;
+    }
+
+    public String getGlassId() {
+        return glassId;
+    }
+
+    public String getBarCode() {
+        return barcode;
+    }
+
+    public double getGlasswidth() {
+        return glasswidth;
+    }
+
+    public double getGlassheight() {
+        return glassheight;
+    }
+
+    public int getState() {
+        return state;
+    }
+
+    public String getTime() {
+        return time;
+    }
+
+    public void setID(int ID) {
+        this.id = ID;
+    }
+
+    public void setGlassId(String glassId) {
+        this.glassId = glassId;
+    }
+
+    public void setBarCode(String barCode) {
+        barcode = barCode;
+    }
+
+    public void setGlasswidth(double glasswidth) {
+        this.glasswidth = glasswidth;
+    }
+
+    public void setGlassheight(double glassheight) {
+        this.glassheight = glassheight;
+    }
+
+    public void setState(int state) {
+        this.state = state;
+    }
+
+    public void setTime(String time) {
+        this.time = time;
+    }
+    
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/Permission.java b/springboot-vue3/src/main/java/com/example/springboot/entity/Permission.java
new file mode 100644
index 0000000..f2c7412
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/Permission.java
@@ -0,0 +1,26 @@
+package com.example.springboot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@TableName("`permission`")
+@ApiModel("鏉冮檺")
+public class Permission extends BaseEntity implements Serializable {
+    private static final long serialVersionUID = 4551749462814959751L;
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+    private String name;
+    private String description;
+    private Integer state;
+    private Date createTime;
+    private Date updateTime;
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/Queue.java b/springboot-vue3/src/main/java/com/example/springboot/entity/Queue.java
new file mode 100644
index 0000000..9df4c96
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/Queue.java
@@ -0,0 +1,113 @@
+package com.example.springboot.entity;
+
+public class Queue {
+    private int id;
+    private String glassId;
+    private String orderId;
+    private String listId;
+    private String boxId;
+    private double glasswidth;
+    private double glassheight;
+    private double glasswidthmm;
+    private double glassheightmm;
+    private int type;
+    private int state;
+    private String time;
+
+    public int getid() {
+        return id;
+    }
+
+    public void setid(int id) {
+        this.id = id;
+    }
+
+    public String getglassId() {
+        return glassId;
+    }
+
+    public void setglassId(String glassId) {
+        this.glassId = glassId;
+    }
+
+    public String getorderId() {
+        return orderId;
+    }
+
+    public void setorderId(String orderId) {
+        this.orderId = orderId;
+    }
+
+    public String getlistId() {
+        return listId;
+    }
+
+    public void setlistId(String listId) {
+        this.listId = listId;
+    }
+
+     public String getboxId() {
+        return boxId;
+    }
+
+    public void setboxId(String boxId) {
+        this.boxId = boxId;
+    }
+
+    public double getglasswidth() {
+        return glasswidth;
+    }
+
+    public void setglasswidth(double glasswidth) {
+        this.glasswidth = glasswidth;
+    }
+
+    public double getglassheight() {
+        return glassheight;
+    }
+
+    public void setglassheight(double glassheight) {
+        this.glassheight = glassheight;
+    }
+
+    public double getglasswidthmm() {
+        return glasswidthmm;
+    }
+
+    public void setglasswidthmm(double glasswidthmm) {
+        this.glasswidthmm = glasswidthmm;
+    }
+
+    public double getglassheightmm() {
+        return glassheightmm;
+    }
+
+    public void setglassheightmm(double glassheightmm) {
+        this.glassheightmm = glassheightmm;
+    }
+
+    public int gettype() {
+        return type;
+    }
+
+    public void settype(int type) {
+        this.type = type;
+    }
+
+    public int getstate() {
+        return state;
+    }
+
+    public void setstate(int state) {
+        this.state = state;
+    }
+
+    public String gettime() {
+        return time;
+    }
+
+    public void settime(String time) {
+        this.time = time;
+    }
+
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/Role.java b/springboot-vue3/src/main/java/com/example/springboot/entity/Role.java
new file mode 100644
index 0000000..b428d4c
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/Role.java
@@ -0,0 +1,34 @@
+package com.example.springboot.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@TableName("`role`")
+@ApiModel("瑙掕壊")
+public class Role extends BaseEntity implements Serializable {
+    private static final long serialVersionUID = 5593937318976491954L;
+
+    @ApiModelProperty("鐖剁骇id")
+    private String parentId;
+    @NotBlank
+    @ApiModelProperty("鍚嶇О")
+    private String name;
+    @ApiModelProperty("鎻忚堪")
+    private String description;
+    @ApiModelProperty("鐘舵��")
+    private Integer state;
+
+    @TableField(exist = false)
+    private List<Permission> permissions;
+}
+
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/RoleMenuList.java b/springboot-vue3/src/main/java/com/example/springboot/entity/RoleMenuList.java
new file mode 100644
index 0000000..f5be162
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/RoleMenuList.java
@@ -0,0 +1,30 @@
+package com.example.springboot.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@TableName("`role_menu_list`")
+@ApiModel("瑙掕壊鍜岃彍鍗曞叧绯�")
+public class RoleMenuList extends BaseEntity implements Serializable {
+    private static final long serialVersionUID = 8055008415890637135L;
+
+    @ApiModelProperty("瑙掕壊id")
+    private Long roleId;
+    @ApiModelProperty("鑿滃崟id")
+    private Long menuListId;
+    @ApiModelProperty("鐘舵��")
+    private Integer state;
+
+    @TableField(exist = false)
+    private Role role;
+    @TableField(exist = false)
+    private MenuList menuList;
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/RolePermission.java b/springboot-vue3/src/main/java/com/example/springboot/entity/RolePermission.java
new file mode 100644
index 0000000..a55723f
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/RolePermission.java
@@ -0,0 +1,34 @@
+package com.example.springboot.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@TableName("`role_permission`")
+@ApiModel("瑙掕壊鍜屾潈闄愬叧绯�")
+public class RolePermission extends BaseEntity implements Serializable {
+    private static final long serialVersionUID = -3026205404689502862L;
+    @ApiModelProperty("瑙掕壊id")
+    private Long roleId;
+    @ApiModelProperty("鏉冮檺id")
+    private Long permissionId;
+    @ApiModelProperty("鐘舵��")
+    private Integer state;
+
+
+
+
+    @TableField(exist = false)
+    private Role role;
+    @TableField(exist = false)
+    private Permission permission;
+
+
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/StorageCage.java b/springboot-vue3/src/main/java/com/example/springboot/entity/StorageCage.java
new file mode 100644
index 0000000..9cb95ce
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/StorageCage.java
@@ -0,0 +1,173 @@
+package com.example.springboot.entity;
+
+public class StorageCage {
+    private Integer id;
+    private Integer prcId;
+    private String glassId;
+    private Integer cage;
+    private Integer cell;
+    private Double width;
+    private Double glasswidth;
+    private Double glassheight;
+    private Double glasswidthmm;
+    private Double glassheightmm;
+    private String state;
+    private Integer tier;
+    private String orderId;
+    private Integer disabled;
+    private String listId;
+    private String boxId;
+
+    private north_glass_buffer1 north_glass_buffer1s;
+
+    public void setnorth_glass_buffer1s(north_glass_buffer1 north_glass_buffer1s) {
+        this.north_glass_buffer1s = north_glass_buffer1s;
+    }
+
+    public north_glass_buffer1 getnorth_glass_buffer1s() {
+        return north_glass_buffer1s;
+    }
+
+    private Out_slice outSlice;
+
+    public void setout_slice(Out_slice outSlice) {
+        this.outSlice = outSlice;
+    }
+
+    public Out_slice getout_slice() {
+        return outSlice;
+    }
+
+    public Integer id() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public Integer getPrcId() {
+        return prcId;
+    }
+
+    public void setPrcId(Integer prcId) {
+        this.prcId = prcId;
+    }
+
+    public String getGlassId() {
+        return glassId;
+    }
+
+    public void setGlassId(String glassId) {
+        this.glassId = glassId;
+    }
+
+    public String getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(String orderId) {
+        this.orderId = orderId;
+    }
+
+    public Integer getCage() {
+        return cage;
+    }
+
+    public void setGage(Integer cage) {
+        this.cage = cage;
+    }
+
+    public void setCell(Integer cell) {
+        this.cell = cell;
+    }
+
+    public Integer getCell() {
+        return cell;
+    }
+
+    public Double getWidth() {
+        return width;
+    }
+
+    public void setWidth(Double width) {
+        this.width = width;
+    }
+
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    public Integer getTier() {
+        return tier;
+    }
+
+    public void setTier(Integer tier) {
+        this.tier = tier;
+    }
+
+    public Double getGlassWidth() {
+        return glasswidth;
+    }
+
+    public void setGlassWidth(Double glasswidth) {
+        this.glasswidth = glasswidth;
+    }
+
+    public Double getGlassHeight() {
+        return glassheight;
+    }
+
+    public void setGlassHeight(Double glassheight) {
+        this.glassheight = glassheight;
+    }
+
+    public Double getGlassWidthMm() {
+        return glasswidthmm;
+    }
+
+    public void setGlassWidthMm(Double glasswidthmm) {
+        this.glasswidthmm = glasswidthmm;
+    }
+
+    public Double getGlassHeightMm() {
+        return glassheightmm;
+    }
+
+    public void setGlassHeightMm(Double glassheightmm) {
+        this.glassheightmm = glassheightmm;
+    }
+
+    public Integer getDisabled() {
+        return disabled;
+    }
+
+    public void setDisabled(Integer disabled) {
+        this.disabled = disabled;
+    }
+
+    public String getListId() {
+        return listId;
+    }
+
+    public void setListno(String listId) {
+        this.listId = listId;
+    }
+
+    public String getBoxId() {
+        return boxId;
+    }
+
+    public void setBoxno(String boxId) {
+        this.boxId = boxId;
+    }
+
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/StorageTask.java b/springboot-vue3/src/main/java/com/example/springboot/entity/StorageTask.java
new file mode 100644
index 0000000..a1de33a
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/StorageTask.java
@@ -0,0 +1,63 @@
+package com.example.springboot.entity;
+
+public class StorageTask{
+    private Integer id;
+    private String taskType;
+    private String glassId;
+    private String cataskStatege;
+    private String shelfRack;
+    private String loadrack;
+    
+
+    public Integer id() {
+        return id;
+    }
+    public void setId(Integer id) {
+        this.id = id;
+    }
+    public Integer getId() {
+        return id;
+    }
+
+    public String getTaskType() {
+        return taskType;
+    }
+
+    public void setTaskType(String taskType) {
+        this.taskType = taskType;
+    }
+    public String getGlassId() {
+        return glassId;
+    }
+
+    public void setGlassId(String glassId) {
+        this.glassId = glassId;
+    }
+    
+    public String getCataskStatege() {
+        return cataskStatege;
+    }
+
+    public void setCataskStatege(String cataskStatege) {
+        this.cataskStatege = cataskStatege;
+    }
+
+    public String getShelfRack() {
+        return shelfRack;
+    }
+
+    public void setShelfRack(String shelfRack) {
+        this.shelfRack = shelfRack;
+    }
+    
+    public String getLoadrack() {
+        return loadrack;
+    }
+
+    public void setLoadrack(String loadrack) {
+        this.loadrack = loadrack;
+    }
+
+    
+
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/User.java b/springboot-vue3/src/main/java/com/example/springboot/entity/User.java
new file mode 100644
index 0000000..d9b7f0d
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/User.java
@@ -0,0 +1,59 @@
+package com.example.springboot.entity;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.Email;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@TableName("`user`")
+@ApiModel("鐢ㄦ埛")
+public class User extends BaseEntity implements Serializable {
+    private static final long serialVersionUID = 1192800251115892576L;
+    private Long parentId; // 涓婄骇id
+    @TableField("`path`")
+    @ApiModelProperty("璺緞")
+    private String path;
+    @ApiModelProperty("绛夌骇")
+    private Integer level;
+    @ApiModelProperty("瑙掕壊id")
+    private Long roleId;
+    @NotBlank(message = "鐢ㄦ埛鍚嶄笉鑳戒负绌�")
+    @ApiModelProperty("鐢ㄦ埛鍚�")
+    private String username;
+    @NotBlank(message = "瀵嗙爜涓嶈兘涓虹┖")
+    @ApiModelProperty("瀵嗙爜")
+    private String password;
+
+    @ApiModelProperty("閭")
+    private String email;
+    @ApiModelProperty("qq")
+    private String qq;
+    @ApiModelProperty("鐢垫皵瀵嗙爜")
+    private String dianqimima;
+    @ApiModelProperty("鑱旂郴鐢佃瘽")
+    private String phone;
+    @ApiModelProperty("鐘舵�� 0/绂佹 1/姝e父")
+    private Integer state; // 鐘舵�� 0/绂佹 1/姝e父
+
+
+    // 鐢ㄦ埛鐨勮彍鍗曞垪琛紝涓嶅悓鐢ㄦ埛閫氳繃鏉冮檺鎺у埗鎷ユ湁涓嶅悓鐨勮彍鍗�
+    @TableField(exist = false)
+    private List<MenuList> menuLists;
+
+    public final void parent(@NotNull User user) {
+        this.parentId = user.getId();
+        this.path = (user.getPath() == null ? "" : user.getPath()) + user.getId() + "-";
+        this.level = StrUtil.count(this.path, "-");
+    }
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/alarmmg.java b/springboot-vue3/src/main/java/com/example/springboot/entity/alarmmg.java
new file mode 100644
index 0000000..a9128ea
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/alarmmg.java
@@ -0,0 +1,57 @@
+package com.example.springboot.entity;
+
+import java.util.Date;
+
+public class alarmmg {
+  private Integer id;
+  private String content;
+  private Date timeon;
+  private Date endTime;
+
+  private String timeons;
+
+  // 鑷id
+  public void setid(Integer id) {
+    this.id = id;
+  }
+
+  public Integer getid() {
+    return id;
+  }
+
+  // 鎶ヨ鍐呭
+  public void setontent(String content) {
+    this.content = content;
+  }
+
+  public String getcontent() {
+    return content;
+  }
+
+  // 鎶ヨ寮�濮嬫椂闂�
+  public void settimeon(Date timeon) {
+    this.timeon = timeon;
+  }
+
+  public Date gettimeon() {
+    return timeon;
+  }
+
+  // 鎶ヨ缁撴潫鏃堕棿
+  public void setendTime(Date endTime) {
+    this.endTime = endTime;
+  }
+
+  public Date getendTime() {
+    return endTime;
+  }
+
+  public void settimeons(String timeons) {
+    this.timeons = timeons;
+  }
+
+  public String gettimeons() {
+    return timeons;
+  }
+
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/device/DeviceEntity.java b/springboot-vue3/src/main/java/com/example/springboot/entity/device/DeviceEntity.java
new file mode 100644
index 0000000..d2ee204
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/device/DeviceEntity.java
@@ -0,0 +1,61 @@
+package com.example.springboot.entity.device;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author yyq
+ * @since 2023-08-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("device")
+@ApiModel(value="DeviceEntity瀵硅薄", description="")
+public class DeviceEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private String deviceId;
+
+    private String createUser;
+    private String msg;
+    private LocalDateTime createTime;
+    private long id;
+    private String deviceName;
+    private String name;
+    private String status;
+
+    private String info;
+
+    private String model;
+
+    private LocalDateTime countTimeFlag;
+
+    private String address;
+
+    private String gps;
+
+    private LocalDate debugTime;
+
+    private LocalDate endTime;
+
+    private String customerName;
+
+    private String customerDeviceName;
+
+    private LocalDate lastProductCountDate;
+
+
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/dto/BaseDto.java b/springboot-vue3/src/main/java/com/example/springboot/entity/dto/BaseDto.java
new file mode 100644
index 0000000..c9a5c45
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/dto/BaseDto.java
@@ -0,0 +1,24 @@
+package com.example.springboot.entity.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Past;
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class BaseDto {
+    @NotNull
+    private Long pageSize = 10L;
+    @NotNull
+    private Long pageNum = 1L;
+    @Past
+    private Date startTime;
+    @Past
+    private Date endTime;
+
+    private List<Long> ids;
+
+    private Long id;
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/north_glass_buffer1.java b/springboot-vue3/src/main/java/com/example/springboot/entity/north_glass_buffer1.java
index b491ac3..0d44f4a 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/entity/north_glass_buffer1.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/north_glass_buffer1.java
@@ -102,7 +102,7 @@
     }
 
     public Double getglassheightmm() {
-        return glasslengthmm;
+        return glassheightmm;
     }
     public void setglassheightmm(Double glassheightmm) {
         this.glassheightmm = glassheightmm;
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/vo/AuthorizedUser.java b/springboot-vue3/src/main/java/com/example/springboot/entity/vo/AuthorizedUser.java
new file mode 100644
index 0000000..2737fa5
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/vo/AuthorizedUser.java
@@ -0,0 +1,13 @@
+package com.example.springboot.entity.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class AuthorizedUser implements Serializable {
+    private static final long serialVersionUID = -8152270249992675066L;
+    private Long id;
+    private String username;
+    private Long roleId;
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/vo/BaseVo.java b/springboot-vue3/src/main/java/com/example/springboot/entity/vo/BaseVo.java
new file mode 100644
index 0000000..06f444d
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/vo/BaseVo.java
@@ -0,0 +1,22 @@
+package com.example.springboot.entity.vo;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Past;
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class BaseVo {
+    @NotNull
+    private Long pageSize = 10L;
+    @NotNull
+    private Long pageNum = 1L;
+    @Past
+    private Date startTime;
+    @Past
+    private Date endTime;
+
+    private List<Long> ids;
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/vo/CategoryVo.java b/springboot-vue3/src/main/java/com/example/springboot/entity/vo/CategoryVo.java
new file mode 100644
index 0000000..3b764d6
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/vo/CategoryVo.java
@@ -0,0 +1,22 @@
+package com.example.springboot.entity.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class CategoryVo extends BaseVo implements Serializable {
+    private static final long serialVersionUID = 4432159672935772196L;
+    private Long id;
+    private Long parentId;
+    private String path;
+    private Integer level;
+    private String name;
+    private Long creator;
+    private Integer state;
+    private Date createTime;
+    private Date updateTime;
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/vo/CheckResult.java b/springboot-vue3/src/main/java/com/example/springboot/entity/vo/CheckResult.java
new file mode 100644
index 0000000..da0bae0
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/vo/CheckResult.java
@@ -0,0 +1,15 @@
+package com.example.springboot.entity.vo;
+
+import io.jsonwebtoken.Claims;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+@Getter
+@Setter
+@ToString
+public class CheckResult {
+    private boolean success;
+    private Claims claims;
+    private String errCode;
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/vo/MenuListVo.java b/springboot-vue3/src/main/java/com/example/springboot/entity/vo/MenuListVo.java
new file mode 100644
index 0000000..a70c255
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/vo/MenuListVo.java
@@ -0,0 +1,23 @@
+package com.example.springboot.entity.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class MenuListVo extends BaseVo implements Serializable {
+    private static final long serialVersionUID = 3086526136023139210L;
+    private Long id;
+    private Long roleId;
+    private Long parentId;
+    private String name;
+    private String icon;
+    private Integer priority;
+    private String router;
+    private Integer state;
+    private Date createTime;
+    private Date updateTime;
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/vo/OrderVo.java b/springboot-vue3/src/main/java/com/example/springboot/entity/vo/OrderVo.java
new file mode 100644
index 0000000..6b876e8
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/vo/OrderVo.java
@@ -0,0 +1,24 @@
+package com.example.springboot.entity.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class OrderVo extends BaseVo implements Serializable {
+    private static final long serialVersionUID = -3640807116600926284L;
+    private Long id;
+    private Long productId;
+    private Long creator;
+    private Long quantity;
+    private String subject;
+    private String address;
+    private String outTradeNo;
+    private String totalAmount;
+    private Integer state;
+    private Date createTime;
+    private Date updateTime;
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/vo/PermissionVo.java b/springboot-vue3/src/main/java/com/example/springboot/entity/vo/PermissionVo.java
new file mode 100644
index 0000000..fcced72
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/vo/PermissionVo.java
@@ -0,0 +1,19 @@
+package com.example.springboot.entity.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class PermissionVo extends BaseVo implements Serializable {
+    private static final long serialVersionUID = -2797154122372472654L;
+    private Long id;
+    private String name;
+    private String description;
+    private Integer state;
+    private Date createTime;
+    private Date updateTime;
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/vo/ProductVo.java b/springboot-vue3/src/main/java/com/example/springboot/entity/vo/ProductVo.java
new file mode 100644
index 0000000..9ad5417
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/vo/ProductVo.java
@@ -0,0 +1,21 @@
+package com.example.springboot.entity.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ProductVo extends BaseVo implements Serializable {
+    private static final long serialVersionUID = -4492232772022212494L;
+    private Long id;
+    private Long categoryId;
+    private String name;
+    private BigDecimal price;
+    private Integer state;
+    private Date createTime;
+    private Date updateTime;
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/vo/Result.java b/springboot-vue3/src/main/java/com/example/springboot/entity/vo/Result.java
new file mode 100644
index 0000000..60af4a4
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/vo/Result.java
@@ -0,0 +1,40 @@
+package com.example.springboot.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class Result {
+    private Integer code;
+    private String msg;
+    private Object data;
+
+
+
+
+    public static Result success(Object data) {
+        Result result = new Result();
+        result.setCode(1);
+        result.setMsg("鎴愬姛");
+        result.setData(data);
+        return result;
+    }
+
+    public static Result success() {
+        return success(null);
+    }
+
+    public static Result fail(String msg) {
+        Result result = new Result();
+        result.setCode(0);
+        result.setMsg(msg);
+        return result;
+    }
+
+    public static Result fail(Integer code, String msg, Object object) {
+        Result result = new Result();
+        result.setCode(0);
+        result.setMsg(msg);
+        result.setData(object);
+        return result;
+    }
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/vo/RoleMenuListVo.java b/springboot-vue3/src/main/java/com/example/springboot/entity/vo/RoleMenuListVo.java
new file mode 100644
index 0000000..dc51da4
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/vo/RoleMenuListVo.java
@@ -0,0 +1,19 @@
+package com.example.springboot.entity.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class RoleMenuListVo extends BaseVo implements Serializable {
+    private static final long serialVersionUID = 2310103009618403876L;
+    private Long id;
+    private Long roleId;
+    private Long MenuListId;
+    private Integer state;
+    private Date startTime;
+    private Date endTime;
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/vo/RolePermissionVo.java b/springboot-vue3/src/main/java/com/example/springboot/entity/vo/RolePermissionVo.java
new file mode 100644
index 0000000..89db5eb
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/vo/RolePermissionVo.java
@@ -0,0 +1,19 @@
+package com.example.springboot.entity.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class RolePermissionVo extends BaseVo implements Serializable {
+    private static final long serialVersionUID = -4528470984796447897L;
+    private Long id;
+    private Long roleId;
+    private Long permissionId;
+    private Integer state;
+    private Date createTime;
+    private Date updateTime;
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/vo/RoleVo.java b/springboot-vue3/src/main/java/com/example/springboot/entity/vo/RoleVo.java
new file mode 100644
index 0000000..99251f3
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/vo/RoleVo.java
@@ -0,0 +1,19 @@
+package com.example.springboot.entity.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class RoleVo extends BaseVo implements Serializable {
+    private static final long serialVersionUID = 2147982144935437262L;
+    private Long id;
+    private String parentId;
+    private String name;
+    private Integer state;
+    private Date createTime;
+    private Date updateTime;
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/vo/UserVo.java b/springboot-vue3/src/main/java/com/example/springboot/entity/vo/UserVo.java
new file mode 100644
index 0000000..8cf0c89
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/vo/UserVo.java
@@ -0,0 +1,30 @@
+package com.example.springboot.entity.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+import java.util.Date;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class UserVo extends BaseVo implements Serializable {
+    private static final long serialVersionUID = 7021223076084300328L;
+    private Long id;
+    private Long parentId; // 涓婄骇id
+    private Long roleId; // 瑙掕壊id
+    @NotBlank(message = "鐢ㄦ埛鍚嶄笉鑳戒负绌�")
+    private String username;
+    @NotBlank(message = "瀵嗙爜涓嶈兘涓虹┖")
+    private String password;
+    private String dianqimima;
+    private String email;
+    private String qq;
+    private String phone;
+    private Integer state; // 鐘舵�� 0/绂佹 1/姝e父
+    private Date createTime;
+    private Date updateTime;
+
+
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/AlarmMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/AlarmMapper.java
new file mode 100644
index 0000000..2dfe841
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/AlarmMapper.java
@@ -0,0 +1,25 @@
+package com.example.springboot.mapper;
+
+import org.apache.ibatis.annotations.*;
+
+import com.example.springboot.entity.alarmmg;
+
+import java.util.List;
+
+@Mapper
+public interface AlarmMapper {
+  @Select("SELECT * FROM alarmmg where endTime is not null and to_days(timeon)=to_days(now())")
+  List<alarmmg> selectAll();// 鏌ヨ褰撳ぉ鎵�鏈夊凡缁撴潫鎶ヨ淇℃伅
+
+  @Select("SELECT count(*) FROM alarmmg where endTime is null and content=#{content}")
+  short selectnullti(String content);// 鏍规嵁鎶ヨ鍐呭鏌ヨ缁撴潫鏃堕棿涓簄ull鐨�
+
+  @Insert("INSERT INTO `canadames`.`alarmmg`( `content`,`timeon`) VALUES ( #{content},now())")
+  void Insertalarm(String content);// 娣诲姞涓�鏉℃姤璀︽暟鎹�
+
+  @Insert("UPDATE  `canadames`.`alarmmg` set endTime= now() where endTime is null and content=#{content}")
+  void updatealarm(String content);// 淇敼瀵瑰簲鎶ヨ鍐呭鐨勭粨鏉熸椂闂�
+
+  @Select("SELECT * FROM alarmmg where timeon between #{sj1} and #{sj2}")
+  List<alarmmg> selecttime(String sj1, String sj2);// 鏍规嵁鏃ユ湡鏌ヨ鎶ヨ淇℃伅
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/CategoryMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/CategoryMapper.java
new file mode 100644
index 0000000..94f68ab
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/CategoryMapper.java
@@ -0,0 +1,23 @@
+package com.example.springboot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.example.springboot.entity.Category;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Mapper
+@Repository
+public interface CategoryMapper extends BaseMapper<Category> {
+    void categoryDeleteByIds(@Param("ids") List<Long> ids);
+
+    void categoryUpdateById(@Param("id") Long id, @Param("category") Category category);
+
+    void categoryInsert(@Param("category") Category category);
+
+    List<Category> findAllExceptSelf(@Param("id") Long id);
+
+    List<Category> selectByPath(@Param("path") String path);
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java
index 8eee477..beb2a5e 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java
@@ -3,11 +3,11 @@
 import org.apache.ibatis.annotations.*;
 
 import com.example.springboot.entity.CarPosition;
-import com.example.springboot.entity.Glass;
 import com.example.springboot.entity.StorageCage;
 import com.example.springboot.entity.alarmmg;
 import com.example.springboot.entity.north_glass_buffer1;
 import com.example.springboot.entity.Out_slice;
+import com.example.springboot.entity.Queue;
 
 import java.util.List;
 
@@ -34,7 +34,7 @@
   List<StorageCage> selectRack4();
 
   // 鏍规嵁浠诲姟绫诲瀷鏌ヨ褰撳墠姝e湪鍑虹墖锛岃繘鐗囩殑鐜荤拑淇℃伅
-  @Select("select *,concat(glasswidth,' x ',glassheight) as lengthwidth from storage_cage where state=#{task_type}")
+  @Select("select * from storage_cage where state=#{task_type}")
   List<StorageCage> selectinout(@Param("task_type") Integer task_type);
 
   // 鏌ヨ鏄惁瀛樺湪姝よ鍗�
@@ -98,8 +98,8 @@
   void Disabled(short cage, short cell, short disabled);
 
   //鐞嗙墖绗兼柊澧炵幓鐠�
-  @Update("update storage_cage set state=1,glass_id=#{glass.barcode},order_id=#{glass.ordernumber},glasswidth=#{glass.glasslengthmm},glassheight=#{glass.glassheightmm} where cage=#{cage} and cell=#{cell} and tier=#{tier}")
-  void Inglassid(north_glass_buffer1 glass, short cage, short cell, short tier);
+  @Update("update storage_cage set state=1,glass_id=#{glass.glassId},order_id=#{glass.orderId},glasswidth=#{glass.glasswidth},glassheight=#{glass.glassheight},glasswidthmm=#{glass.glasswidthmm},glassheightmm=#{glass.glassheightmm},listid=#{glass.listId},boxid=#{glass.boxId} where cage=#{cage} and cell=#{cell} and tier=#{tier}")
+  void Inglassid(Queue glass, short cage, short cell, short tier);
 
   //鏌ヨ鐞嗙墖绗间腑鏄惁鏈夋鐜荤拑
   @Select("select count(*) from storage_cage where glass_id=#{glassId}")
@@ -110,12 +110,12 @@
   List<north_glass_buffer1> SelectGlass(String orderid);
 
   //鑾峰彇涓婄墖闃熷垪淇℃伅
-  @Select("select glassid from queue where id=#{id}")
-  String GetQueueInfo(int id);
+  @Select("select * from queue where id=#{id}")
+  Queue GetQueueInfo(int id);
 
   //鎵嬪姩娣诲姞鎵爜浣嶇幓鐠�
-  @Select("update queue set glassid=#{glassid},state=1 where id=#{id}")
-  void InsertQueueGlassId(String glassid,Short id);
+  @Select("update queue set glassid=#{queue.glassId},orderid=#{queue.orderId},listId=#{queue.listId},boxId=#{queue.boxId},glasswidth=#{queue.glasswidth},glassheight=#{queue.glassheight},glasswidthmm=#{queue.glasswidthmm},glassheightmm=#{queue.glassheightmm},state=1 where id=#{id}")
+  void InsertQueueGlassId(Queue queue,Short id);
 
   //纭鎵爜浣嶇幓鐠冧俊鎭�
   @Select("update queue set state=1 where id=1")
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/MenuListMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/MenuListMapper.java
new file mode 100644
index 0000000..1436344
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/MenuListMapper.java
@@ -0,0 +1,16 @@
+package com.example.springboot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.example.springboot.entity.MenuList;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Mapper
+@Repository
+public interface MenuListMapper extends BaseMapper<MenuList> {
+    List<MenuList> findByParent(Long parent);
+
+    List<MenuList> findByParentNull();
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/PermissionMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/PermissionMapper.java
new file mode 100644
index 0000000..7559f34
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/PermissionMapper.java
@@ -0,0 +1,11 @@
+package com.example.springboot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.example.springboot.entity.Permission;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface PermissionMapper extends BaseMapper<Permission> {
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/RoleMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/RoleMapper.java
new file mode 100644
index 0000000..4f5d924
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/RoleMapper.java
@@ -0,0 +1,11 @@
+package com.example.springboot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.example.springboot.entity.Role;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface RoleMapper extends BaseMapper<Role> {
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/RoleMenuListMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/RoleMenuListMapper.java
new file mode 100644
index 0000000..2138d43
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/RoleMenuListMapper.java
@@ -0,0 +1,11 @@
+package com.example.springboot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.example.springboot.entity.RoleMenuList;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface RoleMenuListMapper extends BaseMapper<RoleMenuList> {
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/RolePermissionMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/RolePermissionMapper.java
new file mode 100644
index 0000000..2c00982
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/RolePermissionMapper.java
@@ -0,0 +1,30 @@
+package com.example.springboot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.example.springboot.entity.RolePermission;
+
+
+import org.apache.ibatis.annotations.*;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+@Repository
+public interface RolePermissionMapper extends BaseMapper<RolePermission> {
+
+    @Select("SELECT rp.state,rp.permission_id,rp.role_id, p.* FROM role_permission AS rp JOIN permission AS p ON rp.permission_id = p.id WHERE rp.role_id = #{roleId}")
+    List<Map<String, Object>> selectquanxian(@Param("roleId") int roleId);
+
+    @Select("SELECT COUNT(*) FROM role_permission WHERE role_id = #{roleId} AND permission_id = #{permissionId}")
+    boolean checkExists(@Param("roleId") int roleId, @Param("permissionId") int permissionId);
+
+
+    @Update("UPDATE role_permission SET state = #{state} WHERE role_id = #{roleId} AND permission_id = #{permissionId}")
+    void updateState(@Param("roleId") int roleId, @Param("permissionId") int permissionId, @Param("state") int state);
+
+    @Insert("INSERT INTO role_permission (role_id, permission_id, state) VALUES (#{roleId}, #{permissionId}, #{state})")
+    void insert(@Param("roleId") int roleId, @Param("permissionId") int permissionId, @Param("state") int state);
+
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
index 61ff339..dd13816 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
@@ -37,7 +37,7 @@
 
    
      //鑾峰彇鐜荤拑淇℃伅
-     @Select("select ordernumber as ordernumber,glasslength_mm as glasslengthmm,barcode from north_glass_buffer1 where barcode=#{glassid}")
+     @Select("select ordernumber ,glasslength_mm as glasslengthmm,glassheight_mm as glassheightmm,barcode,listnumber,boxnumber,glasslength,glassheight from north_glass_buffer1 where barcode=#{glassid}")
      north_glass_buffer1 selectGlass(String glassid);
     
     //鍑虹墖浠诲姟鏌ヨ
@@ -109,9 +109,12 @@
      //鍒ゆ柇鏈夊嚑鍧楃幓鐠冭繕鍦ㄥ嚭鐗囦腑
      @Select("SELECT COUNT(*) FROM `storage_cage` where state=3;")
      Integer Selectoutstate();
-     //鑾峰彇杩涚墖闃熷垪id
-     @Insert("update queue set glassid=#{glassid},width=#{width} where type=#{type};")
-     void insertqueue(String glassid,int type,double width);
+     //鍒ゆ柇闃熷垪琛ㄦ槸鍚︽湁璇ョ幓鐠�
+     @Select("select COUNT(*) from queue where glassid=#{glassid};")
+     int Selectquecount(String glassid);
+     //鏇存柊杩涚墖闃熷垪
+     @Update("update queue set glassid=#{glassid},orderid=#{orderid},listid=#{listid},boxid=#{boxid},state=#{state},glasswidthmm=#{glasswidthmm},glassheightmm=#{glassheightmm},glasswidth=#{glasswidth},glassheight=#{glassheight} where type=#{type};")
+     void Updatequeue(String glassid,String orderid,String listid,String boxid,int state,String glasswidth,String glassheight,String glasswidthmm,String  glassheightmm,int type);
      //瀹屾垚杩涚墖闃熷垪浠诲姟
      @Update("update queue set state=#{state} where glassid=#{glassid};")
      void overqueue(String glassid,int state);
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/UserMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/UserMapper.java
new file mode 100644
index 0000000..4c942dd
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/UserMapper.java
@@ -0,0 +1,15 @@
+package com.example.springboot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.example.springboot.entity.User;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Mapper
+@Repository
+public interface UserMapper extends BaseMapper<User> {
+    List<User> selectChild(@Param("path") String path);
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/device/DeviceMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/device/DeviceMapper.java
new file mode 100644
index 0000000..6078dbb
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/device/DeviceMapper.java
@@ -0,0 +1,21 @@
+package com.example.springboot.mapper.device;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.example.springboot.entity.User;
+import com.example.springboot.entity.device.DeviceEntity;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+
+@Mapper
+@Repository
+public interface DeviceMapper extends BaseMapper<User> {
+    List<DeviceEntity> selectAllDevices();
+
+    void updateDeviceName(DeviceEntity device);
+
+    void updateMultipleDevices(List<DeviceEntity> devices);
+    List<DeviceEntity> callStoredProc(DeviceEntity device);
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/security/JWTRealm.java b/springboot-vue3/src/main/java/com/example/springboot/security/JWTRealm.java
new file mode 100644
index 0000000..182f0fd
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/security/JWTRealm.java
@@ -0,0 +1,89 @@
+package com.example.springboot.security;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.example.springboot.security.util.JwtUtil;
+import com.example.springboot.security.util.SecurityUtil;
+import com.example.springboot.entity.Permission;
+import com.example.springboot.entity.Role;
+import com.example.springboot.entity.RolePermission;
+import com.example.springboot.entity.User;
+import com.example.springboot.security.entity.JwtToken;
+import com.example.springboot.service.PermissionService;
+import com.example.springboot.service.RolePermissionService;
+import com.example.springboot.service.RoleService;
+import com.example.springboot.service.UserService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.authc.AuthenticationException;
+import org.apache.shiro.authc.AuthenticationInfo;
+import org.apache.shiro.authc.AuthenticationToken;
+import org.apache.shiro.authc.SimpleAuthenticationInfo;
+import org.apache.shiro.authz.AuthorizationInfo;
+import org.apache.shiro.authz.SimpleAuthorizationInfo;
+import org.apache.shiro.realm.AuthorizingRealm;
+import org.apache.shiro.subject.PrincipalCollection;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+@Slf4j
+public class JWTRealm extends AuthorizingRealm {
+    @Autowired
+    private UserService userService;
+    @Autowired
+    private RolePermissionService rolePermissionService;
+    @Autowired
+    private PermissionService permissionService;
+    @Autowired
+    private RoleService roleService;
+
+    @Override
+    public boolean supports(AuthenticationToken token) {
+        return token instanceof JwtToken;
+    }
+
+    @Override
+    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
+        // 鎵ц鎺堟潈
+        SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();
+        // 璁剧疆瑙掕壊
+        List<Role> roles = roleService.selectRoles(SecurityUtil.getCurrentUser().getRoleId(), true);
+        if (CollectionUtil.isEmpty(roles)) {
+            return null;
+        }
+        authorizationInfo.addRoles(roles.stream().map(Role::getName).collect(Collectors.toList()));
+        List<RolePermission> rolePermissions = rolePermissionService.lambdaQuery()
+                .eq(RolePermission::getState, 1)
+                .eq(RolePermission::getRoleId, SecurityUtil.getCurrentUser().getRoleId()).list();
+        Set<Permission> set = new HashSet<>();
+        for (RolePermission rolePermission : rolePermissions) {
+            List<Permission> permissions = permissionService.lambdaQuery().eq(Permission::getId, rolePermission.getPermissionId()).list();
+            set.addAll(permissions);
+        }
+        // 璁剧疆鏉冮檺
+        authorizationInfo.addStringPermissions(set.stream().map(Permission::getName).collect(Collectors.toList()));
+        return authorizationInfo;
+    }
+
+    @Override
+    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
+        String token = (String) authenticationToken.getCredentials();
+        // 瑙e瘑鑾峰緱username锛岀敤浜庡拰鏁版嵁搴撹繘琛屽姣�
+        String username = JwtUtil.getUsernameByToken(token);
+        if (StrUtil.isBlank(username)) {
+            throw new AuthenticationException("token璁よ瘉澶辫触!");
+        }
+        User user = userService.selectByUsername(username);
+        // 鍒ゆ柇鐢ㄦ埛
+        if (user == null) {
+            throw new AuthenticationException("鐢ㄦ埛涓嶅瓨鍦�!");
+        }
+        if (user.getState() == 0) {
+            throw new AuthenticationException("璐﹀彿宸茶绂佺敤!");
+        }
+        return new SimpleAuthenticationInfo(user, token, getName());
+    }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/security/NoSessionFilter.java b/springboot-vue3/src/main/java/com/example/springboot/security/NoSessionFilter.java
new file mode 100644
index 0000000..db70704
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/security/NoSessionFilter.java
@@ -0,0 +1,93 @@
+package com.example.springboot.security;
+
+import cn.hutool.core.util.StrUtil;
+import com.example.springboot.security.constant.SystemConstant;
+import com.example.springboot.security.entity.JwtToken;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.PrintWriter;
+
+@Slf4j
+public class NoSessionFilter extends BasicHttpAuthenticationFilter {
+
+    @Override
+    protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) {
+        HttpServletRequest servletRequest = (HttpServletRequest) request;
+        // 1.浠嶤ookie鑾峰彇token
+        String token = getTokenFromCookie(servletRequest);
+        if (StrUtil.isBlank(token)) {
+            // 2.浠巋eaders涓幏鍙�
+            token = servletRequest.getHeader(SystemConstant.TOKEN_HEADER);
+        }
+        if (StrUtil.isBlank(token)) {
+            // 3.浠庤姹傚弬鏁拌幏鍙�
+            token = request.getParameter(SystemConstant.TOKEN_HEADER);
+        }
+        if (StrUtil.isBlank(token)) {
+            return false;
+        }
+        // 楠岃瘉token
+        JwtToken jwtToken = new JwtToken(token);
+        // 鎻愪氦缁檙ealm杩涜鐧诲叆锛屽鏋滈敊璇粬浼氭姏鍑哄紓甯稿苟琚崟鑾�
+        // todo https://www.cnblogs.com/red-star/p/12121941.html https://blog.csdn.net/qq_43721032/article/details/110188342
+        try {
+            SecurityUtils.getSubject().login(jwtToken);
+        } catch (Exception e) {
+            return false;
+        }
+        // 濡傛灉娌℃湁鎶涘嚭寮傚父鍒欎唬琛ㄧ櫥鍏ユ垚鍔燂紝杩斿洖true
+        return true;
+    }
+
+    @Override
+    protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {
+        PrintWriter printWriter = response.getWriter();
+        response.setCharacterEncoding("utf-8");
+        printWriter.write("403");
+        printWriter.flush();
+        printWriter.close();
+        return false;
+    }
+
+    private String getTokenFromCookie(HttpServletRequest request) {
+        String token = null;
+        Cookie[] cookies = request.getCookies();
+        int len = null == cookies ? 0 : cookies.length;
+        if (len > 0) {
+            for (Cookie cookie : cookies) {
+                if (cookie.getName().equals(SystemConstant.TOKEN_HEADER)) {
+                    token = cookie.getValue();
+                    break;
+                }
+            }
+        }
+        return token;
+    }
+
+    /**
+     * 瀵硅法鍩熸彁渚涙敮鎸�
+     */
+    @Override
+    protected boolean preHandle(ServletRequest request, ServletResponse response) throws Exception {
+        HttpServletRequest httpServletRequest = (HttpServletRequest) request;
+        HttpServletResponse httpServletResponse = (HttpServletResponse) response;
+        httpServletResponse.setHeader("Access-control-Allow-Origin", httpServletRequest.getHeader("Origin"));
+        httpServletResponse.setHeader("Access-Control-Allow-Methods", "GET,POST,OPTIONS,PUT,DELETE");
+        httpServletResponse.setHeader("Access-Control-Allow-Headers", httpServletRequest.getHeader("Access-Control-Request-Headers"));
+        // 璺ㄥ煙鏃朵細棣栧厛鍙戦�佷竴涓猳ption璇锋眰锛岃繖閲屾垜浠粰option璇锋眰鐩存帴杩斿洖姝e父鐘舵��
+        if (httpServletRequest.getMethod().equals(RequestMethod.OPTIONS.name())) {
+            httpServletResponse.setStatus(HttpStatus.OK.value());
+            return false;
+        }
+        return super.preHandle(request, response);
+    }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/security/StatelessDefaultSubjectFactory.java b/springboot-vue3/src/main/java/com/example/springboot/security/StatelessDefaultSubjectFactory.java
new file mode 100644
index 0000000..c9970be
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/security/StatelessDefaultSubjectFactory.java
@@ -0,0 +1,14 @@
+package com.example.springboot.security;
+
+import org.apache.shiro.subject.Subject;
+import org.apache.shiro.subject.SubjectContext;
+import org.apache.shiro.web.mgt.DefaultWebSubjectFactory;
+
+public class StatelessDefaultSubjectFactory extends DefaultWebSubjectFactory {
+    @Override
+    public Subject createSubject(SubjectContext context) {
+        //涓嶅垱寤簊ession
+        context.setSessionCreationEnabled(false);
+        return super.createSubject(context);
+    }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/security/UserRealm.java b/springboot-vue3/src/main/java/com/example/springboot/security/UserRealm.java
new file mode 100644
index 0000000..8a47614
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/security/UserRealm.java
@@ -0,0 +1,102 @@
+package com.example.springboot.security;
+
+import cn.hutool.core.collection.CollectionUtil;
+import com.example.springboot.entity.MenuList;
+import com.example.springboot.entity.Permission;
+import com.example.springboot.entity.Role;
+import com.example.springboot.entity.RoleMenuList;
+import com.example.springboot.entity.RolePermission;
+import com.example.springboot.entity.User;
+import com.example.springboot.security.constant.SystemConstant;
+import com.example.springboot.security.util.SecurityUtil;
+import com.example.springboot.service.MenuListService;
+import com.example.springboot.service.PermissionService;
+import com.example.springboot.service.RoleMenuListService;
+import com.example.springboot.service.RolePermissionService;
+import com.example.springboot.service.RoleService;
+import com.example.springboot.service.UserService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.authc.AuthenticationInfo;
+import org.apache.shiro.authc.AuthenticationToken;
+import org.apache.shiro.authc.DisabledAccountException;
+import org.apache.shiro.authc.SimpleAuthenticationInfo;
+import org.apache.shiro.authc.UnknownAccountException;
+import org.apache.shiro.authc.UsernamePasswordToken;
+import org.apache.shiro.authz.AuthorizationInfo;
+import org.apache.shiro.authz.SimpleAuthorizationInfo;
+import org.apache.shiro.realm.AuthorizingRealm;
+import org.apache.shiro.subject.PrincipalCollection;
+import org.apache.shiro.util.ByteSource;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+@Slf4j
+public class UserRealm extends AuthorizingRealm {
+    @Autowired
+    private UserService userService;
+    @Autowired
+    private RolePermissionService rolePermissionService;
+    @Autowired
+    private PermissionService permissionService;
+    @Autowired
+    private RoleService roleService;
+    @Autowired
+    private MenuListService menuListService;
+    @Autowired
+    private RoleMenuListService roleMenuListService;
+
+    @Override
+    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
+        // 鎵ц鎺堟潈
+        SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();
+        // 璁剧疆瑙掕壊
+        List<Role> roles = roleService.selectRoles(SecurityUtil.getCurrentUser().getRoleId(), true);
+        if (CollectionUtil.isEmpty(roles)) {
+            return null;
+        }
+        authorizationInfo.addRoles(roles.stream().map(Role::getName).collect(Collectors.toList()));
+        List<RolePermission> rolePermissions = rolePermissionService.lambdaQuery().eq(RolePermission::getRoleId, SecurityUtil.getCurrentUser().getRoleId())
+                .eq(RolePermission::getState, 1).list();
+        if (CollectionUtil.isNotEmpty(rolePermissions)) {
+            Set<Permission> set = new HashSet<>();
+            for (RolePermission rolePermission : rolePermissions) {
+                List<Permission> permissions = permissionService.lambdaQuery().eq(Permission::getId, rolePermission.getPermissionId()).list();
+                set.addAll(permissions);
+            }
+            // 璁剧疆鏉冮檺
+            authorizationInfo.addStringPermissions(set.stream().map(Permission::getName).collect(Collectors.toList()));
+        }
+        return authorizationInfo;
+    }
+
+    @Override
+    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) {
+        if (authenticationToken.getPrincipal() == null) {
+            return null;
+        }
+        // 鎵ц璁よ瘉
+        UsernamePasswordToken usernamePasswordToken = (UsernamePasswordToken) authenticationToken;
+        User user = userService.selectByUsername(usernamePasswordToken.getUsername());
+        // 鍒ゆ柇鐢ㄦ埛
+        if (user == null) {
+            throw new UnknownAccountException("鐢ㄦ埛涓嶅瓨鍦�!");
+        }
+        if (user.getState() == 0) {
+            throw new DisabledAccountException("璐﹀彿宸茶绂佺敤!");
+        }
+
+        // 璁よ瘉鎴愬姛涔嬪悗璁剧疆瑙掕壊鍏宠仈鐨勮彍鍗�
+        List<RoleMenuList> roleMenuLists = roleMenuListService.lambdaQuery().in(RoleMenuList::getRoleId, user.getRoleId()).list();
+        if (CollectionUtil.isNotEmpty(roleMenuLists)) {
+            List<Long> collect = roleMenuLists.stream().map(RoleMenuList::getMenuListId).collect(Collectors.toList());
+            List<MenuList> menuLists = menuListService.lambdaQuery().in(CollectionUtil.isNotEmpty(collect), MenuList::getId, collect).list();
+            // 璁よ瘉鎴愬姛涔嬪悗璁剧疆瑙掕壊鍏宠仈鐨勮彍鍗�
+            user.setMenuLists(CollectionUtil.isNotEmpty(collect) ? menuLists : null);
+        }
+        return new SimpleAuthenticationInfo(user, user.getPassword(), ByteSource.Util.bytes(SystemConstant.JWT_SECRET_KEY), getName());
+    }
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/security/config/ShiroConfig.java b/springboot-vue3/src/main/java/com/example/springboot/security/config/ShiroConfig.java
new file mode 100644
index 0000000..52ad80c
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/security/config/ShiroConfig.java
@@ -0,0 +1,185 @@
+package com.example.springboot.security.config;
+ 
+import com.example.springboot.security.JWTRealm;
+import com.example.springboot.security.NoSessionFilter;
+import com.example.springboot.security.StatelessDefaultSubjectFactory;
+import com.example.springboot.security.UserRealm;
+import org.apache.shiro.authc.credential.HashedCredentialsMatcher;
+import org.apache.shiro.codec.Base64;
+import org.apache.shiro.mgt.DefaultSessionStorageEvaluator;
+import org.apache.shiro.mgt.DefaultSubjectDAO;
+import org.apache.shiro.spring.LifecycleBeanPostProcessor;
+import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
+import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
+import org.apache.shiro.web.mgt.CookieRememberMeManager;
+import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
+import org.apache.shiro.web.servlet.SimpleCookie;
+import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.DependsOn;
+ 
+import javax.servlet.Filter;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
+ 
+@Configuration
+public class ShiroConfig {
+ 
+ 
+    /**
+     * Shiro鐢熷懡鍛ㄦ湡澶勭悊鍣�
+     *
+     * @return
+     */
+    @Bean
+    public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
+        return new LifecycleBeanPostProcessor();
+    }
+ 
+    /**
+     * 寮�鍚疭hiro鐨勬敞瑙�(濡侤RequiresRoles,@RequiresPermissions),闇�鍊熷姪SpringAOP鎵弿浣跨敤Shiro娉ㄨВ鐨勭被,骞跺湪蹇呰鏃惰繘琛屽畨鍏ㄩ�昏緫楠岃瘉
+     * DefaultAdvisorAutoProxyCreator鐨勯『搴忓繀椤诲湪shiroFilterFactoryBean涔嬪墠锛屼笉鐒禨ecurityUtils.getSubject().getPrincipal()鑾峰彇涓嶅埌鍙傛暟
+     *
+     * @return
+     */
+    @Bean
+    @DependsOn({"lifecycleBeanPostProcessor"})
+    public DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator() {
+        DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator();
+        advisorAutoProxyCreator.setProxyTargetClass(true);
+        return advisorAutoProxyCreator;
+    }
+ 
+    @Bean
+    public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor() {
+        AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
+        authorizationAttributeSourceAdvisor.setSecurityManager(defaultSecurityManager());
+        return authorizationAttributeSourceAdvisor;
+    }
+ 
+    @Bean(name = "shiroFilterFactoryBean")
+    public ShiroFilterFactoryBean shiroFilterFactoryBean() {
+        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
+        shiroFilterFactoryBean.setSecurityManager(defaultSecurityManager());
+ 
+        // 杩囨护瑙勫垯
+        Map<String, String> linkedHashMap = new LinkedHashMap<>();
+        // 鏃犵姸鎬佺櫥褰曟儏鍐典笅鍏抽棴浜唖hiro涓殑session锛屽鑷存墍鏈夐渶瑕佸姞涓奱uthc鎺ュ彛璇锋眰鏃跺�欓兘浼氭姤閿欙紝
+        // 鎵�浠ヤ娇鐢ˊRequiresRoles,@RequiresPermissions娉ㄨВ,aop鏂瑰紡瀹炵幇鎺ュ彛鐨勬潈闄愭牎楠�
+ 
+        /* 娣诲姞shiro鐨勫唴缃繃婊ゅ櫒锛岃嚜瀹氫箟url瑙勫垯
+         * Shiro鑷甫鎷︽埅鍣ㄩ厤缃鍒�
+         * rest锛氭瘮濡�/admins/user/**=rest[user],鏍规嵁璇锋眰鐨勬柟娉曪紝鐩稿綋浜�/admins/user/**=perms[user锛歮ethod] ,鍏朵腑method涓簆ost锛実et锛宒elete绛�
+         * port锛氭瘮濡�/admins/user/**=port[8081],褰撹姹傜殑url鐨勭鍙d笉鏄�8081鏄烦杞埌schemal锛�//serverName锛�8081?queryString,鍏朵腑schmal鏄崗璁甴ttp鎴杊ttps绛夛紝serverName鏄綘璁块棶鐨刪ost,8081鏄痷rl閰嶇疆閲宲ort鐨勭鍙o紝queryString鏄綘璁块棶鐨剈rl閲岀殑锛熷悗闈㈢殑鍙傛暟
+         * perms锛氭瘮濡�/admins/user/**=perms[user锛歛dd锛�*],perms鍙傛暟鍙互鍐欏涓紝澶氫釜鏃跺繀椤诲姞涓婂紩鍙凤紝骞朵笖鍙傛暟涔嬮棿鐢ㄩ�楀彿鍒嗗壊锛屾瘮濡�/admins/user/**=perms["user锛歛dd锛�*,user锛歮odify锛�*"]锛屽綋鏈夊涓弬鏁版椂蹇呴』姣忎釜鍙傛暟閮介�氳繃鎵嶉�氳繃锛屾兂褰撲簬isPermitedAll()鏂规硶
+         * roles锛氭瘮濡�/admins/user/**=roles[admin],鍙傛暟鍙互鍐欏涓紝澶氫釜鏃跺繀椤诲姞涓婂紩鍙凤紝骞朵笖鍙傛暟涔嬮棿鐢ㄩ�楀彿鍒嗗壊锛屽綋鏈夊涓弬鏁版椂锛屾瘮濡�/admins/user/**=roles["admin,guest"],姣忎釜鍙傛暟閫氳繃鎵嶇畻閫氳繃锛岀浉褰撲簬hasAllRoles()鏂规硶銆�//瑕佸疄鐜皁r鐨勬晥鏋滅湅http://zgzty.blog.163.com/blog/static/83831226201302983358670/
+         * anon锛氭瘮濡�/admins/**=anon 娌℃湁鍙傛暟锛岃〃绀哄彲浠ュ尶鍚嶄娇鐢�
+         * authc锛氭瘮濡�/admins/user/**=authc琛ㄧず闇�瑕佽璇佹墠鑳戒娇鐢紝娌℃湁鍙傛暟
+         * authcBasic锛氭瘮濡�/admins/user/**=authcBasic娌℃湁鍙傛暟琛ㄧずhttpBasic璁よ瘉
+         * ssl锛氭瘮濡�/admins/user/**=ssl娌℃湁鍙傛暟锛岃〃绀哄畨鍏ㄧ殑url璇锋眰锛屽崗璁负https
+         * user锛氭瘮濡�/admins/user/**=user娌℃湁鍙傛暟琛ㄧず蹇呴』瀛樺湪鐢ㄦ埛锛屽綋鐧诲叆鎿嶄綔鏃朵笉鍋氭鏌�
+         * 璇︽儏瑙佹枃妗� http://shiro.apache.org/web.html#urls-
+         * */
+        // 鐢ㄦ埛鏉冮檺
+//        linkedHashMap.put("/api/user/selectPage", "perms[user:select]");
+//        linkedHashMap.put("/api/user/selectById", "perms[user:select]");
+//        linkedHashMap.put("/api/user/updateById", "perms[user:update]");
+//        linkedHashMap.put("/api/user/removeByIds", "perms[user:delete]");
+//        // 鍟嗗搧鏉冮檺
+//        linkedHashMap.put("/api/product/deleteBatchIds", "perms[product:delete]");
+//        linkedHashMap.put("/api/product/updateById", "perms[product:update]");
+//        linkedHashMap.put("/api/product/insert", "perms[product:add]");
+//
+//        // 瑙掕壊鏉冮檺
+//        linkedHashMap.put("/api/role/saveOrUpdate", "perms[role:add,role:update]");
+//        linkedHashMap.put("/api/role/removeByIds", "perms[role:delete]");
+//        linkedHashMap.put("/api/role/getById", "perms[role:select]");
+//        linkedHashMap.put("/api/role/selectPage", "perms[role:select]");
+//
+//        // 鑿滃崟鏉冮檺
+//        linkedHashMap.put("/api/menuList/removeByIds", "perms[menuList:delete]");
+//        linkedHashMap.put("/api/menuList/saveOrUpdate", "perms[menuList:add,menuList:update]");
+//
+//        // 璁㈠崟鏉冮檺
+//        linkedHashMap.put("/api/order/deleteBatchIds", "perms[order:delete]");
+//        linkedHashMap.put("/api/order/updateById", "perms[order:update]");
+//
+//        // 鎺堟潈鐨勬潈闄�
+//        linkedHashMap.put("/api/rolePermission/saveOrUpdate", "perms[rolePermission:add]");
+//        linkedHashMap.put("/api/rolePermission/removeByIds", "perms[rolePermission:delete]");
+ 
+        // 鑷畾涔夎繃婊ゅ櫒
+        HashMap<String, Filter> filterHashMap = new HashMap<>();
+        filterHashMap.put("jwt", new NoSessionFilter());
+        shiroFilterFactoryBean.setFilters(filterHashMap);
+        // 鐧诲綍涔嬪悗鎵嶅彲浠ヨ姹傜殑鎺ュ彛
+        linkedHashMap.put("/api/**", "jwt");
+        shiroFilterFactoryBean.setFilterChainDefinitionMap(linkedHashMap);
+        return shiroFilterFactoryBean;
+    }
+ 
+    @Bean
+    public DefaultWebSecurityManager defaultSecurityManager() {
+        DefaultWebSecurityManager defaultWebSecurityManager = new DefaultWebSecurityManager();
+        defaultWebSecurityManager.setRealms(Arrays.asList(userRealm(), jwtRealm()));
+        // 绂佺敤shiro涓殑session
+        DefaultSubjectDAO defaultSubjectDAO = new DefaultSubjectDAO();
+        DefaultSessionStorageEvaluator defaultSessionStorageEvaluator = new DefaultSessionStorageEvaluator();
+        defaultSessionStorageEvaluator.setSessionStorageEnabled(false);
+        defaultSubjectDAO.setSessionStorageEvaluator(defaultSessionStorageEvaluator);
+        defaultWebSecurityManager.setSubjectDAO(defaultSubjectDAO);
+        defaultWebSecurityManager.setSubjectFactory(subjectFactory());
+        return defaultWebSecurityManager;
+    }
+ 
+    /**
+     * 鐧诲綍鐨勮璇佸拰鎺堟潈
+     *
+     * @return
+     */
+    @Bean
+    public UserRealm userRealm() {
+        UserRealm userRealm = new UserRealm();
+        userRealm.setCredentialsMatcher(hashedCredentialsMatcher());
+        return userRealm;
+    }
+ 
+    /**
+     * token鐨勮璇佸拰鎺堟潈
+     *
+     * @return
+     */
+    @Bean
+    public JWTRealm jwtRealm() {
+        return new JWTRealm();
+    }
+ 
+    @Bean
+    public StatelessDefaultSubjectFactory subjectFactory() {
+        return new StatelessDefaultSubjectFactory();
+    }
+ 
+    /*
+     * 鍑瘉鍖归厤鍣� 鐢变簬鎴戜滑鐨勫瘑鐮佹牎楠屼氦缁橲hiro鐨凷impleAuthenticationInfo杩涜澶勭悊浜�
+     */
+    @Bean
+    public HashedCredentialsMatcher hashedCredentialsMatcher() {
+        HashedCredentialsMatcher hashedCredentialsMatcher = new HashedCredentialsMatcher();
+        hashedCredentialsMatcher.setHashAlgorithmName("MD5");// 鏁e垪绠楁硶:杩欓噷浣跨敤MD5绠楁硶;
+        hashedCredentialsMatcher.setHashIterations(1024);// 鏁e垪鐨勬鏁帮紝姣斿鏁e垪涓ゆ锛岀浉褰撲簬MD5(MD5(""));
+        return hashedCredentialsMatcher;
+    }
+ 
+    @Bean
+    public CookieRememberMeManager cookieRememberMeManager() {
+        CookieRememberMeManager cookieRememberMeManager = new CookieRememberMeManager();
+        SimpleCookie simpleCookie = new SimpleCookie("rememberMe");
+        simpleCookie.setMaxAge(259200000);
+        cookieRememberMeManager.setCookie(simpleCookie);
+        cookieRememberMeManager.setCipherKey(Base64.decode("6ZmI6I2j5Y+R5aSn5ZOlAA=="));
+        return cookieRememberMeManager;
+    }
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/security/constant/SystemConstant.java b/springboot-vue3/src/main/java/com/example/springboot/security/constant/SystemConstant.java
new file mode 100644
index 0000000..1a99f01
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/security/constant/SystemConstant.java
@@ -0,0 +1,27 @@
+package com.example.springboot.security.constant;
+
+public class SystemConstant {
+
+    /**
+     * 瑙掕壊鐨刱ey
+     **/
+    public static final String ROLE_CLAIMS = "rol";
+    /**
+     * rememberMe 涓� false 鐨勬椂鍊欒繃鏈熸椂闂存槸1涓皬鏃�
+     */
+    public static final long EXPIRATION = 60 * 60 * 24L;
+
+    /**
+     * rememberMe 涓� true 鐨勬椂鍊欒繃鏈熸椂闂存槸7澶�
+     */
+    public static final long EXPIRATION_REMEMBER = 60 * 60 * 24 * 7L;
+
+    /**
+     * JWT绛惧悕瀵嗛挜纭紪鐮佸埌搴旂敤绋嬪簭浠g爜涓紝搴旇瀛樻斁鍦ㄧ幆澧冨彉閲忔垨.properties鏂囦欢涓��
+     */
+    public static final String JWT_SECRET_KEY = "C*F-JaNdRgUkXn2r5u8x/A?D(G+KbPeShVmYq3s6v9y$B&E)H@McQfTjWnZr4u7w";
+
+    // JWT token defaults
+    public static final String TOKEN_HEADER = "Authorization";
+    public static final String TOKEN_TYPE = "JWT";
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/security/entity/JwtToken.java b/springboot-vue3/src/main/java/com/example/springboot/security/entity/JwtToken.java
new file mode 100644
index 0000000..4b475f6
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/security/entity/JwtToken.java
@@ -0,0 +1,22 @@
+package com.example.springboot.security.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import org.apache.shiro.authc.AuthenticationToken;
+
+@Data
+@AllArgsConstructor
+public class JwtToken implements AuthenticationToken {
+    private static final long serialVersionUID = 3768999689537588845L;
+    private String token;
+
+    @Override
+    public Object getPrincipal() {
+        return token;
+    }
+
+    @Override
+    public Object getCredentials() {
+        return token;
+    }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/security/util/JwtUtil.java b/springboot-vue3/src/main/java/com/example/springboot/security/util/JwtUtil.java
new file mode 100644
index 0000000..63d8f4e
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/security/util/JwtUtil.java
@@ -0,0 +1,68 @@
+package com.example.springboot.security.util;
+
+import com.example.springboot.security.constant.SystemConstant;
+import io.jsonwebtoken.Claims;
+import io.jsonwebtoken.Jwts;
+import io.jsonwebtoken.SignatureAlgorithm;
+import io.jsonwebtoken.security.Keys;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.crypto.SecretKey;
+import javax.xml.bind.DatatypeConverter;
+import java.util.Date;
+
+@Data
+@Component
+@Slf4j
+public class JwtUtil {
+    /**
+     * 鐢熸垚瓒冲鐨勫畨鍏ㄩ殢鏈哄瘑閽ワ紝浠ラ�傚悎绗﹀悎瑙勮寖鐨勭鍚�
+     */
+    private static byte[] apiKeySecretBytes = DatatypeConverter.parseBase64Binary(SystemConstant.JWT_SECRET_KEY);
+    private static SecretKey secretKey = Keys.hmacShaKeyFor(apiKeySecretBytes);
+
+    /**
+     * 鍒涘缓JWT
+     *
+     * @param subject      涓讳綋锛岀敤鎴峰悕
+     * @param isRememberMe 璁颁綇鎴�
+     * @return
+     */
+    public static String createToken(String subject, boolean isRememberMe) {
+        long expiration = isRememberMe ? SystemConstant.EXPIRATION_REMEMBER : SystemConstant.EXPIRATION;
+
+        String tokenPrefix = Jwts.builder()
+                .setHeaderParam("typ", SystemConstant.TOKEN_TYPE)
+                .signWith(secretKey, SignatureAlgorithm.HS256) // 璁剧疆鍔犲瘑鏂瑰紡
+                .setIssuer("Authority") // //绛惧彂鐨勪汉
+                .setIssuedAt(new Date()) // 绛惧彂鏃堕棿
+                .setSubject(subject) // 涓讳綋
+                .setExpiration(new Date(System.currentTimeMillis() + expiration * 1000)) // 鏈夋晥鏃堕棿
+                .compact();
+        return tokenPrefix;
+    }
+
+    public static boolean isTokenExpired(String token) {
+        Date expiredDate = getTokenBody(token).getExpiration();
+        return expiredDate.before(new Date());
+    }
+
+    public static String getUsernameByToken(String token) {
+        return getTokenBody(token).getSubject();
+    }
+
+    /**
+     * 瑙f瀽JWT
+     *
+     * @param token
+     * @return
+     */
+    private static Claims getTokenBody(String token) {
+        return Jwts.parser()
+                .setSigningKey(secretKey)
+                .parseClaimsJws(token)
+                .getBody();
+    }
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/security/util/SecurityUtil.java b/springboot-vue3/src/main/java/com/example/springboot/security/util/SecurityUtil.java
new file mode 100644
index 0000000..bbcb410
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/security/util/SecurityUtil.java
@@ -0,0 +1,20 @@
+package com.example.springboot.security.util;
+
+import com.example.springboot.entity.User;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.subject.Subject;
+
+public class SecurityUtil {
+    /**
+     * 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛
+     *
+     * @return
+     */
+    public static User getCurrentUser() {
+        Subject subject = SecurityUtils.getSubject();
+        if (!subject.isAuthenticated() && !subject.isRemembered()) {
+            throw new RuntimeException("Log current user error: UnAuthenticated subject");
+        }
+        return (User) subject.getPrincipal();
+    }
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/AlarmService.java b/springboot-vue3/src/main/java/com/example/springboot/service/AlarmService.java
new file mode 100644
index 0000000..6e62ec4
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/AlarmService.java
@@ -0,0 +1,8 @@
+package com.example.springboot.service;
+
+import org.springframework.stereotype.Service;
+
+@Service
+public class AlarmService {
+
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/CategoryService.java b/springboot-vue3/src/main/java/com/example/springboot/service/CategoryService.java
new file mode 100644
index 0000000..f86b51b
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/CategoryService.java
@@ -0,0 +1,51 @@
+package com.example.springboot.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.example.springboot.entity.Category;
+import com.example.springboot.entity.vo.CategoryVo;
+
+import java.util.List;
+
+public interface CategoryService extends IService<Category> {
+    /**
+     * 鍒嗛〉鏌ヨ鍒嗙被
+     *
+     * @param categoryVO
+     * @return
+     */
+    IPage<Category> selectPage(CategoryVo categoryVO);
+
+    /**
+     * 鏌ヨ瀛愰泦,杩斿洖闈炲祵濂楁暟鎹粨鏋�
+     *
+     * @param id
+     * @param bool 鏄惁鍖呭惈鑷繁
+     * @return
+     */
+    List<Category> selectList(Long id, Boolean bool);
+
+    /**
+     * 鏌ヨ瀛愰泦,涓嶅寘鍚嚜宸�,杩斿洖闈炲祵濂楁暟鎹粨鏋�
+     *
+     * @param id   鍒嗙被鐨刬d
+     * @param path 鍒嗙被鐨勮矾寰�
+     * @return
+     */
+    List<Category> selectByPath(Long id, String path);
+
+    /**
+     * 鏌ヨ瀛愰泦,杩斿洖宓屽鏁版嵁缁撴瀯
+     *
+     * @return
+     */
+    List<Category> selectChilds(Long creator);
+
+    /**
+     * 鏌ヨ瀛愰泦,涓嶅寘鍚嚜宸�,杩斿洖宓屽鏁版嵁缁撴瀯
+     *
+     * @param id
+     * @return
+     */
+    List<Category> selectChild(Long id);
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/HomeService.java b/springboot-vue3/src/main/java/com/example/springboot/service/HomeService.java
new file mode 100644
index 0000000..0daec53
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/HomeService.java
@@ -0,0 +1,9 @@
+package com.example.springboot.service;
+
+import org.springframework.stereotype.Service;
+
+
+@Service
+public class HomeService {
+    
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/JdbcConnections.java b/springboot-vue3/src/main/java/com/example/springboot/service/JdbcConnections.java
index 30c135e..204a419 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/service/JdbcConnections.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/JdbcConnections.java
@@ -11,6 +11,7 @@
 import org.springframework.stereotype.Component;
 
 import com.example.springboot.entity.Glass;
+import com.example.springboot.entity.Queue;
 import com.example.springboot.entity.north_glass_buffer1;
 @Component
 public class JdbcConnections {
@@ -69,12 +70,41 @@
 		//  conn.close();
          return north_glass_buffer1s;
     }
+	//鏍规嵁鐜荤拑id锛岃鍗昳d锛岄摑妗唅d鏌ヨ瀹㈡埛鐜荤拑淇℃伅
+	public  Queue SelectGlassByGlassIdOrderIdFrameIdQueue(String glassid,String orderid,String frameid) throws SQLException {
+        conn = getConn();
+        Queue queue=new Queue();
+        String sql = "select * from north_glass_buffer1 where barcode=? or ordernumber=? or FrameBarcode=?";
+         ps = conn.prepareStatement(sql);
+         ps.setString(1, glassid);
+		 ps.setString(2, orderid);
+		 ps.setString(3, frameid);
+         rs= ps.executeQuery();
+         while (rs.next()) {
+			queue.setid(rs.getInt("Id"));
+			queue.setorderId(rs.getString("ordernumber"));
+			queue.setlistId(rs.getString("listnumber"));
+			queue.setboxId(rs.getString("boxnumber"));
+			queue.setglassId(rs.getString("barcode"));
+			queue.setglasswidthmm(rs.getDouble("glasslength"));
+			queue.setglassheightmm(rs.getDouble("glassheight"));
+			queue.setglasswidth(rs.getDouble("glasslength_mm"));
+			queue.setglassheight(rs.getDouble("glassheight_mm"));
+			// queue.setitemtype(rs.getString("itemtype"));
+			// queue.setslotnumber(rs.getString("slotnumber"));
+			// queue.setdatemodified(rs.getString("datemodified"));
+			// queue.setdatecreated(rs.getString("datecreated"));
+			// queue.setFrameBarcode(rs.getString("FrameBarcode"));
+         }
+		//  conn.close();
+         return queue;
+    }
 
 	public  List<north_glass_buffer1> SelectGlassByGlassIdOrderIdFrameIds(String glassid,String orderid,String frameid) throws SQLException {
         conn = getConn();
         // north_glass_buffer1 glass=new north_glass_buffer1();
 		List<north_glass_buffer1> glass=new ArrayList<north_glass_buffer1>();
-        String sql = "select * from north_glass_buffer1 where barcode=? or ordernumber=? or FrameBarcode=?";
+        String sql = "select * from north_glass_buffer1 where position(? in barcode) and position(? in ordernumber) and position(? in FrameBarcode)";
          ps = conn.prepareStatement(sql);
          ps.setString(1, glassid);
 		 ps.setString(2, orderid);
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/MenuListService.java b/springboot-vue3/src/main/java/com/example/springboot/service/MenuListService.java
new file mode 100644
index 0000000..ae97e66
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/MenuListService.java
@@ -0,0 +1,34 @@
+package com.example.springboot.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.example.springboot.entity.MenuList;
+import com.example.springboot.entity.vo.MenuListVo;
+
+import java.util.List;
+
+public interface MenuListService extends IService<MenuList> {
+    /**
+     * 鍒嗛〉鏌ヨ鑿滃崟
+     *
+     * @param menuListVO
+     * @return
+     */
+    IPage<MenuList> selectPage(MenuListVo menuListVO);
+
+    /**
+     * 鏍规嵁瑙掕壊杩斿洖鑿滃崟,鏍戠姸缁撴瀯
+     *
+     * @param roleId
+     * @return
+     */
+    List<MenuList> selectList(Long roleId);
+
+    /**
+     * 鏌ヨ涓嬬骇鑿滃崟,涓嶅寘鎷嚜宸�
+     *
+     * @param parentId
+     * @return
+     */
+    List<MenuList> selectByParentId(Long parentId, List<Long> ids);
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/OutSlice.java b/springboot-vue3/src/main/java/com/example/springboot/service/OutSlice.java
new file mode 100644
index 0000000..13764dd
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/OutSlice.java
@@ -0,0 +1,66 @@
+package com.example.springboot.service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import com.example.springboot.entity.Out_slice;
+
+public class OutSlice {
+
+    // public static List<Out_slice> Groupbyresult(List<Out_slice> out_slices) {
+    //     // 浼犲叆涓�涓泦鍚� 杩涜鍒嗙粍鏉′欢鍒嗙粍
+    //     List<Out_slice> resultlist = new ArrayList<Out_slice>();
+    //     HashMap map = new HashMap<>();
+    //     // HashMap<String,List<Out_slice>> map=new HashMap<String,List<Out_slice>>();
+    //     for (Out_slice out_slice : out_slices) {
+    //         String key_ = out_slice.getState() + "-";
+    //         if (map.get(key_) == null) {
+    //             List<Out_slice> lists = new ArrayList<Out_slice>();
+    //             lists.add(out_slice);
+    //             map.put(key_, lists);
+    //         } else {
+    //             List<Out_slice> lists = (List<Out_slice>) map.get(key_);
+    //             lists.add(out_slice);
+    //             map.put(key_, lists);
+    //         }
+    //     }
+    //     return resultlist;
+    // }
+
+    // public static List<Out_slice> Orderbyresult(List<Out_slice> out_slices, int orders) {
+    //     // orders 鎺掑簭妯″紡
+    //     List<Out_slice> list = new ArrayList<Out_slice>();
+    //     for (Out_slice out_slice : out_slices) {
+    //         if (list.isEmpty()) {
+    //             list.add(out_slice);
+    //         } else {
+    //             for (int i = 0; i < list.size(); i++) {
+    //                 Out_slice out_slice2 = list.get(i);
+    //                 if (out_slice.getID() > out_slice2.getID()) {
+    //                     continue;
+    //                 } else {
+    //                     list.add(i, out_slice2);
+    //                 }
+    //             }
+    //         }
+    //     }
+    // }
+
+    // public static void f() {
+    //     HashMap map = new HashMap<>();
+    //     for (Out_slice out_slice : listoutslice) {
+    //         String key_ = out_slice.getState() + "-";
+    //         if (map.get(key_) == null) {
+    //             List<Out_slice> lists = new ArrayList<Out_slice>();
+    //             lists.add(out_slice);
+    //             map.put(key_, lists);
+    //         } else {
+    //             List<Out_slice> lists = (List<Out_slice>) map.get(key_);
+    //             lists.add(out_slice);
+    //             map.put(key_, lists);
+    //         }
+    //     }
+    // }
+
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/PermissionService.java b/springboot-vue3/src/main/java/com/example/springboot/service/PermissionService.java
new file mode 100644
index 0000000..6887c06
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/PermissionService.java
@@ -0,0 +1,7 @@
+package com.example.springboot.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.example.springboot.entity.Permission;
+
+public interface PermissionService extends IService<Permission> {
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/RoleMenuListService.java b/springboot-vue3/src/main/java/com/example/springboot/service/RoleMenuListService.java
new file mode 100644
index 0000000..a9bdc80
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/RoleMenuListService.java
@@ -0,0 +1,10 @@
+package com.example.springboot.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.example.springboot.entity.RoleMenuList;
+import com.example.springboot.entity.vo.RoleMenuListVo;
+
+public interface RoleMenuListService extends IService<RoleMenuList> {
+    IPage<RoleMenuList> selectPage(RoleMenuListVo roleMenuListVO);
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/RolePermissionService.java b/springboot-vue3/src/main/java/com/example/springboot/service/RolePermissionService.java
new file mode 100644
index 0000000..e023c52
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/RolePermissionService.java
@@ -0,0 +1,16 @@
+package com.example.springboot.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.example.springboot.entity.RolePermission;
+import com.example.springboot.entity.vo.RolePermissionVo;
+
+public interface RolePermissionService extends IService<RolePermission> {
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param rolePermissionVO
+     * @return
+     */
+    IPage<RolePermission> selectPage(RolePermissionVo rolePermissionVO);
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/RoleService.java b/springboot-vue3/src/main/java/com/example/springboot/service/RoleService.java
new file mode 100644
index 0000000..420e34e
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/RoleService.java
@@ -0,0 +1,17 @@
+package com.example.springboot.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.example.springboot.entity.Role;
+import com.example.springboot.entity.vo.RoleVo;
+
+import java.util.List;
+import java.util.Set;
+
+public interface RoleService extends IService<Role> {
+    Set<Role> selectRolesByParentId(Set<Role> roles, Long id);
+
+    List<Role> selectRoles(Long id, Boolean contain);
+
+    IPage<Role> selectPage(RoleVo roleVO);
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java b/springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java
index 797c9ff..0db49f2 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java
@@ -536,9 +536,9 @@
         S7control.getinstance().WriteByte(address, bytes);// 娲惧彂鍑虹墖id
     }
     //鑾峰彇鍦板潃鍐呯殑鐜荤拑id杞瓧绗︿覆
-    public StringBuilder queGlassid(String address) {
+    public StringBuilder queGlassid(String address,int count) {
         StringBuilder writedstrIdOut = new StringBuilder();
-        byte[] writedglassidbytesOut = S7control.getinstance().ReadByte(address, 14);
+        byte[] writedglassidbytesOut = S7control.getinstance().ReadByte(address, count);
       if (writedglassidbytesOut != null) {
         // 鑾峰彇鐜荤拑id
         for (byte iditem : writedglassidbytesOut) {
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/UserService.java b/springboot-vue3/src/main/java/com/example/springboot/service/UserService.java
new file mode 100644
index 0000000..2916dba
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/UserService.java
@@ -0,0 +1,21 @@
+package com.example.springboot.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.example.springboot.entity.User;
+import com.example.springboot.entity.vo.UserVo;
+
+import java.util.List;
+
+public interface UserService extends IService<User> {
+    IPage<User> selectPage(UserVo userVO);
+
+    User selectByUsername(String username);
+
+    Integer countByUsername(String username);
+
+
+    List<Long> selectChild(Long id, Boolean bool);
+
+    User getByDianqimima(String newPassword);
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/device/DeviceService.java b/springboot-vue3/src/main/java/com/example/springboot/service/device/DeviceService.java
new file mode 100644
index 0000000..378945a
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/device/DeviceService.java
@@ -0,0 +1,16 @@
+package com.example.springboot.service.device;
+
+import com.example.springboot.entity.device.DeviceEntity;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+@Service
+public interface DeviceService {
+    List<DeviceEntity> getAllDevices();
+
+
+    void updateDeviceName(DeviceEntity device);
+    void updateMultipleDevices(List<DeviceEntity> devices);
+    List<DeviceEntity> callStoredProc(DeviceEntity device); // 淇敼杩斿洖绫诲瀷涓� List<DeviceEntity>
+}
+
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/device/impl/DeviceServiceImpl.java b/springboot-vue3/src/main/java/com/example/springboot/service/device/impl/DeviceServiceImpl.java
new file mode 100644
index 0000000..92c650f
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/device/impl/DeviceServiceImpl.java
@@ -0,0 +1,50 @@
+package com.example.springboot.service.device.impl;
+
+import com.example.springboot.entity.device.DeviceEntity;
+import com.example.springboot.mapper.device.DeviceMapper;
+import com.example.springboot.service.device.DeviceService;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+
+public  class DeviceServiceImpl implements DeviceService {
+
+    private final DeviceMapper deviceDao;
+
+    @Autowired
+    public DeviceServiceImpl(DeviceMapper deviceDao) {
+        this.deviceDao = deviceDao;
+    }
+
+    @Override
+    public List<DeviceEntity> getAllDevices() {
+        return deviceDao.selectAllDevices();
+    }
+
+    @Override
+    public void updateDeviceName(DeviceEntity device) {
+        deviceDao.updateDeviceName(device);
+    }
+
+    @Override
+    public void updateMultipleDevices(List<DeviceEntity> devices) {
+        deviceDao.updateMultipleDevices(devices);
+    }
+
+    @Override
+    public List<DeviceEntity> callStoredProc(DeviceEntity device) {
+        return performStoredProcQuery(device);
+    }
+
+    private List<DeviceEntity> performStoredProcQuery(DeviceEntity device) {
+        // 鎵ц瀛樺偍杩囩▼鐨勬煡璇㈡搷浣滐紝骞惰繑鍥炵粨鏋滃垪琛�
+        List<DeviceEntity> resultList = new ArrayList<>();
+
+        return deviceDao.callStoredProc(device);
+    }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/impl/CategoryServiceImpl.java b/springboot-vue3/src/main/java/com/example/springboot/service/impl/CategoryServiceImpl.java
new file mode 100644
index 0000000..ef57dcb
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/impl/CategoryServiceImpl.java
@@ -0,0 +1,79 @@
+package com.example.springboot.service.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.example.springboot.entity.vo.CategoryVo;
+import com.example.springboot.security.util.SecurityUtil;
+import com.example.springboot.service.CategoryService;
+import com.example.springboot.service.UserService;
+import com.example.springboot.mapper.CategoryMapper;
+import com.example.springboot.entity.Category;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+@Slf4j
+public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> implements CategoryService {
+    @Autowired
+    private UserService userService;
+    @Autowired
+    private CategoryMapper categoryDao;
+
+    @Override
+    public IPage<Category> selectPage(CategoryVo categoryVO) {
+        List<Long> longs = userService.selectChild(SecurityUtil.getCurrentUser().getId(), true);
+        return lambdaQuery().like(StrUtil.isNotBlank(categoryVO.getName()), Category::getName, categoryVO.getName())
+                .in(Category::getCreator, longs)
+                .eq(null != categoryVO.getState(), Category::getState, categoryVO.getState())
+                .eq(null != categoryVO.getParentId(), Category::getParentId, categoryVO.getParentId())
+                .between(null != categoryVO.getStartTime() && null != categoryVO.getEndTime(), Category::getCreateTime, categoryVO.getStartTime(), categoryVO.getCreateTime())
+                .orderByDesc(Category::getCreateTime)
+                .page(new Page<>(categoryVO.getPageNum(), categoryVO.getPageSize()));
+    }
+
+    @Override
+    public List<Category> selectList(Long id, Boolean bool) {
+        Category category = getById(id);
+        List<Category> categories = selectByPath(category.getId(), category.getPath());
+        if (bool) categories.add(category);
+        return categories;
+    }
+
+    @Override
+    public List<Category> selectByPath(Long id, String path) {
+        return categoryDao.selectByPath((path == null ? "" : path) + id + "-");
+    }
+
+    @Override
+    public List<Category> selectChilds(Long creator) {
+        List<Long> longs = userService.selectChild(creator, true);
+        if (CollectionUtil.isNotEmpty(longs)) return new ArrayList<>();
+        List<Category> categories = lambdaQuery()
+                .or(categoryLambdaQueryWrapper -> categoryLambdaQueryWrapper.isNull(Category::getParentId).or().eq(Category::getParentId, ""))
+                .in(Category::getCreator, longs)
+                .list();
+        for (Category category : categories) {
+            List<Category> categories1 = selectChild(category.getId());
+            category.setCategorys(categories1);
+        }
+        return categories;
+    }
+
+    @Override
+    public List<Category> selectChild(Long id) {
+        List<Category> categoryList = lambdaQuery().eq(Category::getParentId, id).list();
+        if (CollectionUtil.isEmpty(categoryList)) return null;
+        for (Category category1 : categoryList) {
+            List<Category> categoryList1 = selectChild(category1.getId());
+            category1.setCategorys(categoryList1);
+        }
+        return categoryList;
+    }
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/impl/MenuListServiceImpl.java b/springboot-vue3/src/main/java/com/example/springboot/service/impl/MenuListServiceImpl.java
new file mode 100644
index 0000000..4de2090
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/impl/MenuListServiceImpl.java
@@ -0,0 +1,73 @@
+package com.example.springboot.service.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.example.springboot.entity.vo.MenuListVo;
+import com.example.springboot.mapper.MenuListMapper;
+import com.example.springboot.mapper.RoleMenuListMapper;
+import com.example.springboot.security.util.SecurityUtil;
+import com.example.springboot.service.MenuListService;
+import com.example.springboot.service.RoleService;
+import com.example.springboot.entity.MenuList;
+import com.example.springboot.entity.Role;
+import com.example.springboot.entity.RoleMenuList;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+@Slf4j
+public class MenuListServiceImpl extends ServiceImpl<MenuListMapper, MenuList> implements MenuListService {
+    @Autowired
+    private RoleService roleService;
+    @Autowired
+    private RoleMenuListMapper roleMenuListDao;
+
+    @Override
+    public IPage<MenuList> selectPage(MenuListVo menuListVO) {
+        return lambdaQuery()
+                .like(StrUtil.isNotBlank(menuListVO.getName()), MenuList::getName, menuListVO.getName())
+                .eq(null != menuListVO.getState(), MenuList::getState, menuListVO.getState())
+                .between(null != menuListVO.getStartTime() && null != menuListVO.getEndTime(), MenuList::getCreateTime, menuListVO.getStartTime(), menuListVO.getEndTime())
+                .orderByAsc(MenuList::getParentId).last(",create_time desc")
+                .page(new Page<>(menuListVO.getPageNum(), menuListVO.getPageSize()));
+    }
+
+    @Override
+    public List<MenuList> selectList(Long roleId) {
+        List<Role> roles = roleService.selectRoles(roleId == null ? SecurityUtil.getCurrentUser().getRoleId() : roleId, true);
+        List<Long> ids = roles.stream().map(Role::getId).collect(Collectors.toList());
+        List<RoleMenuList> roleMenuLists = roleMenuListDao.selectList(new QueryWrapper<RoleMenuList>().lambda()
+                .in(RoleMenuList::getRoleId, ids));
+        List<Long> collect = roleMenuLists.stream().map(RoleMenuList::getMenuListId).collect(Collectors.toList());
+        if (CollectionUtil.isEmpty(collect)) return new ArrayList<>();
+        List<MenuList> menuLists = lambdaQuery()
+                .or(menuListLambdaQueryWrapper -> menuListLambdaQueryWrapper.isNull(MenuList::getParentId).or().eq(MenuList::getParentId, ""))
+                .in(MenuList::getId, collect)
+                .list();
+        for (MenuList menuList : menuLists) {
+            List<MenuList> list = selectByParentId(menuList.getId(), collect);
+            menuList.setMenuLists(list);
+        }
+        return menuLists;
+    }
+
+    @Override
+    public List<MenuList> selectByParentId(Long parentId, List<Long> ids) {
+        List<MenuList> list = lambdaQuery().eq(MenuList::getParentId, parentId).in(MenuList::getId, ids).list();
+        if (CollectionUtil.isEmpty(list)) return null;
+        for (MenuList menuList : list) {
+            List<MenuList> menuLists = selectByParentId(menuList.getId(), ids);
+            menuList.setMenuLists(menuLists);
+        }
+        return list;
+    }
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/impl/PermissionServiceImpl.java b/springboot-vue3/src/main/java/com/example/springboot/service/impl/PermissionServiceImpl.java
new file mode 100644
index 0000000..e5550bd
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/impl/PermissionServiceImpl.java
@@ -0,0 +1,13 @@
+package com.example.springboot.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.example.springboot.mapper.PermissionMapper;
+import com.example.springboot.service.PermissionService;
+import com.example.springboot.entity.Permission;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+@Service
+@Slf4j
+public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permission> implements PermissionService {
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/impl/RoleMenuListServiceImpl.java b/springboot-vue3/src/main/java/com/example/springboot/service/impl/RoleMenuListServiceImpl.java
new file mode 100644
index 0000000..91a64d8
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/impl/RoleMenuListServiceImpl.java
@@ -0,0 +1,33 @@
+package com.example.springboot.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.example.springboot.mapper.MenuListMapper;
+import com.example.springboot.mapper.RoleMapper;
+import com.example.springboot.mapper.RoleMenuListMapper;
+import com.example.springboot.service.RoleMenuListService;
+import com.example.springboot.entity.RoleMenuList;
+import com.example.springboot.entity.vo.RoleMenuListVo;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+@Slf4j
+public class RoleMenuListServiceImpl extends ServiceImpl<RoleMenuListMapper, RoleMenuList> implements RoleMenuListService {
+    @Autowired
+    private MenuListMapper menuListDao;
+    @Autowired
+    private RoleMapper roleDao;
+
+    @Override
+    public IPage<RoleMenuList> selectPage(RoleMenuListVo roleMenuListVO) {
+        IPage<RoleMenuList> roleMenuListIPage = lambdaQuery().page(new Page<>(roleMenuListVO.getPageNum(), roleMenuListVO.getPageSize()));
+        roleMenuListIPage.getRecords().forEach(rm -> {
+            rm.setMenuList(menuListDao.selectById(rm.getMenuListId()));
+            rm.setRole(roleDao.selectById(rm.getRoleId()));
+        });
+        return roleMenuListIPage;
+    }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/impl/RolePermissionServiceImpl.java b/springboot-vue3/src/main/java/com/example/springboot/service/impl/RolePermissionServiceImpl.java
new file mode 100644
index 0000000..b6abbeb
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/impl/RolePermissionServiceImpl.java
@@ -0,0 +1,35 @@
+package com.example.springboot.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.example.springboot.service.PermissionService;
+import com.example.springboot.mapper.RolePermissionMapper;
+import com.example.springboot.entity.RolePermission;
+import com.example.springboot.entity.vo.RolePermissionVo;
+import com.example.springboot.service.RolePermissionService;
+import com.example.springboot.service.RoleService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+@Slf4j
+public class RolePermissionServiceImpl extends ServiceImpl<RolePermissionMapper, RolePermission> implements RolePermissionService {
+    @Autowired
+    private RoleService roleService;
+    @Autowired
+    private PermissionService permissionService;
+
+    @Override
+    public IPage<RolePermission> selectPage(RolePermissionVo rolePermissionVO) {
+        IPage<RolePermission> rolePermissionIPage = lambdaQuery()
+                .orderByAsc(RolePermission::getRoleId)
+                .page(new Page<>(rolePermissionVO.getPageNum(), rolePermissionVO.getPageSize()));
+        rolePermissionIPage.getRecords().forEach(rolePermission -> {
+            rolePermission.setRole(roleService.getById(rolePermission.getRoleId()));
+            rolePermission.setPermission(permissionService.getById(rolePermission.getPermissionId()));
+        });
+        return rolePermissionIPage;
+    }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/impl/RoleServiceImpl.java b/springboot-vue3/src/main/java/com/example/springboot/service/impl/RoleServiceImpl.java
new file mode 100644
index 0000000..719188d
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/impl/RoleServiceImpl.java
@@ -0,0 +1,53 @@
+package com.example.springboot.service.impl;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.example.springboot.entity.vo.RoleVo;
+import com.example.springboot.mapper.RoleMapper;
+import com.example.springboot.service.RoleService;
+import com.example.springboot.entity.Role;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+@Service
+@Slf4j
+public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements RoleService {
+    @Autowired
+    private RoleMapper roleDao;
+
+    @Override
+    public Set<Role> selectRolesByParentId(Set<Role> roles, Long id) {
+        List<Role> list = lambdaQuery().eq(Role::getParentId, id).eq(Role::getState, 1).list();
+        roles.addAll(list);
+        for (Role role : list) {
+            Set<Role> roles1 = selectRolesByParentId(roles, role.getId());
+            roles.addAll(roles1);
+        }
+        return roles;
+    }
+
+    @Override
+    public List<Role> selectRoles(Long id, Boolean contain) {
+        HashSet<Role> roles = new HashSet<>();
+        if (contain) {
+            roles.add(roleDao.selectById(id));
+        }
+        selectRolesByParentId(roles, id);
+        return new ArrayList<>(roles);
+    }
+
+    @Override
+    public IPage<Role> selectPage(RoleVo roleVO) {
+        return lambdaQuery()
+                .like(StrUtil.isNotBlank(roleVO.getName()), Role::getName, roleVO.getName())
+                .page(new Page<>(roleVO.getPageNum(), roleVO.getPageSize()));
+    }
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/impl/UserServiceImpl.java b/springboot-vue3/src/main/java/com/example/springboot/service/impl/UserServiceImpl.java
new file mode 100644
index 0000000..a6c72a8
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/impl/UserServiceImpl.java
@@ -0,0 +1,65 @@
+package com.example.springboot.service.impl;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.example.springboot.entity.vo.UserVo;
+import com.example.springboot.mapper.UserMapper;
+import com.example.springboot.security.util.SecurityUtil;
+import com.example.springboot.service.UserService;
+import com.example.springboot.entity.User;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+@Slf4j
+public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
+    @Autowired
+    private UserMapper userDao;
+
+    public IPage<User> selectPage(UserVo userVO) {
+        List<Long> longs = selectChild(SecurityUtil.getCurrentUser().getId(), true);
+        return lambdaQuery()
+                .in(User::getId, longs)
+                .like(StrUtil.isNotBlank(userVO.getUsername()), User::getUsername, userVO.getUsername())
+                .like(StrUtil.isNotBlank(userVO.getEmail()), User::getEmail, userVO.getEmail())
+                .like(StrUtil.isNotBlank(userVO.getQq()), User::getQq, userVO.getQq())
+                .like(StrUtil.isNotBlank(userVO.getPhone()), User::getPhone, userVO.getPhone())
+                .eq(null != userVO.getState(), User::getState, userVO.getState())
+                .eq(null != userVO.getRoleId(), User::getRoleId, userVO.getRoleId())
+                .eq(null != userVO.getParentId(), User::getParentId, userVO.getParentId())
+                .between(null != userVO.getStartTime() && null != userVO.getEndTime(), User::getCreateTime, userVO.getStartTime(), userVO.getEndTime())
+                .orderByAsc(User::getRoleId)
+                .orderByDesc(User::getCreateTime)
+                .page(new Page<>(userVO.getPageNum(), userVO.getPageSize()));
+    }
+
+    public User selectByUsername(String username) {
+        return lambdaQuery().select(User::getId, User::getRoleId, User::getUsername, User::getPassword, User::getState).eq(User::getUsername, username).one();
+    }
+    public User getByDianqimima(String newPassword) {
+        return lambdaQuery().select(User::getPassword).one();
+    }
+    public User getByUser(String admin) {
+        return lambdaQuery().select(User::getUsername).one();
+    }
+    public Integer countByUsername(String username) {
+        return lambdaQuery().eq(User::getUsername, username).count();
+    }
+
+    public List<Long> selectChild(Long id, Boolean bool) {
+        User user = getById(id);
+        List<User> users = userDao.selectChild(user.getPath() + user.getId() + "-");
+
+        List<Long> ids = users.stream().map(User::getId).collect(Collectors.toList());
+        if (bool) ids.add(id);
+
+        return ids;
+
+    }
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/util/ValidatorUtil.java b/springboot-vue3/src/main/java/com/example/springboot/util/ValidatorUtil.java
new file mode 100644
index 0000000..9754e00
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/util/ValidatorUtil.java
@@ -0,0 +1,38 @@
+package com.example.springboot.util;
+
+import org.hibernate.validator.HibernateValidator;
+
+import javax.validation.ConstraintViolation;
+import javax.validation.Validation;
+import javax.validation.Validator;
+import java.util.Set;
+
+/**
+ * hibernate-validator鏍¢獙宸ュ叿绫�
+ * 鍙傝�冩枃妗o細http://docs.jboss.org/hibernate/validator/5.4/reference/en-US/html_single/
+ */
+public class ValidatorUtil {
+    private static Validator validator;
+
+    static {
+        validator = Validation.byProvider(HibernateValidator.class).configure().failFast(true).buildValidatorFactory().getValidator();
+    }
+
+    /**
+     * ValidatorUtil.validateEntity(role);
+     * 鍦╟ontroller鎺ュ彛涓娇鐢ㄦ鏂逛究鏍¢獙瀹炰綋鍙傛暟鐨勫悎娉曟牎楠屽璞�
+     *
+     * @param object 寰呮牎楠屽璞�
+     * @param groups 寰呮牎楠岀殑缁�
+     */
+    public static void validateEntity(Object object, Class<?>... groups) {
+        Set<ConstraintViolation<Object>> constraintViolations = validator.validate(object, groups);
+        if (!constraintViolations.isEmpty()) {
+            StringBuilder msg = new StringBuilder();
+            for (ConstraintViolation<Object> constraint : constraintViolations) {
+                msg.append(constraint.getMessage()).append(",");
+            }
+            throw new RuntimeException(msg.toString());
+        }
+    }
+}
diff --git a/springboot-vue3/src/main/resources/application.properties b/springboot-vue3/src/main/resources/application.properties
new file mode 100644
index 0000000..9ac74e3
--- /dev/null
+++ b/springboot-vue3/src/main/resources/application.properties
@@ -0,0 +1,25 @@
+#\u5B9A\u4E49\u9879\u76EE\u7AEF\u53E3
+server.port=8888
+#\u5B9A\u4E49\u9879\u76EE\u7684\u8BBF\u95EE\u76EE\u5F55
+server.servlet.context-path=/springboot-vue3
+####MyBatis-Plus\u914D\u7F6E
+#\u6570\u636E\u5E93\u9A71\u52A8
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+#\u6570\u636E\u5E93\u8FDE\u63A5\u5730\u5740
+spring.datasource.url=jdbc:mysql://localhost:3306/canadames?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
+#\u6570\u636E\u5E93\u7528\u6237\u540D
+spring.datasource.username=root
+#\u6570\u636E\u5E93\u7528\u6237\u5BC6\u7801  
+spring.datasource.password=beibo.123/
+#\u6620\u5C04\u6587\u4EF6\u7684\u4F4D\u7F6E
+mybatis-plus.mapper-locations=classpath:com/example/springboot/mapper/*Mapper.xml
+#\u7C7B\u578B\u522B\u540D
+mybatis-plus.type-aliases-package=com.example.springboot.entity
+#\u914D\u7F6Esql\u6253\u5370
+logging.level.com.jonssonyanyan.dao=debug
+#spring\u4E2D\u9ED8\u8BA4\u662Ftrue\uFF0C\u4E5F\u5C31\u662F\u9ED8\u8BA4\u652F\u6301\u540D\u79F0\u76F8\u540C\u7684bean\u7684\u8986\u76D6\u3002\u800Cspringboot\u4E2D\u7684\u9ED8\u8BA4\u503C\u662Ffalse\uFF0C\u4E5F\u5C31\u662F\u4E0D\u652F\u6301\u540D\u79F0\u76F8\u540C\u7684bean\u88AB\u8986\u76D6
+spring.main.allow-bean-definition-overriding=true
+#\u683C\u5F0F\u5316date\u65E5\u671F\u683C\u5F0F
+spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
+spring.jackson.time-zone=GMT+8
+
diff --git a/springboot-vue3/src/main/resources/com/example/springboot/mapper/CategoryMapper.xml b/springboot-vue3/src/main/resources/com/example/springboot/mapper/CategoryMapper.xml
new file mode 100644
index 0000000..4ab4a2f
--- /dev/null
+++ b/springboot-vue3/src/main/resources/com/example/springboot/mapper/CategoryMapper.xml
@@ -0,0 +1,50 @@
+<?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.example.springboot.mapper.CategoryMapper">
+    <delete id="categoryDeleteByIds">
+        delete
+        from `category` where id in
+        <foreach collection="ids" open="(" close=")" separator="," item="item">
+            #{item}
+        </foreach>
+    </delete>
+    <update id="categoryUpdateById">
+        update `category`
+        <set>
+            <if test="category.name != null and category.name != ''">
+                `name` = #{category.name}
+            </if>
+            <if test="category.state != null">
+                , state = #{category.state}
+            </if>
+        </set>
+        where id = #{id}
+    </update>
+    <insert id="categoryInsert">
+        insert into `category`(`name`, `state`)
+        values (#{category.name}, #{category.state})
+    </insert>
+    <select id="findAllExceptSelf" resultType="com.example.springboot.entity.Category">
+        select id, `name`, parent, `state`, create_time
+        from category
+        <where>
+            <if test="id != null">
+                id != #{id}
+            </if>
+        </where>
+    </select>
+    <select id="selectByPath" resultType="com.example.springboot.entity.Category">
+        select id          id,
+               `name`      name,
+               creator     creator,
+               `level`     level,
+               create_time createTime
+        from category
+        <where>
+            <if test="path != null and path != ''">
+                category.`path` like concat('', #{path}, '%')
+            </if>
+        </where>
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/springboot-vue3/src/main/resources/com/example/springboot/mapper/DeviceMapper.xml b/springboot-vue3/src/main/resources/com/example/springboot/mapper/DeviceMapper.xml
new file mode 100644
index 0000000..5cc5c18
--- /dev/null
+++ b/springboot-vue3/src/main/resources/com/example/springboot/mapper/DeviceMapper.xml
@@ -0,0 +1,40 @@
+<?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.example.springboot.mapper.device.DeviceMapper">
+
+    <resultMap id="myResultMap" type="com.example.springboot.entity.device.DeviceEntity">
+        <!-- 鏍规嵁浣犵殑瀹為檯鎯呭喌瀹氫箟缁撴灉鏄犲皠 -->
+        <!-- 绀轰緥涓皢缁撴灉鏄犲皠鍒板疄浣撶被鐨勫睘鎬� -->
+        <id property="id" column="id"/>
+        <result property="name" column="device_name"/>
+        <!-- 鍏朵粬灞炴�ф槧灏� -->
+    </resultMap>
+
+    <select id="selectAllDevices" resultMap="myResultMap">
+        SELECT *
+        FROM device
+    </select>
+
+    <select id="callStoredProc" statementType="CALLABLE" resultMap="myResultMap">
+        { call Your_Stored_Procedure(
+                #{id, mode=IN, jdbcType=VARCHAR},
+                #{name, mode=IN, jdbcType=VARCHAR}
+
+            ) }
+    </select>
+
+    <update id="updateDeviceName">
+        UPDATE device SET
+                          device_name = #{deviceName},
+                          address = #{address}
+        WHERE id = #{id}
+    </update>
+    <update id="updateMultipleDevices" parameterType="java.util.List">
+        <foreach collection="list" item="device" separator=";">
+            UPDATE device SET
+            device_name = #{device.deviceName},
+            address = #{device.address}
+            WHERE id = #{device.id}
+        </foreach>
+    </update>
+</mapper>
diff --git a/springboot-vue3/src/main/resources/com/example/springboot/mapper/MenuListMapper.xml b/springboot-vue3/src/main/resources/com/example/springboot/mapper/MenuListMapper.xml
new file mode 100644
index 0000000..ec53a08
--- /dev/null
+++ b/springboot-vue3/src/main/resources/com/example/springboot/mapper/MenuListMapper.xml
@@ -0,0 +1,16 @@
+<?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.example.springboot.mapper.MenuListMapper">
+    <select id="findByParent" resultType="com.example.springboot.entity.MenuList">
+        select id, `name`, `path`
+        from menu_list
+        where parent = #{parent}
+        order by priority
+    </select>
+    <select id="findByParentNull" resultType="com.example.springboot.entity.MenuList">
+        select id, `name`, `path`
+        from menu_list
+        where parent is null
+        order by priority
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/springboot-vue3/src/main/resources/com/example/springboot/mapper/PermissionMapper.xml b/springboot-vue3/src/main/resources/com/example/springboot/mapper/PermissionMapper.xml
new file mode 100644
index 0000000..7ef605a
--- /dev/null
+++ b/springboot-vue3/src/main/resources/com/example/springboot/mapper/PermissionMapper.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.example.springboot.mapper.PermissionMapper">
+</mapper>
\ No newline at end of file
diff --git a/springboot-vue3/src/main/resources/com/example/springboot/mapper/RoleMapper.xml b/springboot-vue3/src/main/resources/com/example/springboot/mapper/RoleMapper.xml
new file mode 100644
index 0000000..8930656
--- /dev/null
+++ b/springboot-vue3/src/main/resources/com/example/springboot/mapper/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.example.springboot.mapper.RoleMapper">
+</mapper>
\ No newline at end of file
diff --git a/springboot-vue3/src/main/resources/com/example/springboot/mapper/RoleMenuListMapper.xml b/springboot-vue3/src/main/resources/com/example/springboot/mapper/RoleMenuListMapper.xml
new file mode 100644
index 0000000..d5f9adb
--- /dev/null
+++ b/springboot-vue3/src/main/resources/com/example/springboot/mapper/RoleMenuListMapper.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.example.springboot.mapper.RoleMenuListMapper">
+</mapper>
\ No newline at end of file
diff --git a/springboot-vue3/src/main/resources/com/example/springboot/mapper/RolePermissionMapper.xml b/springboot-vue3/src/main/resources/com/example/springboot/mapper/RolePermissionMapper.xml
new file mode 100644
index 0000000..49618f3
--- /dev/null
+++ b/springboot-vue3/src/main/resources/com/example/springboot/mapper/RolePermissionMapper.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.example.springboot.mapper.RolePermissionMapper">
+</mapper>
\ No newline at end of file
diff --git a/springboot-vue3/src/main/resources/com/example/springboot/mapper/UserMapper.xml b/springboot-vue3/src/main/resources/com/example/springboot/mapper/UserMapper.xml
new file mode 100644
index 0000000..25b6df6
--- /dev/null
+++ b/springboot-vue3/src/main/resources/com/example/springboot/mapper/UserMapper.xml
@@ -0,0 +1,25 @@
+<?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.example.springboot.mapper.UserMapper">
+    <select id="selectChild" resultType="com.example.springboot.entity.User">
+        select u.id          id,
+               u.parent_id   parentId,
+               u.path        path,
+               u.level       level,
+               u.role_id     role_id,
+               u.username    username,
+               u.email       email,
+               u.qq          qq,
+               u.phone       phone,
+               u.state       state,
+               u.dianqimima       dianqimima,
+               u.create_time createTime
+        from user u
+        <where>
+            <if test="path != null and path != ''">
+                u.`path` like concat('', #{path}, '%')
+            </if>
+        </where>
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/springboot-vue3/src/main/resources/sql/canadames.sql b/springboot-vue3/src/main/resources/sql/canadames.sql
new file mode 100644
index 0000000..d6d01c8
--- /dev/null
+++ b/springboot-vue3/src/main/resources/sql/canadames.sql
@@ -0,0 +1,1354 @@
+/*
+ Navicat MySQL Data Transfer
+
+ Source Server         : 鏈湴
+ Source Server Type    : MySQL
+ Source Server Version : 80022
+ Source Host           : localhost:3306
+ Source Schema         : canadames
+
+ Target Server Type    : MySQL
+ Target Server Version : 80022
+ File Encoding         : 65001
+
+ Date: 14/09/2023 09:47:12
+*/
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for alarmmg
+-- ----------------------------
+DROP TABLE IF EXISTS `alarmmg`;
+CREATE TABLE `alarmmg`  (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+  `content` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '鎶ヨ淇℃伅',
+  `timeon` datetime(0) NULL DEFAULT NULL COMMENT '寮�濮嬫椂闂�',
+  `endTime` datetime(0) NULL DEFAULT NULL COMMENT '缁撴潫鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1378 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of alarmmg
+-- ----------------------------
+INSERT INTO `alarmmg` VALUES (1, 'D01 VFD error', '2023-09-11 10:07:17', '2023-09-11 10:07:51');
+INSERT INTO `alarmmg` VALUES (2, 'D02 VFD error', '2023-09-07 10:07:17', '2023-09-07 10:07:51');
+INSERT INTO `alarmmg` VALUES (1338, 'D02 VFD error', '2023-09-12 16:10:32', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1339, 'D04 VFD error', '2023-09-12 16:10:32', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1340, 'D06 VFD error', '2023-09-12 16:10:32', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1341, 'B02 VFD error', '2023-09-12 16:10:32', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1342, 'A02 VFD error', '2023-09-12 16:10:32', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1343, 'A02 servo turn error', '2023-09-12 16:10:32', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1344, 'A02 servo travel error', '2023-09-12 16:10:32', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1345, 'B02 servo travel error', '2023-09-12 16:10:32', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1346, 'D01 pos error', '2023-09-12 16:10:32', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1347, 'D02 pos error', '2023-09-12 16:10:32', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1348, 'D03 pos error', '2023-09-12 16:10:32', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1349, 'D04 pos error', '2023-09-12 16:16:48', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1350, 'D05 pos error', '2023-09-12 16:16:48', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1351, 'D06 pos error', '2023-09-12 16:16:48', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1352, 'A01 pos error', '2023-09-12 16:16:48', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1353, 'A02 pos error', '2023-09-12 16:16:48', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1354, 'B01 IN pos error', '2023-09-12 16:16:48', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1355, 'B01 OUT pos error', '2023-09-12 16:16:48', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1356, 'B02 IN pos error', '2023-09-12 16:16:48', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1357, 'B02 OUT pos error', '2023-09-12 16:16:48', '2023-09-12 16:22:36');
+INSERT INTO `alarmmg` VALUES (1358, 'D01 VFD error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1359, 'D03 VFD error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1360, 'D05 VFD error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1361, 'B01 VFD error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1362, 'A01 VFD error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1363, 'A01 servo turn error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1364, 'A01 servo travel error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1365, 'B01 servo travel error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1366, 'D01 DEC error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1367, 'D02 DEC error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1368, 'D03 DEC error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1369, 'D04 DEC error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1370, 'D05 DEC error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1371, 'D06 DEC error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1372, 'A01 DEC error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1373, 'A02 DEC error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1374, 'B01 IN DEC error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1375, 'B01 OUT DEC error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1376, 'B02 IN DEC error', '2023-09-12 16:22:36', NULL);
+INSERT INTO `alarmmg` VALUES (1377, 'B02 OUT DEC error', '2023-09-12 16:22:36', NULL);
+
+-- ----------------------------
+-- Table structure for category
+-- ----------------------------
+DROP TABLE IF EXISTS `category`;
+CREATE TABLE `category`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+  `parent_id` bigint NULL DEFAULT NULL COMMENT '鐖剁骇id',
+  `path` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '璺緞',
+  `level` int NULL DEFAULT NULL COMMENT '绛夌骇',
+  `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '鍚嶇О',
+  `creator` bigint NULL DEFAULT NULL COMMENT '鍒涘缓浜�',
+  `state` tinyint NOT NULL DEFAULT 1 COMMENT '鐘舵�侊細0/涓嬫灦 1/涓婃灦',
+  `create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '鍒涘缓鏃堕棿',
+  `update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '鏇存柊鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '鍟嗗搧鍒嗙被' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of category
+-- ----------------------------
+INSERT INTO `category` VALUES (1, NULL, NULL, NULL, '娴嬭瘯鍒嗙被', 1, 1, '2021-11-28 15:08:32', '2021-11-28 15:08:32');
+
+-- ----------------------------
+-- Table structure for device
+-- ----------------------------
+DROP TABLE IF EXISTS `device`;
+CREATE TABLE `device`  (
+  `id` bigint NOT NULL AUTO_INCREMENT,
+  `device_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+  `create_user` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+  `create_time` datetime(0) NOT NULL,
+  `device_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+  `status` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+  `info` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL,
+  `model` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL,
+  `count_time_flag` datetime(0) NULL DEFAULT NULL,
+  `address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+  `gps` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+  `debug_time` date NULL DEFAULT NULL,
+  `end_time` date NULL DEFAULT NULL,
+  `customer_name` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+  `customer_device_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+  `last_product_count_date` date NULL DEFAULT NULL,
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `device_id_idx`(`device_id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 47 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of device
+-- ----------------------------
+INSERT INTO `device` VALUES (31, 'LY140510-AG15B65R', 'admin', '2022-05-07 13:34:46', 'chen65璁惧', '鏈惎鐢�', '{\"Ver\":\"1.0\",\"iTopDos\":[160],\"iTopRightMerge\":[0],\"iBtmEnd\":[],\"iTopFront\":[],\"iBtmRow\":[10],\"iBtmLeftMerge\":[0],\"iTopLeftMerge\":[0],\"iTopColumn\":[8],\"iBtmDos\":[80],\"iBtmSingline\":[1],\"iBtmFront\":[],\"iBtmRightMerge\":[0],\"InterfaceName\":\"IDeviceInfor\",\"iTopEnd\":[],\"iTopRow\":[20],\"iTopSingline\":[1],\"DeviceName\":\"LY140510-AG15B65R\",\"iBtmColumn\":[8]}', '{\"Ver\":\"1.0\",\"Datas\":[{\"Binding\":\"Datas[0]\",\"Unit\":\"\",\"Name\":\"CurrentStatus\"},{\"Binding\":\"Datas[1]\",\"Unit\":\"鈩僜",\"Name\":\"RtTemperature\"},{\"Binding\":\"Datas[2]\",\"Unit\":\"%\",\"Name\":\"PvPower\"},{\"Binding\":\"Datas[3]\",\"Unit\":\"kw\",\"Name\":\"CurveTotalPower\"}],\"Segments\":[{\"Type\":\"O\",\"Controls\":[{\"Binding\":\"GlassLength[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"YieldCount[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"GlassOutPut\"}],\"Width\":0.2,\"Name\":\"Load\"},{\"Type\":\"Q\",\"Controls\":[{\"Binding\":\"GlassLength[1]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"TopQuenchDist[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":0,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"},{\"Binding\":\"BtmQuenchDist[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"}],\"Width\":0.2,\"Name\":\"5鍨嬮鏍呮\"},{\"Type\":\"F\",\"Controls\":[{\"Binding\":\"GlassLength[2]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"TopHeatFansFrequency[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":0,\"Unit\":\"Hz\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"},{\"Binding\":\"BtmHeatFansFrequency[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"Hz\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"}],\"Width\":0.2,\"Name\":\"鐐変綋娈礬"},{\"Type\":\"Q\",\"Controls\":[{\"Binding\":\"GlassLength[3]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"TopQuenchDist[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":0,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"},{\"Binding\":\"BtmQuenchDist[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"}],\"Width\":0.2,\"Name\":\"椋庢爡娈礬"},{\"Type\":\"O\",\"Controls\":[{\"Binding\":\"GlassLength[4]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"YieldCount[1]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"GlassOutPut\"}],\"Width\":0.2,\"Name\":\"涓嬬墖娈礬"}],\"InterfaceName\":\"IDeviceMapInfor\",\"DeviceName\":\"LY140510-AG15B65R\"}', '2022-12-31 00:00:00', '娌冲崡鐪�/娲涢槼甯�/娑цタ鍖�/娲涢槼鍖楃幓涓夊厓娴侀鏈烘妧鏈湁闄愬叕鍙�', '112.36358,34.594068', '2022-05-07', '2022-05-07', '娲涢槼鍖楃幓', NULL, '2023-08-28');
+INSERT INTO `device` VALUES (32, 'NG10000', 'admin', '2022-05-13 08:53:52', 'Device 1', '鏈惎鐢�', '{\"Ver\":\"1.0\",\"iTopDos\":[108],\"iTopRightMerge\":[1],\"iBtmEnd\":[],\"iTopFront\":[],\"iBtmRow\":[12],\"iBtmLeftMerge\":[1],\"iTopLeftMerge\":[1],\"iTopColumn\":[10],\"iBtmDos\":[108],\"iBtmSingline\":[],\"iBtmFront\":[],\"iBtmRightMerge\":[1],\"InterfaceName\":\"IDeviceInfor\",\"iTopEnd\":[],\"iTopRow\":[12],\"iTopSingline\":[],\"DeviceName\":\"NG10000\",\"iBtmColumn\":[10]}', '{\"Ver\":\"1.0\",\"Datas\":[{\"Binding\":\"Datas[0]\",\"Unit\":\"\",\"Name\":\"CurrentStatus\"},{\"Binding\":\"Datas[1]\",\"Unit\":\"鈩僜",\"Name\":\"RtTemperature\"},{\"Binding\":\"Datas[2]\",\"Unit\":\"%\",\"Name\":\"PvPower\"},{\"Binding\":\"Datas[3]\",\"Unit\":\"kw\",\"Name\":\"CurveTotalPower\"}],\"Segments\":[{\"Type\":\"O\",\"Controls\":[{\"Binding\":\"GlassLength[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"YieldCount[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"GlassOutPut\"}],\"Width\":0.25,\"Name\":\"Load\"},{\"Type\":\"F\",\"Controls\":[{\"Binding\":\"GlassLength[1]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"TopHeatFansFrequency[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":0,\"Unit\":\"Hz\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"},{\"Binding\":\"BtmHeatFansFrequency[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"Hz\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"}],\"Width\":0.25,\"Name\":\"鐐変綋娈礬"},{\"Type\":\"Q\",\"Controls\":[{\"Binding\":\"GlassLength[2]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"TopQuenchDist[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":0,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"},{\"Binding\":\"BtmQuenchDist[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"}],\"Width\":0.25,\"Name\":\"椋庢爡娈礬"},{\"Type\":\"O\",\"Controls\":[{\"Binding\":\"GlassLength[3]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"YieldCount[1]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"GlassOutPut\"}],\"Width\":0.25,\"Name\":\"涓嬬墖娈礬"}],\"InterfaceName\":\"IDeviceMapInfor\",\"DeviceName\":\"NG10000\"}', '2023-02-21 00:00:00', 'Address 1', '112.39741,34.61541', '2022-05-13', '2022-05-13', 'fsdfsdfs', NULL, '2022-10-28');
+INSERT INTO `device` VALUES (33, 'NGtest150130', 'admin', '2022-08-09 09:18:14', 'Device 2', '鏈惎鐢�', NULL, '{\"Ver\":\"1.1\",\"Datas\":[{\"Binding\":\"Datas[0]\",\"Unit\":\"\",\"Name\":\"CurrentStatus\"},{\"Binding\":\"Datas[1]\",\"Unit\":\"鈩僜",\"Name\":\"RtTemperature\"},{\"Binding\":\"Datas[2]\",\"Unit\":\"%\",\"Name\":\"PvPower\"},{\"Binding\":\"Datas[3]\",\"Unit\":\"kw\",\"Name\":\"CurveTotalPower\"}],\"Segments\":[{\"Type\":\"O\",\"Controls\":[{\"Binding\":\"GlassLength[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"YieldCount[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"GlassOutPut\"}],\"Width\":0.25,\"Name\":\"Load\"},{\"Type\":\"F\",\"Controls\":[{\"Binding\":\"GlassLength[1]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"TopHeatFansFrequency[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":0,\"Unit\":\"Hz\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"},{\"Binding\":\"BtmHeatFansFrequency[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"Hz\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"}],\"Width\":0.25,\"Name\":\"鐐変綋娈礬"},{\"Type\":\"Q\",\"Controls\":[{\"Binding\":\"GlassLength[2]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"TopQuenchDist[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":0,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"},{\"Binding\":\"BtmQuenchDist[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"}],\"Width\":0.25,\"Name\":\"椋庢爡娈礬"},{\"Type\":\"O\",\"Controls\":[{\"Binding\":\"GlassLength[3]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"YieldCount[1]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"GlassOutPut\"}],\"Width\":0.25,\"Name\":\"涓嬬墖娈礬"}],\"InterfaceName\":\"IDeviceMapInfor\",\"DeviceName\":\"NGtest150130\"}', '2022-08-10 00:00:00', 'Address 2', '', '2022-08-09', '2022-08-09', '娲涢槼鐜荤拑鍏徃', NULL, NULL);
+INSERT INTO `device` VALUES (34, 'NG150130', 'admin', '2022-08-10 11:34:10', '榛戦噾鍒�', '鏈惎鐢�', NULL, '{\"Ver\":\"1.0\",\"Datas\":[{\"Binding\":\"Datas[0]\",\"Unit\":\"\",\"Name\":\"CurrentStatus\"},{\"Binding\":\"Datas[1]\",\"Unit\":\"鈩僜",\"Name\":\"RtTemperature\"},{\"Binding\":\"Datas[2]\",\"Unit\":\"%\",\"Name\":\"PvPower\"},{\"Binding\":\"Datas[3]\",\"Unit\":\"kw\",\"Name\":\"CurveTotalPower\"}],\"Segments\":[{\"Type\":\"O\",\"Controls\":[{\"Binding\":\"GlassLength[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"YieldCount[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"GlassOutPut\"}],\"Width\":0.25,\"Name\":\"Load\"},{\"Type\":\"F\",\"Controls\":[{\"Binding\":\"GlassLength[1]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"TopHeatFansFrequency[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":0,\"Unit\":\"Hz\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"},{\"Binding\":\"BtmHeatFansFrequency[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"Hz\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"}],\"Width\":0.25,\"Name\":\"鐐変綋娈礬"},{\"Type\":\"Q\",\"Controls\":[{\"Binding\":\"GlassLength[2]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"TopQuenchDist[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":0,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"},{\"Binding\":\"BtmQuenchDist[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"}],\"Width\":0.25,\"Name\":\"椋庢爡娈礬"},{\"Type\":\"O\",\"Controls\":[{\"Binding\":\"GlassLength[3]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"YieldCount[1]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"GlassOutPut\"}],\"Width\":0.25,\"Name\":\"涓嬬墖娈礬"}],\"InterfaceName\":\"IDeviceMapInfor\",\"DeviceName\":\"NG150130\"}', '2022-09-07 00:00:00', '', '', '2022-08-10', '2022-08-10', '娲涢槼鐜荤拑鍏徃', NULL, NULL);
+INSERT INTO `device` VALUES (35, 'YL211116-AU1E60', 'admin', '2022-08-18 09:44:47', 'AU1E60', '鏈惎鐢�', NULL, NULL, '2022-08-18 09:44:47', '', '', '2022-08-10', '2022-08-10', NULL, NULL, NULL);
+INSERT INTO `device` VALUES (36, 'Lyyyyy', 'admin', '2022-08-30 15:01:16', 'cccccccccccc', '鏈惎鐢�', NULL, NULL, '2022-08-30 15:01:16', '', '', '2022-08-30', '2022-08-30', '娲涢槼鐜荤拑鍏徃', NULL, NULL);
+INSERT INTO `device` VALUES (38, 'NG20000', 'admin', '2022-10-21 16:36:03', '娴嬭瘯璁惧', '鏈惎鐢�', NULL, NULL, '2022-10-21 16:36:03', '', '', '2022-10-21', '2022-10-21', '娴嬭瘯鐢�', NULL, NULL);
+INSERT INTO `device` VALUES (39, 'FS221024-AU1E70', 'admin', '2023-03-14 14:42:27', '鍗氭槍涓�', '鏈惎鐢�', NULL, NULL, '2023-03-14 14:42:27', '', '', '2023-03-14', '2023-03-14', '浣涘北鍗氭槍涓�', NULL, NULL);
+INSERT INTO `device` VALUES (40, 'DG210978-A1B50', 'admin', '2023-03-21 14:21:22', '涓『A1B50', '鏈惎鐢�', '{\"Ver\":\"1.0\",\"iTopDos\":[70],\"iTopRightMerge\":[1],\"iBtmEnd\":[],\"iTopFront\":[],\"iBtmRow\":[10],\"iBtmLeftMerge\":[1],\"iTopLeftMerge\":[1],\"iTopColumn\":[8],\"iBtmDos\":[70],\"iBtmSingline\":[],\"iBtmFront\":[],\"iBtmRightMerge\":[1],\"InterfaceName\":\"IDeviceInfor\",\"iTopEnd\":[],\"iTopRow\":[10],\"iTopSingline\":[],\"DeviceName\":\"DG210978-A1B50\",\"iBtmColumn\":[8]}', '{\"Ver\":\"1.0\",\"Datas\":[{\"Binding\":\"Datas[0]\",\"Unit\":\"\",\"Name\":\"CurrentStatus\"},{\"Binding\":\"Datas[1]\",\"Unit\":\"鈩僜",\"Name\":\"RtTemperature\"},{\"Binding\":\"Datas[2]\",\"Unit\":\"%\",\"Name\":\"PvPower\"},{\"Binding\":\"Datas[3]\",\"Unit\":\"kw\",\"Name\":\"CurveTotalPower\"}],\"Segments\":[{\"Type\":\"O\",\"Controls\":[{\"Binding\":\"GlassLength[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"YieldCount[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"GlassOutPut\"}],\"Width\":0.25,\"Name\":\"Load\"},{\"Type\":\"F\",\"Controls\":[{\"Binding\":\"GlassLength[1]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"TopHeatFansFrequency[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":0,\"Unit\":\"Hz\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"},{\"Binding\":\"BtmHeatFansFrequency[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"Hz\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"}],\"Width\":0.25,\"Name\":\"鐐変綋娈礬"},{\"Type\":\"Q\",\"Controls\":[{\"Binding\":\"GlassLength[2]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"TopQuenchDist[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":0,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"},{\"Binding\":\"BtmQuenchDist[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"}],\"Width\":0.25,\"Name\":\"椋庢爡娈礬"},{\"Type\":\"O\",\"Controls\":[{\"Binding\":\"GlassLength[3]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"YieldCount[1]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"GlassOutPut\"}],\"Width\":0.25,\"Name\":\"涓嬬墖娈礬"}],\"InterfaceName\":\"IDeviceMapInfor\",\"DeviceName\":\"DG210978-A1B50\"}', '2023-05-01 00:00:00', '', '', '2023-03-21', '2023-03-21', '涓滆帪涓『', NULL, NULL);
+INSERT INTO `device` VALUES (41, 'FS210305-AU1E60', 'admin', '2023-03-22 13:59:05', '榧庣珛涓欰U1E60', '鏈惎鐢�', '{\"Ver\":\"1.0\",\"iTopDos\":[96],\"iTopRightMerge\":[],\"iBtmEnd\":[],\"iTopFront\":[],\"iBtmRow\":[12],\"iBtmLeftMerge\":[],\"iTopLeftMerge\":[],\"iTopColumn\":[8],\"iBtmDos\":[96],\"iBtmSingline\":[],\"iBtmFront\":[],\"iBtmRightMerge\":[],\"InterfaceName\":\"IDeviceInfor\",\"iTopEnd\":[],\"iTopRow\":[12],\"iTopSingline\":[],\"DeviceName\":\"FS210305-AU1E60\",\"iBtmColumn\":[8]}', '{\"Ver\":\"1.0\",\"Datas\":[{\"Binding\":\"Datas[0]\",\"Unit\":\"\",\"Name\":\"CurrentStatus\"},{\"Binding\":\"Datas[1]\",\"Unit\":\"鈩僜",\"Name\":\"RtTemperature\"},{\"Binding\":\"Datas[2]\",\"Unit\":\"%\",\"Name\":\"PvPower\"},{\"Binding\":\"Datas[3]\",\"Unit\":\"kw\",\"Name\":\"CurveTotalPower\"}],\"Segments\":[{\"Type\":\"O\",\"Controls\":[{\"Binding\":\"GlassLength[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"YieldCount[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"GlassOutPut\"}],\"Width\":0.25,\"Name\":\"Load\"},{\"Type\":\"F\",\"Controls\":[{\"Binding\":\"GlassLength[1]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"TopHeatFansFrequency[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":0,\"Unit\":\"Hz\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"},{\"Binding\":\"BtmHeatFansFrequency[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"Hz\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"}],\"Width\":0.25,\"Name\":\"鐐変綋娈礬"},{\"Type\":\"Q\",\"Controls\":[{\"Binding\":\"GlassLength[2]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"TopQuenchDist[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":0,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"},{\"Binding\":\"BtmQuenchDist[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"}],\"Width\":0.25,\"Name\":\"椋庢爡娈礬"},{\"Type\":\"O\",\"Controls\":[{\"Binding\":\"GlassLength[3]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"YieldCount[1]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"GlassOutPut\"}],\"Width\":0.25,\"Name\":\"涓嬬墖娈礬"}],\"InterfaceName\":\"IDeviceMapInfor\",\"DeviceName\":\"FS210305-AU1E60\"}', '2023-05-01 00:00:00', '', '', '2023-03-22', '2023-03-22', '浣涘北榧庣珛涓�', NULL, NULL);
+INSERT INTO `device` VALUES (42, 'FS220765-AU1E70', 'admin', '2023-03-28 15:08:56', '220765-AU1E70', '鏈惎鐢�', '{\"Ver\":\"1.0\",\"iTopDos\":[108],\"iTopRightMerge\":[1],\"iBtmEnd\":[],\"iTopFront\":[],\"iBtmRow\":[12],\"iBtmLeftMerge\":[1],\"iTopLeftMerge\":[1],\"iTopColumn\":[10],\"iBtmDos\":[108],\"iBtmSingline\":[],\"iBtmFront\":[],\"iBtmRightMerge\":[1],\"InterfaceName\":\"IDeviceInfor\",\"iTopEnd\":[],\"iTopRow\":[12],\"iTopSingline\":[],\"DeviceName\":\"FS220765-AU1E70\",\"iBtmColumn\":[10]}', '{\"Ver\":\"1.0\",\"Datas\":[{\"Binding\":\"Datas[0]\",\"Unit\":\"\",\"Name\":\"CurrentStatus\"},{\"Binding\":\"Datas[1]\",\"Unit\":\"鈩僜",\"Name\":\"RtTemperature\"},{\"Binding\":\"Datas[2]\",\"Unit\":\"%\",\"Name\":\"PvPower\"},{\"Binding\":\"Datas[3]\",\"Unit\":\"kw\",\"Name\":\"CurveTotalPower\"}],\"Segments\":[{\"Type\":\"O\",\"Controls\":[{\"Binding\":\"GlassLength[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"YieldCount[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"GlassOutPut\"}],\"Width\":0.25,\"Name\":\"Load\"},{\"Type\":\"F\",\"Controls\":[{\"Binding\":\"GlassLength[1]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"TopHeatFansFrequency[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":0,\"Unit\":\"Hz\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"},{\"Binding\":\"BtmHeatFansFrequency[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"Hz\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"}],\"Width\":0.25,\"Name\":\"鐐変綋娈礬"},{\"Type\":\"Q\",\"Controls\":[{\"Binding\":\"GlassLength[2]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"TopQuenchDist[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":0,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"},{\"Binding\":\"BtmQuenchDist[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"}],\"Width\":0.25,\"Name\":\"椋庢爡娈礬"},{\"Type\":\"O\",\"Controls\":[{\"Binding\":\"GlassLength[3]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"YieldCount[1]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"GlassOutPut\"}],\"Width\":0.25,\"Name\":\"涓嬬墖娈礬"}],\"InterfaceName\":\"IDeviceMapInfor\",\"DeviceName\":\"FS220765-AU1E70\"}', '2023-04-01 00:00:00', '', '', '2023-03-28', '2023-03-28', '浣涘北鐜栫憺', NULL, NULL);
+INSERT INTO `device` VALUES (44, 'NG30000', 'admin', '2023-04-04 10:45:18', 'TEST', '鏈惎鐢�', NULL, NULL, '2023-04-04 10:45:18', '', '', '2023-04-04', '2023-04-04', NULL, NULL, NULL);
+INSERT INTO `device` VALUES (46, 'FS220666-AU1B60', 'admin', '2023-04-04 11:38:34', '寮犲媷AU1B60', '鏈惎鐢�', '{\"Ver\":\"1.0\",\"iTopDos\":[96],\"iTopRightMerge\":[],\"iBtmEnd\":[],\"iTopFront\":[],\"iBtmRow\":[12],\"iBtmLeftMerge\":[],\"iTopLeftMerge\":[],\"iTopColumn\":[8],\"iBtmDos\":[96],\"iBtmSingline\":[],\"iBtmFront\":[],\"iBtmRightMerge\":[],\"InterfaceName\":\"IDeviceInfor\",\"iTopEnd\":[],\"iTopRow\":[12],\"iTopSingline\":[],\"DeviceName\":\"FS220666-AU1B60\",\"iBtmColumn\":[8]}', '{\"Ver\":\"1.0\",\"Datas\":[{\"Binding\":\"Datas[0]\",\"Unit\":\"\",\"Name\":\"CurrentStatus\"},{\"Binding\":\"Datas[1]\",\"Unit\":\"鈩僜",\"Name\":\"RtTemperature\"},{\"Binding\":\"Datas[2]\",\"Unit\":\"%\",\"Name\":\"PvPower\"},{\"Binding\":\"Datas[3]\",\"Unit\":\"kw\",\"Name\":\"CurveTotalPower\"}],\"Segments\":[{\"Type\":\"O\",\"Controls\":[{\"Binding\":\"GlassLength[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"YieldCount[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"GlassOutPut\"}],\"Width\":0.25,\"Name\":\"Load\"},{\"Type\":\"F\",\"Controls\":[{\"Binding\":\"GlassLength[1]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"TopHeatFansFrequency[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":0,\"Unit\":\"Hz\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"},{\"Binding\":\"BtmHeatFansFrequency[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"Hz\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"}],\"Width\":0.25,\"Name\":\"鐐変綋娈礬"},{\"Type\":\"Q\",\"Controls\":[{\"Binding\":\"GlassLength[2]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"TopQuenchDist[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":0,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"},{\"Binding\":\"BtmQuenchDist[0]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"\"}],\"Width\":0.25,\"Name\":\"椋庢爡娈礬"},{\"Type\":\"O\",\"Controls\":[{\"Binding\":\"GlassLength[3]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":3,\"Unit\":\"mm\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"ToolGlassLength\"},{\"Binding\":\"YieldCount[1]\",\"Col\":1,\"Type\":\"var\",\"Foreground\":\"black\",\"Row\":4,\"Unit\":\"\",\"Font\":\"榛戜綋 14px black\",\"Name\":\"GlassOutPut\"}],\"Width\":0.25,\"Name\":\"涓嬬墖娈礬"}],\"InterfaceName\":\"IDeviceMapInfor\",\"DeviceName\":\"FS220666-AU1B60\"}', '2023-04-04 11:38:34', '', '', '2023-04-04', '2023-04-04', NULL, NULL, NULL);
+
+-- ----------------------------
+-- Table structure for glass
+-- ----------------------------
+DROP TABLE IF EXISTS `glass`;
+CREATE TABLE `glass`  (
+  `id` int NOT NULL AUTO_INCREMENT,
+  `glassid` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+  `orderid` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+  `width` decimal(10, 2) NULL DEFAULT NULL,
+  `height` decimal(10, 2) NULL DEFAULT NULL,
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of glass
+-- ----------------------------
+INSERT INTO `glass` VALUES (1, '001', '1145', 1400.00, 1200.00);
+INSERT INTO `glass` VALUES (2, '002', '1145', 1500.00, 1100.00);
+INSERT INTO `glass` VALUES (3, '112', '1145', 1220.00, 1500.00);
+
+-- ----------------------------
+-- Table structure for menu_list
+-- ----------------------------
+DROP TABLE IF EXISTS `menu_list`;
+CREATE TABLE `menu_list`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+  `parent_id` bigint NULL DEFAULT NULL COMMENT '鐖剁骇id',
+  `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '鍚嶇О',
+  `icon` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '鑿滃崟鍥炬爣',
+  `priority` int NULL DEFAULT NULL COMMENT '浼樺厛绾�',
+  `router` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '璺敱',
+  `state` tinyint NOT NULL DEFAULT 1 COMMENT '鐘舵�� 1/姝e父',
+  `create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '鍒涘缓鏃堕棿',
+  `update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '鏇存柊鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 61 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of menu_list
+-- ----------------------------
+INSERT INTO `menu_list` VALUES (1, NULL, '鐢ㄦ埛绠$悊', 'el-icon-user-solid', 1, '', 1, '2021-11-28 14:30:27', '2021-11-28 15:06:04');
+INSERT INTO `menu_list` VALUES (2, NULL, '鐢垫皵绠$悊', 'el-icon-lollipop', 2, '', 1, '2023-08-23 20:11:38', '2023-09-01 16:34:36');
+INSERT INTO `menu_list` VALUES (5, NULL, '鏉冮檺绠$悊', 'el-icon-collection-tag', 5, '', 1, '2021-11-28 14:30:27', '2021-11-28 15:06:04');
+INSERT INTO `menu_list` VALUES (6, NULL, '瑙掕壊绠$悊', 'el-icon-s-flag', 6, '', 1, '2021-11-28 14:30:27', '2021-11-28 15:06:04');
+INSERT INTO `menu_list` VALUES (7, 1, '鐢ㄦ埛鍒楄〃', '', 7, 'user', 1, '2021-11-28 14:30:27', '2021-11-28 15:06:04');
+INSERT INTO `menu_list` VALUES (8, 9, '涓婚〉', 'el-icon-menu', 8, 'home', 1, '2023-09-08 10:56:12', '2023-09-08 11:02:36');
+INSERT INTO `menu_list` VALUES (9, NULL, '涓婚〉', 'el-icon-menu', 0, 'home', 1, '2023-09-08 10:43:34', '2023-09-08 11:02:32');
+INSERT INTO `menu_list` VALUES (11, 5, '鏉冮檺鍒楄〃', '', 11, 'power', 1, '2021-11-28 14:30:28', '2021-11-28 15:06:04');
+INSERT INTO `menu_list` VALUES (12, 6, '瑙掕壊鍒楄〃', '', 12, 'role', 1, '2021-11-28 14:30:28', '2021-11-28 15:06:04');
+INSERT INTO `menu_list` VALUES (49, 2, '鎶ヨ淇℃伅', '', 49, 'Electrical/alarm', 1, '2021-11-28 14:30:28', '2023-09-08 11:14:08');
+INSERT INTO `menu_list` VALUES (51, 2, '璁惧鐘舵��', NULL, 51, 'Electrical/State', 1, '2023-08-25 13:29:13', '2023-09-11 17:07:08');
+INSERT INTO `menu_list` VALUES (52, 2, '寮�鍏虫帶鍒�', NULL, 52, 'Electrical/Action', 1, '2023-08-25 13:29:18', '2023-09-12 17:02:54');
+INSERT INTO `menu_list` VALUES (53, 2, '鍙傛暟涓嬪彂', NULL, 53, 'Electrical/Parameter', 1, '2023-08-25 13:29:22', '2023-09-01 16:32:29');
+INSERT INTO `menu_list` VALUES (54, 2, 'IO鐘舵��', NULL, 53, 'Electrical/Sign', 1, '2023-08-25 13:29:22', '2023-09-11 17:06:16');
+
+-- ----------------------------
+-- Table structure for order_out
+-- ----------------------------
+DROP TABLE IF EXISTS `order_out`;
+CREATE TABLE `order_out`  (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '搴忓彿',
+  `order_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '璁㈠崟鍙�',
+  `state` int NULL DEFAULT NULL COMMENT '鐘舵��(0锛氭寜姝よ鍗曞彿鍑虹墖锛�1缁撴潫鍑虹墖)',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of order_out
+-- ----------------------------
+INSERT INTO `order_out` VALUES (1, 'NG2202302', 1);
+INSERT INTO `order_out` VALUES (2, 'NG2202302', 0);
+
+-- ----------------------------
+-- Table structure for permission
+-- ----------------------------
+DROP TABLE IF EXISTS `permission`;
+CREATE TABLE `permission`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+  `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '鏉冮檺鏍囪瘑',
+  `description` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '鏉冮檺鎻忚堪',
+  `state` tinyint NOT NULL DEFAULT 1 COMMENT '鐘舵�� 1/姝e父',
+  `create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '鍒涘缓鏃堕棿',
+  `update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '鏇存柊鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 32 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '鏉冮檺' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of permission
+-- ----------------------------
+INSERT INTO `permission` VALUES (1, 'user:select', '鐢ㄦ埛鏌ヨ', 1, '2021-11-28 15:07:36', '2021-11-28 15:07:36');
+INSERT INTO `permission` VALUES (2, 'user:update', '鐢ㄦ埛淇敼', 1, '2021-11-28 15:07:36', '2021-11-28 15:07:36');
+INSERT INTO `permission` VALUES (3, 'user:delete', '鐢ㄦ埛鍒犻櫎', 1, '2021-11-28 15:07:36', '2021-11-28 15:07:36');
+INSERT INTO `permission` VALUES (7, 'role:add', '瑙掕壊娣诲姞', 1, '2021-11-28 15:07:36', '2021-11-28 15:07:36');
+INSERT INTO `permission` VALUES (8, 'role:update', '瑙掕壊淇敼', 1, '2021-11-28 15:07:36', '2021-11-28 15:07:36');
+INSERT INTO `permission` VALUES (9, 'role:delete', '瑙掕壊鍒犻櫎', 1, '2021-11-28 15:07:36', '2021-11-28 15:07:36');
+INSERT INTO `permission` VALUES (10, 'role:select', '瑙掕壊鏌ヨ', 1, '2021-11-28 15:07:36', '2021-11-28 15:07:36');
+INSERT INTO `permission` VALUES (11, 'menuList:delete', '鑿滃崟鍒犻櫎', 1, '2021-11-28 15:07:36', '2021-11-28 15:07:36');
+INSERT INTO `permission` VALUES (12, 'menuList:add', '鑿滃崟娣诲姞', 1, '2021-11-28 15:07:36', '2021-11-28 15:07:36');
+INSERT INTO `permission` VALUES (13, 'menuList:update', '鑿滃崟淇敼', 1, '2021-11-28 15:07:36', '2021-11-28 15:07:36');
+INSERT INTO `permission` VALUES (16, 'rolePermission:add', '鎺堟潈娣诲姞', 1, '2021-11-28 15:07:36', '2021-11-28 15:07:36');
+INSERT INTO `permission` VALUES (17, 'rolePermission:delete', '鎺堟潈鍒犻櫎', 1, '2021-11-28 15:07:36', '2021-11-28 15:07:36');
+INSERT INTO `permission` VALUES (18, 'rolePermission:select', '鎺堟潈鏌ヨ', 1, '2021-11-28 15:07:36', '2021-11-28 15:07:36');
+INSERT INTO `permission` VALUES (19, 'permission:select', '鏉冮檺鏌ヨ', 1, '2021-11-28 15:07:36', '2021-11-28 15:07:36');
+INSERT INTO `permission` VALUES (20, 'user:add', '鐢ㄦ埛娣诲姞', 1, '2021-11-28 15:07:36', '2021-11-28 15:07:36');
+INSERT INTO `permission` VALUES (22, 'menuList:select', '鑿滃崟鏌ヨ', 1, '2021-11-28 15:07:36', '2021-11-28 15:07:36');
+INSERT INTO `permission` VALUES (25, 'category:select', '鍒嗙被鏌ヨ', 1, '2021-11-28 15:07:36', '2021-11-28 15:07:36');
+INSERT INTO `permission` VALUES (26, 'category:delete', '鍒嗙被鍒犻櫎', 1, '2021-11-28 15:07:36', '2021-11-28 15:07:36');
+INSERT INTO `permission` VALUES (27, 'category:update', '鍒嗙被淇敼', 1, '2021-11-28 15:07:36', '2021-11-28 15:07:36');
+INSERT INTO `permission` VALUES (28, 'category:add', '鍒嗙被娣诲姞', 1, '2021-11-28 15:07:36', '2021-11-28 15:07:36');
+INSERT INTO `permission` VALUES (29, 'alarm:select', '鎶ヨ淇℃伅鏌ヨ', 1, '2021-11-28 15:07:36', '2023-08-28 15:16:24');
+INSERT INTO `permission` VALUES (30, 'alarm:add', '鎶ヨ淇℃伅娣诲姞', 1, '2023-08-24 08:48:53', '2023-08-28 15:16:27');
+INSERT INTO `permission` VALUES (31, 'alarm:update', '鎶ヨ淇℃伅淇敼', 1, '2023-08-24 08:49:23', '2023-08-28 15:16:29');
+
+-- ----------------------------
+-- Table structure for role
+-- ----------------------------
+DROP TABLE IF EXISTS `role`;
+CREATE TABLE `role`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+  `parent_id` bigint NULL DEFAULT NULL COMMENT '涓婄骇瑙掕壊',
+  `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '瑙掕壊鍚嶇О',
+  `description` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '鎻忚堪',
+  `state` tinyint NOT NULL DEFAULT 1 COMMENT '鐘舵�� 1/姝e父',
+  `create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '鍒涘缓鏃堕棿',
+  `update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '鏇存柊鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '瑙掕壊' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of role
+-- ----------------------------
+INSERT INTO `role` VALUES (1, NULL, 'admin', '绯荤粺绠$悊鍛�', 1, '2021-01-10 22:49:17', '2021-03-29 15:19:15');
+INSERT INTO `role` VALUES (2, 1, 'user2', '鏅�氱敤鎴�', 1, '2021-01-13 00:28:58', '2021-03-29 15:19:15');
+INSERT INTO `role` VALUES (5, 1, 'user3', '777', 1, '2023-08-24 10:02:58', '2023-08-28 14:28:22');
+
+-- ----------------------------
+-- Table structure for role_menu_list
+-- ----------------------------
+DROP TABLE IF EXISTS `role_menu_list`;
+CREATE TABLE `role_menu_list`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+  `role_id` bigint NULL DEFAULT NULL COMMENT '瑙掕壊id',
+  `menu_list_id` bigint NULL DEFAULT NULL COMMENT '鑿滃崟id',
+  `state` tinyint NULL DEFAULT 1 COMMENT '鐘舵�� 1/姝e父',
+  `create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '鍒涘缓鏃堕棿',
+  `update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '鏇存柊鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 57 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '瑙掕壊鍜岃彍鍗曞叧鑱旇〃' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of role_menu_list
+-- ----------------------------
+INSERT INTO `role_menu_list` VALUES (1, 1, 1, 1, '2021-11-28 15:10:03', '2021-11-28 15:10:03');
+INSERT INTO `role_menu_list` VALUES (2, 1, 2, 1, '2021-11-28 15:10:03', '2021-11-28 15:10:03');
+INSERT INTO `role_menu_list` VALUES (3, 1, 3, 1, '2021-11-28 15:10:03', '2021-11-28 15:10:03');
+INSERT INTO `role_menu_list` VALUES (4, 1, 4, 1, '2021-11-28 15:10:03', '2021-11-28 15:10:03');
+INSERT INTO `role_menu_list` VALUES (5, 1, 5, 1, '2021-11-28 15:10:03', '2021-11-28 15:10:03');
+INSERT INTO `role_menu_list` VALUES (6, 1, 6, 1, '2021-11-28 15:10:03', '2021-11-28 15:10:03');
+INSERT INTO `role_menu_list` VALUES (7, 1, 7, 1, '2021-11-28 15:10:03', '2021-11-28 15:10:03');
+INSERT INTO `role_menu_list` VALUES (8, 1, 8, 1, '2021-11-28 15:10:03', '2021-11-28 15:10:03');
+INSERT INTO `role_menu_list` VALUES (9, 1, 9, 1, '2021-11-28 15:10:03', '2021-11-28 15:10:03');
+INSERT INTO `role_menu_list` VALUES (10, 1, 10, 1, '2021-11-28 15:10:03', '2021-11-28 15:10:03');
+INSERT INTO `role_menu_list` VALUES (11, 1, 11, 1, '2021-11-28 15:10:03', '2021-11-28 15:10:03');
+INSERT INTO `role_menu_list` VALUES (12, 1, 12, 1, '2021-11-28 15:10:03', '2021-11-28 15:10:03');
+INSERT INTO `role_menu_list` VALUES (19, 1, 50, 1, '2023-08-24 09:13:00', '2023-08-24 09:13:00');
+INSERT INTO `role_menu_list` VALUES (20, 1, 49, 1, '2023-08-24 10:08:38', '2023-08-28 15:39:54');
+INSERT INTO `role_menu_list` VALUES (21, 1, 51, 1, '2023-08-24 10:08:56', '2023-08-28 15:39:54');
+INSERT INTO `role_menu_list` VALUES (22, 1, 52, 1, '2023-08-24 10:08:56', '2023-08-28 15:39:54');
+INSERT INTO `role_menu_list` VALUES (23, 1, 53, 1, '2023-08-24 10:08:56', '2023-08-28 15:39:54');
+INSERT INTO `role_menu_list` VALUES (25, 1, 60, 1, '2023-08-25 13:05:53', '2023-08-25 13:05:53');
+INSERT INTO `role_menu_list` VALUES (26, 1, 1, 1, '2023-08-28 14:29:17', '2023-08-28 15:39:54');
+INSERT INTO `role_menu_list` VALUES (27, 1, 7, 1, '2023-08-28 15:11:09', '2023-08-28 15:39:54');
+INSERT INTO `role_menu_list` VALUES (28, 1, 2, 1, '2023-08-28 15:14:19', '2023-08-28 15:39:54');
+INSERT INTO `role_menu_list` VALUES (29, 1, 49, 1, '2023-08-28 15:14:27', '2023-08-28 15:39:54');
+INSERT INTO `role_menu_list` VALUES (31, 2, 2, 1, '2023-08-28 15:14:27', '2023-08-28 15:53:34');
+INSERT INTO `role_menu_list` VALUES (32, 2, 3, 1, '2023-08-28 15:14:27', '2023-08-28 15:53:34');
+INSERT INTO `role_menu_list` VALUES (33, 2, 4, 1, '2023-08-28 15:14:27', '2023-08-28 15:53:34');
+INSERT INTO `role_menu_list` VALUES (37, 2, 8, 1, '2023-08-28 15:14:27', '2023-08-28 15:53:34');
+INSERT INTO `role_menu_list` VALUES (38, 2, 9, 1, '2023-08-28 15:14:27', '2023-08-28 15:53:34');
+INSERT INTO `role_menu_list` VALUES (39, 2, 10, 1, '2023-08-28 15:14:27', '2023-08-28 15:53:34');
+INSERT INTO `role_menu_list` VALUES (42, 2, 50, 1, '2023-08-28 15:14:27', '2023-08-28 15:53:34');
+INSERT INTO `role_menu_list` VALUES (43, 2, 49, 1, '2023-08-28 15:14:27', '2023-08-28 15:53:34');
+INSERT INTO `role_menu_list` VALUES (44, 2, 51, 1, '2023-08-28 15:14:27', '2023-08-28 15:53:34');
+INSERT INTO `role_menu_list` VALUES (45, 2, 52, 1, '2023-08-28 15:14:27', '2023-08-28 15:53:34');
+INSERT INTO `role_menu_list` VALUES (46, 2, 53, 1, '2023-08-28 15:14:27', '2023-08-28 15:53:34');
+INSERT INTO `role_menu_list` VALUES (47, 2, 60, 1, '2023-08-28 15:14:27', '2023-08-28 15:53:34');
+INSERT INTO `role_menu_list` VALUES (50, 2, 2, 1, '2023-08-28 15:14:27', '2023-08-28 15:53:34');
+INSERT INTO `role_menu_list` VALUES (51, 2, 49, 1, '2023-08-28 15:14:27', '2023-08-28 15:53:34');
+INSERT INTO `role_menu_list` VALUES (52, 2, 1, 1, '2023-08-30 16:28:57', '2023-08-30 16:28:57');
+INSERT INTO `role_menu_list` VALUES (53, 2, 7, 1, '2023-08-30 16:29:05', '2023-08-30 16:29:05');
+INSERT INTO `role_menu_list` VALUES (54, 1, 9, 1, '2023-09-08 10:55:54', '2023-09-08 11:02:55');
+INSERT INTO `role_menu_list` VALUES (55, 1, 8, 1, '2023-09-08 10:56:45', '2023-09-08 11:01:43');
+INSERT INTO `role_menu_list` VALUES (56, 2, 54, 1, '2023-09-11 17:09:17', '2023-09-11 17:09:24');
+
+-- ----------------------------
+-- Table structure for role_permission
+-- ----------------------------
+DROP TABLE IF EXISTS `role_permission`;
+CREATE TABLE `role_permission`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+  `role_id` bigint NULL DEFAULT NULL COMMENT '瑙掕壊id',
+  `permission_id` bigint NULL DEFAULT NULL COMMENT '鏉冮檺id',
+  `state` tinyint NOT NULL DEFAULT 1 COMMENT '鐘舵�� 1/姝e父',
+  `create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '鍒涘缓鏃堕棿',
+  `update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '鏇存柊鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 76 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '瑙掕壊鏉冮檺' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of role_permission
+-- ----------------------------
+INSERT INTO `role_permission` VALUES (1, 1, 1, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (2, 1, 2, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (3, 1, 3, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (7, 1, 7, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (8, 1, 8, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (9, 1, 9, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (10, 1, 10, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (11, 1, 11, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (12, 1, 12, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (13, 1, 13, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (16, 1, 16, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (17, 1, 17, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (18, 1, 18, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (19, 1, 19, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (20, 1, 20, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (22, 1, 22, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (25, 1, 25, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (26, 1, 26, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (27, 1, 27, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (28, 1, 28, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (37, 2, 25, 1, '2021-11-28 16:30:57', '2021-11-28 16:31:04');
+INSERT INTO `role_permission` VALUES (38, 2, 26, 1, '2021-11-28 16:30:57', '2021-11-28 16:31:04');
+INSERT INTO `role_permission` VALUES (39, 2, 27, 1, '2021-11-28 16:30:57', '2021-11-28 16:31:04');
+INSERT INTO `role_permission` VALUES (40, 2, 28, 1, '2021-11-28 16:32:35', '2021-11-28 16:37:20');
+INSERT INTO `role_permission` VALUES (41, 2, 22, 1, '2021-11-28 19:57:35', '2021-11-28 19:57:35');
+INSERT INTO `role_permission` VALUES (42, 1, 30, 1, '2023-08-24 08:55:34', '2023-08-24 08:55:34');
+INSERT INTO `role_permission` VALUES (43, 1, 29, 1, '2023-08-24 08:56:15', '2023-08-24 08:56:15');
+INSERT INTO `role_permission` VALUES (44, 1, 31, 1, '2023-08-24 08:56:23', '2023-08-24 08:56:23');
+INSERT INTO `role_permission` VALUES (53, 2, 2, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (54, 2, 3, 0, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (56, 2, 8, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (57, 2, 9, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (58, 2, 10, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (61, 2, 13, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (62, 2, 16, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (63, 2, 17, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (64, 2, 18, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (65, 2, 19, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (66, 2, 20, 0, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (67, 2, 22, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (68, 2, 25, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (69, 2, 26, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (70, 2, 27, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (71, 2, 28, 1, '2021-11-28 15:07:54', '2021-11-28 15:07:54');
+INSERT INTO `role_permission` VALUES (72, 2, 30, 1, '2023-08-24 08:55:34', '2023-08-24 08:55:34');
+INSERT INTO `role_permission` VALUES (73, 2, 29, 1, '2023-08-24 08:56:15', '2023-08-28 15:33:14');
+INSERT INTO `role_permission` VALUES (74, 2, 1, 1, '2023-08-30 16:29:46', '2023-08-30 16:29:46');
+
+-- ----------------------------
+-- Table structure for storage_cage
+-- ----------------------------
+DROP TABLE IF EXISTS `storage_cage`;
+CREATE TABLE `storage_cage`  (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '搴忓彿',
+  `glass_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '鐜荤拑id',
+  `order_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '璁㈠崟id',
+  `cage` int NULL DEFAULT NULL COMMENT '绗煎瓙id',
+  `cell` int NULL DEFAULT NULL COMMENT '鏍煎瓙id',
+  `tier` int NULL DEFAULT NULL COMMENT '鏍煎瓙灞俰d',
+  `width` decimal(7, 2) NULL DEFAULT NULL COMMENT '鏍煎瓙瀹�',
+  `glasswidth` decimal(7, 2) NULL DEFAULT NULL COMMENT '鐜荤拑瀹�',
+  `glassheight` decimal(7, 2) NULL DEFAULT NULL COMMENT '鐜荤拑楂�',
+  `state` int NULL DEFAULT NULL COMMENT '鐘舵�侊紙0锛氭棤鐜荤拑锛�1锛氭湁鐜荤拑锛�2锛氳繘鐗囦腑锛�3锛氬嚭鐗囦腑锛�4锛氳皟搴︿腑锛�',
+  `coating` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '娑傚眰',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 421 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of storage_cage
+-- ----------------------------
+INSERT INTO `storage_cage` VALUES (1, NULL, NULL, 1, 1, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (2, NULL, NULL, 1, 1, 2, 1760.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (3, NULL, NULL, 1, 2, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (4, NULL, NULL, 1, 2, 2, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (5, NULL, NULL, 1, 3, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (6, NULL, NULL, 1, 3, 2, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (7, NULL, NULL, 1, 4, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (8, NULL, NULL, 1, 4, 2, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (9, NULL, NULL, 1, 5, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (10, NULL, NULL, 1, 5, 2, 1600.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (11, NULL, NULL, 1, 6, 1, 1600.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (12, '12', 'NG2202301', 1, 6, 2, 1602.00, 0.00, 2.00, 1, '2');
+INSERT INTO `storage_cage` VALUES (13, NULL, NULL, 1, 7, 1, 1600.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (14, NULL, NULL, 1, 7, 2, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (15, NULL, NULL, 1, 8, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (16, NULL, NULL, 1, 8, 2, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (17, NULL, NULL, 1, 9, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (18, NULL, NULL, 1, 9, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (19, NULL, NULL, 1, 10, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (20, NULL, NULL, 1, 10, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (21, NULL, NULL, 1, 11, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (22, NULL, NULL, 1, 11, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (23, NULL, NULL, 1, 12, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (24, NULL, NULL, 1, 12, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (25, NULL, NULL, 1, 13, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (26, NULL, NULL, 1, 13, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (27, NULL, NULL, 1, 14, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (28, NULL, NULL, 1, 14, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (29, NULL, NULL, 1, 15, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (30, NULL, NULL, 1, 15, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (31, NULL, NULL, 1, 16, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (32, NULL, NULL, 1, 16, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (33, NULL, NULL, 1, 17, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (34, NULL, NULL, 1, 17, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (35, NULL, NULL, 1, 18, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (36, NULL, NULL, 1, 18, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (37, NULL, NULL, 1, 19, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (38, NULL, NULL, 1, 19, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (39, NULL, NULL, 1, 20, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (40, NULL, NULL, 1, 20, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (41, NULL, NULL, 1, 21, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (42, NULL, NULL, 1, 21, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (43, NULL, NULL, 2, 1, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (44, NULL, NULL, 2, 1, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (45, NULL, NULL, 2, 2, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (46, NULL, NULL, 2, 2, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (47, NULL, NULL, 2, 3, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (48, NULL, NULL, 2, 3, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (49, '112', '1145', 2, 4, 1, 330.00, 1220.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (50, NULL, NULL, 2, 4, 2, 1550.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (51, NULL, NULL, 2, 5, 1, 1550.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (52, NULL, NULL, 2, 5, 2, 1550.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (53, NULL, NULL, 2, 6, 1, 1550.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (54, NULL, NULL, 2, 6, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (55, NULL, NULL, 2, 7, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (56, NULL, NULL, 2, 7, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (57, NULL, NULL, 2, 8, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (58, NULL, NULL, 2, 8, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (59, NULL, NULL, 2, 9, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (60, NULL, NULL, 2, 9, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (61, NULL, NULL, 2, 10, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (62, NULL, NULL, 2, 10, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (63, NULL, NULL, 2, 11, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (64, NULL, NULL, 2, 11, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (65, NULL, NULL, 2, 12, 1, 1760.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (66, NULL, NULL, 2, 12, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (67, NULL, NULL, 2, 13, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (68, NULL, NULL, 2, 13, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (69, NULL, NULL, 2, 14, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (70, NULL, NULL, 2, 14, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (71, NULL, NULL, 2, 15, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (72, NULL, NULL, 2, 15, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (73, NULL, NULL, 2, 16, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (74, NULL, NULL, 2, 16, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (75, NULL, NULL, 2, 17, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (76, NULL, NULL, 2, 17, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (77, NULL, NULL, 2, 18, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (78, NULL, NULL, 2, 18, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (79, NULL, NULL, 2, 19, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (80, NULL, NULL, 2, 19, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (81, NULL, NULL, 2, 20, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (82, NULL, NULL, 2, 20, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (83, NULL, NULL, 2, 21, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (84, NULL, NULL, 2, 21, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (85, NULL, NULL, 3, 1, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (86, NULL, NULL, 3, 1, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (87, NULL, NULL, 3, 2, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (88, '116', '112', 3, 2, 2, 1500.00, 1200.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (89, '117', '112', 3, 3, 1, 1500.00, 1200.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (90, '118', '112', 3, 3, 2, 1500.00, 1200.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (91, '119', '112', 3, 4, 1, 1500.00, 1200.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (92, '120', '112', 3, 4, 2, 1500.00, 1200.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (93, '121', '112', 3, 5, 1, 1500.00, 1200.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (94, '', '', 3, 5, 2, 2700.00, 0.00, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (95, NULL, NULL, 3, 6, 1, 280.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (96, NULL, NULL, 3, 6, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (97, NULL, NULL, 3, 7, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (98, NULL, NULL, 3, 7, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (99, NULL, NULL, 3, 8, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (100, NULL, NULL, 3, 8, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (101, NULL, NULL, 3, 9, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (102, NULL, NULL, 3, 9, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (103, NULL, NULL, 3, 10, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (104, NULL, NULL, 3, 10, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (105, NULL, NULL, 3, 11, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (106, NULL, NULL, 3, 11, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (107, NULL, NULL, 3, 12, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (108, NULL, NULL, 3, 12, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (109, NULL, NULL, 3, 13, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (110, NULL, NULL, 3, 13, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (111, NULL, NULL, 3, 14, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (112, NULL, NULL, 3, 14, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (113, NULL, NULL, 3, 15, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (114, NULL, NULL, 3, 15, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (115, NULL, NULL, 3, 16, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (116, NULL, NULL, 3, 16, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (117, NULL, NULL, 3, 17, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (118, NULL, NULL, 3, 17, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (119, NULL, NULL, 3, 18, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (120, NULL, NULL, 3, 18, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (121, NULL, NULL, 3, 19, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (122, NULL, NULL, 3, 19, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (123, NULL, NULL, 3, 20, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (124, NULL, NULL, 3, 20, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (125, NULL, NULL, 3, 21, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (126, NULL, NULL, 3, 21, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (127, NULL, NULL, 4, 1, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (128, NULL, NULL, 4, 1, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (129, NULL, NULL, 4, 2, 1, 1550.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (130, NULL, NULL, 4, 2, 2, 1550.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (131, NULL, NULL, 4, 3, 1, 1550.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (132, NULL, NULL, 4, 3, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (133, NULL, NULL, 4, 4, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (134, NULL, NULL, 4, 4, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (135, NULL, NULL, 4, 5, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (136, NULL, NULL, 4, 5, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (137, NULL, NULL, 4, 6, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (138, NULL, NULL, 4, 6, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (139, NULL, NULL, 4, 7, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (140, NULL, NULL, 4, 7, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (141, '123', '112', 4, 8, 1, 1500.00, 1200.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (142, '124', '112', 4, 8, 2, 1500.00, 1200.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (143, '125', '112', 4, 9, 1, 1500.00, 1200.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (144, '126', '112', 4, 9, 2, 1500.00, 1200.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (145, '127', '112', 4, 10, 1, 1500.00, 1200.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (146, '128', '112', 4, 10, 2, 1500.00, 1200.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (147, NULL, NULL, 4, 11, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (148, NULL, NULL, 4, 11, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (149, NULL, NULL, 4, 12, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (150, NULL, NULL, 4, 12, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (151, NULL, NULL, 4, 13, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (152, NULL, NULL, 4, 13, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (153, NULL, NULL, 4, 14, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (154, NULL, NULL, 4, 14, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (155, NULL, NULL, 4, 15, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (156, NULL, NULL, 4, 15, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (157, NULL, NULL, 4, 16, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (158, NULL, NULL, 4, 16, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (159, NULL, NULL, 4, 17, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (160, NULL, NULL, 4, 17, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (161, NULL, NULL, 4, 18, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (162, NULL, NULL, 4, 18, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (163, NULL, NULL, 4, 19, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (164, NULL, NULL, 4, 19, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (165, NULL, NULL, 4, 20, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (166, NULL, NULL, 4, 20, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (167, NULL, NULL, 4, 21, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (168, NULL, NULL, 4, 21, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (169, NULL, NULL, 5, 1, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (170, NULL, NULL, 5, 1, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (171, NULL, NULL, 5, 2, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (172, NULL, NULL, 5, 2, 2, 1550.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (173, NULL, NULL, 5, 3, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (174, NULL, NULL, 5, 3, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (175, NULL, NULL, 5, 4, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (176, NULL, NULL, 5, 4, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (177, NULL, NULL, 5, 5, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (178, NULL, NULL, 5, 5, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (179, NULL, NULL, 5, 6, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (180, NULL, NULL, 5, 6, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (181, NULL, NULL, 5, 7, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (182, NULL, NULL, 5, 7, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (183, NULL, NULL, 5, 8, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (184, NULL, NULL, 5, 8, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (185, NULL, NULL, 5, 9, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (186, NULL, NULL, 5, 9, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (187, NULL, NULL, 5, 10, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (188, NULL, NULL, 5, 10, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (189, NULL, NULL, 5, 11, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (190, NULL, NULL, 5, 11, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (191, NULL, NULL, 5, 12, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (192, NULL, NULL, 5, 12, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (193, NULL, NULL, 5, 13, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (194, NULL, NULL, 5, 13, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (195, NULL, NULL, 5, 14, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (196, NULL, NULL, 5, 14, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (197, NULL, NULL, 5, 15, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (198, NULL, NULL, 5, 15, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (199, NULL, NULL, 5, 16, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (200, NULL, NULL, 5, 16, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (201, NULL, NULL, 5, 17, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (202, NULL, NULL, 5, 17, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (203, NULL, NULL, 5, 18, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (204, NULL, NULL, 5, 18, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (205, NULL, NULL, 5, 19, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (206, NULL, NULL, 5, 19, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (207, NULL, NULL, 5, 20, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (208, NULL, NULL, 5, 20, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (209, NULL, NULL, 5, 21, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (210, NULL, NULL, 5, 21, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (211, '129', '112', 6, 1, 1, 1500.00, 1200.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (212, '130', '113', 6, 1, 2, 1500.00, 1200.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (213, '', '', 6, 2, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (214, NULL, NULL, 6, 2, 2, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (215, NULL, NULL, 6, 3, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (216, NULL, NULL, 6, 3, 2, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (217, NULL, NULL, 6, 4, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (218, NULL, NULL, 6, 4, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (219, NULL, NULL, 6, 5, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (220, NULL, NULL, 6, 5, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (221, NULL, NULL, 6, 6, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (222, NULL, NULL, 6, 6, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (223, NULL, NULL, 6, 7, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (224, NULL, NULL, 6, 7, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (225, NULL, NULL, 6, 8, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (226, NULL, NULL, 6, 8, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (227, NULL, NULL, 6, 9, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (228, NULL, NULL, 6, 9, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (229, NULL, NULL, 6, 10, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (230, NULL, NULL, 6, 10, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (231, NULL, NULL, 6, 11, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (232, NULL, NULL, 6, 11, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (233, NULL, NULL, 6, 12, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (234, NULL, NULL, 6, 12, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (235, NULL, NULL, 6, 13, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (236, NULL, NULL, 6, 13, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (237, NULL, NULL, 6, 14, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (238, NULL, NULL, 6, 14, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (239, NULL, NULL, 6, 15, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (240, NULL, NULL, 6, 15, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (241, NULL, NULL, 6, 16, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (242, NULL, NULL, 6, 16, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (243, NULL, NULL, 6, 17, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (244, NULL, NULL, 6, 17, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (245, NULL, NULL, 6, 18, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (246, NULL, NULL, 6, 18, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (247, NULL, NULL, 6, 19, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (248, NULL, NULL, 6, 19, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (249, NULL, NULL, 6, 20, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (250, NULL, NULL, 6, 20, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (251, NULL, NULL, 6, 21, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (252, NULL, NULL, 6, 21, 2, 1788.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (253, '1', '1145', 7, 1, 1, 388.00, 1400.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (254, '112', '1145', 7, 1, 2, 568.00, 1220.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (255, '112', '1145', 7, 2, 1, 568.00, 1220.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (256, '001', '1145', 7, 2, 2, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (257, NULL, NULL, 7, 3, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (258, '112', '1145', 7, 3, 2, 280.00, 1220.00, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (259, NULL, NULL, 7, 4, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (260, NULL, NULL, 7, 4, 2, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (261, NULL, NULL, 7, 5, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (262, NULL, NULL, 7, 5, 2, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (263, NULL, NULL, 7, 6, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (264, NULL, NULL, 7, 6, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (265, NULL, NULL, 7, 7, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (266, NULL, NULL, 7, 7, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (267, NULL, NULL, 7, 8, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (268, NULL, NULL, 7, 8, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (269, NULL, NULL, 7, 9, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (270, NULL, NULL, 7, 9, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (271, NULL, NULL, 7, 10, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (272, NULL, NULL, 7, 10, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (273, NULL, NULL, 7, 11, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (274, NULL, NULL, 7, 11, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (275, NULL, NULL, 7, 12, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (276, NULL, NULL, 7, 12, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (277, NULL, NULL, 7, 13, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (278, NULL, NULL, 7, 13, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (279, NULL, NULL, 7, 14, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (280, NULL, NULL, 7, 14, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (281, NULL, NULL, 7, 15, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (282, NULL, NULL, 7, 15, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (283, NULL, NULL, 7, 16, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (284, NULL, NULL, 7, 16, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (285, NULL, NULL, 7, 17, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (286, NULL, NULL, 7, 17, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (287, NULL, NULL, 7, 18, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (288, NULL, NULL, 7, 18, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (289, NULL, NULL, 7, 19, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (290, NULL, NULL, 7, 19, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (291, NULL, NULL, 7, 20, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (292, NULL, NULL, 7, 20, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (293, NULL, NULL, 7, 21, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (294, NULL, NULL, 7, 21, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (295, NULL, NULL, 8, 1, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (296, NULL, NULL, 8, 1, 2, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (297, NULL, NULL, 8, 2, 1, 1788.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (298, NULL, NULL, 8, 2, 2, 1788.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (299, NULL, NULL, 8, 3, 1, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (300, NULL, NULL, 8, 3, 2, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (301, NULL, NULL, 8, 4, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (302, NULL, NULL, 8, 4, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (303, NULL, NULL, 8, 5, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (304, NULL, NULL, 8, 5, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (305, NULL, NULL, 8, 6, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (306, NULL, NULL, 8, 6, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (307, NULL, NULL, 8, 7, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (308, NULL, NULL, 8, 7, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (309, NULL, NULL, 8, 8, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (310, NULL, NULL, 8, 8, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (311, NULL, NULL, 8, 9, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (312, NULL, NULL, 8, 9, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (313, NULL, NULL, 8, 10, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (314, NULL, NULL, 8, 10, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (315, NULL, NULL, 8, 11, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (316, NULL, NULL, 8, 11, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (317, NULL, NULL, 8, 12, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (318, NULL, NULL, 8, 12, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (319, NULL, NULL, 8, 13, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (320, NULL, NULL, 8, 13, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (321, NULL, NULL, 8, 14, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (322, NULL, NULL, 8, 14, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (323, NULL, NULL, 8, 15, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (324, NULL, NULL, 8, 15, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (325, NULL, NULL, 8, 16, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (326, NULL, NULL, 8, 16, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (327, NULL, NULL, 8, 17, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (328, NULL, NULL, 8, 17, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (329, NULL, NULL, 8, 18, 1, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (330, NULL, NULL, 8, 18, 2, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (331, NULL, NULL, 8, 19, 1, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (332, NULL, NULL, 8, 19, 2, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (333, NULL, NULL, 8, 20, 1, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (334, NULL, NULL, 8, 20, 2, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (335, NULL, NULL, 8, 21, 1, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (336, NULL, NULL, 8, 21, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (337, NULL, NULL, 9, 1, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (338, NULL, NULL, 9, 1, 2, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (339, NULL, NULL, 9, 2, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (340, NULL, NULL, 9, 2, 2, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (341, NULL, NULL, 9, 3, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (342, NULL, NULL, 9, 3, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (343, NULL, NULL, 9, 4, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (344, NULL, NULL, 9, 4, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (345, NULL, NULL, 9, 5, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (346, NULL, NULL, 9, 5, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (347, NULL, NULL, 9, 6, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (348, NULL, NULL, 9, 6, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (349, NULL, NULL, 9, 7, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (350, NULL, NULL, 9, 7, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (351, NULL, NULL, 9, 8, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (352, NULL, NULL, 9, 8, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (353, NULL, NULL, 9, 9, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (354, NULL, NULL, 9, 9, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (355, NULL, NULL, 9, 10, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (356, NULL, NULL, 9, 10, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (357, NULL, NULL, 9, 11, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (358, NULL, NULL, 9, 11, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (359, NULL, NULL, 9, 12, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (360, NULL, NULL, 9, 12, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (361, NULL, NULL, 9, 13, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (362, NULL, NULL, 9, 13, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (363, NULL, NULL, 9, 14, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (364, NULL, NULL, 9, 14, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (365, NULL, NULL, 9, 15, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (366, NULL, NULL, 9, 15, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (367, NULL, NULL, 9, 16, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (368, NULL, NULL, 9, 16, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (369, NULL, NULL, 9, 17, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (370, NULL, NULL, 9, 17, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (371, NULL, NULL, 9, 18, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (372, NULL, NULL, 9, 18, 2, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (373, NULL, NULL, 9, 19, 1, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (374, NULL, NULL, 9, 19, 2, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (375, NULL, NULL, 9, 20, 1, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (376, NULL, NULL, 9, 20, 2, 1788.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (377, NULL, NULL, 9, 21, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (378, NULL, NULL, 9, 21, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (379, NULL, NULL, 10, 1, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (380, NULL, NULL, 10, 1, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (381, NULL, NULL, 10, 2, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (382, NULL, NULL, 10, 2, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (383, NULL, NULL, 10, 3, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (384, NULL, NULL, 10, 3, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (385, NULL, NULL, 10, 4, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (386, NULL, NULL, 10, 4, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (387, NULL, NULL, 10, 5, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (388, NULL, NULL, 10, 5, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (389, NULL, NULL, 10, 6, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (390, NULL, NULL, 10, 6, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (391, NULL, NULL, 10, 7, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (392, NULL, NULL, 10, 7, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (393, NULL, NULL, 10, 8, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (394, NULL, NULL, 10, 8, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (395, NULL, NULL, 10, 9, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (396, NULL, NULL, 10, 9, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (397, NULL, NULL, 10, 10, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (398, NULL, NULL, 10, 10, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (399, NULL, NULL, 10, 11, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (400, NULL, NULL, 10, 11, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (401, NULL, NULL, 10, 12, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (402, NULL, NULL, 10, 12, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (403, NULL, NULL, 10, 13, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (404, NULL, NULL, 10, 13, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (405, NULL, NULL, 10, 14, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (406, NULL, NULL, 10, 14, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (407, NULL, NULL, 10, 15, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (408, NULL, NULL, 10, 15, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (409, NULL, NULL, 10, 16, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (410, NULL, NULL, 10, 16, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (411, NULL, NULL, 10, 17, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (412, NULL, NULL, 10, 17, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (413, NULL, NULL, 10, 18, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (414, NULL, NULL, 10, 18, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (415, NULL, NULL, 10, 19, 1, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (416, NULL, NULL, 10, 19, 2, 1500.00, NULL, NULL, 1, NULL);
+INSERT INTO `storage_cage` VALUES (417, NULL, NULL, 10, 20, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (418, NULL, NULL, 10, 20, 2, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (419, NULL, NULL, 10, 21, 1, 1500.00, NULL, NULL, 0, NULL);
+INSERT INTO `storage_cage` VALUES (420, NULL, NULL, 10, 21, 2, 1500.00, NULL, NULL, 0, NULL);
+
+-- ----------------------------
+-- Table structure for storage_rack
+-- ----------------------------
+DROP TABLE IF EXISTS `storage_rack`;
+CREATE TABLE `storage_rack`  (
+  `id` bigint NOT NULL AUTO_INCREMENT,
+  `number` int NULL DEFAULT NULL COMMENT '鏋跺瓙缂栧彿',
+  `state` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `raw_package_id` bigint NULL DEFAULT NULL COMMENT '鍖呭彿缂栧彿',
+  `mod_time` datetime(0) NULL DEFAULT NULL COMMENT '淇敼鏃堕棿',
+  `falg` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '绂佺敤鍚敤',
+  `cell` int NULL DEFAULT NULL,
+  `cageno` int NULL DEFAULT NULL COMMENT '绗煎瓙鍙�',
+  PRIMARY KEY (`id`) USING BTREE,
+  INDEX `raw_package_id1`(`raw_package_id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 492 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of storage_rack
+-- ----------------------------
+INSERT INTO `storage_rack` VALUES (72, 1, 1, NULL, NULL, NULL, 1, 1);
+INSERT INTO `storage_rack` VALUES (73, 1, 1, NULL, NULL, NULL, 2, 1);
+INSERT INTO `storage_rack` VALUES (74, 2, 1, NULL, NULL, NULL, 1, 1);
+INSERT INTO `storage_rack` VALUES (75, 2, 0, NULL, NULL, NULL, 2, 1);
+INSERT INTO `storage_rack` VALUES (76, 3, 1, NULL, NULL, NULL, 1, 1);
+INSERT INTO `storage_rack` VALUES (77, 3, 0, NULL, NULL, NULL, 2, 1);
+INSERT INTO `storage_rack` VALUES (78, 4, 3, NULL, NULL, NULL, 1, 1);
+INSERT INTO `storage_rack` VALUES (79, 4, 3, NULL, NULL, NULL, 2, 1);
+INSERT INTO `storage_rack` VALUES (80, 5, 3, NULL, NULL, NULL, 1, 1);
+INSERT INTO `storage_rack` VALUES (81, 5, 3, NULL, NULL, NULL, 2, 1);
+INSERT INTO `storage_rack` VALUES (82, 6, 0, NULL, NULL, NULL, 1, 1);
+INSERT INTO `storage_rack` VALUES (83, 6, 0, NULL, NULL, NULL, 2, 1);
+INSERT INTO `storage_rack` VALUES (84, 7, 0, NULL, NULL, NULL, 1, 1);
+INSERT INTO `storage_rack` VALUES (85, 7, 0, NULL, NULL, NULL, 2, 1);
+INSERT INTO `storage_rack` VALUES (86, 8, 0, NULL, NULL, NULL, 1, 1);
+INSERT INTO `storage_rack` VALUES (87, 8, 0, NULL, NULL, NULL, 2, 1);
+INSERT INTO `storage_rack` VALUES (88, 9, 1, NULL, NULL, NULL, 1, 1);
+INSERT INTO `storage_rack` VALUES (89, 9, 1, NULL, NULL, NULL, 2, 1);
+INSERT INTO `storage_rack` VALUES (90, 10, 1, NULL, NULL, NULL, 1, 1);
+INSERT INTO `storage_rack` VALUES (91, 10, 1, NULL, NULL, NULL, 2, 1);
+INSERT INTO `storage_rack` VALUES (92, 11, 1, NULL, NULL, NULL, 1, 1);
+INSERT INTO `storage_rack` VALUES (93, 11, 1, NULL, NULL, NULL, 2, 1);
+INSERT INTO `storage_rack` VALUES (94, 12, 1, NULL, NULL, NULL, 1, 1);
+INSERT INTO `storage_rack` VALUES (95, 12, 1, NULL, NULL, NULL, 2, 1);
+INSERT INTO `storage_rack` VALUES (96, 13, 1, NULL, NULL, NULL, 1, 1);
+INSERT INTO `storage_rack` VALUES (97, 13, 1, NULL, NULL, NULL, 2, 1);
+INSERT INTO `storage_rack` VALUES (98, 14, 1, NULL, NULL, NULL, 1, 1);
+INSERT INTO `storage_rack` VALUES (99, 14, 1, NULL, NULL, NULL, 2, 1);
+INSERT INTO `storage_rack` VALUES (100, 15, 1, NULL, NULL, NULL, 1, 1);
+INSERT INTO `storage_rack` VALUES (101, 15, 1, NULL, NULL, NULL, 2, 1);
+INSERT INTO `storage_rack` VALUES (102, 16, 1, NULL, NULL, NULL, 1, 1);
+INSERT INTO `storage_rack` VALUES (103, 16, 1, NULL, NULL, NULL, 2, 1);
+INSERT INTO `storage_rack` VALUES (104, 17, 1, NULL, NULL, NULL, 1, 1);
+INSERT INTO `storage_rack` VALUES (105, 17, 1, NULL, NULL, NULL, 2, 1);
+INSERT INTO `storage_rack` VALUES (106, 18, 1, NULL, NULL, NULL, 1, 1);
+INSERT INTO `storage_rack` VALUES (107, 18, 1, NULL, NULL, NULL, 2, 1);
+INSERT INTO `storage_rack` VALUES (108, 19, 1, NULL, NULL, NULL, 1, 1);
+INSERT INTO `storage_rack` VALUES (109, 19, 1, NULL, NULL, NULL, 2, 1);
+INSERT INTO `storage_rack` VALUES (110, 20, 1, NULL, NULL, NULL, 1, 1);
+INSERT INTO `storage_rack` VALUES (111, 20, 1, NULL, NULL, NULL, 2, 1);
+INSERT INTO `storage_rack` VALUES (112, 21, 1, NULL, NULL, NULL, 1, 1);
+INSERT INTO `storage_rack` VALUES (113, 21, 1, NULL, NULL, NULL, 2, 1);
+INSERT INTO `storage_rack` VALUES (114, 22, 1, NULL, NULL, NULL, 1, 2);
+INSERT INTO `storage_rack` VALUES (115, 22, 1, NULL, NULL, NULL, 2, 2);
+INSERT INTO `storage_rack` VALUES (116, 23, 1, NULL, NULL, NULL, 1, 2);
+INSERT INTO `storage_rack` VALUES (117, 23, 1, NULL, NULL, NULL, 2, 2);
+INSERT INTO `storage_rack` VALUES (118, 24, 1, NULL, NULL, NULL, 1, 2);
+INSERT INTO `storage_rack` VALUES (119, 24, 1, NULL, NULL, NULL, 2, 2);
+INSERT INTO `storage_rack` VALUES (120, 25, 1, NULL, NULL, NULL, 1, 2);
+INSERT INTO `storage_rack` VALUES (121, 25, 1, NULL, NULL, NULL, 2, 2);
+INSERT INTO `storage_rack` VALUES (122, 26, 1, NULL, NULL, NULL, 1, 2);
+INSERT INTO `storage_rack` VALUES (123, 26, 1, NULL, NULL, NULL, 2, 2);
+INSERT INTO `storage_rack` VALUES (124, 27, 1, NULL, NULL, NULL, 1, 2);
+INSERT INTO `storage_rack` VALUES (125, 27, 1, NULL, NULL, NULL, 2, 2);
+INSERT INTO `storage_rack` VALUES (126, 28, 1, NULL, NULL, NULL, 1, 2);
+INSERT INTO `storage_rack` VALUES (127, 28, 1, NULL, NULL, NULL, 2, 2);
+INSERT INTO `storage_rack` VALUES (128, 29, 1, NULL, NULL, NULL, 1, 2);
+INSERT INTO `storage_rack` VALUES (129, 29, 1, NULL, NULL, NULL, 2, 2);
+INSERT INTO `storage_rack` VALUES (130, 30, 1, NULL, NULL, NULL, 1, 2);
+INSERT INTO `storage_rack` VALUES (131, 30, 1, NULL, NULL, NULL, 2, 2);
+INSERT INTO `storage_rack` VALUES (132, 31, 1, NULL, NULL, NULL, 1, 2);
+INSERT INTO `storage_rack` VALUES (133, 31, 1, NULL, NULL, NULL, 2, 2);
+INSERT INTO `storage_rack` VALUES (134, 32, 1, NULL, NULL, NULL, 1, 2);
+INSERT INTO `storage_rack` VALUES (135, 32, 1, NULL, NULL, NULL, 2, 2);
+INSERT INTO `storage_rack` VALUES (136, 33, 1, NULL, NULL, NULL, 1, 2);
+INSERT INTO `storage_rack` VALUES (137, 33, 1, NULL, NULL, NULL, 2, 2);
+INSERT INTO `storage_rack` VALUES (138, 34, 1, NULL, NULL, NULL, 1, 2);
+INSERT INTO `storage_rack` VALUES (139, 34, 1, NULL, NULL, NULL, 2, 2);
+INSERT INTO `storage_rack` VALUES (140, 35, 1, NULL, NULL, NULL, 1, 2);
+INSERT INTO `storage_rack` VALUES (141, 35, 1, NULL, NULL, NULL, 2, 2);
+INSERT INTO `storage_rack` VALUES (142, 36, 1, NULL, NULL, NULL, 1, 2);
+INSERT INTO `storage_rack` VALUES (143, 36, 1, NULL, NULL, NULL, 2, 2);
+INSERT INTO `storage_rack` VALUES (144, 37, 1, NULL, NULL, NULL, 1, 2);
+INSERT INTO `storage_rack` VALUES (145, 37, 1, NULL, NULL, NULL, 2, 2);
+INSERT INTO `storage_rack` VALUES (146, 38, 1, NULL, NULL, NULL, 1, 2);
+INSERT INTO `storage_rack` VALUES (147, 38, 1, NULL, NULL, NULL, 2, 2);
+INSERT INTO `storage_rack` VALUES (148, 39, 1, NULL, NULL, NULL, 1, 2);
+INSERT INTO `storage_rack` VALUES (149, 39, 1, NULL, NULL, NULL, 2, 2);
+INSERT INTO `storage_rack` VALUES (150, 40, 1, NULL, NULL, NULL, 1, 2);
+INSERT INTO `storage_rack` VALUES (151, 40, 1, NULL, NULL, NULL, 2, 2);
+INSERT INTO `storage_rack` VALUES (152, 41, 1, NULL, NULL, NULL, 1, 2);
+INSERT INTO `storage_rack` VALUES (153, 41, 1, NULL, NULL, NULL, 2, 2);
+INSERT INTO `storage_rack` VALUES (154, 42, 1, NULL, NULL, NULL, 1, 2);
+INSERT INTO `storage_rack` VALUES (155, 42, 1, NULL, NULL, NULL, 2, 2);
+INSERT INTO `storage_rack` VALUES (156, 43, 1, NULL, NULL, NULL, 1, 3);
+INSERT INTO `storage_rack` VALUES (157, 43, 1, NULL, NULL, NULL, 2, 3);
+INSERT INTO `storage_rack` VALUES (158, 44, 1, NULL, NULL, NULL, 1, 3);
+INSERT INTO `storage_rack` VALUES (159, 44, 1, NULL, NULL, NULL, 2, 3);
+INSERT INTO `storage_rack` VALUES (160, 45, 1, NULL, NULL, NULL, 1, 3);
+INSERT INTO `storage_rack` VALUES (161, 45, 1, NULL, NULL, NULL, 2, 3);
+INSERT INTO `storage_rack` VALUES (162, 46, 1, NULL, NULL, NULL, 1, 3);
+INSERT INTO `storage_rack` VALUES (163, 46, 1, NULL, NULL, NULL, 2, 3);
+INSERT INTO `storage_rack` VALUES (164, 47, 1, NULL, NULL, NULL, 1, 3);
+INSERT INTO `storage_rack` VALUES (165, 47, 1, NULL, NULL, NULL, 2, 3);
+INSERT INTO `storage_rack` VALUES (166, 48, 1, NULL, NULL, NULL, 1, 3);
+INSERT INTO `storage_rack` VALUES (167, 48, 1, NULL, NULL, NULL, 2, 3);
+INSERT INTO `storage_rack` VALUES (168, 49, 1, NULL, NULL, NULL, 1, 3);
+INSERT INTO `storage_rack` VALUES (169, 49, 1, NULL, NULL, NULL, 2, 3);
+INSERT INTO `storage_rack` VALUES (170, 50, 1, NULL, NULL, NULL, 1, 3);
+INSERT INTO `storage_rack` VALUES (171, 50, 1, NULL, NULL, NULL, 2, 3);
+INSERT INTO `storage_rack` VALUES (172, 51, 1, NULL, NULL, NULL, 1, 3);
+INSERT INTO `storage_rack` VALUES (173, 51, 1, NULL, NULL, NULL, 2, 3);
+INSERT INTO `storage_rack` VALUES (174, 52, 1, NULL, NULL, NULL, 1, 3);
+INSERT INTO `storage_rack` VALUES (175, 52, 1, NULL, NULL, NULL, 2, 3);
+INSERT INTO `storage_rack` VALUES (176, 53, 1, NULL, NULL, NULL, 1, 3);
+INSERT INTO `storage_rack` VALUES (177, 53, 1, NULL, NULL, NULL, 2, 3);
+INSERT INTO `storage_rack` VALUES (178, 54, 1, NULL, NULL, NULL, 1, 3);
+INSERT INTO `storage_rack` VALUES (179, 54, 1, NULL, NULL, NULL, 2, 3);
+INSERT INTO `storage_rack` VALUES (180, 55, 1, NULL, NULL, NULL, 1, 3);
+INSERT INTO `storage_rack` VALUES (181, 55, 1, NULL, NULL, NULL, 2, 3);
+INSERT INTO `storage_rack` VALUES (182, 56, 1, NULL, NULL, NULL, 1, 3);
+INSERT INTO `storage_rack` VALUES (183, 56, 1, NULL, NULL, NULL, 2, 3);
+INSERT INTO `storage_rack` VALUES (184, 57, 1, NULL, NULL, NULL, 1, 3);
+INSERT INTO `storage_rack` VALUES (185, 57, 1, NULL, NULL, NULL, 2, 3);
+INSERT INTO `storage_rack` VALUES (186, 58, 1, NULL, NULL, NULL, 1, 3);
+INSERT INTO `storage_rack` VALUES (187, 58, 1, NULL, NULL, NULL, 2, 3);
+INSERT INTO `storage_rack` VALUES (188, 59, 1, NULL, NULL, NULL, 1, 3);
+INSERT INTO `storage_rack` VALUES (189, 59, 1, NULL, NULL, NULL, 2, 3);
+INSERT INTO `storage_rack` VALUES (190, 60, 1, NULL, NULL, NULL, 1, 3);
+INSERT INTO `storage_rack` VALUES (191, 60, 1, NULL, NULL, NULL, 2, 3);
+INSERT INTO `storage_rack` VALUES (192, 61, 1, NULL, NULL, NULL, 1, 3);
+INSERT INTO `storage_rack` VALUES (193, 61, 1, NULL, NULL, NULL, 2, 3);
+INSERT INTO `storage_rack` VALUES (194, 62, 1, NULL, NULL, NULL, 1, 3);
+INSERT INTO `storage_rack` VALUES (195, 62, 1, NULL, NULL, NULL, 2, 3);
+INSERT INTO `storage_rack` VALUES (196, 63, 1, NULL, NULL, NULL, 1, 3);
+INSERT INTO `storage_rack` VALUES (197, 63, 1, NULL, NULL, NULL, 2, 3);
+INSERT INTO `storage_rack` VALUES (198, 64, 1, NULL, NULL, NULL, 1, 4);
+INSERT INTO `storage_rack` VALUES (199, 64, 1, NULL, NULL, NULL, 2, 4);
+INSERT INTO `storage_rack` VALUES (200, 65, 1, NULL, NULL, NULL, 1, 4);
+INSERT INTO `storage_rack` VALUES (201, 65, 1, NULL, NULL, NULL, 2, 4);
+INSERT INTO `storage_rack` VALUES (202, 66, 1, NULL, NULL, NULL, 1, 4);
+INSERT INTO `storage_rack` VALUES (203, 66, 1, NULL, NULL, NULL, 2, 4);
+INSERT INTO `storage_rack` VALUES (204, 67, 1, NULL, NULL, NULL, 1, 4);
+INSERT INTO `storage_rack` VALUES (205, 67, 1, NULL, NULL, NULL, 2, 4);
+INSERT INTO `storage_rack` VALUES (206, 68, 1, NULL, NULL, NULL, 1, 4);
+INSERT INTO `storage_rack` VALUES (207, 68, 1, NULL, NULL, NULL, 2, 4);
+INSERT INTO `storage_rack` VALUES (208, 69, 1, NULL, NULL, NULL, 1, 4);
+INSERT INTO `storage_rack` VALUES (209, 69, 1, NULL, NULL, NULL, 2, 4);
+INSERT INTO `storage_rack` VALUES (210, 70, 1, NULL, NULL, NULL, 1, 4);
+INSERT INTO `storage_rack` VALUES (211, 70, 1, NULL, NULL, NULL, 2, 4);
+INSERT INTO `storage_rack` VALUES (212, 71, 1, NULL, NULL, NULL, 1, 4);
+INSERT INTO `storage_rack` VALUES (213, 71, 1, NULL, NULL, NULL, 2, 4);
+INSERT INTO `storage_rack` VALUES (214, 72, 1, NULL, NULL, NULL, 1, 4);
+INSERT INTO `storage_rack` VALUES (215, 72, 1, NULL, NULL, NULL, 2, 4);
+INSERT INTO `storage_rack` VALUES (216, 73, 1, NULL, NULL, NULL, 1, 4);
+INSERT INTO `storage_rack` VALUES (217, 73, 1, NULL, NULL, NULL, 2, 4);
+INSERT INTO `storage_rack` VALUES (218, 74, 1, NULL, NULL, NULL, 1, 4);
+INSERT INTO `storage_rack` VALUES (219, 74, 1, NULL, NULL, NULL, 2, 4);
+INSERT INTO `storage_rack` VALUES (220, 75, 1, NULL, NULL, NULL, 1, 4);
+INSERT INTO `storage_rack` VALUES (221, 75, 1, NULL, NULL, NULL, 2, 4);
+INSERT INTO `storage_rack` VALUES (222, 76, 1, NULL, NULL, NULL, 1, 4);
+INSERT INTO `storage_rack` VALUES (223, 76, 1, NULL, NULL, NULL, 2, 4);
+INSERT INTO `storage_rack` VALUES (224, 77, 1, NULL, NULL, NULL, 1, 4);
+INSERT INTO `storage_rack` VALUES (225, 77, 1, NULL, NULL, NULL, 2, 4);
+INSERT INTO `storage_rack` VALUES (226, 78, 1, NULL, NULL, NULL, 1, 4);
+INSERT INTO `storage_rack` VALUES (227, 78, 1, NULL, NULL, NULL, 2, 4);
+INSERT INTO `storage_rack` VALUES (228, 79, 1, NULL, NULL, NULL, 1, 4);
+INSERT INTO `storage_rack` VALUES (229, 79, 1, NULL, NULL, NULL, 2, 4);
+INSERT INTO `storage_rack` VALUES (230, 80, 1, NULL, NULL, NULL, 1, 4);
+INSERT INTO `storage_rack` VALUES (231, 80, 1, NULL, NULL, NULL, 2, 4);
+INSERT INTO `storage_rack` VALUES (232, 81, 1, NULL, NULL, NULL, 1, 4);
+INSERT INTO `storage_rack` VALUES (233, 81, 1, NULL, NULL, NULL, 2, 4);
+INSERT INTO `storage_rack` VALUES (234, 82, 1, NULL, NULL, NULL, 1, 4);
+INSERT INTO `storage_rack` VALUES (235, 82, 1, NULL, NULL, NULL, 2, 4);
+INSERT INTO `storage_rack` VALUES (236, 83, 1, NULL, NULL, NULL, 1, 4);
+INSERT INTO `storage_rack` VALUES (237, 83, 1, NULL, NULL, NULL, 2, 4);
+INSERT INTO `storage_rack` VALUES (238, 84, 1, NULL, NULL, NULL, 1, 4);
+INSERT INTO `storage_rack` VALUES (239, 84, 1, NULL, NULL, NULL, 2, 4);
+INSERT INTO `storage_rack` VALUES (240, 85, 1, NULL, NULL, NULL, 1, 5);
+INSERT INTO `storage_rack` VALUES (241, 85, 1, NULL, NULL, NULL, 2, 5);
+INSERT INTO `storage_rack` VALUES (242, 86, 1, NULL, NULL, NULL, 1, 5);
+INSERT INTO `storage_rack` VALUES (243, 86, 1, NULL, NULL, NULL, 2, 5);
+INSERT INTO `storage_rack` VALUES (244, 87, 1, NULL, NULL, NULL, 1, 5);
+INSERT INTO `storage_rack` VALUES (245, 87, 1, NULL, NULL, NULL, 2, 5);
+INSERT INTO `storage_rack` VALUES (246, 88, 1, NULL, NULL, NULL, 1, 5);
+INSERT INTO `storage_rack` VALUES (247, 88, 1, NULL, NULL, NULL, 2, 5);
+INSERT INTO `storage_rack` VALUES (248, 89, 1, NULL, NULL, NULL, 1, 5);
+INSERT INTO `storage_rack` VALUES (249, 89, 1, NULL, NULL, NULL, 2, 5);
+INSERT INTO `storage_rack` VALUES (250, 90, 1, NULL, NULL, NULL, 1, 5);
+INSERT INTO `storage_rack` VALUES (251, 90, 1, NULL, NULL, NULL, 2, 5);
+INSERT INTO `storage_rack` VALUES (252, 91, 1, NULL, NULL, NULL, 1, 5);
+INSERT INTO `storage_rack` VALUES (253, 91, 1, NULL, NULL, NULL, 2, 5);
+INSERT INTO `storage_rack` VALUES (254, 92, 1, NULL, NULL, NULL, 1, 5);
+INSERT INTO `storage_rack` VALUES (255, 92, 1, NULL, NULL, NULL, 2, 5);
+INSERT INTO `storage_rack` VALUES (256, 93, 1, NULL, NULL, NULL, 1, 5);
+INSERT INTO `storage_rack` VALUES (257, 93, 1, NULL, NULL, NULL, 2, 5);
+INSERT INTO `storage_rack` VALUES (258, 94, 1, NULL, NULL, NULL, 1, 5);
+INSERT INTO `storage_rack` VALUES (259, 94, 1, NULL, NULL, NULL, 2, 5);
+INSERT INTO `storage_rack` VALUES (260, 95, 1, NULL, NULL, NULL, 1, 5);
+INSERT INTO `storage_rack` VALUES (261, 95, 1, NULL, NULL, NULL, 2, 5);
+INSERT INTO `storage_rack` VALUES (262, 96, 1, NULL, NULL, NULL, 1, 5);
+INSERT INTO `storage_rack` VALUES (263, 96, 1, NULL, NULL, NULL, 2, 5);
+INSERT INTO `storage_rack` VALUES (264, 97, 1, NULL, NULL, NULL, 1, 5);
+INSERT INTO `storage_rack` VALUES (265, 97, 1, NULL, NULL, NULL, 2, 5);
+INSERT INTO `storage_rack` VALUES (266, 98, 1, NULL, NULL, NULL, 1, 5);
+INSERT INTO `storage_rack` VALUES (267, 98, 1, NULL, NULL, NULL, 2, 5);
+INSERT INTO `storage_rack` VALUES (268, 99, 1, NULL, NULL, NULL, 1, 5);
+INSERT INTO `storage_rack` VALUES (269, 99, 1, NULL, NULL, NULL, 2, 5);
+INSERT INTO `storage_rack` VALUES (270, 100, 1, NULL, NULL, NULL, 1, 5);
+INSERT INTO `storage_rack` VALUES (271, 100, 1, NULL, NULL, NULL, 2, 5);
+INSERT INTO `storage_rack` VALUES (272, 101, 1, NULL, NULL, NULL, 1, 5);
+INSERT INTO `storage_rack` VALUES (273, 101, 1, NULL, NULL, NULL, 2, 5);
+INSERT INTO `storage_rack` VALUES (274, 102, 1, NULL, NULL, NULL, 1, 5);
+INSERT INTO `storage_rack` VALUES (275, 102, 1, NULL, NULL, NULL, 2, 5);
+INSERT INTO `storage_rack` VALUES (276, 103, 1, NULL, NULL, NULL, 1, 5);
+INSERT INTO `storage_rack` VALUES (277, 103, 1, NULL, NULL, NULL, 2, 5);
+INSERT INTO `storage_rack` VALUES (278, 104, 1, NULL, NULL, NULL, 1, 5);
+INSERT INTO `storage_rack` VALUES (279, 104, 1, NULL, NULL, NULL, 2, 5);
+INSERT INTO `storage_rack` VALUES (280, 105, 1, NULL, NULL, NULL, 1, 5);
+INSERT INTO `storage_rack` VALUES (281, 105, 1, NULL, NULL, NULL, 2, 5);
+INSERT INTO `storage_rack` VALUES (282, 106, 1, NULL, NULL, NULL, 1, 6);
+INSERT INTO `storage_rack` VALUES (283, 106, 1, NULL, NULL, NULL, 2, 6);
+INSERT INTO `storage_rack` VALUES (284, 107, 1, NULL, NULL, NULL, 1, 6);
+INSERT INTO `storage_rack` VALUES (285, 107, 1, NULL, NULL, NULL, 2, 6);
+INSERT INTO `storage_rack` VALUES (286, 108, 1, NULL, NULL, NULL, 1, 6);
+INSERT INTO `storage_rack` VALUES (287, 108, 1, NULL, NULL, NULL, 2, 6);
+INSERT INTO `storage_rack` VALUES (288, 109, 1, NULL, NULL, NULL, 1, 6);
+INSERT INTO `storage_rack` VALUES (289, 109, 1, NULL, NULL, NULL, 2, 6);
+INSERT INTO `storage_rack` VALUES (290, 110, 1, NULL, NULL, NULL, 1, 6);
+INSERT INTO `storage_rack` VALUES (291, 110, 1, NULL, NULL, NULL, 2, 6);
+INSERT INTO `storage_rack` VALUES (292, 111, 1, NULL, NULL, NULL, 1, 6);
+INSERT INTO `storage_rack` VALUES (293, 111, 1, NULL, NULL, NULL, 2, 6);
+INSERT INTO `storage_rack` VALUES (294, 112, 1, NULL, NULL, NULL, 1, 6);
+INSERT INTO `storage_rack` VALUES (295, 112, 1, NULL, NULL, NULL, 2, 6);
+INSERT INTO `storage_rack` VALUES (296, 113, 1, NULL, NULL, NULL, 1, 6);
+INSERT INTO `storage_rack` VALUES (297, 113, 1, NULL, NULL, NULL, 2, 6);
+INSERT INTO `storage_rack` VALUES (298, 114, 1, NULL, NULL, NULL, 1, 6);
+INSERT INTO `storage_rack` VALUES (299, 114, 1, NULL, NULL, NULL, 2, 6);
+INSERT INTO `storage_rack` VALUES (300, 115, 1, NULL, NULL, NULL, 1, 6);
+INSERT INTO `storage_rack` VALUES (301, 115, 1, NULL, NULL, NULL, 2, 6);
+INSERT INTO `storage_rack` VALUES (302, 116, 1, NULL, NULL, NULL, 1, 6);
+INSERT INTO `storage_rack` VALUES (303, 116, 1, NULL, NULL, NULL, 2, 6);
+INSERT INTO `storage_rack` VALUES (304, 117, 1, NULL, NULL, NULL, 1, 6);
+INSERT INTO `storage_rack` VALUES (305, 117, 1, NULL, NULL, NULL, 2, 6);
+INSERT INTO `storage_rack` VALUES (306, 118, 1, NULL, NULL, NULL, 1, 6);
+INSERT INTO `storage_rack` VALUES (307, 118, 1, NULL, NULL, NULL, 2, 6);
+INSERT INTO `storage_rack` VALUES (308, 119, 1, NULL, NULL, NULL, 1, 6);
+INSERT INTO `storage_rack` VALUES (309, 119, 1, NULL, NULL, NULL, 2, 6);
+INSERT INTO `storage_rack` VALUES (310, 120, 1, NULL, NULL, NULL, 1, 6);
+INSERT INTO `storage_rack` VALUES (311, 120, 1, NULL, NULL, NULL, 2, 6);
+INSERT INTO `storage_rack` VALUES (312, 121, 1, NULL, NULL, NULL, 1, 6);
+INSERT INTO `storage_rack` VALUES (313, 121, 1, NULL, NULL, NULL, 2, 6);
+INSERT INTO `storage_rack` VALUES (314, 122, 1, NULL, NULL, NULL, 1, 6);
+INSERT INTO `storage_rack` VALUES (315, 122, 1, NULL, NULL, NULL, 2, 6);
+INSERT INTO `storage_rack` VALUES (316, 123, 1, NULL, NULL, NULL, 1, 6);
+INSERT INTO `storage_rack` VALUES (317, 123, 1, NULL, NULL, NULL, 2, 6);
+INSERT INTO `storage_rack` VALUES (318, 124, 1, NULL, NULL, NULL, 1, 6);
+INSERT INTO `storage_rack` VALUES (319, 124, 1, NULL, NULL, NULL, 2, 6);
+INSERT INTO `storage_rack` VALUES (320, 125, 1, NULL, NULL, NULL, 1, 6);
+INSERT INTO `storage_rack` VALUES (321, 125, 1, NULL, NULL, NULL, 2, 6);
+INSERT INTO `storage_rack` VALUES (322, 126, 1, NULL, NULL, NULL, 1, 6);
+INSERT INTO `storage_rack` VALUES (323, 126, 1, NULL, NULL, NULL, 2, 6);
+INSERT INTO `storage_rack` VALUES (324, 127, 1, NULL, NULL, NULL, 1, 7);
+INSERT INTO `storage_rack` VALUES (325, 127, 1, NULL, NULL, NULL, 2, 7);
+INSERT INTO `storage_rack` VALUES (326, 128, 1, NULL, NULL, NULL, 1, 7);
+INSERT INTO `storage_rack` VALUES (327, 128, 1, NULL, NULL, NULL, 2, 7);
+INSERT INTO `storage_rack` VALUES (328, 129, 1, NULL, NULL, NULL, 1, 7);
+INSERT INTO `storage_rack` VALUES (329, 129, 1, NULL, NULL, NULL, 2, 7);
+INSERT INTO `storage_rack` VALUES (330, 130, 1, NULL, NULL, NULL, 1, 7);
+INSERT INTO `storage_rack` VALUES (331, 130, 1, NULL, NULL, NULL, 2, 7);
+INSERT INTO `storage_rack` VALUES (332, 131, 1, NULL, NULL, NULL, 1, 7);
+INSERT INTO `storage_rack` VALUES (333, 131, 1, NULL, NULL, NULL, 2, 7);
+INSERT INTO `storage_rack` VALUES (334, 132, 1, NULL, NULL, NULL, 1, 7);
+INSERT INTO `storage_rack` VALUES (335, 132, 1, NULL, NULL, NULL, 2, 7);
+INSERT INTO `storage_rack` VALUES (336, 133, 1, NULL, NULL, NULL, 1, 7);
+INSERT INTO `storage_rack` VALUES (337, 133, 1, NULL, NULL, NULL, 2, 7);
+INSERT INTO `storage_rack` VALUES (338, 134, 1, NULL, NULL, NULL, 1, 7);
+INSERT INTO `storage_rack` VALUES (339, 134, 1, NULL, NULL, NULL, 2, 7);
+INSERT INTO `storage_rack` VALUES (340, 135, 1, NULL, NULL, NULL, 1, 7);
+INSERT INTO `storage_rack` VALUES (341, 135, 1, NULL, NULL, NULL, 2, 7);
+INSERT INTO `storage_rack` VALUES (342, 136, 1, NULL, NULL, NULL, 1, 7);
+INSERT INTO `storage_rack` VALUES (343, 136, 1, NULL, NULL, NULL, 2, 7);
+INSERT INTO `storage_rack` VALUES (344, 137, 1, NULL, NULL, NULL, 1, 7);
+INSERT INTO `storage_rack` VALUES (345, 137, 1, NULL, NULL, NULL, 2, 7);
+INSERT INTO `storage_rack` VALUES (346, 138, 1, NULL, NULL, NULL, 1, 7);
+INSERT INTO `storage_rack` VALUES (347, 138, 1, NULL, NULL, NULL, 2, 7);
+INSERT INTO `storage_rack` VALUES (348, 139, 1, NULL, NULL, NULL, 1, 7);
+INSERT INTO `storage_rack` VALUES (349, 139, 1, NULL, NULL, NULL, 2, 7);
+INSERT INTO `storage_rack` VALUES (350, 140, 1, NULL, NULL, NULL, 1, 7);
+INSERT INTO `storage_rack` VALUES (351, 140, 1, NULL, NULL, NULL, 2, 7);
+INSERT INTO `storage_rack` VALUES (352, 141, 1, NULL, NULL, NULL, 1, 7);
+INSERT INTO `storage_rack` VALUES (353, 141, 1, NULL, NULL, NULL, 2, 7);
+INSERT INTO `storage_rack` VALUES (354, 142, 1, NULL, NULL, NULL, 1, 7);
+INSERT INTO `storage_rack` VALUES (355, 142, 1, NULL, NULL, NULL, 2, 7);
+INSERT INTO `storage_rack` VALUES (356, 143, 1, NULL, NULL, NULL, 1, 7);
+INSERT INTO `storage_rack` VALUES (357, 143, 1, NULL, NULL, NULL, 2, 7);
+INSERT INTO `storage_rack` VALUES (358, 144, 1, NULL, NULL, NULL, 1, 7);
+INSERT INTO `storage_rack` VALUES (359, 144, 1, NULL, NULL, NULL, 2, 7);
+INSERT INTO `storage_rack` VALUES (360, 145, 1, NULL, NULL, NULL, 1, 7);
+INSERT INTO `storage_rack` VALUES (361, 145, 1, NULL, NULL, NULL, 2, 7);
+INSERT INTO `storage_rack` VALUES (362, 146, 1, NULL, NULL, NULL, 1, 7);
+INSERT INTO `storage_rack` VALUES (363, 146, 1, NULL, NULL, NULL, 2, 7);
+INSERT INTO `storage_rack` VALUES (364, 147, 1, NULL, NULL, NULL, 1, 7);
+INSERT INTO `storage_rack` VALUES (365, 147, 1, NULL, NULL, NULL, 2, 7);
+INSERT INTO `storage_rack` VALUES (366, 148, 1, NULL, NULL, NULL, 1, 8);
+INSERT INTO `storage_rack` VALUES (367, 148, 1, NULL, NULL, NULL, 2, 8);
+INSERT INTO `storage_rack` VALUES (368, 149, 1, NULL, NULL, NULL, 1, 8);
+INSERT INTO `storage_rack` VALUES (369, 149, 1, NULL, NULL, NULL, 2, 8);
+INSERT INTO `storage_rack` VALUES (370, 150, 1, NULL, NULL, NULL, 1, 8);
+INSERT INTO `storage_rack` VALUES (371, 150, 1, NULL, NULL, NULL, 2, 8);
+INSERT INTO `storage_rack` VALUES (372, 151, 1, NULL, NULL, NULL, 1, 8);
+INSERT INTO `storage_rack` VALUES (373, 151, 1, NULL, NULL, NULL, 2, 8);
+INSERT INTO `storage_rack` VALUES (374, 152, 1, NULL, NULL, NULL, 1, 8);
+INSERT INTO `storage_rack` VALUES (375, 152, 1, NULL, NULL, NULL, 2, 8);
+INSERT INTO `storage_rack` VALUES (376, 153, 1, NULL, NULL, NULL, 1, 8);
+INSERT INTO `storage_rack` VALUES (377, 153, 1, NULL, NULL, NULL, 2, 8);
+INSERT INTO `storage_rack` VALUES (378, 154, 1, NULL, NULL, NULL, 1, 8);
+INSERT INTO `storage_rack` VALUES (379, 154, 1, NULL, NULL, NULL, 2, 8);
+INSERT INTO `storage_rack` VALUES (380, 155, 1, NULL, NULL, NULL, 1, 8);
+INSERT INTO `storage_rack` VALUES (381, 155, 1, NULL, NULL, NULL, 2, 8);
+INSERT INTO `storage_rack` VALUES (382, 156, 1, NULL, NULL, NULL, 1, 8);
+INSERT INTO `storage_rack` VALUES (383, 156, 1, NULL, NULL, NULL, 2, 8);
+INSERT INTO `storage_rack` VALUES (384, 157, 1, NULL, NULL, NULL, 1, 8);
+INSERT INTO `storage_rack` VALUES (385, 157, 1, NULL, NULL, NULL, 2, 8);
+INSERT INTO `storage_rack` VALUES (386, 158, 1, NULL, NULL, NULL, 1, 8);
+INSERT INTO `storage_rack` VALUES (387, 158, 1, NULL, NULL, NULL, 2, 8);
+INSERT INTO `storage_rack` VALUES (388, 159, 1, NULL, NULL, NULL, 1, 8);
+INSERT INTO `storage_rack` VALUES (389, 159, 1, NULL, NULL, NULL, 2, 8);
+INSERT INTO `storage_rack` VALUES (390, 160, 1, NULL, NULL, NULL, 1, 8);
+INSERT INTO `storage_rack` VALUES (391, 160, 1, NULL, NULL, NULL, 2, 8);
+INSERT INTO `storage_rack` VALUES (392, 161, 1, NULL, NULL, NULL, 1, 8);
+INSERT INTO `storage_rack` VALUES (393, 161, 1, NULL, NULL, NULL, 2, 8);
+INSERT INTO `storage_rack` VALUES (394, 162, 1, NULL, NULL, NULL, 1, 8);
+INSERT INTO `storage_rack` VALUES (395, 162, 1, NULL, NULL, NULL, 2, 8);
+INSERT INTO `storage_rack` VALUES (396, 163, 1, NULL, NULL, NULL, 1, 8);
+INSERT INTO `storage_rack` VALUES (397, 163, 1, NULL, NULL, NULL, 2, 8);
+INSERT INTO `storage_rack` VALUES (398, 164, 1, NULL, NULL, NULL, 1, 8);
+INSERT INTO `storage_rack` VALUES (399, 164, 1, NULL, NULL, NULL, 2, 8);
+INSERT INTO `storage_rack` VALUES (400, 165, 1, NULL, NULL, NULL, 1, 8);
+INSERT INTO `storage_rack` VALUES (401, 165, 1, NULL, NULL, NULL, 2, 8);
+INSERT INTO `storage_rack` VALUES (402, 166, 1, NULL, NULL, NULL, 1, 8);
+INSERT INTO `storage_rack` VALUES (403, 166, 1, NULL, NULL, NULL, 2, 8);
+INSERT INTO `storage_rack` VALUES (404, 167, 1, NULL, NULL, NULL, 1, 8);
+INSERT INTO `storage_rack` VALUES (405, 167, 1, NULL, NULL, NULL, 2, 8);
+INSERT INTO `storage_rack` VALUES (406, 168, 1, NULL, NULL, NULL, 1, 8);
+INSERT INTO `storage_rack` VALUES (407, 168, 1, NULL, NULL, NULL, 2, 8);
+INSERT INTO `storage_rack` VALUES (408, 169, 1, NULL, NULL, NULL, 1, 9);
+INSERT INTO `storage_rack` VALUES (409, 169, 1, NULL, NULL, NULL, 2, 9);
+INSERT INTO `storage_rack` VALUES (410, 170, 1, NULL, NULL, NULL, 1, 9);
+INSERT INTO `storage_rack` VALUES (411, 170, 1, NULL, NULL, NULL, 2, 9);
+INSERT INTO `storage_rack` VALUES (412, 171, 1, NULL, NULL, NULL, 1, 9);
+INSERT INTO `storage_rack` VALUES (413, 171, 1, NULL, NULL, NULL, 2, 9);
+INSERT INTO `storage_rack` VALUES (414, 172, 1, NULL, NULL, NULL, 1, 9);
+INSERT INTO `storage_rack` VALUES (415, 172, 1, NULL, NULL, NULL, 2, 9);
+INSERT INTO `storage_rack` VALUES (416, 173, 1, NULL, NULL, NULL, 1, 9);
+INSERT INTO `storage_rack` VALUES (417, 173, 1, NULL, NULL, NULL, 2, 9);
+INSERT INTO `storage_rack` VALUES (418, 174, 1, NULL, NULL, NULL, 1, 9);
+INSERT INTO `storage_rack` VALUES (419, 174, 1, NULL, NULL, NULL, 2, 9);
+INSERT INTO `storage_rack` VALUES (420, 175, 1, NULL, NULL, NULL, 1, 9);
+INSERT INTO `storage_rack` VALUES (421, 175, 1, NULL, NULL, NULL, 2, 9);
+INSERT INTO `storage_rack` VALUES (422, 176, 1, NULL, NULL, NULL, 1, 9);
+INSERT INTO `storage_rack` VALUES (423, 176, 1, NULL, NULL, NULL, 2, 9);
+INSERT INTO `storage_rack` VALUES (424, 177, 1, NULL, NULL, NULL, 1, 9);
+INSERT INTO `storage_rack` VALUES (425, 177, 1, NULL, NULL, NULL, 2, 9);
+INSERT INTO `storage_rack` VALUES (426, 178, 1, NULL, NULL, NULL, 1, 9);
+INSERT INTO `storage_rack` VALUES (427, 178, 1, NULL, NULL, NULL, 2, 9);
+INSERT INTO `storage_rack` VALUES (428, 179, 1, NULL, NULL, NULL, 1, 9);
+INSERT INTO `storage_rack` VALUES (429, 179, 1, NULL, NULL, NULL, 2, 9);
+INSERT INTO `storage_rack` VALUES (430, 180, 1, NULL, NULL, NULL, 1, 9);
+INSERT INTO `storage_rack` VALUES (431, 180, 1, NULL, NULL, NULL, 2, 9);
+INSERT INTO `storage_rack` VALUES (432, 181, 1, NULL, NULL, NULL, 1, 9);
+INSERT INTO `storage_rack` VALUES (433, 181, 1, NULL, NULL, NULL, 2, 9);
+INSERT INTO `storage_rack` VALUES (434, 182, 1, NULL, NULL, NULL, 1, 9);
+INSERT INTO `storage_rack` VALUES (435, 182, 1, NULL, NULL, NULL, 2, 9);
+INSERT INTO `storage_rack` VALUES (436, 183, 1, NULL, NULL, NULL, 1, 9);
+INSERT INTO `storage_rack` VALUES (437, 183, 1, NULL, NULL, NULL, 2, 9);
+INSERT INTO `storage_rack` VALUES (438, 184, 1, NULL, NULL, NULL, 1, 9);
+INSERT INTO `storage_rack` VALUES (439, 184, 1, NULL, NULL, NULL, 2, 9);
+INSERT INTO `storage_rack` VALUES (440, 185, 1, NULL, NULL, NULL, 1, 9);
+INSERT INTO `storage_rack` VALUES (441, 185, 1, NULL, NULL, NULL, 2, 9);
+INSERT INTO `storage_rack` VALUES (442, 186, 1, NULL, NULL, NULL, 1, 9);
+INSERT INTO `storage_rack` VALUES (443, 186, 1, NULL, NULL, NULL, 2, 9);
+INSERT INTO `storage_rack` VALUES (444, 187, 1, NULL, NULL, NULL, 1, 9);
+INSERT INTO `storage_rack` VALUES (445, 187, 1, NULL, NULL, NULL, 2, 9);
+INSERT INTO `storage_rack` VALUES (446, 188, 1, NULL, NULL, NULL, 1, 9);
+INSERT INTO `storage_rack` VALUES (447, 188, 1, NULL, NULL, NULL, 2, 9);
+INSERT INTO `storage_rack` VALUES (448, 189, 1, NULL, NULL, NULL, 1, 9);
+INSERT INTO `storage_rack` VALUES (449, 189, 1, NULL, NULL, NULL, 2, 9);
+INSERT INTO `storage_rack` VALUES (450, 190, 1, NULL, NULL, NULL, 1, 10);
+INSERT INTO `storage_rack` VALUES (451, 190, 1, NULL, NULL, NULL, 2, 10);
+INSERT INTO `storage_rack` VALUES (452, 191, 1, NULL, NULL, NULL, 1, 10);
+INSERT INTO `storage_rack` VALUES (453, 191, 1, NULL, NULL, NULL, 2, 10);
+INSERT INTO `storage_rack` VALUES (454, 192, 1, NULL, NULL, NULL, 1, 10);
+INSERT INTO `storage_rack` VALUES (455, 192, 1, NULL, NULL, NULL, 2, 10);
+INSERT INTO `storage_rack` VALUES (456, 193, 1, NULL, NULL, NULL, 1, 10);
+INSERT INTO `storage_rack` VALUES (457, 193, 1, NULL, NULL, NULL, 2, 10);
+INSERT INTO `storage_rack` VALUES (458, 194, 1, NULL, NULL, NULL, 1, 10);
+INSERT INTO `storage_rack` VALUES (459, 194, 1, NULL, NULL, NULL, 2, 10);
+INSERT INTO `storage_rack` VALUES (460, 195, 1, NULL, NULL, NULL, 1, 10);
+INSERT INTO `storage_rack` VALUES (461, 195, 1, NULL, NULL, NULL, 2, 10);
+INSERT INTO `storage_rack` VALUES (462, 196, 1, NULL, NULL, NULL, 1, 10);
+INSERT INTO `storage_rack` VALUES (463, 196, 1, NULL, NULL, NULL, 2, 10);
+INSERT INTO `storage_rack` VALUES (464, 197, 1, NULL, NULL, NULL, 1, 10);
+INSERT INTO `storage_rack` VALUES (465, 197, 1, NULL, NULL, NULL, 2, 10);
+INSERT INTO `storage_rack` VALUES (466, 198, 1, NULL, NULL, NULL, 1, 10);
+INSERT INTO `storage_rack` VALUES (467, 198, 1, NULL, NULL, NULL, 2, 10);
+INSERT INTO `storage_rack` VALUES (468, 199, 1, NULL, NULL, NULL, 1, 10);
+INSERT INTO `storage_rack` VALUES (469, 199, 1, NULL, NULL, NULL, 2, 10);
+INSERT INTO `storage_rack` VALUES (470, 200, 1, NULL, NULL, NULL, 1, 10);
+INSERT INTO `storage_rack` VALUES (471, 200, 1, NULL, NULL, NULL, 2, 10);
+INSERT INTO `storage_rack` VALUES (472, 201, 1, NULL, NULL, NULL, 1, 10);
+INSERT INTO `storage_rack` VALUES (473, 201, 1, NULL, NULL, NULL, 2, 10);
+INSERT INTO `storage_rack` VALUES (474, 202, 1, NULL, NULL, NULL, 1, 10);
+INSERT INTO `storage_rack` VALUES (475, 202, 1, NULL, NULL, NULL, 2, 10);
+INSERT INTO `storage_rack` VALUES (476, 203, 1, NULL, NULL, NULL, 1, 10);
+INSERT INTO `storage_rack` VALUES (477, 203, 1, NULL, NULL, NULL, 2, 10);
+INSERT INTO `storage_rack` VALUES (478, 204, 1, NULL, NULL, NULL, 1, 10);
+INSERT INTO `storage_rack` VALUES (479, 204, 1, NULL, NULL, NULL, 2, 10);
+INSERT INTO `storage_rack` VALUES (480, 205, 1, NULL, NULL, NULL, 1, 10);
+INSERT INTO `storage_rack` VALUES (481, 205, 1, NULL, NULL, NULL, 2, 10);
+INSERT INTO `storage_rack` VALUES (482, 206, 1, NULL, NULL, NULL, 1, 10);
+INSERT INTO `storage_rack` VALUES (483, 206, 1, NULL, NULL, NULL, 2, 10);
+INSERT INTO `storage_rack` VALUES (484, 207, 1, NULL, NULL, NULL, 1, 10);
+INSERT INTO `storage_rack` VALUES (485, 207, 1, NULL, NULL, NULL, 2, 10);
+INSERT INTO `storage_rack` VALUES (486, 208, 1, NULL, NULL, NULL, 1, 10);
+INSERT INTO `storage_rack` VALUES (487, 208, 1, NULL, NULL, NULL, 2, 10);
+INSERT INTO `storage_rack` VALUES (488, 209, 1, NULL, NULL, NULL, 1, 10);
+INSERT INTO `storage_rack` VALUES (489, 209, 1, NULL, NULL, NULL, 2, 10);
+INSERT INTO `storage_rack` VALUES (490, 210, 1, NULL, NULL, NULL, 1, 10);
+INSERT INTO `storage_rack` VALUES (491, 210, 1, NULL, NULL, NULL, 2, 10);
+
+-- ----------------------------
+-- Table structure for storage_task
+-- ----------------------------
+DROP TABLE IF EXISTS `storage_task`;
+CREATE TABLE `storage_task`  (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '搴忓彿',
+  `task_type` int NULL DEFAULT NULL COMMENT '浠诲姟绫诲瀷锛�0锛氳繘鐗囷紝1锛氬嚭鐗囷紝2锛氳皟搴︼級',
+  `task_state` int NULL DEFAULT NULL COMMENT '浠诲姟鐘舵�侊紙0锛氭湭瀹屾垚锛�1锛氬畬鎴愶級',
+  `shelf_rack` int NULL DEFAULT NULL COMMENT '寮�濮嬩綅缃�',
+  `load_rack` int NULL DEFAULT NULL COMMENT '缁撴潫浣嶇疆',
+  `start_time` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '浠诲姟寮�濮嬫椂闂�',
+  `finsh_time` datetime(0) NULL DEFAULT NULL COMMENT '浠诲姟缁撴潫鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of storage_task
+-- ----------------------------
+INSERT INTO `storage_task` VALUES (1, 0, 1, 6, 105, '2023-09-07 10:11:47', '2023-08-29 00:00:00');
+INSERT INTO `storage_task` VALUES (2, 1, 1, 7, 99, '2023-09-07 16:53:35', '2023-08-29 00:00:00');
+INSERT INTO `storage_task` VALUES (3, 2, 0, 26, 105, '2023-09-05 16:24:30', '2023-08-29 00:00:00');
+
+-- ----------------------------
+-- Table structure for user
+-- ----------------------------
+DROP TABLE IF EXISTS `user`;
+CREATE TABLE `user`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+  `parent_id` bigint NOT NULL DEFAULT 1 COMMENT '涓婄骇id',
+  `path` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '1-' COMMENT '璺緞',
+  `level` int NOT NULL DEFAULT 1 COMMENT '绛夌骇',
+  `role_id` bigint NOT NULL DEFAULT 2 COMMENT '瑙掕壊id',
+  `username` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '鐢ㄦ埛鍚�',
+  `password` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '瀵嗙爜',
+  `email` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '閭',
+  `qq` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'qq鍙�',
+  `phone` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '鑱旂郴鏂瑰紡',
+  `state` tinyint(1) NOT NULL DEFAULT 1 COMMENT '鐘舵�侊細0/绂佹 1/姝e父',
+  `create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '鍒涘缓鏃堕棿',
+  `update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '鏇存柊鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 23 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of user
+-- ----------------------------
+INSERT INTO `user` VALUES (1, 0, '', 0, 1, 'admin', 'b2f0c414a5ffb6944c424bc18ae3a8a0', NULL, NULL, NULL, 1, '2023-08-25 08:58:58', '2023-09-05 16:12:28');
+INSERT INTO `user` VALUES (2, 1, '1-', 1, 2, 'user1', '601b99523f82de29f87771d5f95accdc', 'user1@qq.com', NULL, NULL, 1, '2021-11-28 14:31:39', '2021-11-28 15:09:36');
+INSERT INTO `user` VALUES (3, 1, '1-', 1, 2, 'user2', 'f403c87893db29eb71b21905b57bbd0d', 'user2@qq.com', NULL, NULL, 1, '2021-11-28 14:31:39', '2021-11-28 15:09:36');
+INSERT INTO `user` VALUES (10, 1, '1-', 1, 2, '767655555', '500637c0d48b442a3be6d4fce12e0910', NULL, NULL, NULL, 1, '2023-08-23 20:42:58', '2023-08-23 20:42:58');
+INSERT INTO `user` VALUES (11, 1, '1-', 1, 5, 'uiuyiuy', 'e046c4175152aa3001d2c71c5bc1aee5', '767676767tt@qq.com', NULL, NULL, 1, '2023-08-23 20:43:42', '2023-08-23 20:43:42');
+INSERT INTO `user` VALUES (13, 1, '1-', 1, 2, 'user3', 'b2f0c414a5ffb6944c424bc18ae3a8a0', '2265557345@qq.com', NULL, NULL, 1, '2023-08-24 09:58:40', '2023-08-24 09:58:40');
+INSERT INTO `user` VALUES (15, 1, '1-', 1, 2, '99999', 'b2f0c414a5ffb6944c424bc18ae3a8a0', '2267666@qq.com', NULL, NULL, 1, '2023-08-25 09:37:05', '2023-08-28 14:37:27');
+INSERT INTO `user` VALUES (16, 1, '1-', 1, 2, '5656tttt', 'b2f0c414a5ffb6944c424bc18ae3a8a0', '5454@qq.com', NULL, NULL, 1, '2023-08-28 14:17:44', '2023-08-28 14:37:24');
+INSERT INTO `user` VALUES (18, 1, '1-', 1, 2, '8989ttt', 'b2f0c414a5ffb6944c424bc18ae3a8a0', '224@qq.com', NULL, NULL, 1, '2023-08-28 14:26:17', '2023-08-28 14:37:22');
+INSERT INTO `user` VALUES (19, 1, '1-', 1, 5, '8080ttt', 'b2f0c414a5ffb6944c424bc18ae3a8a0', '87@qq.com', NULL, NULL, 1, '2023-08-28 14:34:39', '2023-08-29 16:03:38');
+
+-- ----------------------------
+-- Procedure structure for Your_Stored_Procedure
+-- ----------------------------
+DROP PROCEDURE IF EXISTS `Your_Stored_Procedure`;
+delimiter ;;
+CREATE PROCEDURE `Your_Stored_Procedure`(in  id VARCHAR(20)  ,in   name VARCHAR(20))
+BEGIN
+select * from device;
+END
+;;
+delimiter ;
+
+SET FOREIGN_KEY_CHECKS = 1;

--
Gitblit v1.8.0