From cc1782678a471c4e596fcc2bb5a5b3cb88b7822a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=AE=87=E8=B1=AA?= <13853793603@163.com> Date: Sun, 29 Dec 2024 13:52:28 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E4=BB=A3=E7=A0=81=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 9 + device/.idea/.gitignore | 8 + device/.idea/compiler.xml | 19 + device/.idea/encodings.xml | 6 + device/.idea/jarRepositories.xml | 20 + device/.idea/misc.xml | 14 + device/.idea/uiDesigner.xml | 124 + device/.idea/vcs.xml | 6 + device/pom.xml | 72 + device/src/main/java/com/CodeGenerator.java | 102 + .../src/main/java/com/DeviceApplication.java | 14 + .../java/com/commons/MyBatisPlusConfig.java | 18 + device/src/main/java/com/commons/Result.java | 32 + .../java/com/controller/DeviceController.java | 60 + .../controller/DevicecategoryController.java | 46 + .../com/controller/LocationController.java | 39 + .../MaintenancerecordController.java | 43 + .../controller/OperationlogController.java | 43 + .../java/com/controller/RoleController.java | 21 + .../com/controller/ScraprecordController.java | 43 + .../com/controller/SupplierController.java | 43 + .../com/controller/UsagerecordController.java | 55 + .../java/com/controller/UserController.java | 73 + .../controller/from/findDevicePageFrom.java | 15 + device/src/main/java/com/entity/Device.java | 51 + .../main/java/com/entity/Devicecategory.java | 35 + device/src/main/java/com/entity/Location.java | 38 + .../java/com/entity/Maintenancerecord.java | 55 + .../main/java/com/entity/Operationlog.java | 43 + device/src/main/java/com/entity/Role.java | 38 + .../src/main/java/com/entity/Scraprecord.java | 45 + device/src/main/java/com/entity/Supplier.java | 44 + .../src/main/java/com/entity/Usagerecord.java | 52 + device/src/main/java/com/entity/User.java | 41 + .../main/java/com/mapper/DeviceMapper.java | 18 + .../java/com/mapper/DevicecategoryMapper.java | 18 + .../main/java/com/mapper/LocationMapper.java | 18 + .../com/mapper/MaintenancerecordMapper.java | 18 + .../java/com/mapper/OperationlogMapper.java | 18 + .../src/main/java/com/mapper/RoleMapper.java | 18 + .../java/com/mapper/ScraprecordMapper.java | 18 + .../main/java/com/mapper/SupplierMapper.java | 18 + .../java/com/mapper/UsagerecordMapper.java | 18 + .../src/main/java/com/mapper/UserMapper.java | 18 + .../main/java/com/service/DeviceService.java | 26 + .../com/service/DevicecategoryService.java | 16 + .../java/com/service/LocationService.java | 16 + .../com/service/MaintenancerecordService.java | 16 + .../java/com/service/OperationlogService.java | 16 + .../main/java/com/service/RoleService.java | 16 + .../java/com/service/ScraprecordService.java | 16 + .../java/com/service/SupplierService.java | 16 + .../java/com/service/UsagerecordService.java | 16 + .../main/java/com/service/UserService.java | 16 + .../java/com/service/dto/devicePageDto.java | 11 + .../com/service/impl/DeviceServiceImpl.java | 119 + .../impl/DevicecategoryServiceImpl.java | 20 + .../com/service/impl/LocationServiceImpl.java | 20 + .../impl/MaintenancerecordServiceImpl.java | 20 + .../service/impl/OperationlogServiceImpl.java | 20 + .../com/service/impl/RoleServiceImpl.java | 20 + .../service/impl/ScraprecordServiceImpl.java | 20 + .../com/service/impl/SupplierServiceImpl.java | 20 + .../service/impl/UsagerecordServiceImpl.java | 20 + .../com/service/impl/UserServiceImpl.java | 20 + device/src/main/resources/application.yml | 14 + .../resources/mapper/DevicecategoryMapper.xml | 16 + .../main/resources/mapper/LocationMapper.xml | 17 + .../mapper/MaintenancerecordMapper.xml | 22 + .../resources/mapper/OperationlogMapper.xml | 18 + .../src/main/resources/mapper/RoleMapper.xml | 17 + .../resources/mapper/ScraprecordMapper.xml | 19 + .../main/resources/mapper/SupplierMapper.xml | 19 + .../resources/mapper/UsagerecordMapper.xml | 21 + .../src/main/resources/mapper/UserMapper.xml | 18 + .../src/main/resources/static/css/landc.css | 83 + device/src/main/resources/static/device.html | 293 + device/src/main/resources/static/index.html | 82 + .../src/main/resources/static/js/axios.min.js | 3 + .../src/main/resources/static/js/element.js | 1 + .../main/resources/static/js/jquery-1.12.4.js | 11008 ++++++++++++++ device/src/main/resources/static/js/land.js | 23 + device/src/main/resources/static/js/vue.js | 11965 ++++++++++++++++ device/src/main/resources/static/land.html | 92 + .../resources/static/maintenancerecord.html | 115 + .../main/resources/static/operationlog.html | 100 + .../main/resources/static/scraprecord.html | 100 + .../src/main/resources/static/supplier.html | 105 + .../main/resources/static/usagerecord.html | 105 + device/target/classes/application.yml | 14 + .../classes/com/DeviceApplication.class | Bin 0 -> 791 bytes .../com/commons/MyBatisPlusConfig.class | Bin 0 -> 1170 bytes .../target/classes/com/commons/Result.class | Bin 0 -> 3920 bytes .../com/controller/DeviceController.class | Bin 0 -> 2784 bytes .../controller/DevicecategoryController.class | Bin 0 -> 1501 bytes .../com/controller/LocationController.class | Bin 0 -> 1434 bytes .../MaintenancerecordController.class | Bin 0 -> 2409 bytes .../controller/OperationlogController.class | Bin 0 -> 2383 bytes .../com/controller/RoleController.class | Bin 0 -> 483 bytes .../controller/ScraprecordController.class | Bin 0 -> 2361 bytes .../com/controller/SupplierController.class | Bin 0 -> 2337 bytes .../controller/UsagerecordController.class | Bin 0 -> 3076 bytes .../com/controller/UserController.class | Bin 0 -> 3328 bytes .../controller/from/findDevicePageFrom.class | Bin 0 -> 3447 bytes device/target/classes/com/entity/Device.class | Bin 0 -> 2547 bytes .../classes/com/entity/Devicecategory.class | Bin 0 -> 1362 bytes .../target/classes/com/entity/Location.class | Bin 0 -> 1600 bytes .../com/entity/Maintenancerecord.class | Bin 0 -> 3147 bytes .../classes/com/entity/Operationlog.class | Bin 0 -> 1963 bytes device/target/classes/com/entity/Role.class | Bin 0 -> 1552 bytes .../classes/com/entity/Scraprecord.class | Bin 0 -> 2146 bytes .../target/classes/com/entity/Supplier.class | Bin 0 -> 2048 bytes .../classes/com/entity/Usagerecord.class | Bin 0 -> 2674 bytes device/target/classes/com/entity/User.class | Bin 0 -> 1714 bytes .../classes/com/mapper/DeviceMapper.class | Bin 0 -> 363 bytes .../com/mapper/DevicecategoryMapper.class | Bin 0 -> 387 bytes .../classes/com/mapper/LocationMapper.class | Bin 0 -> 369 bytes .../com/mapper/MaintenancerecordMapper.class | Bin 0 -> 396 bytes .../com/mapper/OperationlogMapper.class | Bin 0 -> 381 bytes .../classes/com/mapper/RoleMapper.class | Bin 0 -> 357 bytes .../com/mapper/ScraprecordMapper.class | Bin 0 -> 378 bytes .../classes/com/mapper/SupplierMapper.class | Bin 0 -> 369 bytes .../com/mapper/UsagerecordMapper.class | Bin 0 -> 378 bytes .../classes/com/mapper/UserMapper.class | Bin 0 -> 357 bytes .../classes/com/service/DeviceService.class | Bin 0 -> 723 bytes .../com/service/DevicecategoryService.class | Bin 0 -> 317 bytes .../classes/com/service/LocationService.class | Bin 0 -> 299 bytes .../service/MaintenancerecordService.class | Bin 0 -> 326 bytes .../com/service/OperationlogService.class | Bin 0 -> 311 bytes .../classes/com/service/RoleService.class | Bin 0 -> 287 bytes .../com/service/ScraprecordService.class | Bin 0 -> 308 bytes .../classes/com/service/SupplierService.class | Bin 0 -> 299 bytes .../com/service/UsagerecordService.class | Bin 0 -> 308 bytes .../classes/com/service/UserService.class | Bin 0 -> 287 bytes .../com/service/dto/devicePageDto.class | Bin 0 -> 1935 bytes .../com/service/impl/DeviceServiceImpl.class | Bin 0 -> 7508 bytes .../impl/DevicecategoryServiceImpl.class | Bin 0 -> 682 bytes .../service/impl/LocationServiceImpl.class | Bin 0 -> 640 bytes .../impl/MaintenancerecordServiceImpl.class | Bin 0 -> 703 bytes .../impl/OperationlogServiceImpl.class | Bin 0 -> 668 bytes .../com/service/impl/RoleServiceImpl.class | Bin 0 -> 612 bytes .../service/impl/ScraprecordServiceImpl.class | Bin 0 -> 661 bytes .../service/impl/SupplierServiceImpl.class | Bin 0 -> 640 bytes .../service/impl/UsagerecordServiceImpl.class | Bin 0 -> 661 bytes .../com/service/impl/UserServiceImpl.class | Bin 0 -> 612 bytes .../classes/mapper/DevicecategoryMapper.xml | 16 + .../target/classes/mapper/LocationMapper.xml | 17 + .../mapper/MaintenancerecordMapper.xml | 22 + .../classes/mapper/OperationlogMapper.xml | 18 + device/target/classes/mapper/RoleMapper.xml | 17 + .../classes/mapper/ScraprecordMapper.xml | 19 + .../target/classes/mapper/SupplierMapper.xml | 19 + .../classes/mapper/UsagerecordMapper.xml | 21 + device/target/classes/mapper/UserMapper.xml | 18 + device/target/classes/static/css/landc.css | 83 + device/target/classes/static/device.html | 293 + device/target/classes/static/index.html | 82 + device/target/classes/static/js/axios.min.js | 3 + device/target/classes/static/js/element.js | 1 + .../target/classes/static/js/jquery-1.12.4.js | 11008 ++++++++++++++ device/target/classes/static/js/land.js | 23 + device/target/classes/static/js/vue.js | 11965 ++++++++++++++++ device/target/classes/static/land.html | 92 + .../classes/static/maintenancerecord.html | 115 + .../target/classes/static/operationlog.html | 100 + device/target/classes/static/scraprecord.html | 100 + device/target/classes/static/supplier.html | 105 + device/target/classes/static/usagerecord.html | 105 + .../compile/default-compile/createdFiles.lst | 0 .../compile/default-compile/inputFiles.lst | 56 + .../default-testCompile/createdFiles.lst | 0 .../default-testCompile/inputFiles.lst | 0 数据库脚本/a.sql | 324 + 数据库脚本/其他脚本.txt | 611 + 数据库脚本/数据初始化脚本.txt | 103 + 数据库脚本/数据库创建脚本.txt | 92 + 176 files changed, 51725 insertions(+) create mode 100644 device/.idea/.gitignore create mode 100644 device/.idea/compiler.xml create mode 100644 device/.idea/encodings.xml create mode 100644 device/.idea/jarRepositories.xml create mode 100644 device/.idea/misc.xml create mode 100644 device/.idea/uiDesigner.xml create mode 100644 device/.idea/vcs.xml create mode 100644 device/pom.xml create mode 100644 device/src/main/java/com/CodeGenerator.java create mode 100644 device/src/main/java/com/DeviceApplication.java create mode 100644 device/src/main/java/com/commons/MyBatisPlusConfig.java create mode 100644 device/src/main/java/com/commons/Result.java create mode 100644 device/src/main/java/com/controller/DeviceController.java create mode 100644 device/src/main/java/com/controller/DevicecategoryController.java create mode 100644 device/src/main/java/com/controller/LocationController.java create mode 100644 device/src/main/java/com/controller/MaintenancerecordController.java create mode 100644 device/src/main/java/com/controller/OperationlogController.java create mode 100644 device/src/main/java/com/controller/RoleController.java create mode 100644 device/src/main/java/com/controller/ScraprecordController.java create mode 100644 device/src/main/java/com/controller/SupplierController.java create mode 100644 device/src/main/java/com/controller/UsagerecordController.java create mode 100644 device/src/main/java/com/controller/UserController.java create mode 100644 device/src/main/java/com/controller/from/findDevicePageFrom.java create mode 100644 device/src/main/java/com/entity/Device.java create mode 100644 device/src/main/java/com/entity/Devicecategory.java create mode 100644 device/src/main/java/com/entity/Location.java create mode 100644 device/src/main/java/com/entity/Maintenancerecord.java create mode 100644 device/src/main/java/com/entity/Operationlog.java create mode 100644 device/src/main/java/com/entity/Role.java create mode 100644 device/src/main/java/com/entity/Scraprecord.java create mode 100644 device/src/main/java/com/entity/Supplier.java create mode 100644 device/src/main/java/com/entity/Usagerecord.java create mode 100644 device/src/main/java/com/entity/User.java create mode 100644 device/src/main/java/com/mapper/DeviceMapper.java create mode 100644 device/src/main/java/com/mapper/DevicecategoryMapper.java create mode 100644 device/src/main/java/com/mapper/LocationMapper.java create mode 100644 device/src/main/java/com/mapper/MaintenancerecordMapper.java create mode 100644 device/src/main/java/com/mapper/OperationlogMapper.java create mode 100644 device/src/main/java/com/mapper/RoleMapper.java create mode 100644 device/src/main/java/com/mapper/ScraprecordMapper.java create mode 100644 device/src/main/java/com/mapper/SupplierMapper.java create mode 100644 device/src/main/java/com/mapper/UsagerecordMapper.java create mode 100644 device/src/main/java/com/mapper/UserMapper.java create mode 100644 device/src/main/java/com/service/DeviceService.java create mode 100644 device/src/main/java/com/service/DevicecategoryService.java create mode 100644 device/src/main/java/com/service/LocationService.java create mode 100644 device/src/main/java/com/service/MaintenancerecordService.java create mode 100644 device/src/main/java/com/service/OperationlogService.java create mode 100644 device/src/main/java/com/service/RoleService.java create mode 100644 device/src/main/java/com/service/ScraprecordService.java create mode 100644 device/src/main/java/com/service/SupplierService.java create mode 100644 device/src/main/java/com/service/UsagerecordService.java create mode 100644 device/src/main/java/com/service/UserService.java create mode 100644 device/src/main/java/com/service/dto/devicePageDto.java create mode 100644 device/src/main/java/com/service/impl/DeviceServiceImpl.java create mode 100644 device/src/main/java/com/service/impl/DevicecategoryServiceImpl.java create mode 100644 device/src/main/java/com/service/impl/LocationServiceImpl.java create mode 100644 device/src/main/java/com/service/impl/MaintenancerecordServiceImpl.java create mode 100644 device/src/main/java/com/service/impl/OperationlogServiceImpl.java create mode 100644 device/src/main/java/com/service/impl/RoleServiceImpl.java create mode 100644 device/src/main/java/com/service/impl/ScraprecordServiceImpl.java create mode 100644 device/src/main/java/com/service/impl/SupplierServiceImpl.java create mode 100644 device/src/main/java/com/service/impl/UsagerecordServiceImpl.java create mode 100644 device/src/main/java/com/service/impl/UserServiceImpl.java create mode 100644 device/src/main/resources/application.yml create mode 100644 device/src/main/resources/mapper/DevicecategoryMapper.xml create mode 100644 device/src/main/resources/mapper/LocationMapper.xml create mode 100644 device/src/main/resources/mapper/MaintenancerecordMapper.xml create mode 100644 device/src/main/resources/mapper/OperationlogMapper.xml create mode 100644 device/src/main/resources/mapper/RoleMapper.xml create mode 100644 device/src/main/resources/mapper/ScraprecordMapper.xml create mode 100644 device/src/main/resources/mapper/SupplierMapper.xml create mode 100644 device/src/main/resources/mapper/UsagerecordMapper.xml create mode 100644 device/src/main/resources/mapper/UserMapper.xml create mode 100644 device/src/main/resources/static/css/landc.css create mode 100644 device/src/main/resources/static/device.html create mode 100644 device/src/main/resources/static/index.html create mode 100644 device/src/main/resources/static/js/axios.min.js create mode 100644 device/src/main/resources/static/js/element.js create mode 100644 device/src/main/resources/static/js/jquery-1.12.4.js create mode 100644 device/src/main/resources/static/js/land.js create mode 100644 device/src/main/resources/static/js/vue.js create mode 100644 device/src/main/resources/static/land.html create mode 100644 device/src/main/resources/static/maintenancerecord.html create mode 100644 device/src/main/resources/static/operationlog.html create mode 100644 device/src/main/resources/static/scraprecord.html create mode 100644 device/src/main/resources/static/supplier.html create mode 100644 device/src/main/resources/static/usagerecord.html create mode 100644 device/target/classes/application.yml create mode 100644 device/target/classes/com/DeviceApplication.class create mode 100644 device/target/classes/com/commons/MyBatisPlusConfig.class create mode 100644 device/target/classes/com/commons/Result.class create mode 100644 device/target/classes/com/controller/DeviceController.class create mode 100644 device/target/classes/com/controller/DevicecategoryController.class create mode 100644 device/target/classes/com/controller/LocationController.class create mode 100644 device/target/classes/com/controller/MaintenancerecordController.class create mode 100644 device/target/classes/com/controller/OperationlogController.class create mode 100644 device/target/classes/com/controller/RoleController.class create mode 100644 device/target/classes/com/controller/ScraprecordController.class create mode 100644 device/target/classes/com/controller/SupplierController.class create mode 100644 device/target/classes/com/controller/UsagerecordController.class create mode 100644 device/target/classes/com/controller/UserController.class create mode 100644 device/target/classes/com/controller/from/findDevicePageFrom.class create mode 100644 device/target/classes/com/entity/Device.class create mode 100644 device/target/classes/com/entity/Devicecategory.class create mode 100644 device/target/classes/com/entity/Location.class create mode 100644 device/target/classes/com/entity/Maintenancerecord.class create mode 100644 device/target/classes/com/entity/Operationlog.class create mode 100644 device/target/classes/com/entity/Role.class create mode 100644 device/target/classes/com/entity/Scraprecord.class create mode 100644 device/target/classes/com/entity/Supplier.class create mode 100644 device/target/classes/com/entity/Usagerecord.class create mode 100644 device/target/classes/com/entity/User.class create mode 100644 device/target/classes/com/mapper/DeviceMapper.class create mode 100644 device/target/classes/com/mapper/DevicecategoryMapper.class create mode 100644 device/target/classes/com/mapper/LocationMapper.class create mode 100644 device/target/classes/com/mapper/MaintenancerecordMapper.class create mode 100644 device/target/classes/com/mapper/OperationlogMapper.class create mode 100644 device/target/classes/com/mapper/RoleMapper.class create mode 100644 device/target/classes/com/mapper/ScraprecordMapper.class create mode 100644 device/target/classes/com/mapper/SupplierMapper.class create mode 100644 device/target/classes/com/mapper/UsagerecordMapper.class create mode 100644 device/target/classes/com/mapper/UserMapper.class create mode 100644 device/target/classes/com/service/DeviceService.class create mode 100644 device/target/classes/com/service/DevicecategoryService.class create mode 100644 device/target/classes/com/service/LocationService.class create mode 100644 device/target/classes/com/service/MaintenancerecordService.class create mode 100644 device/target/classes/com/service/OperationlogService.class create mode 100644 device/target/classes/com/service/RoleService.class create mode 100644 device/target/classes/com/service/ScraprecordService.class create mode 100644 device/target/classes/com/service/SupplierService.class create mode 100644 device/target/classes/com/service/UsagerecordService.class create mode 100644 device/target/classes/com/service/UserService.class create mode 100644 device/target/classes/com/service/dto/devicePageDto.class create mode 100644 device/target/classes/com/service/impl/DeviceServiceImpl.class create mode 100644 device/target/classes/com/service/impl/DevicecategoryServiceImpl.class create mode 100644 device/target/classes/com/service/impl/LocationServiceImpl.class create mode 100644 device/target/classes/com/service/impl/MaintenancerecordServiceImpl.class create mode 100644 device/target/classes/com/service/impl/OperationlogServiceImpl.class create mode 100644 device/target/classes/com/service/impl/RoleServiceImpl.class create mode 100644 device/target/classes/com/service/impl/ScraprecordServiceImpl.class create mode 100644 device/target/classes/com/service/impl/SupplierServiceImpl.class create mode 100644 device/target/classes/com/service/impl/UsagerecordServiceImpl.class create mode 100644 device/target/classes/com/service/impl/UserServiceImpl.class create mode 100644 device/target/classes/mapper/DevicecategoryMapper.xml create mode 100644 device/target/classes/mapper/LocationMapper.xml create mode 100644 device/target/classes/mapper/MaintenancerecordMapper.xml create mode 100644 device/target/classes/mapper/OperationlogMapper.xml create mode 100644 device/target/classes/mapper/RoleMapper.xml create mode 100644 device/target/classes/mapper/ScraprecordMapper.xml create mode 100644 device/target/classes/mapper/SupplierMapper.xml create mode 100644 device/target/classes/mapper/UsagerecordMapper.xml create mode 100644 device/target/classes/mapper/UserMapper.xml create mode 100644 device/target/classes/static/css/landc.css create mode 100644 device/target/classes/static/device.html create mode 100644 device/target/classes/static/index.html create mode 100644 device/target/classes/static/js/axios.min.js create mode 100644 device/target/classes/static/js/element.js create mode 100644 device/target/classes/static/js/jquery-1.12.4.js create mode 100644 device/target/classes/static/js/land.js create mode 100644 device/target/classes/static/js/vue.js create mode 100644 device/target/classes/static/land.html create mode 100644 device/target/classes/static/maintenancerecord.html create mode 100644 device/target/classes/static/operationlog.html create mode 100644 device/target/classes/static/scraprecord.html create mode 100644 device/target/classes/static/supplier.html create mode 100644 device/target/classes/static/usagerecord.html create mode 100644 device/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 device/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 device/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst create mode 100644 device/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst create mode 100644 数据库脚本/a.sql create mode 100644 数据库脚本/其他脚本.txt create mode 100644 数据库脚本/数据初始化脚本.txt create mode 100644 数据库脚本/数据库创建脚本.txt diff --git a/README.md b/README.md index 19888a7..5484480 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,11 @@ # EnterpriseEquipmentManagementSystem +本项目由刘宇豪和李骁共同完成。 +使用MySQL数据库,后端采用Spring Boot框架,前端用Vue.js完成。 +在项目制作过程中,情况波澜起伏,有很多功能受限于工期和知识,没法按照预期完成。 +现在完成的功能只是设备信息的增删改查和几个记录表的添加。 +此项目期待继续完善和制作。 +这个数据库课程设计是我真正制作的第一个完整项目,倾注了很多心血。 +虽然结果没能完全达到预期,但我还是深爱着这个项目。 + +也在此感谢数据库课程设计给我这个自己开发完整项目的机会,我从中学到了很多。 \ No newline at end of file diff --git a/device/.idea/.gitignore b/device/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/device/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/device/.idea/compiler.xml b/device/.idea/compiler.xml new file mode 100644 index 0000000..ae9fc6c --- /dev/null +++ b/device/.idea/compiler.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/device/.idea/encodings.xml b/device/.idea/encodings.xml new file mode 100644 index 0000000..63e9001 --- /dev/null +++ b/device/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/device/.idea/jarRepositories.xml b/device/.idea/jarRepositories.xml new file mode 100644 index 0000000..712ab9d --- /dev/null +++ b/device/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/device/.idea/misc.xml b/device/.idea/misc.xml new file mode 100644 index 0000000..0e7d25b --- /dev/null +++ b/device/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/device/.idea/uiDesigner.xml b/device/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/device/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/device/.idea/vcs.xml b/device/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/device/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/device/pom.xml b/device/pom.xml new file mode 100644 index 0000000..55a732a --- /dev/null +++ b/device/pom.xml @@ -0,0 +1,72 @@ + + + 4.0.0 + + org.example + device + 1.0-SNAPSHOT + + org.springframework.boot + spring-boot-starter-parent + 2.3.12.RELEASE + + + 8 + 8 + + + + org.springframework.boot + spring-boot-starter-web + + + cn.hutool + hutool-all + 5.0.7 + + + com.baomidou + mybatis-plus-boot-starter + 3.5.1 + + + + com.baomidou + mybatis-plus-generator + 3.5.1 + + + + org.apache.velocity + velocity-engine-core + 2.3 + + + org.projectlombok + lombok + + + + + org.springframework.boot + spring-boot-starter-jdbc + + + + + mysql + mysql-connector-java + + + + + org.springframework.boot + spring-boot-starter-aop + + + + + + \ No newline at end of file diff --git a/device/src/main/java/com/CodeGenerator.java b/device/src/main/java/com/CodeGenerator.java new file mode 100644 index 0000000..01a3f79 --- /dev/null +++ b/device/src/main/java/com/CodeGenerator.java @@ -0,0 +1,102 @@ +//package com; +// +///** +// * 导包信息 +// */ +//import java.util.Collections; +//import com.baomidou.mybatisplus.annotation.IdType; +//import com.baomidou.mybatisplus.generator.AutoGenerator; +//import com.baomidou.mybatisplus.generator.config.DataSourceConfig; +//import com.baomidou.mybatisplus.generator.config.GlobalConfig; +//import com.baomidou.mybatisplus.generator.config.OutputFile; +//import com.baomidou.mybatisplus.generator.config.PackageConfig; +//import com.baomidou.mybatisplus.generator.config.StrategyConfig; +//import com.baomidou.mybatisplus.generator.config.TemplateConfig; +//import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery; +//import com.baomidou.mybatisplus.generator.config.rules.DateType; +//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +// +//public class CodeGenerator { +// public static void main(String[] args) { +// /** +// * 先配置数据源 +// */ +// MySqlQuery mySqlQuery = new MySqlQuery() { +// @Override +// public String[] fieldCustom() { +// return new String[] { "Default" }; +// } +// }; +// // 配置位置1:数据库连接信息 +// DataSourceConfig dsc = new DataSourceConfig.Builder( +// "jdbc:mysql://localhost:3306/a?&useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai", +// "root", "").dbQuery(mySqlQuery).build(); +// AutoGenerator generator = new AutoGenerator(dsc); +// +// // 配置位置2:全局信息配置 +// String projectPath = System.getProperty("user.dir"); // 获取项目路径 +// String filePath = projectPath + "/src/main/java"; // java下的文件路径 +// GlobalConfig global = new GlobalConfig.Builder().outputDir(filePath)// 生成的输出路径 +// .author("刘宇豪")// 生成的作者名字 +// // .enableSwagger()开启swagger,需要添加swagger依赖并配置 +// .dateType(DateType.TIME_PACK)// 时间策略 +// .commentDate("yyyy年MM月dd日")// 格式化时间格式 +// .disableOpenDir()// 禁止打开输出目录,默认false +// .fileOverride()// 覆盖生成文件 +// .build(); +// +// // 配置位置3:包名规范配置 +// PackageConfig packages = new PackageConfig.Builder().entity("entity")// 实体类包名 +// .parent("com")// 父包名。如果为空,将下面子包名必须写全部, 否则就只需写子包名 +// .controller("controller")// 控制层包名 +// .mapper("mapper")// mapper层包名 +// .xml("mapper.xml")// 数据访问层xml包名 +// .service("service")// service层包名 +// .serviceImpl("service.impl")// service实现类包名 +// .other("output")// 输出自定义文件时的包名 +// .pathInfo(Collections.singletonMap(OutputFile.mapperXml, projectPath + "/src/main/resources/mapper")) // 路径配置信息,就是配置各个文件模板的路径信息,这里以mapper.xml为例 +// .build(); +// +// TemplateConfig template = new TemplateConfig.Builder().build(); +// // 配置位置4:生成策略配置 +// StrategyConfig strategyConfig = new StrategyConfig.Builder().enableCapitalMode()// 开启全局大写命名 +// // .likeTable()模糊表匹配 +// .addInclude()// 添加表匹配,指定要生成的数据表名,不写默认选定数据库所有表 +// // .disableSqlFilter()禁用sql过滤:默认(不使用该方法)true +// // .enableSchema()启用schema:默认false +// .entityBuilder() // 实体策略配置 +// // .disableSerialVersionUID()禁用生成SerialVersionUID:默认true +// .enableChainModel()// 开启链式模型 +// .enableLombok()// 开启lombok +// .enableRemoveIsPrefix()// 开启 Boolean 类型字段移除 is 前缀 +// .enableTableFieldAnnotation()// 开启生成实体时生成字段注解 +// // .addTableFills()添加表字段填充 +// .naming(NamingStrategy.underline_to_camel)// 数据表映射实体命名策略:默认下划线转驼峰underline_to_camel +// .columnNaming(NamingStrategy.underline_to_camel)// 表字段映射实体属性命名规则:默认null,不指定按照naming执行 +// .idType(IdType.AUTO)// 添加全局主键类型 +// .formatFileName("%s")// 格式化实体名称,%s取消首字母I +// .build() +// +// .mapperBuilder()// mapper文件策略 +// .enableMapperAnnotation()// 开启mapper注解 +// .enableBaseResultMap()// 启用xml文件中的BaseResultMap 生成 +// .enableBaseColumnList()// 启用xml文件中的BaseColumnList +// // .cache(缓存类.class)设置缓存实现类 +// .formatMapperFileName("%sMapper")// 格式化Dao类名称 +// .formatXmlFileName("%sMapper")// 格式化xml文件名称 +// .build() +// +// .serviceBuilder()// service文件策略 +// .formatServiceFileName("%sService")// 格式化 service 接口文件名称 +// .formatServiceImplFileName("%sServiceImpl")// 格式化 service 接口文件名称 +// .build() +// +// .controllerBuilder()// 控制层策略 +// // .enableHyphenStyle()开启驼峰转连字符,默认:false +// .enableRestStyle()// 开启生成@RestController +// .formatFileName("%sController")// 格式化文件名称 +// .build(); +// generator.global(global).template(template). +// packageInfo(packages).strategy(strategyConfig).execute(); +// } +//} diff --git a/device/src/main/java/com/DeviceApplication.java b/device/src/main/java/com/DeviceApplication.java new file mode 100644 index 0000000..66d1d9e --- /dev/null +++ b/device/src/main/java/com/DeviceApplication.java @@ -0,0 +1,14 @@ +package com; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +@MapperScan("com.mapper") +public class DeviceApplication { + public static void main(String[] args) { + SpringApplication.run(DeviceApplication.class, args); + } + +} \ No newline at end of file diff --git a/device/src/main/java/com/commons/MyBatisPlusConfig.java b/device/src/main/java/com/commons/MyBatisPlusConfig.java new file mode 100644 index 0000000..9982971 --- /dev/null +++ b/device/src/main/java/com/commons/MyBatisPlusConfig.java @@ -0,0 +1,18 @@ +package com.commons; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class MyBatisPlusConfig { + @Bean + public MybatisPlusInterceptor paginationInterceptor() { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + //指定数据库方言 + interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); + return interceptor; + } +} diff --git a/device/src/main/java/com/commons/Result.java b/device/src/main/java/com/commons/Result.java new file mode 100644 index 0000000..18f157e --- /dev/null +++ b/device/src/main/java/com/commons/Result.java @@ -0,0 +1,32 @@ +package com.commons; + +/* + * 用于统一返回 + */ + +import lombok.Data; + +@Data +public class Result { + private Integer code;//业务状态码 + private Boolean flag;//描述业务是否成功 + private String message;//本次操作的描述信息 + private T data;//实际携带到前端的数据 + + public static Result success(Integer code,String message,Object data){ + Result r = new Result<>(); + r.setFlag(true); + r.setCode(code); + r.setMessage(message); + r.setData(data); + return r; + } + + public static Result fail(Integer code,String message){ + Result r = new Result<>(); + r.setFlag(false); + r.setCode(code); + r.setMessage(message); + return r; + } +} diff --git a/device/src/main/java/com/controller/DeviceController.java b/device/src/main/java/com/controller/DeviceController.java new file mode 100644 index 0000000..6d4abe7 --- /dev/null +++ b/device/src/main/java/com/controller/DeviceController.java @@ -0,0 +1,60 @@ +package com.controller; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.commons.Result; +import com.controller.from.findDevicePageFrom; +import com.entity.Device; +import com.service.DeviceService; +import com.service.dto.devicePageDto; +import org.springframework.beans.factory.annotation.Autowired; +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.HashMap; + + +/** + *

+ * 前端控制器 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@RestController +@RequestMapping("/device") +public class DeviceController { + + @Autowired + DeviceService deviceService; + @PostMapping("/devicePage") + public Result devicePage(@RequestBody findDevicePageFrom map) throws Exception{ + + IPage devicePageDtoIPage = deviceService.devicePage(map); + return Result.success(200,"查询成功",devicePageDtoIPage); + } + + @PostMapping("/addDevice") + public Result addDevice(@RequestBody Device map) throws Exception{ + + deviceService.addDevice(map); + return Result.success(200,"添加成功",null); + } + @PostMapping("/modifyDevice") + public Result modifyDevice(@RequestBody Device map) throws Exception{ + + deviceService.modifyDevice(map); + return Result.success(200,"维护成功",null); + } + @PostMapping("/delDevice") + public Result delDevice(@RequestBody HashMap map) throws Exception{ + String id = map.get("id"); + deviceService.delDevice(id); + return Result.success(200,"报废",null); + } +} + diff --git a/device/src/main/java/com/controller/DevicecategoryController.java b/device/src/main/java/com/controller/DevicecategoryController.java new file mode 100644 index 0000000..acb21b8 --- /dev/null +++ b/device/src/main/java/com/controller/DevicecategoryController.java @@ -0,0 +1,46 @@ +package com.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.commons.Result; +import com.controller.from.findDevicePageFrom; +import com.entity.Devicecategory; +import com.mapper.DevicecategoryMapper; +import com.service.DeviceService; +import com.service.dto.devicePageDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + *

+ * 前端控制器 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@RestController +@RequestMapping("/devicecategory") +public class DevicecategoryController { + + + + @Autowired + DevicecategoryMapper devicecategoryMapper; + @PostMapping("/devicecategoryAll") + public Result devicecategoryAll() throws Exception{ + + List devicecategories = devicecategoryMapper.selectList(new QueryWrapper<>()); + return Result.success(200,"查询成功",devicecategories); + } + + +} + diff --git a/device/src/main/java/com/controller/LocationController.java b/device/src/main/java/com/controller/LocationController.java new file mode 100644 index 0000000..169bc3c --- /dev/null +++ b/device/src/main/java/com/controller/LocationController.java @@ -0,0 +1,39 @@ +package com.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.commons.Result; +import com.entity.Devicecategory; +import com.entity.Location; +import com.mapper.DevicecategoryMapper; +import com.mapper.LocationMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + *

+ * 前端控制器 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@RestController +@RequestMapping("/location") +public class LocationController { + + @Autowired + LocationMapper locationMapper; + @PostMapping("/locationAll") + public Result locationAll() throws Exception{ + + List locations = locationMapper.selectList(new QueryWrapper<>()); + return Result.success(200,"查询成功",locations); + } +} + diff --git a/device/src/main/java/com/controller/MaintenancerecordController.java b/device/src/main/java/com/controller/MaintenancerecordController.java new file mode 100644 index 0000000..4c4aefb --- /dev/null +++ b/device/src/main/java/com/controller/MaintenancerecordController.java @@ -0,0 +1,43 @@ +package com.controller; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.commons.Result; +import com.controller.from.findDevicePageFrom; +import com.entity.Maintenancerecord; +import com.service.DeviceService; +import com.service.MaintenancerecordService; +import com.service.dto.devicePageDto; +import org.springframework.beans.factory.annotation.Autowired; +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.HashMap; + +/** + *

+ * 前端控制器 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@RestController +@RequestMapping("/maintenancerecord") +public class MaintenancerecordController { + @Autowired + MaintenancerecordService maintenancerecordService; + @PostMapping("/maintenancerecordPage") + public Result maintenancerecordPage(@RequestBody HashMap map) throws Exception{ + + Page objectPage = new Page<>(Integer.valueOf(map.get("current")),Integer.valueOf(map.get("size"))); + IPage maintenancerecordPage = maintenancerecordService.page(objectPage); + return Result.success(200,"查询成功",maintenancerecordPage); + } + +} + diff --git a/device/src/main/java/com/controller/OperationlogController.java b/device/src/main/java/com/controller/OperationlogController.java new file mode 100644 index 0000000..a97f819 --- /dev/null +++ b/device/src/main/java/com/controller/OperationlogController.java @@ -0,0 +1,43 @@ +package com.controller; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.commons.Result; +import com.entity.Maintenancerecord; +import com.entity.Operationlog; +import com.service.MaintenancerecordService; +import com.service.OperationlogService; +import org.springframework.beans.factory.annotation.Autowired; +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.HashMap; + +/** + *

+ * 前端控制器 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@RestController +@RequestMapping("/operationlog") +public class OperationlogController { + + + @Autowired + OperationlogService maintenancerecordService; + @PostMapping("/OperationlogPage") + public Result OperationlogPage(@RequestBody HashMap map) throws Exception{ + + Page objectPage = new Page<>(Integer.valueOf(map.get("current")),Integer.valueOf(map.get("size"))); + IPage maintenancerecordPage = maintenancerecordService.page(objectPage); + return Result.success(200,"查询成功",maintenancerecordPage); + } +} + diff --git a/device/src/main/java/com/controller/RoleController.java b/device/src/main/java/com/controller/RoleController.java new file mode 100644 index 0000000..84379aa --- /dev/null +++ b/device/src/main/java/com/controller/RoleController.java @@ -0,0 +1,21 @@ +package com.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 前端控制器 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@RestController +@RequestMapping("/role") +public class RoleController { + +} + diff --git a/device/src/main/java/com/controller/ScraprecordController.java b/device/src/main/java/com/controller/ScraprecordController.java new file mode 100644 index 0000000..8d20774 --- /dev/null +++ b/device/src/main/java/com/controller/ScraprecordController.java @@ -0,0 +1,43 @@ +package com.controller; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.commons.Result; +import com.entity.Maintenancerecord; +import com.entity.Scraprecord; +import com.service.MaintenancerecordService; +import com.service.ScraprecordService; +import org.springframework.beans.factory.annotation.Autowired; +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.HashMap; + +/** + *

+ * 前端控制器 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@RestController +@RequestMapping("/scraprecord") +public class ScraprecordController { + + @Autowired + ScraprecordService maintenancerecordService; + @PostMapping("/maintenancerecordPage") + public Result maintenancerecordPage(@RequestBody HashMap map) throws Exception{ + + Page objectPage = new Page<>(Integer.valueOf(map.get("current")),Integer.valueOf(map.get("size"))); + IPage maintenancerecordPage = maintenancerecordService.page(objectPage); + return Result.success(200,"查询成功",maintenancerecordPage); + } + +} + diff --git a/device/src/main/java/com/controller/SupplierController.java b/device/src/main/java/com/controller/SupplierController.java new file mode 100644 index 0000000..bfbf450 --- /dev/null +++ b/device/src/main/java/com/controller/SupplierController.java @@ -0,0 +1,43 @@ +package com.controller; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.commons.Result; +import com.entity.Maintenancerecord; +import com.entity.Supplier; +import com.service.MaintenancerecordService; +import com.service.SupplierService; +import org.springframework.beans.factory.annotation.Autowired; +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.HashMap; + +/** + *

+ * 前端控制器 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@RestController +@RequestMapping("/supplier") +public class SupplierController { + + @Autowired + SupplierService maintenancerecordService; + @PostMapping("/maintenancerecordPage") + public Result maintenancerecordPage(@RequestBody HashMap map) throws Exception{ + + Page objectPage = new Page<>(Integer.valueOf(map.get("current")),Integer.valueOf(map.get("size"))); + IPage maintenancerecordPage = maintenancerecordService.page(objectPage); + return Result.success(200,"查询成功",maintenancerecordPage); + } + +} + diff --git a/device/src/main/java/com/controller/UsagerecordController.java b/device/src/main/java/com/controller/UsagerecordController.java new file mode 100644 index 0000000..43b8d22 --- /dev/null +++ b/device/src/main/java/com/controller/UsagerecordController.java @@ -0,0 +1,55 @@ +package com.controller; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.commons.Result; +import com.entity.Maintenancerecord; +import com.entity.Usagerecord; +import com.entity.User; +import com.mapper.UserMapper; +import com.service.MaintenancerecordService; +import com.service.UsagerecordService; +import org.springframework.beans.factory.annotation.Autowired; +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.HashMap; + +/** + *

+ * 前端控制器 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@RestController +@RequestMapping("/usagerecord") +public class UsagerecordController { + + @Autowired + UsagerecordService usagerecordService; + @Autowired + UserMapper userMapper; + @PostMapping("/usagerecordPage") + public Result maintenancerecordPage(@RequestBody HashMap map) throws Exception{ + + Page objectPage = new Page<>(Integer.valueOf(map.get("current")),Integer.valueOf(map.get("size"))); + IPage maintenancerecordPage = usagerecordService.page(objectPage); + for (int i=0; i< maintenancerecordPage.getRecords().size();i++){ + + User user = userMapper.selectById(maintenancerecordPage.getRecords().get(i).getUserID()); + maintenancerecordPage.getRecords().get(i).setUsageType(user.getUserName()); + + } + + + return Result.success(200,"查询成功",maintenancerecordPage); + } + +} + diff --git a/device/src/main/java/com/controller/UserController.java b/device/src/main/java/com/controller/UserController.java new file mode 100644 index 0000000..f7a3b01 --- /dev/null +++ b/device/src/main/java/com/controller/UserController.java @@ -0,0 +1,73 @@ +package com.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.commons.Result; +import com.controller.from.findDevicePageFrom; +import com.entity.Usagerecord; +import com.entity.User; +import com.mapper.UsagerecordMapper; +import com.mapper.UserMapper; +import com.service.DeviceService; +import com.service.dto.devicePageDto; +import org.springframework.beans.factory.annotation.Autowired; +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.time.LocalDate; +import java.time.LocalTime; +import java.time.ZoneId; +import java.util.HashMap; + +/** + *

+ * 前端控制器 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@RestController +@RequestMapping("/user") +public class UserController { + + @Autowired + UserMapper userMapper; + @Autowired + UsagerecordMapper usagerecordMapper; + + @PostMapping("/login") + public Result login(@RequestBody HashMap map) throws Exception{ + String username = map.get("username"); + String password = map.get("password"); + + + User userName = userMapper.selectOne(new QueryWrapper().eq("UserName", username)); + if (userName == null) { + return Result.success(500,"用户不存在",null); + } + if (!userName.getPassword().equals(password)) { + Usagerecord usagerecord = new Usagerecord(); + usagerecord.setUserID(userName.getUserID()); + usagerecord.setUsageDate(LocalDate.now()); + usagerecord.setUsageTime(LocalTime.now(ZoneId.of("UTC"))); + usagerecord.setUsageDesc("登录失败"); + usagerecordMapper.insert(usagerecord); + return Result.success(500,"密码不对",null); + } + + Usagerecord usagerecord = new Usagerecord(); + usagerecord.setUserID(userName.getUserID()); + usagerecord.setUsageDate(LocalDate.now()); + usagerecord.setUsageTime(LocalTime.now(ZoneId.of("UTC"))); + usagerecord.setUsageDesc("登录成功"); + usagerecordMapper.insert(usagerecord); + return Result.success(200,"登录成功",userName); + } + +} + diff --git a/device/src/main/java/com/controller/from/findDevicePageFrom.java b/device/src/main/java/com/controller/from/findDevicePageFrom.java new file mode 100644 index 0000000..8b0b3e6 --- /dev/null +++ b/device/src/main/java/com/controller/from/findDevicePageFrom.java @@ -0,0 +1,15 @@ +package com.controller.from; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; +import org.springframework.beans.factory.annotation.Autowired; + +@Data +public class findDevicePageFrom { + private Long size; + private Long current; + private String deviceName; + private Integer deviceType; + private Integer location; + +} diff --git a/device/src/main/java/com/entity/Device.java b/device/src/main/java/com/entity/Device.java new file mode 100644 index 0000000..74b0433 --- /dev/null +++ b/device/src/main/java/com/entity/Device.java @@ -0,0 +1,51 @@ +package com.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 java.io.Serializable; +import java.time.LocalDate; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +/** + *

+ * + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("device") +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "DeviceID", type = IdType.AUTO) + private Integer deviceID; + + @TableField("DeviceName") + private String deviceName; + + @TableField("DeviceType") + private Integer deviceType; + + @TableField("Model") + private String model; + + @TableField("PurchaseDate") + private LocalDate purchaseDate; + + @TableField("Status") + private String status; + + @TableField("Location") + private Integer location; + + +} diff --git a/device/src/main/java/com/entity/Devicecategory.java b/device/src/main/java/com/entity/Devicecategory.java new file mode 100644 index 0000000..ea8b237 --- /dev/null +++ b/device/src/main/java/com/entity/Devicecategory.java @@ -0,0 +1,35 @@ +package com.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 java.io.Serializable; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +/** + *

+ * + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("devicecategory") +public class Devicecategory implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "CategoryID", type = IdType.AUTO) + private Integer categoryID; + + @TableField("CategoryName") + private String categoryName; + + +} diff --git a/device/src/main/java/com/entity/Location.java b/device/src/main/java/com/entity/Location.java new file mode 100644 index 0000000..e9efc35 --- /dev/null +++ b/device/src/main/java/com/entity/Location.java @@ -0,0 +1,38 @@ +package com.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 java.io.Serializable; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +/** + *

+ * + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("location") +public class Location implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "LocationID", type = IdType.AUTO) + private Integer locationID; + + @TableField("LocationName") + private String locationName; + + @TableField("LocationDescription") + private String locationDescription; + + +} diff --git a/device/src/main/java/com/entity/Maintenancerecord.java b/device/src/main/java/com/entity/Maintenancerecord.java new file mode 100644 index 0000000..83ab06c --- /dev/null +++ b/device/src/main/java/com/entity/Maintenancerecord.java @@ -0,0 +1,55 @@ +package com.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 java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDate; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +/** + *

+ * + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("maintenancerecord") +public class Maintenancerecord implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "MaintenanceID", type = IdType.AUTO) + private Integer maintenanceID; + + @TableField("DeviceID") + private Integer deviceID; + + @TableField("MaintenanceType") + private String maintenanceType; + + @TableField("MaintenanceDate") + private LocalDate maintenanceDate; + + @TableField("Technician") + private String technician; + + @TableField("MaintenanceDetails") + private String maintenanceDetails; + + @TableField("MaintenanceCost") + private BigDecimal maintenanceCost; + + @TableField("NextMaintenanceDate") + private LocalDate nextMaintenanceDate; + + +} diff --git a/device/src/main/java/com/entity/Operationlog.java b/device/src/main/java/com/entity/Operationlog.java new file mode 100644 index 0000000..23eec01 --- /dev/null +++ b/device/src/main/java/com/entity/Operationlog.java @@ -0,0 +1,43 @@ +package com.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 java.io.Serializable; +import java.time.LocalDate; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +/** + *

+ * + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("operationlog") +public class Operationlog implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "LogID", type = IdType.AUTO) + private Integer logID; + + @TableField("OperationType") + private String operationType; + + @TableField("OperationTime") + private LocalDate operationTime; + + @TableField("OperationDescription") + private String operationDescription; + + +} diff --git a/device/src/main/java/com/entity/Role.java b/device/src/main/java/com/entity/Role.java new file mode 100644 index 0000000..726326e --- /dev/null +++ b/device/src/main/java/com/entity/Role.java @@ -0,0 +1,38 @@ +package com.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 java.io.Serializable; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +/** + *

+ * + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("role") +public class Role implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "RoleID", type = IdType.AUTO) + private Integer roleID; + + @TableField("RoleName") + private String roleName; + + @TableField("PermissionDescription") + private String permissionDescription; + + +} diff --git a/device/src/main/java/com/entity/Scraprecord.java b/device/src/main/java/com/entity/Scraprecord.java new file mode 100644 index 0000000..b6905ae --- /dev/null +++ b/device/src/main/java/com/entity/Scraprecord.java @@ -0,0 +1,45 @@ +package com.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 java.io.Serializable; +import java.time.LocalDate; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +/** + *

+ * + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("scraprecord") +public class Scraprecord implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "ScrapID", type = IdType.AUTO) + private Integer scrapID; + + @TableField("DeviceID") + private Integer deviceID; + + @TableField("ScrapDate") + private LocalDate scrapDate; + + @TableField("ScrapReason") + private String scrapReason; + + @TableField("DisposalMethod") + private String disposalMethod; + + +} diff --git a/device/src/main/java/com/entity/Supplier.java b/device/src/main/java/com/entity/Supplier.java new file mode 100644 index 0000000..bcd16e3 --- /dev/null +++ b/device/src/main/java/com/entity/Supplier.java @@ -0,0 +1,44 @@ +package com.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 java.io.Serializable; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +/** + *

+ * + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("supplier") +public class Supplier implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "SupplierID", type = IdType.AUTO) + private Integer supplierID; + + @TableField("SupplierName") + private String supplierName; + + @TableField("ContactPerson") + private String contactPerson; + + @TableField("ContactPhone") + private String contactPhone; + + @TableField("Address") + private String address; + + +} diff --git a/device/src/main/java/com/entity/Usagerecord.java b/device/src/main/java/com/entity/Usagerecord.java new file mode 100644 index 0000000..5e93e84 --- /dev/null +++ b/device/src/main/java/com/entity/Usagerecord.java @@ -0,0 +1,52 @@ +package com.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 java.io.Serializable; +import java.time.LocalDate; +import java.time.LocalTime; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +/** + *

+ * + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("usagerecord") +public class Usagerecord implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "UsageID", type = IdType.AUTO) + private Integer usageID; + + @TableField("DeviceID") + private Integer deviceID; + + @TableField("UserID") + private Integer userID; + + @TableField("UsageDate") + private LocalDate usageDate; + + @TableField("UsageTime") + private LocalTime usageTime; + + @TableField("UsageType") + private String usageType; + + @TableField("UsageDesc") + private String usageDesc; + + +} diff --git a/device/src/main/java/com/entity/User.java b/device/src/main/java/com/entity/User.java new file mode 100644 index 0000000..d8034a4 --- /dev/null +++ b/device/src/main/java/com/entity/User.java @@ -0,0 +1,41 @@ +package com.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 java.io.Serializable; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +/** + *

+ * + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("user") +public class User implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "UserID", type = IdType.AUTO) + private Integer userID; + + @TableField("UserName") + private String userName; + + @TableField("Password") + private String password; + + @TableField("Role") + private Integer role; + + +} diff --git a/device/src/main/java/com/mapper/DeviceMapper.java b/device/src/main/java/com/mapper/DeviceMapper.java new file mode 100644 index 0000000..79ab018 --- /dev/null +++ b/device/src/main/java/com/mapper/DeviceMapper.java @@ -0,0 +1,18 @@ +package com.mapper; + +import com.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + +} diff --git a/device/src/main/java/com/mapper/DevicecategoryMapper.java b/device/src/main/java/com/mapper/DevicecategoryMapper.java new file mode 100644 index 0000000..15d82c2 --- /dev/null +++ b/device/src/main/java/com/mapper/DevicecategoryMapper.java @@ -0,0 +1,18 @@ +package com.mapper; + +import com.entity.Devicecategory; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Mapper +public interface DevicecategoryMapper extends BaseMapper { + +} diff --git a/device/src/main/java/com/mapper/LocationMapper.java b/device/src/main/java/com/mapper/LocationMapper.java new file mode 100644 index 0000000..c4547de --- /dev/null +++ b/device/src/main/java/com/mapper/LocationMapper.java @@ -0,0 +1,18 @@ +package com.mapper; + +import com.entity.Location; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Mapper +public interface LocationMapper extends BaseMapper { + +} diff --git a/device/src/main/java/com/mapper/MaintenancerecordMapper.java b/device/src/main/java/com/mapper/MaintenancerecordMapper.java new file mode 100644 index 0000000..0dfec9c --- /dev/null +++ b/device/src/main/java/com/mapper/MaintenancerecordMapper.java @@ -0,0 +1,18 @@ +package com.mapper; + +import com.entity.Maintenancerecord; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Mapper +public interface MaintenancerecordMapper extends BaseMapper { + +} diff --git a/device/src/main/java/com/mapper/OperationlogMapper.java b/device/src/main/java/com/mapper/OperationlogMapper.java new file mode 100644 index 0000000..03eac47 --- /dev/null +++ b/device/src/main/java/com/mapper/OperationlogMapper.java @@ -0,0 +1,18 @@ +package com.mapper; + +import com.entity.Operationlog; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Mapper +public interface OperationlogMapper extends BaseMapper { + +} diff --git a/device/src/main/java/com/mapper/RoleMapper.java b/device/src/main/java/com/mapper/RoleMapper.java new file mode 100644 index 0000000..79ed7f0 --- /dev/null +++ b/device/src/main/java/com/mapper/RoleMapper.java @@ -0,0 +1,18 @@ +package com.mapper; + +import com.entity.Role; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Mapper +public interface RoleMapper extends BaseMapper { + +} diff --git a/device/src/main/java/com/mapper/ScraprecordMapper.java b/device/src/main/java/com/mapper/ScraprecordMapper.java new file mode 100644 index 0000000..ff653a6 --- /dev/null +++ b/device/src/main/java/com/mapper/ScraprecordMapper.java @@ -0,0 +1,18 @@ +package com.mapper; + +import com.entity.Scraprecord; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Mapper +public interface ScraprecordMapper extends BaseMapper { + +} diff --git a/device/src/main/java/com/mapper/SupplierMapper.java b/device/src/main/java/com/mapper/SupplierMapper.java new file mode 100644 index 0000000..b7ecac4 --- /dev/null +++ b/device/src/main/java/com/mapper/SupplierMapper.java @@ -0,0 +1,18 @@ +package com.mapper; + +import com.entity.Supplier; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Mapper +public interface SupplierMapper extends BaseMapper { + +} diff --git a/device/src/main/java/com/mapper/UsagerecordMapper.java b/device/src/main/java/com/mapper/UsagerecordMapper.java new file mode 100644 index 0000000..ba32eec --- /dev/null +++ b/device/src/main/java/com/mapper/UsagerecordMapper.java @@ -0,0 +1,18 @@ +package com.mapper; + +import com.entity.Usagerecord; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Mapper +public interface UsagerecordMapper extends BaseMapper { + +} diff --git a/device/src/main/java/com/mapper/UserMapper.java b/device/src/main/java/com/mapper/UserMapper.java new file mode 100644 index 0000000..80d2c8b --- /dev/null +++ b/device/src/main/java/com/mapper/UserMapper.java @@ -0,0 +1,18 @@ +package com.mapper; + +import com.entity.User; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Mapper +public interface UserMapper extends BaseMapper { + +} diff --git a/device/src/main/java/com/service/DeviceService.java b/device/src/main/java/com/service/DeviceService.java new file mode 100644 index 0000000..1d6f07f --- /dev/null +++ b/device/src/main/java/com/service/DeviceService.java @@ -0,0 +1,26 @@ +package com.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.controller.from.findDevicePageFrom; +import com.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; +import com.service.dto.devicePageDto; + +/** + *

+ * 服务类 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +public interface DeviceService extends IService { + + IPage devicePage(findDevicePageFrom map); + + void delDevice(String id); + + void addDevice(Device map); + + void modifyDevice(Device map); +} diff --git a/device/src/main/java/com/service/DevicecategoryService.java b/device/src/main/java/com/service/DevicecategoryService.java new file mode 100644 index 0000000..9f27b90 --- /dev/null +++ b/device/src/main/java/com/service/DevicecategoryService.java @@ -0,0 +1,16 @@ +package com.service; + +import com.entity.Devicecategory; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +public interface DevicecategoryService extends IService { + +} diff --git a/device/src/main/java/com/service/LocationService.java b/device/src/main/java/com/service/LocationService.java new file mode 100644 index 0000000..9398f87 --- /dev/null +++ b/device/src/main/java/com/service/LocationService.java @@ -0,0 +1,16 @@ +package com.service; + +import com.entity.Location; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +public interface LocationService extends IService { + +} diff --git a/device/src/main/java/com/service/MaintenancerecordService.java b/device/src/main/java/com/service/MaintenancerecordService.java new file mode 100644 index 0000000..9a0be8e --- /dev/null +++ b/device/src/main/java/com/service/MaintenancerecordService.java @@ -0,0 +1,16 @@ +package com.service; + +import com.entity.Maintenancerecord; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +public interface MaintenancerecordService extends IService { + +} diff --git a/device/src/main/java/com/service/OperationlogService.java b/device/src/main/java/com/service/OperationlogService.java new file mode 100644 index 0000000..43cc5bd --- /dev/null +++ b/device/src/main/java/com/service/OperationlogService.java @@ -0,0 +1,16 @@ +package com.service; + +import com.entity.Operationlog; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +public interface OperationlogService extends IService { + +} diff --git a/device/src/main/java/com/service/RoleService.java b/device/src/main/java/com/service/RoleService.java new file mode 100644 index 0000000..044639b --- /dev/null +++ b/device/src/main/java/com/service/RoleService.java @@ -0,0 +1,16 @@ +package com.service; + +import com.entity.Role; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +public interface RoleService extends IService { + +} diff --git a/device/src/main/java/com/service/ScraprecordService.java b/device/src/main/java/com/service/ScraprecordService.java new file mode 100644 index 0000000..eb0623b --- /dev/null +++ b/device/src/main/java/com/service/ScraprecordService.java @@ -0,0 +1,16 @@ +package com.service; + +import com.entity.Scraprecord; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +public interface ScraprecordService extends IService { + +} diff --git a/device/src/main/java/com/service/SupplierService.java b/device/src/main/java/com/service/SupplierService.java new file mode 100644 index 0000000..320bfd5 --- /dev/null +++ b/device/src/main/java/com/service/SupplierService.java @@ -0,0 +1,16 @@ +package com.service; + +import com.entity.Supplier; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +public interface SupplierService extends IService { + +} diff --git a/device/src/main/java/com/service/UsagerecordService.java b/device/src/main/java/com/service/UsagerecordService.java new file mode 100644 index 0000000..954934d --- /dev/null +++ b/device/src/main/java/com/service/UsagerecordService.java @@ -0,0 +1,16 @@ +package com.service; + +import com.entity.Usagerecord; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +public interface UsagerecordService extends IService { + +} diff --git a/device/src/main/java/com/service/UserService.java b/device/src/main/java/com/service/UserService.java new file mode 100644 index 0000000..8e12e78 --- /dev/null +++ b/device/src/main/java/com/service/UserService.java @@ -0,0 +1,16 @@ +package com.service; + +import com.entity.User; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +public interface UserService extends IService { + +} diff --git a/device/src/main/java/com/service/dto/devicePageDto.java b/device/src/main/java/com/service/dto/devicePageDto.java new file mode 100644 index 0000000..224b493 --- /dev/null +++ b/device/src/main/java/com/service/dto/devicePageDto.java @@ -0,0 +1,11 @@ +package com.service.dto; + +import com.entity.Device; +import lombok.Data; + +@Data +public class devicePageDto extends Device { + String type; + String locationName; + +} diff --git a/device/src/main/java/com/service/impl/DeviceServiceImpl.java b/device/src/main/java/com/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..0b5b68f --- /dev/null +++ b/device/src/main/java/com/service/impl/DeviceServiceImpl.java @@ -0,0 +1,119 @@ +package com.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.controller.from.findDevicePageFrom; +import com.entity.*; +import com.mapper.*; +import com.service.DeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.service.dto.devicePageDto; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Service +public class DeviceServiceImpl extends ServiceImpl implements DeviceService { + @Autowired + DeviceMapper deviceMapper; + @Autowired + DevicecategoryMapper devicecategoryMapper; + @Autowired + LocationMapper locationMapper; + @Autowired + ScraprecordMapper scraprecordMapper; + @Autowired + OperationlogMapper operationlogMapper; + @Autowired + MaintenancerecordMapper maintenancerecordMapper; + + @Override + public IPage devicePage(findDevicePageFrom map) { + Page objectPage = new Page<>(map.getCurrent(),map.getSize()); + QueryWrapper objectQueryWrapper = new QueryWrapper<>(); + objectQueryWrapper.eq("Status",0); + if (map.getDeviceType()!=null){ + objectQueryWrapper.eq("DeviceType",map.getDeviceType()); + } + if (map.getLocation()!=null){ + objectQueryWrapper.eq("Location",map.getLocation()); + } + IPage deviceIPage = deviceMapper.selectPage(objectPage, objectQueryWrapper); + List records = deviceIPage.getRecords(); + List devicePageDtos = new ArrayList<>(); + for (Device record : records) { + devicePageDto devicePageDto = new devicePageDto(); + BeanUtils.copyProperties(record,devicePageDto); + Devicecategory devicecategory = devicecategoryMapper.selectById(record.getDeviceType()); + devicePageDto.setType(devicecategory.getCategoryName()); + Location location = locationMapper.selectById(record.getLocation()); + devicePageDto.setLocationName(location.getLocationName()); + + devicePageDtos.add(devicePageDto); + } + IPage devicePageDtoIPage = new Page<>(); + BeanUtils.copyProperties(deviceIPage,devicePageDtoIPage); + devicePageDtoIPage.setRecords(devicePageDtos); + return devicePageDtoIPage; + } + @Override + public void addDevice(Device map) { + map.setPurchaseDate(LocalDate.now()); + deviceMapper.insert(map); + Operationlog operationlog = new Operationlog(); + operationlog.setOperationType("运行"); + // 获取当前日期 + LocalDate currentDate = LocalDate.now(); + operationlog.setOperationTime(currentDate); + operationlog.setOperationDescription("成功"); + operationlogMapper.insert(operationlog); + } + + @Override + public void modifyDevice(Device map) { + deviceMapper.updateById(map); + Maintenancerecord maintenancerecord = new Maintenancerecord(); + maintenancerecord.setDeviceID(map.getDeviceID()); + maintenancerecord.setMaintenanceType("日常维护"); + maintenancerecord.setMaintenanceDate(LocalDate.now()); + maintenancerecord.setMaintenanceDetails("成功"); + maintenancerecord.setMaintenanceCost(new BigDecimal(100)); + maintenancerecord.setTechnician("admin"); + maintenancerecord.setTechnician("admin"); + LocalDate currentDate = LocalDate.now(); + LocalDate datePlusOneMonth = currentDate.plusMonths(1); + maintenancerecord.setNextMaintenanceDate(datePlusOneMonth); + maintenancerecordMapper.insert(maintenancerecord); + + } + + @Override + public void delDevice(String id) { + deviceMapper.update(null,new UpdateWrapper().eq("DeviceID",id).set("Status",1)); + + Scraprecord scraprecord = new Scraprecord(); + scraprecord.setDeviceID(Integer.valueOf(id)); + scraprecord.setScrapReason("日常报废"); + scraprecord.setDisposalMethod("设备到期"); + scraprecord.setScrapDate(LocalDate.now()); + scraprecordMapper.insert(scraprecord); + } + + +} diff --git a/device/src/main/java/com/service/impl/DevicecategoryServiceImpl.java b/device/src/main/java/com/service/impl/DevicecategoryServiceImpl.java new file mode 100644 index 0000000..8fe3c56 --- /dev/null +++ b/device/src/main/java/com/service/impl/DevicecategoryServiceImpl.java @@ -0,0 +1,20 @@ +package com.service.impl; + +import com.entity.Devicecategory; +import com.mapper.DevicecategoryMapper; +import com.service.DevicecategoryService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Service +public class DevicecategoryServiceImpl extends ServiceImpl implements DevicecategoryService { + +} diff --git a/device/src/main/java/com/service/impl/LocationServiceImpl.java b/device/src/main/java/com/service/impl/LocationServiceImpl.java new file mode 100644 index 0000000..2b7dff0 --- /dev/null +++ b/device/src/main/java/com/service/impl/LocationServiceImpl.java @@ -0,0 +1,20 @@ +package com.service.impl; + +import com.entity.Location; +import com.mapper.LocationMapper; +import com.service.LocationService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Service +public class LocationServiceImpl extends ServiceImpl implements LocationService { + +} diff --git a/device/src/main/java/com/service/impl/MaintenancerecordServiceImpl.java b/device/src/main/java/com/service/impl/MaintenancerecordServiceImpl.java new file mode 100644 index 0000000..d9771a6 --- /dev/null +++ b/device/src/main/java/com/service/impl/MaintenancerecordServiceImpl.java @@ -0,0 +1,20 @@ +package com.service.impl; + +import com.entity.Maintenancerecord; +import com.mapper.MaintenancerecordMapper; +import com.service.MaintenancerecordService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Service +public class MaintenancerecordServiceImpl extends ServiceImpl implements MaintenancerecordService { + +} diff --git a/device/src/main/java/com/service/impl/OperationlogServiceImpl.java b/device/src/main/java/com/service/impl/OperationlogServiceImpl.java new file mode 100644 index 0000000..c36abfb --- /dev/null +++ b/device/src/main/java/com/service/impl/OperationlogServiceImpl.java @@ -0,0 +1,20 @@ +package com.service.impl; + +import com.entity.Operationlog; +import com.mapper.OperationlogMapper; +import com.service.OperationlogService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Service +public class OperationlogServiceImpl extends ServiceImpl implements OperationlogService { + +} diff --git a/device/src/main/java/com/service/impl/RoleServiceImpl.java b/device/src/main/java/com/service/impl/RoleServiceImpl.java new file mode 100644 index 0000000..a27a49c --- /dev/null +++ b/device/src/main/java/com/service/impl/RoleServiceImpl.java @@ -0,0 +1,20 @@ +package com.service.impl; + +import com.entity.Role; +import com.mapper.RoleMapper; +import com.service.RoleService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Service +public class RoleServiceImpl extends ServiceImpl implements RoleService { + +} diff --git a/device/src/main/java/com/service/impl/ScraprecordServiceImpl.java b/device/src/main/java/com/service/impl/ScraprecordServiceImpl.java new file mode 100644 index 0000000..f1ce22a --- /dev/null +++ b/device/src/main/java/com/service/impl/ScraprecordServiceImpl.java @@ -0,0 +1,20 @@ +package com.service.impl; + +import com.entity.Scraprecord; +import com.mapper.ScraprecordMapper; +import com.service.ScraprecordService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Service +public class ScraprecordServiceImpl extends ServiceImpl implements ScraprecordService { + +} diff --git a/device/src/main/java/com/service/impl/SupplierServiceImpl.java b/device/src/main/java/com/service/impl/SupplierServiceImpl.java new file mode 100644 index 0000000..4ece0b8 --- /dev/null +++ b/device/src/main/java/com/service/impl/SupplierServiceImpl.java @@ -0,0 +1,20 @@ +package com.service.impl; + +import com.entity.Supplier; +import com.mapper.SupplierMapper; +import com.service.SupplierService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Service +public class SupplierServiceImpl extends ServiceImpl implements SupplierService { + +} diff --git a/device/src/main/java/com/service/impl/UsagerecordServiceImpl.java b/device/src/main/java/com/service/impl/UsagerecordServiceImpl.java new file mode 100644 index 0000000..d54fd53 --- /dev/null +++ b/device/src/main/java/com/service/impl/UsagerecordServiceImpl.java @@ -0,0 +1,20 @@ +package com.service.impl; + +import com.entity.Usagerecord; +import com.mapper.UsagerecordMapper; +import com.service.UsagerecordService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Service +public class UsagerecordServiceImpl extends ServiceImpl implements UsagerecordService { + +} diff --git a/device/src/main/java/com/service/impl/UserServiceImpl.java b/device/src/main/java/com/service/impl/UserServiceImpl.java new file mode 100644 index 0000000..d7669dd --- /dev/null +++ b/device/src/main/java/com/service/impl/UserServiceImpl.java @@ -0,0 +1,20 @@ +package com.service.impl; + +import com.entity.User; +import com.mapper.UserMapper; +import com.service.UserService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author 刘宇豪 + * @since 2024年12月28日 + */ +@Service +public class UserServiceImpl extends ServiceImpl implements UserService { + +} diff --git a/device/src/main/resources/application.yml b/device/src/main/resources/application.yml new file mode 100644 index 0000000..e1de333 --- /dev/null +++ b/device/src/main/resources/application.yml @@ -0,0 +1,14 @@ +spring: + datasource: + url: jdbc:mysql://localhost:3306/a?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8 + username: "root" + password: "013013" + driver-class-name: com.mysql.cj.jdbc.Driver +mybatis-plus: + mapperLocations: classpath:/mapper/*Mapper.xml + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl +server: + port: 80 + tomcat: + basedir: /home/tmp \ No newline at end of file diff --git a/device/src/main/resources/mapper/DevicecategoryMapper.xml b/device/src/main/resources/mapper/DevicecategoryMapper.xml new file mode 100644 index 0000000..1b5d7b0 --- /dev/null +++ b/device/src/main/resources/mapper/DevicecategoryMapper.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + CategoryID, CategoryName + + + diff --git a/device/src/main/resources/mapper/LocationMapper.xml b/device/src/main/resources/mapper/LocationMapper.xml new file mode 100644 index 0000000..a53f180 --- /dev/null +++ b/device/src/main/resources/mapper/LocationMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + LocationID, LocationName, LocationDescription + + + diff --git a/device/src/main/resources/mapper/MaintenancerecordMapper.xml b/device/src/main/resources/mapper/MaintenancerecordMapper.xml new file mode 100644 index 0000000..dcd26a1 --- /dev/null +++ b/device/src/main/resources/mapper/MaintenancerecordMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + MaintenanceID, DeviceID, MaintenanceType, MaintenanceDate, Technician, MaintenanceDetails, MaintenanceCost, NextMaintenanceDate + + + diff --git a/device/src/main/resources/mapper/OperationlogMapper.xml b/device/src/main/resources/mapper/OperationlogMapper.xml new file mode 100644 index 0000000..bd25fc1 --- /dev/null +++ b/device/src/main/resources/mapper/OperationlogMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + LogID, OperationType, OperationTime, OperationDescription + + + diff --git a/device/src/main/resources/mapper/RoleMapper.xml b/device/src/main/resources/mapper/RoleMapper.xml new file mode 100644 index 0000000..bd07b02 --- /dev/null +++ b/device/src/main/resources/mapper/RoleMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + RoleID, RoleName, PermissionDescription + + + diff --git a/device/src/main/resources/mapper/ScraprecordMapper.xml b/device/src/main/resources/mapper/ScraprecordMapper.xml new file mode 100644 index 0000000..1bf8c4a --- /dev/null +++ b/device/src/main/resources/mapper/ScraprecordMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + ScrapID, DeviceID, ScrapDate, ScrapReason, DisposalMethod + + + diff --git a/device/src/main/resources/mapper/SupplierMapper.xml b/device/src/main/resources/mapper/SupplierMapper.xml new file mode 100644 index 0000000..3d0d7dd --- /dev/null +++ b/device/src/main/resources/mapper/SupplierMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + SupplierID, SupplierName, ContactPerson, ContactPhone, Address + + + diff --git a/device/src/main/resources/mapper/UsagerecordMapper.xml b/device/src/main/resources/mapper/UsagerecordMapper.xml new file mode 100644 index 0000000..d5978d0 --- /dev/null +++ b/device/src/main/resources/mapper/UsagerecordMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + UsageID, DeviceID, UserID, UsageDate, UsageTime, UsageType, UsageDesc + + + diff --git a/device/src/main/resources/mapper/UserMapper.xml b/device/src/main/resources/mapper/UserMapper.xml new file mode 100644 index 0000000..c6d0a2a --- /dev/null +++ b/device/src/main/resources/mapper/UserMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + UserID, UserName, Password, Role + + + diff --git a/device/src/main/resources/static/css/landc.css b/device/src/main/resources/static/css/landc.css new file mode 100644 index 0000000..ba0e970 --- /dev/null +++ b/device/src/main/resources/static/css/landc.css @@ -0,0 +1,83 @@ +*{ + margin: 0; + padding: 0; +} +body{ + background-image: url("../images/bg2.jpg"); +} +#main{ + background-color: rgba(255, 255, 255, 0.9); + width: 400px; + height: 500px; + margin: 60px auto 0rem; + border-radius: 15px; +} +.lo{ + width: 350px; + height: 80px; + border-bottom: 1px solid black; + margin: 0 auto; +} +/* .lo::after{ + content: ""; + display: block; + clear: both; +} */ +#top{ + width: 100%; + height: 100px; + margin: 0 auto ; + background-color: rgba(120, 120, 120, 0.3); + color: aliceblue; + font-size: 30px; + text-align: center; + line-height: 100px; + } +.bg{ + width: 20px; + height: 20px; + background-image: url("../images/icon-login.png"); + float: left; + margin-top: 45px; +} +.inp{ + margin-top: 45px; + float: left; + background-color: transparent; + border: 0; + outline: none; +} +.t1{ + background-position:-52px 0; +} +.t2{ + background-position:-104px 0; +} +#xl{ + width: 350px; + height: 50px; + text-align: center; + + margin: 30px auto 0; + display: block; +} +#btn{ + width: 350px; + height: 50px; + text-align: center; + background-color: rgba(0, 20, 255, 0.9); + margin: 30px auto 0; + display: block; + /* border: 0; */ + color: white; + +} +#foot{ + margin-top: 50px; + color: white; + text-align: center; +} +#a1{ + color: white; + text-decoration: none; +} \ No newline at end of file diff --git a/device/src/main/resources/static/device.html b/device/src/main/resources/static/device.html new file mode 100644 index 0000000..a66a396 --- /dev/null +++ b/device/src/main/resources/static/device.html @@ -0,0 +1,293 @@ + + + + + + + + + + + + + + + + +
+ + + 查找 + 运行 + + + + + + + + + + + + + + + 取 消 + 确 定 + + + + + + + + + + + + 取 消 + 确 定 + + + +
+ + + + \ No newline at end of file diff --git a/device/src/main/resources/static/index.html b/device/src/main/resources/static/index.html new file mode 100644 index 0000000..1746eba --- /dev/null +++ b/device/src/main/resources/static/index.html @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + +
+ + + + + + + 设备管理 + 维护管理 + + + + + 操作日志管理 + 报废记录管理 + 用户日志 + + + + + + 供应商管理 + + + + + + + + +
+ + + + + \ No newline at end of file diff --git a/device/src/main/resources/static/js/axios.min.js b/device/src/main/resources/static/js/axios.min.js new file mode 100644 index 0000000..2d03054 --- /dev/null +++ b/device/src/main/resources/static/js/axios.min.js @@ -0,0 +1,3 @@ +/* axios v0.20.0 | (c) 2020 by Matt Zabriskie */ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.axios=t():e.axios=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){"use strict";function r(e){var t=new s(e),n=i(s.prototype.request,t);return o.extend(n,s.prototype,t),o.extend(n,t),n}var o=n(2),i=n(3),s=n(4),a=n(22),u=n(10),c=r(u);c.Axios=s,c.create=function(e){return r(a(c.defaults,e))},c.Cancel=n(23),c.CancelToken=n(24),c.isCancel=n(9),c.all=function(e){return Promise.all(e)},c.spread=n(25),e.exports=c,e.exports.default=c},function(e,t,n){"use strict";function r(e){return"[object Array]"===R.call(e)}function o(e){return"undefined"==typeof e}function i(e){return null!==e&&!o(e)&&null!==e.constructor&&!o(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}function s(e){return"[object ArrayBuffer]"===R.call(e)}function a(e){return"undefined"!=typeof FormData&&e instanceof FormData}function u(e){var t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer}function c(e){return"string"==typeof e}function f(e){return"number"==typeof e}function p(e){return null!==e&&"object"==typeof e}function d(e){if("[object Object]"!==R.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function l(e){return"[object Date]"===R.call(e)}function h(e){return"[object File]"===R.call(e)}function m(e){return"[object Blob]"===R.call(e)}function y(e){return"[object Function]"===R.call(e)}function g(e){return p(e)&&y(e.pipe)}function v(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams}function x(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function w(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)}function b(e,t){if(null!==e&&"undefined"!=typeof e)if("object"!=typeof e&&(e=[e]),r(e))for(var n=0,o=e.length;n=200&&e<300}};u.headers={common:{Accept:"application/json, text/plain, */*"}},i.forEach(["delete","get","head"],function(e){u.headers[e]={}}),i.forEach(["post","put","patch"],function(e){u.headers[e]=i.merge(a)}),e.exports=u},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t){r.forEach(e,function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])})}},function(e,t,n){"use strict";var r=n(2),o=n(13),i=n(16),s=n(5),a=n(17),u=n(20),c=n(21),f=n(14);e.exports=function(e){return new Promise(function(t,n){var p=e.data,d=e.headers;r.isFormData(p)&&delete d["Content-Type"],(r.isBlob(p)||r.isFile(p))&&p.type&&delete d["Content-Type"];var l=new XMLHttpRequest;if(e.auth){var h=e.auth.username||"",m=unescape(encodeURIComponent(e.auth.password))||"";d.Authorization="Basic "+btoa(h+":"+m)}var y=a(e.baseURL,e.url);if(l.open(e.method.toUpperCase(),s(y,e.params,e.paramsSerializer),!0),l.timeout=e.timeout,l.onreadystatechange=function(){if(l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))){var r="getAllResponseHeaders"in l?u(l.getAllResponseHeaders()):null,i=e.responseType&&"text"!==e.responseType?l.response:l.responseText,s={data:i,status:l.status,statusText:l.statusText,headers:r,config:e,request:l};o(t,n,s),l=null}},l.onabort=function(){l&&(n(f("Request aborted",e,"ECONNABORTED",l)),l=null)},l.onerror=function(){n(f("Network Error",e,null,l)),l=null},l.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(f(t,e,"ECONNABORTED",l)),l=null},r.isStandardBrowserEnv()){var g=(e.withCredentials||c(y))&&e.xsrfCookieName?i.read(e.xsrfCookieName):void 0;g&&(d[e.xsrfHeaderName]=g)}if("setRequestHeader"in l&&r.forEach(d,function(e,t){"undefined"==typeof p&&"content-type"===t.toLowerCase()?delete d[t]:l.setRequestHeader(t,e)}),r.isUndefined(e.withCredentials)||(l.withCredentials=!!e.withCredentials),e.responseType)try{l.responseType=e.responseType}catch(t){if("json"!==e.responseType)throw t}"function"==typeof e.onDownloadProgress&&l.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then(function(e){l&&(l.abort(),n(e),l=null)}),p||(p=null),l.send(p)})}},function(e,t,n){"use strict";var r=n(14);e.exports=function(e,t,n){var o=n.config.validateStatus;n.status&&o&&!o(n.status)?t(r("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)}},function(e,t,n){"use strict";var r=n(15);e.exports=function(e,t,n,o,i){var s=new Error(e);return r(s,t,n,o,i)}},function(e,t){"use strict";e.exports=function(e,t,n,r,o){return e.config=t,n&&(e.code=n),e.request=r,e.response=o,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},function(e,t,n){"use strict";var r=n(2);e.exports=r.isStandardBrowserEnv()?function(){return{write:function(e,t,n,o,i,s){var a=[];a.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),r.isString(o)&&a.push("path="+o),r.isString(i)&&a.push("domain="+i),s===!0&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},function(e,t,n){"use strict";var r=n(18),o=n(19);e.exports=function(e,t){return e&&!r(t)?o(e,t):t}},function(e,t){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},function(e,t){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},function(e,t,n){"use strict";var r=n(2),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,i,s={};return e?(r.forEach(e.split("\n"),function(e){if(i=e.indexOf(":"),t=r.trim(e.substr(0,i)).toLowerCase(),n=r.trim(e.substr(i+1)),t){if(s[t]&&o.indexOf(t)>=0)return;"set-cookie"===t?s[t]=(s[t]?s[t]:[]).concat([n]):s[t]=s[t]?s[t]+", "+n:n}}),s):s}},function(e,t,n){"use strict";var r=n(2);e.exports=r.isStandardBrowserEnv()?function(){function e(e){var t=e;return n&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,n=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(n){var o=r.isString(n)?e(n):n;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t){function n(e,t){return r.isPlainObject(e)&&r.isPlainObject(t)?r.merge(e,t):r.isPlainObject(t)?r.merge({},t):r.isArray(t)?t.slice():t}function o(o){r.isUndefined(t[o])?r.isUndefined(e[o])||(i[o]=n(void 0,e[o])):i[o]=n(e[o],t[o])}t=t||{};var i={},s=["url","method","data"],a=["headers","auth","proxy","params"],u=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],c=["validateStatus"];r.forEach(s,function(e){r.isUndefined(t[e])||(i[e]=n(void 0,t[e]))}),r.forEach(a,o),r.forEach(u,function(o){r.isUndefined(t[o])?r.isUndefined(e[o])||(i[o]=n(void 0,e[o])):i[o]=n(void 0,t[o])}),r.forEach(c,function(r){r in t?i[r]=n(e[r],t[r]):r in e&&(i[r]=n(void 0,e[r]))});var f=s.concat(a).concat(u).concat(c),p=Object.keys(e).concat(Object.keys(t)).filter(function(e){return f.indexOf(e)===-1});return r.forEach(p,o),i}},function(e,t){"use strict";function n(e){this.message=e}n.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},n.prototype.__CANCEL__=!0,e.exports=n},function(e,t,n){"use strict";function r(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise(function(e){t=e});var n=this;e(function(e){n.reason||(n.reason=new o(e),t(n.reason))})}var o=n(23);r.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},r.source=function(){var e,t=new r(function(t){e=t});return{token:t,cancel:e}},e.exports=r},function(e,t){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}}])}); +//# sourceMappingURL=axios.min.map \ No newline at end of file diff --git a/device/src/main/resources/static/js/element.js b/device/src/main/resources/static/js/element.js new file mode 100644 index 0000000..6d6592f --- /dev/null +++ b/device/src/main/resources/static/js/element.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("vue")):"function"==typeof define&&define.amd?define("ELEMENT",["vue"],t):"object"==typeof exports?exports.ELEMENT=t(require("vue")):e.ELEMENT=t(e.Vue)}("undefined"!=typeof self?self:this,function(e){return function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s=51)}([function(t,n){t.exports=e},function(e,t,n){var i=n(4);e.exports=function(e,t,n){return void 0===n?i(e,t,!1):i(e,n,!1!==t)}},function(e,t,n){var i;!function(r){"use strict";var o={},s=/d{1,4}|M{1,4}|yy(?:yy)?|S{1,3}|Do|ZZ|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g,a="[^\\s]+",l=/\[([^]*?)\]/gm,u=function(){};function c(e,t){for(var n=[],i=0,r=e.length;i3?0:(e-e%10!=10)*e%10]}};var g={D:function(e){return e.getDay()},DD:function(e){return d(e.getDay())},Do:function(e,t){return t.DoFn(e.getDate())},d:function(e){return e.getDate()},dd:function(e){return d(e.getDate())},ddd:function(e,t){return t.dayNamesShort[e.getDay()]},dddd:function(e,t){return t.dayNames[e.getDay()]},M:function(e){return e.getMonth()+1},MM:function(e){return d(e.getMonth()+1)},MMM:function(e,t){return t.monthNamesShort[e.getMonth()]},MMMM:function(e,t){return t.monthNames[e.getMonth()]},yy:function(e){return d(String(e.getFullYear()),4).substr(2)},yyyy:function(e){return d(e.getFullYear(),4)},h:function(e){return e.getHours()%12||12},hh:function(e){return d(e.getHours()%12||12)},H:function(e){return e.getHours()},HH:function(e){return d(e.getHours())},m:function(e){return e.getMinutes()},mm:function(e){return d(e.getMinutes())},s:function(e){return e.getSeconds()},ss:function(e){return d(e.getSeconds())},S:function(e){return Math.round(e.getMilliseconds()/100)},SS:function(e){return d(Math.round(e.getMilliseconds()/10),2)},SSS:function(e){return d(e.getMilliseconds(),3)},a:function(e,t){return e.getHours()<12?t.amPm[0]:t.amPm[1]},A:function(e,t){return e.getHours()<12?t.amPm[0].toUpperCase():t.amPm[1].toUpperCase()},ZZ:function(e){var t=e.getTimezoneOffset();return(t>0?"-":"+")+d(100*Math.floor(Math.abs(t)/60)+Math.abs(t)%60,4)}},y={d:["\\d\\d?",function(e,t){e.day=t}],Do:["\\d\\d?"+a,function(e,t){e.day=parseInt(t,10)}],M:["\\d\\d?",function(e,t){e.month=t-1}],yy:["\\d\\d?",function(e,t){var n=+(""+(new Date).getFullYear()).substr(0,2);e.year=""+(t>68?n-1:n)+t}],h:["\\d\\d?",function(e,t){e.hour=t}],m:["\\d\\d?",function(e,t){e.minute=t}],s:["\\d\\d?",function(e,t){e.second=t}],yyyy:["\\d{4}",function(e,t){e.year=t}],S:["\\d",function(e,t){e.millisecond=100*t}],SS:["\\d{2}",function(e,t){e.millisecond=10*t}],SSS:["\\d{3}",function(e,t){e.millisecond=t}],D:["\\d\\d?",u],ddd:[a,u],MMM:[a,h("monthNamesShort")],MMMM:[a,h("monthNames")],a:[a,function(e,t,n){var i=t.toLowerCase();i===n.amPm[0]?e.isPm=!1:i===n.amPm[1]&&(e.isPm=!0)}],ZZ:["[^\\s]*?[\\+\\-]\\d\\d:?\\d\\d|[^\\s]*?Z",function(e,t){var n,i=(t+"").match(/([+-]|\d\d)/gi);i&&(n=60*i[1]+parseInt(i[2],10),e.timezoneOffset="+"===i[0]?n:-n)}]};y.dd=y.d,y.dddd=y.ddd,y.DD=y.D,y.mm=y.m,y.hh=y.H=y.HH=y.h,y.MM=y.M,y.ss=y.s,y.A=y.a,o.masks={default:"ddd MMM dd yyyy HH:mm:ss",shortDate:"M/D/yy",mediumDate:"MMM d, yyyy",longDate:"MMMM d, yyyy",fullDate:"dddd, MMMM d, yyyy",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"},o.format=function(e,t,n){var i=n||o.i18n;if("number"==typeof e&&(e=new Date(e)),"[object Date]"!==Object.prototype.toString.call(e)||isNaN(e.getTime()))throw new Error("Invalid Date in fecha.format");t=o.masks[t]||t||o.masks.default;var r=[];return(t=(t=t.replace(l,function(e,t){return r.push(t),"@@@"})).replace(s,function(t){return t in g?g[t](e,i):t.slice(1,t.length-1)})).replace(/@@@/g,function(){return r.shift()})},o.parse=function(e,t,n){var i=n||o.i18n;if("string"!=typeof t)throw new Error("Invalid format in fecha.parse");if(t=o.masks[t]||t,e.length>1e3)return null;var r={},a=[],u=[];t=t.replace(l,function(e,t){return u.push(t),"@@@"});var c,h=(c=t,c.replace(/[|\\{()[^$+*?.-]/g,"\\$&")).replace(s,function(e){if(y[e]){var t=y[e];return a.push(t[1]),"("+t[0]+")"}return e});h=h.replace(/@@@/g,function(){return u.shift()});var d=e.match(new RegExp(h,"i"));if(!d)return null;for(var f=1;fe?u():!0!==t&&(r=setTimeout(i?function(){r=void 0}:u,void 0===i?e-a:e))}}},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t){var n=/^(attrs|props|on|nativeOn|class|style|hook)$/;function i(e,t){return function(){e&&e.apply(this,arguments),t&&t.apply(this,arguments)}}e.exports=function(e){return e.reduce(function(e,t){var r,o,s,a,l;for(s in t)if(r=e[s],o=t[s],r&&n.test(s))if("class"===s&&("string"==typeof r&&(l=r,e[s]=r={},r[l]=!0),"string"==typeof o&&(l=o,t[s]=o={},o[l]=!0)),"on"===s||"nativeOn"===s||"hook"===s)for(a in o)r[a]=i(r[a],o[a]);else if(Array.isArray(r))e[s]=r.concat(o);else if(Array.isArray(o))e[s]=[r].concat(o);else for(a in o)r[a]=o[a];else e[s]=t[s];return e},{})}},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){"use strict";t.__esModule=!0;var i,r=n(57),o=(i=r)&&i.__esModule?i:{default:i};t.default=o.default||function(e){for(var t=1;t>>1,z=[["ary",k],["bind",g],["bindKey",y],["curry",_],["curryRight",w],["flip",D],["partial",x],["partialRight",C],["rearg",S]],R="[object Arguments]",H="[object Array]",j="[object AsyncFunction]",W="[object Boolean]",q="[object Date]",Y="[object DOMException]",K="[object Error]",U="[object Function]",G="[object GeneratorFunction]",X="[object Map]",Z="[object Number]",J="[object Null]",Q="[object Object]",ee="[object Proxy]",te="[object RegExp]",ne="[object Set]",ie="[object String]",re="[object Symbol]",oe="[object Undefined]",se="[object WeakMap]",ae="[object WeakSet]",le="[object ArrayBuffer]",ue="[object DataView]",ce="[object Float32Array]",he="[object Float64Array]",de="[object Int8Array]",fe="[object Int16Array]",pe="[object Int32Array]",me="[object Uint8Array]",ve="[object Uint8ClampedArray]",ge="[object Uint16Array]",ye="[object Uint32Array]",be=/\b__p \+= '';/g,_e=/\b(__p \+=) '' \+/g,we=/(__e\(.*?\)|\b__t\)) \+\n'';/g,xe=/&(?:amp|lt|gt|quot|#39);/g,Ce=/[&<>"']/g,ke=RegExp(xe.source),Se=RegExp(Ce.source),De=/<%-([\s\S]+?)%>/g,Ee=/<%([\s\S]+?)%>/g,$e=/<%=([\s\S]+?)%>/g,Te=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Me=/^\w*$/,Ne=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Oe=/[\\^$.*+?()[\]{}|]/g,Pe=RegExp(Oe.source),Ie=/^\s+|\s+$/g,Ae=/^\s+/,Fe=/\s+$/,Le=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Ve=/\{\n\/\* \[wrapped with (.+)\] \*/,Be=/,? & /,ze=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Re=/\\(\\)?/g,He=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,je=/\w*$/,We=/^[-+]0x[0-9a-f]+$/i,qe=/^0b[01]+$/i,Ye=/^\[object .+?Constructor\]$/,Ke=/^0o[0-7]+$/i,Ue=/^(?:0|[1-9]\d*)$/,Ge=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Xe=/($^)/,Ze=/['\n\r\u2028\u2029\\]/g,Je="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Qe="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",et="[\\ud800-\\udfff]",tt="["+Qe+"]",nt="["+Je+"]",it="\\d+",rt="[\\u2700-\\u27bf]",ot="[a-z\\xdf-\\xf6\\xf8-\\xff]",st="[^\\ud800-\\udfff"+Qe+it+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",at="\\ud83c[\\udffb-\\udfff]",lt="[^\\ud800-\\udfff]",ut="(?:\\ud83c[\\udde6-\\uddff]){2}",ct="[\\ud800-\\udbff][\\udc00-\\udfff]",ht="[A-Z\\xc0-\\xd6\\xd8-\\xde]",dt="(?:"+ot+"|"+st+")",ft="(?:"+ht+"|"+st+")",pt="(?:"+nt+"|"+at+")"+"?",mt="[\\ufe0e\\ufe0f]?"+pt+("(?:\\u200d(?:"+[lt,ut,ct].join("|")+")[\\ufe0e\\ufe0f]?"+pt+")*"),vt="(?:"+[rt,ut,ct].join("|")+")"+mt,gt="(?:"+[lt+nt+"?",nt,ut,ct,et].join("|")+")",yt=RegExp("['’]","g"),bt=RegExp(nt,"g"),_t=RegExp(at+"(?="+at+")|"+gt+mt,"g"),wt=RegExp([ht+"?"+ot+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[tt,ht,"$"].join("|")+")",ft+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[tt,ht+dt,"$"].join("|")+")",ht+"?"+dt+"+(?:['’](?:d|ll|m|re|s|t|ve))?",ht+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",it,vt].join("|"),"g"),xt=RegExp("[\\u200d\\ud800-\\udfff"+Je+"\\ufe0e\\ufe0f]"),Ct=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,kt=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],St=-1,Dt={};Dt[ce]=Dt[he]=Dt[de]=Dt[fe]=Dt[pe]=Dt[me]=Dt[ve]=Dt[ge]=Dt[ye]=!0,Dt[R]=Dt[H]=Dt[le]=Dt[W]=Dt[ue]=Dt[q]=Dt[K]=Dt[U]=Dt[X]=Dt[Z]=Dt[Q]=Dt[te]=Dt[ne]=Dt[ie]=Dt[se]=!1;var Et={};Et[R]=Et[H]=Et[le]=Et[ue]=Et[W]=Et[q]=Et[ce]=Et[he]=Et[de]=Et[fe]=Et[pe]=Et[X]=Et[Z]=Et[Q]=Et[te]=Et[ne]=Et[ie]=Et[re]=Et[me]=Et[ve]=Et[ge]=Et[ye]=!0,Et[K]=Et[U]=Et[se]=!1;var $t={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Tt=parseFloat,Mt=parseInt,Nt="object"==typeof e&&e&&e.Object===Object&&e,Ot="object"==typeof self&&self&&self.Object===Object&&self,Pt=Nt||Ot||Function("return this")(),It=t&&!t.nodeType&&t,At=It&&"object"==typeof i&&i&&!i.nodeType&&i,Ft=At&&At.exports===It,Lt=Ft&&Nt.process,Vt=function(){try{var e=At&&At.require&&At.require("util").types;return e||Lt&&Lt.binding&&Lt.binding("util")}catch(e){}}(),Bt=Vt&&Vt.isArrayBuffer,zt=Vt&&Vt.isDate,Rt=Vt&&Vt.isMap,Ht=Vt&&Vt.isRegExp,jt=Vt&&Vt.isSet,Wt=Vt&&Vt.isTypedArray;function qt(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function Yt(e,t,n,i){for(var r=-1,o=null==e?0:e.length;++r-1}function Jt(e,t,n){for(var i=-1,r=null==e?0:e.length;++i-1;);return n}function wn(e,t){for(var n=e.length;n--&&ln(t,e[n],0)>-1;);return n}var xn=fn({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),Cn=fn({"&":"&","<":"<",">":">",'"':""","'":"'"});function kn(e){return"\\"+$t[e]}function Sn(e){return xt.test(e)}function Dn(e){var t=-1,n=Array(e.size);return e.forEach(function(e,i){n[++t]=[i,e]}),n}function En(e,t){return function(n){return e(t(n))}}function $n(e,t){for(var n=-1,i=e.length,r=0,o=[];++n",""":'"',"'":"'"});var An=function e(t){var n,i=(t=null==t?Pt:An.defaults(Pt.Object(),t,An.pick(Pt,kt))).Array,r=t.Date,Je=t.Error,Qe=t.Function,et=t.Math,tt=t.Object,nt=t.RegExp,it=t.String,rt=t.TypeError,ot=i.prototype,st=Qe.prototype,at=tt.prototype,lt=t["__core-js_shared__"],ut=st.toString,ct=at.hasOwnProperty,ht=0,dt=(n=/[^.]+$/.exec(lt&<.keys&<.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",ft=at.toString,pt=ut.call(tt),mt=Pt._,vt=nt("^"+ut.call(ct).replace(Oe,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),gt=Ft?t.Buffer:o,_t=t.Symbol,xt=t.Uint8Array,$t=gt?gt.allocUnsafe:o,Nt=En(tt.getPrototypeOf,tt),Ot=tt.create,It=at.propertyIsEnumerable,At=ot.splice,Lt=_t?_t.isConcatSpreadable:o,Vt=_t?_t.iterator:o,on=_t?_t.toStringTag:o,fn=function(){try{var e=zo(tt,"defineProperty");return e({},"",{}),e}catch(e){}}(),Fn=t.clearTimeout!==Pt.clearTimeout&&t.clearTimeout,Ln=r&&r.now!==Pt.Date.now&&r.now,Vn=t.setTimeout!==Pt.setTimeout&&t.setTimeout,Bn=et.ceil,zn=et.floor,Rn=tt.getOwnPropertySymbols,Hn=gt?gt.isBuffer:o,jn=t.isFinite,Wn=ot.join,qn=En(tt.keys,tt),Yn=et.max,Kn=et.min,Un=r.now,Gn=t.parseInt,Xn=et.random,Zn=ot.reverse,Jn=zo(t,"DataView"),Qn=zo(t,"Map"),ei=zo(t,"Promise"),ti=zo(t,"Set"),ni=zo(t,"WeakMap"),ii=zo(tt,"create"),ri=ni&&new ni,oi={},si=hs(Jn),ai=hs(Qn),li=hs(ei),ui=hs(ti),ci=hs(ni),hi=_t?_t.prototype:o,di=hi?hi.valueOf:o,fi=hi?hi.toString:o;function pi(e){if($a(e)&&!ga(e)&&!(e instanceof yi)){if(e instanceof gi)return e;if(ct.call(e,"__wrapped__"))return ds(e)}return new gi(e)}var mi=function(){function e(){}return function(t){if(!Ea(t))return{};if(Ot)return Ot(t);e.prototype=t;var n=new e;return e.prototype=o,n}}();function vi(){}function gi(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=o}function yi(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=L,this.__views__=[]}function bi(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t=t?e:t)),e}function Fi(e,t,n,i,r,s){var a,l=t&d,u=t&f,c=t&p;if(n&&(a=r?n(e,i,r,s):n(e)),a!==o)return a;if(!Ea(e))return e;var h=ga(e);if(h){if(a=function(e){var t=e.length,n=new e.constructor(t);return t&&"string"==typeof e[0]&&ct.call(e,"index")&&(n.index=e.index,n.input=e.input),n}(e),!l)return io(e,a)}else{var m=jo(e),v=m==U||m==G;if(wa(e))return Zr(e,l);if(m==Q||m==R||v&&!r){if(a=u||v?{}:qo(e),!l)return u?function(e,t){return ro(e,Ho(e),t)}(e,function(e,t){return e&&ro(t,ol(t),e)}(a,e)):function(e,t){return ro(e,Ro(e),t)}(e,Oi(a,e))}else{if(!Et[m])return r?e:{};a=function(e,t,n){var i,r,o,s=e.constructor;switch(t){case le:return Jr(e);case W:case q:return new s(+e);case ue:return function(e,t){var n=t?Jr(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case ce:case he:case de:case fe:case pe:case me:case ve:case ge:case ye:return Qr(e,n);case X:return new s;case Z:case ie:return new s(e);case te:return(o=new(r=e).constructor(r.source,je.exec(r))).lastIndex=r.lastIndex,o;case ne:return new s;case re:return i=e,di?tt(di.call(i)):{}}}(e,m,l)}}s||(s=new Ci);var g=s.get(e);if(g)return g;if(s.set(e,a),Pa(e))return e.forEach(function(i){a.add(Fi(i,t,n,i,e,s))}),a;if(Ta(e))return e.forEach(function(i,r){a.set(r,Fi(i,t,n,r,e,s))}),a;var y=h?o:(c?u?Po:Oo:u?ol:rl)(e);return Kt(y||e,function(i,r){y&&(i=e[r=i]),Ti(a,r,Fi(i,t,n,r,e,s))}),a}function Li(e,t,n){var i=n.length;if(null==e)return!i;for(e=tt(e);i--;){var r=n[i],s=t[r],a=e[r];if(a===o&&!(r in e)||!s(a))return!1}return!0}function Vi(e,t,n){if("function"!=typeof e)throw new rt(l);return rs(function(){e.apply(o,n)},t)}function Bi(e,t,n,i){var r=-1,o=Zt,a=!0,l=e.length,u=[],c=t.length;if(!l)return u;n&&(t=Qt(t,gn(n))),i?(o=Jt,a=!1):t.length>=s&&(o=bn,a=!1,t=new xi(t));e:for(;++r-1},_i.prototype.set=function(e,t){var n=this.__data__,i=Mi(n,e);return i<0?(++this.size,n.push([e,t])):n[i][1]=t,this},wi.prototype.clear=function(){this.size=0,this.__data__={hash:new bi,map:new(Qn||_i),string:new bi}},wi.prototype.delete=function(e){var t=Vo(this,e).delete(e);return this.size-=t?1:0,t},wi.prototype.get=function(e){return Vo(this,e).get(e)},wi.prototype.has=function(e){return Vo(this,e).has(e)},wi.prototype.set=function(e,t){var n=Vo(this,e),i=n.size;return n.set(e,t),this.size+=n.size==i?0:1,this},xi.prototype.add=xi.prototype.push=function(e){return this.__data__.set(e,u),this},xi.prototype.has=function(e){return this.__data__.has(e)},Ci.prototype.clear=function(){this.__data__=new _i,this.size=0},Ci.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},Ci.prototype.get=function(e){return this.__data__.get(e)},Ci.prototype.has=function(e){return this.__data__.has(e)},Ci.prototype.set=function(e,t){var n=this.__data__;if(n instanceof _i){var i=n.__data__;if(!Qn||i.length0&&n(a)?t>1?qi(a,t-1,n,i,r):en(r,a):i||(r[r.length]=a)}return r}var Yi=lo(),Ki=lo(!0);function Ui(e,t){return e&&Yi(e,t,rl)}function Gi(e,t){return e&&Ki(e,t,rl)}function Xi(e,t){return Xt(t,function(t){return ka(e[t])})}function Zi(e,t){for(var n=0,i=(t=Kr(t,e)).length;null!=e&&nt}function tr(e,t){return null!=e&&ct.call(e,t)}function nr(e,t){return null!=e&&t in tt(e)}function ir(e,t,n){for(var r=n?Jt:Zt,s=e[0].length,a=e.length,l=a,u=i(a),c=1/0,h=[];l--;){var d=e[l];l&&t&&(d=Qt(d,gn(t))),c=Kn(d.length,c),u[l]=!n&&(t||s>=120&&d.length>=120)?new xi(l&&d):o}d=e[0];var f=-1,p=u[0];e:for(;++f=a)return l;var u=n[i];return l*("desc"==u?-1:1)}}return e.index-t.index}(e,t,n)})}function br(e,t,n){for(var i=-1,r=t.length,o={};++i-1;)a!==e&&At.call(a,l,1),At.call(e,l,1);return e}function wr(e,t){for(var n=e?t.length:0,i=n-1;n--;){var r=t[n];if(n==i||r!==o){var o=r;Ko(r)?At.call(e,r,1):Br(e,r)}}return e}function xr(e,t){return e+zn(Xn()*(t-e+1))}function Cr(e,t){var n="";if(!e||t<1||t>I)return n;do{t%2&&(n+=e),(t=zn(t/2))&&(e+=e)}while(t);return n}function kr(e,t){return os(ts(e,t,Ml),e+"")}function Sr(e){return Si(fl(e))}function Dr(e,t){var n=fl(e);return ls(n,Ai(t,0,n.length))}function Er(e,t,n,i){if(!Ea(e))return e;for(var r=-1,s=(t=Kr(t,e)).length,a=s-1,l=e;null!=l&&++ro?0:o+t),(n=n>o?o:n)<0&&(n+=o),o=t>n?0:n-t>>>0,t>>>=0;for(var s=i(o);++r>>1,s=e[o];null!==s&&!Aa(s)&&(n?s<=t:s=s){var c=t?null:ko(e);if(c)return Mn(c);a=!1,r=bn,u=new xi}else u=t?[]:l;e:for(;++i=i?e:Nr(e,t,n)}var Xr=Fn||function(e){return Pt.clearTimeout(e)};function Zr(e,t){if(t)return e.slice();var n=e.length,i=$t?$t(n):new e.constructor(n);return e.copy(i),i}function Jr(e){var t=new e.constructor(e.byteLength);return new xt(t).set(new xt(e)),t}function Qr(e,t){var n=t?Jr(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function eo(e,t){if(e!==t){var n=e!==o,i=null===e,r=e==e,s=Aa(e),a=t!==o,l=null===t,u=t==t,c=Aa(t);if(!l&&!c&&!s&&e>t||s&&a&&u&&!l&&!c||i&&a&&u||!n&&u||!r)return 1;if(!i&&!s&&!c&&e1?n[r-1]:o,a=r>2?n[2]:o;for(s=e.length>3&&"function"==typeof s?(r--,s):o,a&&Uo(n[0],n[1],a)&&(s=r<3?o:s,r=1),t=tt(t);++i-1?r[s?t[a]:a]:o}}function po(e){return No(function(t){var n=t.length,i=n,r=gi.prototype.thru;for(e&&t.reverse();i--;){var s=t[i];if("function"!=typeof s)throw new rt(l);if(r&&!a&&"wrapper"==Ao(s))var a=new gi([],!0)}for(i=a?i:n;++i1&&_.reverse(),d&&cl))return!1;var c=s.get(e);if(c&&s.get(t))return c==t;var h=-1,d=!0,f=n&v?new xi:o;for(s.set(e,t),s.set(t,e);++h-1&&e%1==0&&e1?"& ":"")+t[i],t=t.join(n>2?", ":" "),e.replace(Le,"{\n/* [wrapped with "+t+"] */\n")}(i,function(e,t){return Kt(z,function(n){var i="_."+n[0];t&n[1]&&!Zt(e,i)&&e.push(i)}),e.sort()}(function(e){var t=e.match(Ve);return t?t[1].split(Be):[]}(i),n)))}function as(e){var t=0,n=0;return function(){var i=Un(),r=M-(i-n);if(n=i,r>0){if(++t>=T)return arguments[0]}else t=0;return e.apply(o,arguments)}}function ls(e,t){var n=-1,i=e.length,r=i-1;for(t=t===o?i:t;++n1?e[t-1]:o;return n="function"==typeof n?(e.pop(),n):o,Os(e,n)});function Bs(e){var t=pi(e);return t.__chain__=!0,t}function zs(e,t){return t(e)}var Rs=No(function(e){var t=e.length,n=t?e[0]:0,i=this.__wrapped__,r=function(t){return Ii(t,e)};return!(t>1||this.__actions__.length)&&i instanceof yi&&Ko(n)?((i=i.slice(n,+n+(t?1:0))).__actions__.push({func:zs,args:[r],thisArg:o}),new gi(i,this.__chain__).thru(function(e){return t&&!e.length&&e.push(o),e})):this.thru(r)});var Hs=oo(function(e,t,n){ct.call(e,n)?++e[n]:Pi(e,n,1)});var js=fo(vs),Ws=fo(gs);function qs(e,t){return(ga(e)?Kt:zi)(e,Lo(t,3))}function Ys(e,t){return(ga(e)?Ut:Ri)(e,Lo(t,3))}var Ks=oo(function(e,t,n){ct.call(e,n)?e[n].push(t):Pi(e,n,[t])});var Us=kr(function(e,t,n){var r=-1,o="function"==typeof t,s=ba(e)?i(e.length):[];return zi(e,function(e){s[++r]=o?qt(t,e,n):rr(e,t,n)}),s}),Gs=oo(function(e,t,n){Pi(e,n,t)});function Xs(e,t){return(ga(e)?Qt:fr)(e,Lo(t,3))}var Zs=oo(function(e,t,n){e[n?0:1].push(t)},function(){return[[],[]]});var Js=kr(function(e,t){if(null==e)return[];var n=t.length;return n>1&&Uo(e,t[0],t[1])?t=[]:n>2&&Uo(t[0],t[1],t[2])&&(t=[t[0]]),yr(e,qi(t,1),[])}),Qs=Ln||function(){return Pt.Date.now()};function ea(e,t,n){return t=n?o:t,t=e&&null==t?e.length:t,Do(e,k,o,o,o,o,t)}function ta(e,t){var n;if("function"!=typeof t)throw new rt(l);return e=Ra(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=o),n}}var na=kr(function(e,t,n){var i=g;if(n.length){var r=$n(n,Fo(na));i|=x}return Do(e,i,t,n,r)}),ia=kr(function(e,t,n){var i=g|y;if(n.length){var r=$n(n,Fo(ia));i|=x}return Do(t,i,e,n,r)});function ra(e,t,n){var i,r,s,a,u,c,h=0,d=!1,f=!1,p=!0;if("function"!=typeof e)throw new rt(l);function m(t){var n=i,s=r;return i=r=o,h=t,a=e.apply(s,n)}function v(e){var n=e-c;return c===o||n>=t||n<0||f&&e-h>=s}function g(){var e=Qs();if(v(e))return y(e);u=rs(g,function(e){var n=t-(e-c);return f?Kn(n,s-(e-h)):n}(e))}function y(e){return u=o,p&&i?m(e):(i=r=o,a)}function b(){var e=Qs(),n=v(e);if(i=arguments,r=this,c=e,n){if(u===o)return function(e){return h=e,u=rs(g,t),d?m(e):a}(c);if(f)return u=rs(g,t),m(c)}return u===o&&(u=rs(g,t)),a}return t=ja(t)||0,Ea(n)&&(d=!!n.leading,s=(f="maxWait"in n)?Yn(ja(n.maxWait)||0,t):s,p="trailing"in n?!!n.trailing:p),b.cancel=function(){u!==o&&Xr(u),h=0,i=c=r=u=o},b.flush=function(){return u===o?a:y(Qs())},b}var oa=kr(function(e,t){return Vi(e,1,t)}),sa=kr(function(e,t,n){return Vi(e,ja(t)||0,n)});function aa(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new rt(l);var n=function(){var i=arguments,r=t?t.apply(this,i):i[0],o=n.cache;if(o.has(r))return o.get(r);var s=e.apply(this,i);return n.cache=o.set(r,s)||o,s};return n.cache=new(aa.Cache||wi),n}function la(e){if("function"!=typeof e)throw new rt(l);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}aa.Cache=wi;var ua=Ur(function(e,t){var n=(t=1==t.length&&ga(t[0])?Qt(t[0],gn(Lo())):Qt(qi(t,1),gn(Lo()))).length;return kr(function(i){for(var r=-1,o=Kn(i.length,n);++r=t}),va=or(function(){return arguments}())?or:function(e){return $a(e)&&ct.call(e,"callee")&&!It.call(e,"callee")},ga=i.isArray,ya=Bt?gn(Bt):function(e){return $a(e)&&Qi(e)==le};function ba(e){return null!=e&&Da(e.length)&&!ka(e)}function _a(e){return $a(e)&&ba(e)}var wa=Hn||jl,xa=zt?gn(zt):function(e){return $a(e)&&Qi(e)==q};function Ca(e){if(!$a(e))return!1;var t=Qi(e);return t==K||t==Y||"string"==typeof e.message&&"string"==typeof e.name&&!Na(e)}function ka(e){if(!Ea(e))return!1;var t=Qi(e);return t==U||t==G||t==j||t==ee}function Sa(e){return"number"==typeof e&&e==Ra(e)}function Da(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=I}function Ea(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function $a(e){return null!=e&&"object"==typeof e}var Ta=Rt?gn(Rt):function(e){return $a(e)&&jo(e)==X};function Ma(e){return"number"==typeof e||$a(e)&&Qi(e)==Z}function Na(e){if(!$a(e)||Qi(e)!=Q)return!1;var t=Nt(e);if(null===t)return!0;var n=ct.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&ut.call(n)==pt}var Oa=Ht?gn(Ht):function(e){return $a(e)&&Qi(e)==te};var Pa=jt?gn(jt):function(e){return $a(e)&&jo(e)==ne};function Ia(e){return"string"==typeof e||!ga(e)&&$a(e)&&Qi(e)==ie}function Aa(e){return"symbol"==typeof e||$a(e)&&Qi(e)==re}var Fa=Wt?gn(Wt):function(e){return $a(e)&&Da(e.length)&&!!Dt[Qi(e)]};var La=wo(dr),Va=wo(function(e,t){return e<=t});function Ba(e){if(!e)return[];if(ba(e))return Ia(e)?Pn(e):io(e);if(Vt&&e[Vt])return function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}(e[Vt]());var t=jo(e);return(t==X?Dn:t==ne?Mn:fl)(e)}function za(e){return e?(e=ja(e))===P||e===-P?(e<0?-1:1)*A:e==e?e:0:0===e?e:0}function Ra(e){var t=za(e),n=t%1;return t==t?n?t-n:t:0}function Ha(e){return e?Ai(Ra(e),0,L):0}function ja(e){if("number"==typeof e)return e;if(Aa(e))return F;if(Ea(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=Ea(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(Ie,"");var n=qe.test(e);return n||Ke.test(e)?Mt(e.slice(2),n?2:8):We.test(e)?F:+e}function Wa(e){return ro(e,ol(e))}function qa(e){return null==e?"":Lr(e)}var Ya=so(function(e,t){if(Jo(t)||ba(t))ro(t,rl(t),e);else for(var n in t)ct.call(t,n)&&Ti(e,n,t[n])}),Ka=so(function(e,t){ro(t,ol(t),e)}),Ua=so(function(e,t,n,i){ro(t,ol(t),e,i)}),Ga=so(function(e,t,n,i){ro(t,rl(t),e,i)}),Xa=No(Ii);var Za=kr(function(e,t){e=tt(e);var n=-1,i=t.length,r=i>2?t[2]:o;for(r&&Uo(t[0],t[1],r)&&(i=1);++n1),t}),ro(e,Po(e),n),i&&(n=Fi(n,d|f|p,To));for(var r=t.length;r--;)Br(n,t[r]);return n});var ul=No(function(e,t){return null==e?{}:function(e,t){return br(e,t,function(t,n){return el(e,n)})}(e,t)});function cl(e,t){if(null==e)return{};var n=Qt(Po(e),function(e){return[e]});return t=Lo(t),br(e,n,function(e,n){return t(e,n[0])})}var hl=So(rl),dl=So(ol);function fl(e){return null==e?[]:yn(e,rl(e))}var pl=co(function(e,t,n){return t=t.toLowerCase(),e+(n?ml(t):t)});function ml(e){return Cl(qa(e).toLowerCase())}function vl(e){return(e=qa(e))&&e.replace(Ge,xn).replace(bt,"")}var gl=co(function(e,t,n){return e+(n?"-":"")+t.toLowerCase()}),yl=co(function(e,t,n){return e+(n?" ":"")+t.toLowerCase()}),bl=uo("toLowerCase");var _l=co(function(e,t,n){return e+(n?"_":"")+t.toLowerCase()});var wl=co(function(e,t,n){return e+(n?" ":"")+Cl(t)});var xl=co(function(e,t,n){return e+(n?" ":"")+t.toUpperCase()}),Cl=uo("toUpperCase");function kl(e,t,n){return e=qa(e),(t=n?o:t)===o?function(e){return Ct.test(e)}(e)?function(e){return e.match(wt)||[]}(e):function(e){return e.match(ze)||[]}(e):e.match(t)||[]}var Sl=kr(function(e,t){try{return qt(e,o,t)}catch(e){return Ca(e)?e:new Je(e)}}),Dl=No(function(e,t){return Kt(t,function(t){t=cs(t),Pi(e,t,na(e[t],e))}),e});function El(e){return function(){return e}}var $l=po(),Tl=po(!0);function Ml(e){return e}function Nl(e){return ur("function"==typeof e?e:Fi(e,d))}var Ol=kr(function(e,t){return function(n){return rr(n,e,t)}}),Pl=kr(function(e,t){return function(n){return rr(e,n,t)}});function Il(e,t,n){var i=rl(t),r=Xi(t,i);null!=n||Ea(t)&&(r.length||!i.length)||(n=t,t=e,e=this,r=Xi(t,rl(t)));var o=!(Ea(n)&&"chain"in n&&!n.chain),s=ka(e);return Kt(r,function(n){var i=t[n];e[n]=i,s&&(e.prototype[n]=function(){var t=this.__chain__;if(o||t){var n=e(this.__wrapped__);return(n.__actions__=io(this.__actions__)).push({func:i,args:arguments,thisArg:e}),n.__chain__=t,n}return i.apply(e,en([this.value()],arguments))})}),e}function Al(){}var Fl=yo(Qt),Ll=yo(Gt),Vl=yo(rn);function Bl(e){return Go(e)?dn(cs(e)):function(e){return function(t){return Zi(t,e)}}(e)}var zl=_o(),Rl=_o(!0);function Hl(){return[]}function jl(){return!1}var Wl=go(function(e,t){return e+t},0),ql=Co("ceil"),Yl=go(function(e,t){return e/t},1),Kl=Co("floor");var Ul,Gl=go(function(e,t){return e*t},1),Xl=Co("round"),Zl=go(function(e,t){return e-t},0);return pi.after=function(e,t){if("function"!=typeof t)throw new rt(l);return e=Ra(e),function(){if(--e<1)return t.apply(this,arguments)}},pi.ary=ea,pi.assign=Ya,pi.assignIn=Ka,pi.assignInWith=Ua,pi.assignWith=Ga,pi.at=Xa,pi.before=ta,pi.bind=na,pi.bindAll=Dl,pi.bindKey=ia,pi.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return ga(e)?e:[e]},pi.chain=Bs,pi.chunk=function(e,t,n){t=(n?Uo(e,t,n):t===o)?1:Yn(Ra(t),0);var r=null==e?0:e.length;if(!r||t<1)return[];for(var s=0,a=0,l=i(Bn(r/t));sr?0:r+n),(i=i===o||i>r?r:Ra(i))<0&&(i+=r),i=n>i?0:Ha(i);n>>0)?(e=qa(e))&&("string"==typeof t||null!=t&&!Oa(t))&&!(t=Lr(t))&&Sn(e)?Gr(Pn(e),0,n):e.split(t,n):[]},pi.spread=function(e,t){if("function"!=typeof e)throw new rt(l);return t=null==t?0:Yn(Ra(t),0),kr(function(n){var i=n[t],r=Gr(n,0,t);return i&&en(r,i),qt(e,this,r)})},pi.tail=function(e){var t=null==e?0:e.length;return t?Nr(e,1,t):[]},pi.take=function(e,t,n){return e&&e.length?Nr(e,0,(t=n||t===o?1:Ra(t))<0?0:t):[]},pi.takeRight=function(e,t,n){var i=null==e?0:e.length;return i?Nr(e,(t=i-(t=n||t===o?1:Ra(t)))<0?0:t,i):[]},pi.takeRightWhile=function(e,t){return e&&e.length?Rr(e,Lo(t,3),!1,!0):[]},pi.takeWhile=function(e,t){return e&&e.length?Rr(e,Lo(t,3)):[]},pi.tap=function(e,t){return t(e),e},pi.throttle=function(e,t,n){var i=!0,r=!0;if("function"!=typeof e)throw new rt(l);return Ea(n)&&(i="leading"in n?!!n.leading:i,r="trailing"in n?!!n.trailing:r),ra(e,t,{leading:i,maxWait:t,trailing:r})},pi.thru=zs,pi.toArray=Ba,pi.toPairs=hl,pi.toPairsIn=dl,pi.toPath=function(e){return ga(e)?Qt(e,cs):Aa(e)?[e]:io(us(qa(e)))},pi.toPlainObject=Wa,pi.transform=function(e,t,n){var i=ga(e),r=i||wa(e)||Fa(e);if(t=Lo(t,4),null==n){var o=e&&e.constructor;n=r?i?new o:[]:Ea(e)&&ka(o)?mi(Nt(e)):{}}return(r?Kt:Ui)(e,function(e,i,r){return t(n,e,i,r)}),n},pi.unary=function(e){return ea(e,1)},pi.union=$s,pi.unionBy=Ts,pi.unionWith=Ms,pi.uniq=function(e){return e&&e.length?Vr(e):[]},pi.uniqBy=function(e,t){return e&&e.length?Vr(e,Lo(t,2)):[]},pi.uniqWith=function(e,t){return t="function"==typeof t?t:o,e&&e.length?Vr(e,o,t):[]},pi.unset=function(e,t){return null==e||Br(e,t)},pi.unzip=Ns,pi.unzipWith=Os,pi.update=function(e,t,n){return null==e?e:zr(e,t,Yr(n))},pi.updateWith=function(e,t,n,i){return i="function"==typeof i?i:o,null==e?e:zr(e,t,Yr(n),i)},pi.values=fl,pi.valuesIn=function(e){return null==e?[]:yn(e,ol(e))},pi.without=Ps,pi.words=kl,pi.wrap=function(e,t){return ca(Yr(t),e)},pi.xor=Is,pi.xorBy=As,pi.xorWith=Fs,pi.zip=Ls,pi.zipObject=function(e,t){return Wr(e||[],t||[],Ti)},pi.zipObjectDeep=function(e,t){return Wr(e||[],t||[],Er)},pi.zipWith=Vs,pi.entries=hl,pi.entriesIn=dl,pi.extend=Ka,pi.extendWith=Ua,Il(pi,pi),pi.add=Wl,pi.attempt=Sl,pi.camelCase=pl,pi.capitalize=ml,pi.ceil=ql,pi.clamp=function(e,t,n){return n===o&&(n=t,t=o),n!==o&&(n=(n=ja(n))==n?n:0),t!==o&&(t=(t=ja(t))==t?t:0),Ai(ja(e),t,n)},pi.clone=function(e){return Fi(e,p)},pi.cloneDeep=function(e){return Fi(e,d|p)},pi.cloneDeepWith=function(e,t){return Fi(e,d|p,t="function"==typeof t?t:o)},pi.cloneWith=function(e,t){return Fi(e,p,t="function"==typeof t?t:o)},pi.conformsTo=function(e,t){return null==t||Li(e,t,rl(t))},pi.deburr=vl,pi.defaultTo=function(e,t){return null==e||e!=e?t:e},pi.divide=Yl,pi.endsWith=function(e,t,n){e=qa(e),t=Lr(t);var i=e.length,r=n=n===o?i:Ai(Ra(n),0,i);return(n-=t.length)>=0&&e.slice(n,r)==t},pi.eq=fa,pi.escape=function(e){return(e=qa(e))&&Se.test(e)?e.replace(Ce,Cn):e},pi.escapeRegExp=function(e){return(e=qa(e))&&Pe.test(e)?e.replace(Oe,"\\$&"):e},pi.every=function(e,t,n){var i=ga(e)?Gt:Hi;return n&&Uo(e,t,n)&&(t=o),i(e,Lo(t,3))},pi.find=js,pi.findIndex=vs,pi.findKey=function(e,t){return sn(e,Lo(t,3),Ui)},pi.findLast=Ws,pi.findLastIndex=gs,pi.findLastKey=function(e,t){return sn(e,Lo(t,3),Gi)},pi.floor=Kl,pi.forEach=qs,pi.forEachRight=Ys,pi.forIn=function(e,t){return null==e?e:Yi(e,Lo(t,3),ol)},pi.forInRight=function(e,t){return null==e?e:Ki(e,Lo(t,3),ol)},pi.forOwn=function(e,t){return e&&Ui(e,Lo(t,3))},pi.forOwnRight=function(e,t){return e&&Gi(e,Lo(t,3))},pi.get=Qa,pi.gt=pa,pi.gte=ma,pi.has=function(e,t){return null!=e&&Wo(e,t,tr)},pi.hasIn=el,pi.head=bs,pi.identity=Ml,pi.includes=function(e,t,n,i){e=ba(e)?e:fl(e),n=n&&!i?Ra(n):0;var r=e.length;return n<0&&(n=Yn(r+n,0)),Ia(e)?n<=r&&e.indexOf(t,n)>-1:!!r&&ln(e,t,n)>-1},pi.indexOf=function(e,t,n){var i=null==e?0:e.length;if(!i)return-1;var r=null==n?0:Ra(n);return r<0&&(r=Yn(i+r,0)),ln(e,t,r)},pi.inRange=function(e,t,n){return t=za(t),n===o?(n=t,t=0):n=za(n),function(e,t,n){return e>=Kn(t,n)&&e=-I&&e<=I},pi.isSet=Pa,pi.isString=Ia,pi.isSymbol=Aa,pi.isTypedArray=Fa,pi.isUndefined=function(e){return e===o},pi.isWeakMap=function(e){return $a(e)&&jo(e)==se},pi.isWeakSet=function(e){return $a(e)&&Qi(e)==ae},pi.join=function(e,t){return null==e?"":Wn.call(e,t)},pi.kebabCase=gl,pi.last=Cs,pi.lastIndexOf=function(e,t,n){var i=null==e?0:e.length;if(!i)return-1;var r=i;return n!==o&&(r=(r=Ra(n))<0?Yn(i+r,0):Kn(r,i-1)),t==t?function(e,t,n){for(var i=n+1;i--;)if(e[i]===t)return i;return i}(e,t,r):an(e,cn,r,!0)},pi.lowerCase=yl,pi.lowerFirst=bl,pi.lt=La,pi.lte=Va,pi.max=function(e){return e&&e.length?ji(e,Ml,er):o},pi.maxBy=function(e,t){return e&&e.length?ji(e,Lo(t,2),er):o},pi.mean=function(e){return hn(e,Ml)},pi.meanBy=function(e,t){return hn(e,Lo(t,2))},pi.min=function(e){return e&&e.length?ji(e,Ml,dr):o},pi.minBy=function(e,t){return e&&e.length?ji(e,Lo(t,2),dr):o},pi.stubArray=Hl,pi.stubFalse=jl,pi.stubObject=function(){return{}},pi.stubString=function(){return""},pi.stubTrue=function(){return!0},pi.multiply=Gl,pi.nth=function(e,t){return e&&e.length?gr(e,Ra(t)):o},pi.noConflict=function(){return Pt._===this&&(Pt._=mt),this},pi.noop=Al,pi.now=Qs,pi.pad=function(e,t,n){e=qa(e);var i=(t=Ra(t))?On(e):0;if(!t||i>=t)return e;var r=(t-i)/2;return bo(zn(r),n)+e+bo(Bn(r),n)},pi.padEnd=function(e,t,n){e=qa(e);var i=(t=Ra(t))?On(e):0;return t&&it){var i=e;e=t,t=i}if(n||e%1||t%1){var r=Xn();return Kn(e+r*(t-e+Tt("1e-"+((r+"").length-1))),t)}return xr(e,t)},pi.reduce=function(e,t,n){var i=ga(e)?tn:pn,r=arguments.length<3;return i(e,Lo(t,4),n,r,zi)},pi.reduceRight=function(e,t,n){var i=ga(e)?nn:pn,r=arguments.length<3;return i(e,Lo(t,4),n,r,Ri)},pi.repeat=function(e,t,n){return t=(n?Uo(e,t,n):t===o)?1:Ra(t),Cr(qa(e),t)},pi.replace=function(){var e=arguments,t=qa(e[0]);return e.length<3?t:t.replace(e[1],e[2])},pi.result=function(e,t,n){var i=-1,r=(t=Kr(t,e)).length;for(r||(r=1,e=o);++iI)return[];var n=L,i=Kn(e,L);t=Lo(t),e-=L;for(var r=vn(i,t);++n=s)return e;var l=n-On(i);if(l<1)return i;var u=a?Gr(a,0,l).join(""):e.slice(0,l);if(r===o)return u+i;if(a&&(l+=u.length-l),Oa(r)){if(e.slice(l).search(r)){var c,h=u;for(r.global||(r=nt(r.source,qa(je.exec(r))+"g")),r.lastIndex=0;c=r.exec(h);)var d=c.index;u=u.slice(0,d===o?l:d)}}else if(e.indexOf(Lr(r),l)!=l){var f=u.lastIndexOf(r);f>-1&&(u=u.slice(0,f))}return u+i},pi.unescape=function(e){return(e=qa(e))&&ke.test(e)?e.replace(xe,In):e},pi.uniqueId=function(e){var t=++ht;return qa(e)+t},pi.upperCase=xl,pi.upperFirst=Cl,pi.each=qs,pi.eachRight=Ys,pi.first=bs,Il(pi,(Ul={},Ui(pi,function(e,t){ct.call(pi.prototype,t)||(Ul[t]=e)}),Ul),{chain:!1}),pi.VERSION="4.17.10",Kt(["bind","bindKey","curry","curryRight","partial","partialRight"],function(e){pi[e].placeholder=pi}),Kt(["drop","take"],function(e,t){yi.prototype[e]=function(n){n=n===o?1:Yn(Ra(n),0);var i=this.__filtered__&&!t?new yi(this):this.clone();return i.__filtered__?i.__takeCount__=Kn(n,i.__takeCount__):i.__views__.push({size:Kn(n,L),type:e+(i.__dir__<0?"Right":"")}),i},yi.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}}),Kt(["filter","map","takeWhile"],function(e,t){var n=t+1,i=n==N||3==n;yi.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:Lo(e,3),type:n}),t.__filtered__=t.__filtered__||i,t}}),Kt(["head","last"],function(e,t){var n="take"+(t?"Right":"");yi.prototype[e]=function(){return this[n](1).value()[0]}}),Kt(["initial","tail"],function(e,t){var n="drop"+(t?"":"Right");yi.prototype[e]=function(){return this.__filtered__?new yi(this):this[n](1)}}),yi.prototype.compact=function(){return this.filter(Ml)},yi.prototype.find=function(e){return this.filter(e).head()},yi.prototype.findLast=function(e){return this.reverse().find(e)},yi.prototype.invokeMap=kr(function(e,t){return"function"==typeof e?new yi(this):this.map(function(n){return rr(n,e,t)})}),yi.prototype.reject=function(e){return this.filter(la(Lo(e)))},yi.prototype.slice=function(e,t){e=Ra(e);var n=this;return n.__filtered__&&(e>0||t<0)?new yi(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),t!==o&&(n=(t=Ra(t))<0?n.dropRight(-t):n.take(t-e)),n)},yi.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},yi.prototype.toArray=function(){return this.take(L)},Ui(yi.prototype,function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),i=/^(?:head|last)$/.test(t),r=pi[i?"take"+("last"==t?"Right":""):t],s=i||/^find/.test(t);r&&(pi.prototype[t]=function(){var t=this.__wrapped__,a=i?[1]:arguments,l=t instanceof yi,u=a[0],c=l||ga(t),h=function(e){var t=r.apply(pi,en([e],a));return i&&d?t[0]:t};c&&n&&"function"==typeof u&&1!=u.length&&(l=c=!1);var d=this.__chain__,f=!!this.__actions__.length,p=s&&!d,m=l&&!f;if(!s&&c){t=m?t:new yi(this);var v=e.apply(t,a);return v.__actions__.push({func:zs,args:[h],thisArg:o}),new gi(v,d)}return p&&m?e.apply(this,a):(v=this.thru(h),p?i?v.value()[0]:v.value():v)})}),Kt(["pop","push","shift","sort","splice","unshift"],function(e){var t=ot[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",i=/^(?:pop|shift)$/.test(e);pi.prototype[e]=function(){var e=arguments;if(i&&!this.__chain__){var r=this.value();return t.apply(ga(r)?r:[],e)}return this[n](function(n){return t.apply(ga(n)?n:[],e)})}}),Ui(yi.prototype,function(e,t){var n=pi[t];if(n){var i=n.name+"";(oi[i]||(oi[i]=[])).push({name:t,func:n})}}),oi[mo(o,y).name]=[{name:"wrapper",func:o}],yi.prototype.clone=function(){var e=new yi(this.__wrapped__);return e.__actions__=io(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=io(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=io(this.__views__),e},yi.prototype.reverse=function(){if(this.__filtered__){var e=new yi(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},yi.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,n=ga(e),i=t<0,r=n?e.length:0,o=function(e,t,n){for(var i=-1,r=n.length;++i=this.__values__.length;return{done:e,value:e?o:this.__values__[this.__index__++]}},pi.prototype.plant=function(e){for(var t,n=this;n instanceof vi;){var i=ds(n);i.__index__=0,i.__values__=o,t?r.__wrapped__=i:t=i;var r=i;n=n.__wrapped__}return r.__wrapped__=e,t},pi.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof yi){var t=e;return this.__actions__.length&&(t=new yi(this)),(t=t.reverse()).__actions__.push({func:zs,args:[Es],thisArg:o}),new gi(t,this.__chain__)}return this.thru(Es)},pi.prototype.toJSON=pi.prototype.valueOf=pi.prototype.value=function(){return Hr(this.__wrapped__,this.__actions__)},pi.prototype.first=pi.prototype.head,Vt&&(pi.prototype[Vt]=function(){return this}),pi}();Pt._=An,(r=function(){return An}.call(t,n,t,i))===o||(i.exports=r)}).call(this)}).call(this,n(37),n(89)(e))},function(e,t){var n=e.exports={version:"2.6.2"};"number"==typeof __e&&(__e=n)},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){var i=n(4),r=n(1);e.exports={throttle:i,debounce:r}},function(e,t,n){var i=n(16);e.exports=function(e){if(!i(e))throw TypeError(e+" is not an object!");return e}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){var i=n(40),r=n(31);e.exports=Object.keys||function(e){return i(e,r)}},function(e,t){e.exports=!0},function(e,t){var n=0,i=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+i).toString(36))}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){var i=n(5),r=n(15),o=n(60),s=n(9),a=n(7),l=function(e,t,n){var u,c,h,d=e&l.F,f=e&l.G,p=e&l.S,m=e&l.P,v=e&l.B,g=e&l.W,y=f?r:r[t]||(r[t]={}),b=y.prototype,_=f?i:p?i[t]:(i[t]||{}).prototype;for(u in f&&(n=t),n)(c=!d&&_&&void 0!==_[u])&&a(y,u)||(h=c?_[u]:n[u],y[u]=f&&"function"!=typeof _[u]?n[u]:v&&c?o(h,i):g&&_[u]==h?function(e){var t=function(t,n,i){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,i)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(h):m&&"function"==typeof h?o(Function.call,h):h,m&&((y.virtual||(y.virtual={}))[u]=h,e&l.R&&b&&!b[u]&&s(b,u,h)))};l.F=1,l.G=2,l.S=4,l.P=8,l.B=16,l.W=32,l.U=64,l.R=128,e.exports=l},function(e,t,n){var i=n(16);e.exports=function(e,t){if(!i(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!i(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!i(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!i(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")}},function(e,t){e.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},function(e,t){var n=Math.ceil,i=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?i:n)(e)}},function(e,t,n){var i=n(30)("keys"),r=n(23);e.exports=function(e){return i[e]||(i[e]=r(e))}},function(e,t,n){var i=n(15),r=n(5),o=r["__core-js_shared__"]||(r["__core-js_shared__"]={});(e.exports=function(e,t){return o[e]||(o[e]=void 0!==t?t:{})})("versions",[]).push({version:i.version,mode:n(22)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t){e.exports={}},function(e,t,n){var i=n(10).f,r=n(7),o=n(13)("toStringTag");e.exports=function(e,t,n){e&&!r(e=n?e:e.prototype,o)&&i(e,o,{configurable:!0,value:t})}},function(e,t,n){t.f=n(13)},function(e,t,n){var i=n(5),r=n(15),o=n(22),s=n(35),a=n(10).f;e.exports=function(e){var t=r.Symbol||(r.Symbol=o?{}:i.Symbol||{});"_"==e.charAt(0)||e in t||a(t,e,{value:s.f(e)})}},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){e.exports=!n(11)&&!n(17)(function(){return 7!=Object.defineProperty(n(39)("div"),"a",{get:function(){return 7}}).a})},function(e,t,n){var i=n(16),r=n(5).document,o=i(r)&&i(r.createElement);e.exports=function(e){return o?r.createElement(e):{}}},function(e,t,n){var i=n(7),r=n(12),o=n(63)(!1),s=n(29)("IE_PROTO");e.exports=function(e,t){var n,a=r(e),l=0,u=[];for(n in a)n!=s&&i(a,n)&&u.push(n);for(;t.length>l;)i(a,n=t[l++])&&(~o(u,n)||u.push(n));return u}},function(e,t,n){var i=n(42);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==i(e)?e.split(""):Object(e)}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){var i=n(27);e.exports=function(e){return Object(i(e))}},function(e,t,n){"use strict";var i=n(22),r=n(25),o=n(45),s=n(9),a=n(33),l=n(70),u=n(34),c=n(73),h=n(13)("iterator"),d=!([].keys&&"next"in[].keys()),f=function(){return this};e.exports=function(e,t,n,p,m,v,g){l(n,t,p);var y,b,_,w=function(e){if(!d&&e in S)return S[e];switch(e){case"keys":case"values":return function(){return new n(this,e)}}return function(){return new n(this,e)}},x=t+" Iterator",C="values"==m,k=!1,S=e.prototype,D=S[h]||S["@@iterator"]||m&&S[m],E=D||w(m),$=m?C?w("entries"):E:void 0,T="Array"==t&&S.entries||D;if(T&&(_=c(T.call(new e)))!==Object.prototype&&_.next&&(u(_,x,!0),i||"function"==typeof _[h]||s(_,h,f)),C&&D&&"values"!==D.name&&(k=!0,E=function(){return D.call(this)}),i&&!g||!d&&!k&&S[h]||s(S,h,E),a[t]=E,a[x]=f,m)if(y={values:C?E:w("values"),keys:v?E:w("keys"),entries:$},g)for(b in y)b in S||o(S,b,y[b]);else r(r.P+r.F*(d||k),t,y);return y}},function(e,t,n){e.exports=n(9)},function(e,t,n){var i=n(19),r=n(71),o=n(31),s=n(29)("IE_PROTO"),a=function(){},l=function(){var e,t=n(39)("iframe"),i=o.length;for(t.style.display="none",n(72).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write(" + + + + + + + +
+ + + + + + +
+
+
+ 设备管理系统 +
+
+
+ +
+
+
+ +
+
+ + +
+
+
+ +
+ + + + + \ No newline at end of file diff --git a/device/src/main/resources/static/maintenancerecord.html b/device/src/main/resources/static/maintenancerecord.html new file mode 100644 index 0000000..8f77ca7 --- /dev/null +++ b/device/src/main/resources/static/maintenancerecord.html @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + \ No newline at end of file diff --git a/device/src/main/resources/static/operationlog.html b/device/src/main/resources/static/operationlog.html new file mode 100644 index 0000000..5e47b9a --- /dev/null +++ b/device/src/main/resources/static/operationlog.html @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + \ No newline at end of file diff --git a/device/src/main/resources/static/scraprecord.html b/device/src/main/resources/static/scraprecord.html new file mode 100644 index 0000000..eae4165 --- /dev/null +++ b/device/src/main/resources/static/scraprecord.html @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + \ No newline at end of file diff --git a/device/src/main/resources/static/supplier.html b/device/src/main/resources/static/supplier.html new file mode 100644 index 0000000..fbffddf --- /dev/null +++ b/device/src/main/resources/static/supplier.html @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + \ No newline at end of file diff --git a/device/src/main/resources/static/usagerecord.html b/device/src/main/resources/static/usagerecord.html new file mode 100644 index 0000000..ab6f563 --- /dev/null +++ b/device/src/main/resources/static/usagerecord.html @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + \ No newline at end of file diff --git a/device/target/classes/application.yml b/device/target/classes/application.yml new file mode 100644 index 0000000..e1de333 --- /dev/null +++ b/device/target/classes/application.yml @@ -0,0 +1,14 @@ +spring: + datasource: + url: jdbc:mysql://localhost:3306/a?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8 + username: "root" + password: "013013" + driver-class-name: com.mysql.cj.jdbc.Driver +mybatis-plus: + mapperLocations: classpath:/mapper/*Mapper.xml + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl +server: + port: 80 + tomcat: + basedir: /home/tmp \ No newline at end of file diff --git a/device/target/classes/com/DeviceApplication.class b/device/target/classes/com/DeviceApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..73980c2e54a50503a076e5d1359fd8e24d15404a GIT binary patch literal 791 zcmZ`%O>fgc5Ph2_aWH|Fl%|xg!Y$3AdqG@+DwUv~TtEbcLr-gG>u#}kt@S#<&*B8) zzz^U@A!gmE2_o3?jOJtCym{+izkmD$@C;8vG;uG$UWog65a1z0`-RfV9WiVS4yFvv zv6)GR%}8nay2@i|--|e-OfNEt$fm+7A1{(kccDs#-6%0Re=w3A-#LYU_#VrEyho9GAK&RIj we#gd#<@t~*p#FePFEKi}jZMmL(br-Wcs6%x+ru{b9>sUb@6gEp8CZ$kKM{1y&;S4c literal 0 HcmV?d00001 diff --git a/device/target/classes/com/commons/MyBatisPlusConfig.class b/device/target/classes/com/commons/MyBatisPlusConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..588e2ba8cefdcbd046d40c080bbdf8bd82499bd9 GIT binary patch literal 1170 zcmb_bZBG+H5PtUh2G>Fnq=JfwuPvzi#rUPh1ga#&15uhL{kYd2b+NbG+>6qGrGBu9 zB>n(@lyUY-$i)UC(MxXTW@hKPnP+By{`&p{z*E$0Oyhb1H*8o&-<-w@ZrR9U)p%|f zuvWkwhWvA>Wb}d|Q?0cavJKt!7|M=R-d^mxUeFY7pFH!9?udR%1k%{2&TRBvh77At zNBf*!U#pPs4!1-k!~K37HncjFy*k6xh;+d4s#;5OU7>y1)iL*n zu1OwHGWU)nPlc4i$)t1xokR_E3Wo5DGL72!FPO{kViif>YspYj%bQB+DCvMYe(dO= z$HPG&RqrqmzV}H7ABX{};yB{s>?q&zgrfTF107S-+tN^3nPBM2k@zSWp8YNAnAbQ+ z%Bh!NqsXvnhVV~BGQ7S7hE&Q6_k?Y0lzIt-7_-++lM8V|2t=DfKl3!>ZIF$AO82T;ZwSqxV& zPar0_Nq65Oy>tSrJwnFWI6=1k6}b`e-%!~2Ofd@vZx$JnGgL$w6~ZyNm2vJV?i6_! WaFy^EDQ5m(A#LGWBA3p*%fN5EwN;G( literal 0 HcmV?d00001 diff --git a/device/target/classes/com/commons/Result.class b/device/target/classes/com/commons/Result.class new file mode 100644 index 0000000000000000000000000000000000000000..e78625c7bf9ab2bd83592a53525fac5fb994146d GIT binary patch literal 3920 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 literal 0 HcmV?d00001 diff --git a/device/target/classes/com/controller/ScraprecordController.class b/device/target/classes/com/controller/ScraprecordController.class new file mode 100644 index 0000000000000000000000000000000000000000..8ec4e38a3819c34a5cda1fef02fe2393681ddb21 GIT binary patch literal 2361 zcmbVOTW=dh7(MG;HgUIU;?mF-D5128leAfGg|-f*X=q7;b0IE$Ur)NP|V3-$91HEiLB#S?65Yqb50e(;%HkirY?E#W9X*t12$z+Q-yzv~9FNVkLYuIH+22Kv&| zc?126ev$bc%etOiiz)>f+!l;xAeHqUQO=9N)${sdzuI;gelpJ9@jVsz<+2P~53tx+ zWv~++2yBQFolmE;_r#8{BjuLuB@u3~ifU%M?zK|k8SPCOMrB1GeHBqPaJ-9wfuvu! zCmmIDIv?8?gkN!seq>kn3WO`HmZQ*?_jwH=v9mcXxpZF@6fvB(wq~5U-sZeIX;-8Y zMWKYfTsIhRM`*8lh|-nLT<2>`W#N_VoYL2p>0G(SEb_gxc;X>y07zDi+H1X%jCQ=# z+i{oUJ=Rt7=6y$2<5D!SVqkPts%^ixA#^1w8L&czb8d<7MgcE-y~|}kB_2IW;!@Z0 z-<1Ws;CjW@%HQxq#oDTBzzq!Sh;qb?#_b+;dA7ah8YgONzNe4ADL;>7sBZYhJw{LF z{3vkbEmybK>6V^vw#=OFieByA?R@MK)ih_2?#$5LG)}IGj%9~U9sz|O#F~Y5Y*_dJn`EQV{X*){ISXS*nYeA?L*%u}M+U4% z55D{R`)?n8_03;jKQQsJg**7fz&V}clgOwo_Ik`3B$Z}5jgmGn)HpOBbq?-&;aymQ8IGryyQiM2-AXH&6N4~v92t@zR$DPRJa7w? zog~@7yVG$7FYzTF<;!jGW8qL9=dVG^XDAbtEN70-a%NL%y@8pBFn)};Pjb}Cz!{w4 zXw?*O8qaZN;CZ~jeQmr?*-v@>S0wJtruz2L|2qZ_Ft`u%%h}XW+x#JhS7&}g^1{zJ zlEB&+{y2b@I(qQ{BR|kbA9UOiO5i-wn8fRtisR4JV$|a^8uNOQd8BDE!NVq~d6Ze5 zrR~eKo``*Dt#b{n^9`*@?oLswKi-?>uK`vN#SFg$W@D^IxOsu!#k(*<%n>EP)Ihxw UE4>FTVkJ3-^*3 z#oHF%8N!t$uHu@7Y!Y*L*9`MRcrS?rt`Fk~77pPC7R~m}AuJ_v3-4RFZDE<=gd>!z zr7K)p`qK9NQbGDV%9aeLbGGO3ptj_Nuv)Ds>Bq-ehLanitCb@+RiKI$x!}5<7Fv03 zz;Gq!`DGqdedU(7eBsDl&;OhkrEmkjC2Z~adt5XW_(G_?UFFLXnH`){uF~@ieVM6E zhW!M7Sr!u+wVn^^$s|vp@g6+JhW~XA4jzbsZ8!`whnr!qrqRMczivmN^E8ds3 zt{I(+^ozoCRLKjuvsa{C1=UIzaQT1=5K!VcEz63`R|QQ`F1gVrKeN5nsc4crQj3z% zf-lDkPu-{7g88Q+QOX_KEkFE`IsT~^x^k^ z{qWt>ufP5Cn}-%YN#QO&WjJeMd?x#}IbMrsf>@*(O9ROaV;x*XtW%bnVIl@_6n)JI z(Nxn&yj3?5i7gY^m!(gsh%mRd#W2}wCT{;$GqDQQafqIZ%^FmRoayx#$gHdwl0Nl} zmx6LgbVktnEc2iGJZ9XkrS3ut6yA7dxqIB{T0L5+n-UO&wk-o9g?wuQ>bGslV<#mx zlHF-Ii?j6Nj?xRw=p)F`e3X6-()&F<*PydAE#h-B~ zfz>hmae!3%@TCKcJR%!?Fn&j91}-3j3A~BP$p3WBN9>=xQCzQ392wF$LzhjEOwAQ3fEWj*f39w9} WUWU;nxHV4K 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 bv5t4DOq*t(=ox=})+bGqsfGL2kbM1rhatY! literal 0 HcmV?d00001 diff --git a/device/target/classes/com/controller/from/findDevicePageFrom.class b/device/target/classes/com/controller/from/findDevicePageFrom.class new file mode 100644 index 0000000000000000000000000000000000000000..f315583c145bacf332aa5fcea0b9947513d00aa8 GIT binary patch literal 3447 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 C;W9k{ literal 0 HcmV?d00001 diff --git a/device/target/classes/com/entity/Location.class b/device/target/classes/com/entity/Location.class new file mode 100644 index 0000000000000000000000000000000000000000..bc233fae572a521bbcb54f07b24914b215f38fe4 GIT binary patch literal 1600 zcma)5YflqF6unbg3S}z@vH#D6fl+?nu|36YRp(Y$WI&}q#wcewO|D?7E$3<%{EC|vx7%jb zR-!H3T}F$ayS9=YQJ0=ByGTH9NfqZoEsY>zVx8&OGJ7 zRa@Z7TxtJsTZ_0&tKKEfHb&yAwoYLUs`TF3=`katAHWgsfMhlj!ijRF-G=G*NX)*< zLn$mR)aVNgXy^J~4uscq<)zM;&Q};k>~#E{w558_XslGOL+8HJg0ShDw8c@k(-5xj zNJ|CUs&mu}=?M?h>RckP1z)j1-c`@+dx5NcTd4k4SFBJfM*<$yY&v2WL@*z-yiQFq zVi=1e@5Mb;N(qk2H^`j%DAc*r`ovunMWGiFe}pekRE{!+f^H%#M$j>txf7@BHpQW| zkmGzmHCwum8JVNkT}wiKC#gY2Hylt;y;IXn4&2R_`-e~`&q0rIJxcNcTUhe6|jSh z@O}#G9Sqzr;sVnCzqku8Ob3DaJ~&OR3~Q$Hlh`-k=?Z2ohd{Q9*$50E^C5PO*60!D zIQToIzTz@P1MqSp_%S_60FMoWR};Zc6T#_W@LD3cL}lpHvUjnjux2akKPXihh8KKz zF)#_EhH+Sk3V<2(6e_`Joi>s<$42H1iWhPgea_8f&h*HfLES^nCBI{~{Mwj)7wIn9 J#z2=m`v*JKPJI9X literal 0 HcmV?d00001 diff --git a/device/target/classes/com/entity/Maintenancerecord.class b/device/target/classes/com/entity/Maintenancerecord.class new file mode 100644 index 0000000000000000000000000000000000000000..fca3aba0dc61d802239b5e7039b841e384d80419 GIT binary patch literal 3147 zcma)7Yfl?T6uo0?48{~Q`%v^dnFp~aCF zO)b9B;#)1g%hUIH`XNt0GMev;p5$&*^!hUJk7`v$>;SL=W)ccMdp=e<$SS#|mb+qYBE)jADWgDty#)Hq-? z)e$GsWNV!7 zxvRGmSYugGqJ8Ykw&XseLL>H4iiJ}Zic1$2FU6b>H{Ot!AjU8fitB}otWRAXa_yrk@>EO$D>c?Qe`dHiLB zeMjLye|8uZX__w6EWLy0IeaHFG><=`!TTcKOIVk%Q|{9;T@-W)))^gWq}Lo*@rV9h zC=mR(;yoyk(757#D3Ij1;wBVGd|dGX6ez~HVjT(;Xk2ldE?^TihIEjSgOy>;t^Y~v zw=mqu}2u^J@Zp%?f^O1y3Zwt5)!b^pVALHVM9I z1%FJRSird?xMBrwSv^lC!5dca6Dv5M1aDfwpVCuH*i%XHJuCQ`HRtIh_@Nd28ExYf z={|2^&0x*1Z~Q@-^(1^bgqMv;bWC6zU7P0s=I~L(O=7fT=bT8*X|7ttc_rkm(&x4~ zv#B}FEsZ!=Le5?K!p50P&1o)p#CbjB{L&uhWNJ<`8zRmdA!p6bnNQ7W#!AF_E987Z uU)ge>O3i5|Qp8yaIqUX%PN(KH!z|+50B45w!hy3N&SgD!5Aes_efb|VcV#&M literal 0 HcmV?d00001 diff --git a/device/target/classes/com/entity/Operationlog.class b/device/target/classes/com/entity/Operationlog.class new file mode 100644 index 0000000000000000000000000000000000000000..c9a3ce3c70058db17bcf44e6a531398eca2c6140 GIT binary patch literal 1963 zcma)7YflqF6uncrlt+;Q#qv-P6m836@%;c%gpkx!FarI)Z6{^Oc9-laKn>=rk`r+$o)VY>}wG*Lda&MninoQ7F) zByVtUgVFStmLo-zSA;LBHs5v}S6ULpKBLug&25@h%WaCf+cKLMRh;-|cFQ-d$j&^n zfGgF(Wt=P5n9G63q`Wx8a-}DlQvC?lU`cKt9~~eb_l$d5iP~p0-X{N0dctYIcD*NR zt#D6pTZtSw=;UqlgETOj4E(5^m}R$S*}Ilhvf6OkE*t6F<$lc*XDVrovJrj9cK@bu zgxq4(moHQhS zpuuIB^~rppEmc>Q&cGx>1v$-jm_}LcwA9h&E-kO+CD%^d5%Yi_X;EGD5tJ!Om84>SJ(ca zddh1OO{%wqYaZ%PiTJ9TjTZ2sNfCO944R=q8p8W9z99)pdPKPZN~o zG)cFyf}Zev81pn9oX_9@8m}MR#Q}6*KbVJOrozOy2xlf{hS@0oBKBRYxsS15Z_dyI zyr%;LTB3(oF?vLKjGf>gl=#*Ko{t3=s2Bt8>jp2zf|qF}2Au2$FU5jaV?7();Cw82 z4T(zVm^Uyd5NfKp{F4&JZg@_^Rl#5qrcAvBq&QjZc%4SioIxXooO9qz&5Z) z0DqM6%*-aRUZ?3zn%**+ z^n@$9Sr@J+9s8oT&xn0wG`{E9p5nHubF(Xwpwd6aDCIh)&|Wi#SNxhACb!#0%~ql< z+#N>qr(Ih~OVp(&8>ZN`ZAWnhW{=UvVbigU26rska=M1qYrx`l%&uqf8$aWm16ON- zD|xMBBjjlqGNF1M?AJ%)skP4G4VuL6#rZL#j23>xEf7o(NIz4qwA*mo8j00ccOZqS z1!lCcfU?jLt|dL4!+qg3UD?r>W>h$dK2N=uwp1S&#mkjCH10Vq2%9*Rwm9lq4dMEM zv{a{w>TuKuX$cP#>QW+~Q@&z>e5;*0PgG`}}D54TjcL*ChbGmL*97q$n z%<433>KeB4`dy0sQ(g<8&{&K7|r@e z(lO5b=OsVu^3h{Fz7#P^QvzHW%Hn$r?&rY0vsO(FGYf%MS>H<;N?hgnJUnyW$$2(VNF-pzEi9^3@`ZbV&D?q z8qQ%MssJYOPl!q|TBG$S&iKfjLGeP)qR+Vz&6yaPGpKvWx!`xqre7Pw?;_nLTNvn) G=YIhbtUBue literal 0 HcmV?d00001 diff --git a/device/target/classes/com/entity/Scraprecord.class b/device/target/classes/com/entity/Scraprecord.class new file mode 100644 index 0000000000000000000000000000000000000000..fb3e9861232f2984f3bb406c2fdd7b5b919e4d48 GIT binary patch literal 2146 zcma)6YflqF6undWfVMz+m6w7j3Y5p9;uCxz6|JdYc=Y?Uos=cpU9!6+!C$3`#>5Z) z0DqM6%Tj54aBtR;Ej8V#|+5Akpjg(LMIoAws zHnfuIiiWT^8BHFvOjmD;itgxDLu{L-<#HF)4x`m_&1z~@ZZ-9~)zX?5Ral%eqvdG) z(oZ|$z?JIYN}S8XapqxgX576v!^TQiM5X!>yulOSK0exK)LR$ldQC{}>s=8jCA+#X zq?q2~CAv@LpvYZF8S}CrL)OYxjT>?s?tMzL=aW(X2ZB46$!NGOZ-=g}n+>>UlzZSZ zP)AxUhZ`S-dt%iY4HQEg$t~T~-It7d7MCiBaL1}c%wSnJ#a^pf6}HkY50jcI9CwVY z`kQh0M8|bZs3ZtnmwTb9^KDVHY#D62AzZa1lQp)u)F%1rsxxr9N=i0>crlL$ppMK8 z1dc(pqk*d`rOT8IN%~OOX{Sxs>SBbfrT+(&^RoGg+q@}U6g<)nzP1nob}t0Y=MP12 z%?SemK@i$XyF@>-Yw$x-PB`R4t7X^3u5RFhb8XkOCfkpZ)_p1OA#Pb~j%+9IuCsK9 z=Cd?Nxhze{VVZ7aX@+LAG)J?H^0H$)O9V=;nt#7~DrzpHQMIL8+M#+<^v|;7K$F5- zgodCbO;MUM_@BjF5~F^6I2h|8tcNiVV`s#nQ5qAJr*W*H$+t_~BtF=uV1Uj}!%Y~V zz0+_D2E@~8xUKXc2Qb}*3Jo*EoGAPt_EpKehcT%(Cusryvz`Mj(h^pT3bc&zU+_1I zeF=eQBEc(>;GQseE)u*-YY`{M!{GTyutw_<;6xa_5DC5?2~LK=g-GxNdWh?g3ERXR z!<;HCf2UX>49_cg-gEKu4QIb-HULcE%~KWfD4MgUYfi7wd`@rin4U!GjCalH)u_)o xt#m%6XHlGqt~tH(_Bm%1=ksXJWY?TtXZW0R;EdsBWQT64&Xk?^0v|f>1Z|(U|zb zAK;HNo|)Y(OIeeW?99%+_nbZV-nr$^-(SCp=m~wu(lBj}P=;R1Wm_(9jn?*>PRD4NPKURguF<(@z~h}+ zUC%IkamJAeT(t$R)VcgVK3j`?HYqO7U|SuCtJ*q3G^mo54pCRf_Ujov>!JU|v7tgoxs}^LX3SR0WghC4 zsf2IoEpBtMt1tou+77r&+no%VmM4F@kcQ`Z|iKzMRX0#wlwG zjV6?dJ4Q_nJpUrE2QA{~V3;%-p)}1zg-_X-atZ}T6W(SAb! literal 0 HcmV?d00001 diff --git a/device/target/classes/com/entity/Usagerecord.class b/device/target/classes/com/entity/Usagerecord.class new file mode 100644 index 0000000000000000000000000000000000000000..9f96301e0d387ba96bbd0c1dbf324d84d8c6dc1a GIT binary patch literal 2674 zcma)6Yi}Dx6usm4ooyS^Jld2tZQ2y)xh)iENofgj0}f778rytc+aqTqd$-z0r0}ai z0wM8%AHa{QIP>s>^?=rrXLjb^bLQSNckbUG{``xGp3zTbDpS2gB{~+vi5O1B@Ky{z zis79Y&I;5hP_sZSMspz#T&LgSLFoEkvsPuqju>4#@Vzi{yr|{$W1a)O_%TL>ICOek zxZSK@IG2vycf6im^CI5k!5*XA?_w`<2fXEmZoAL-J%~UpU^VtKxi{o$9U5}r{ zgEkLjzKrH&)GY^fft%2q+34KG72cAjs`j+7gDRi#Mfa3YJHiXn-O|CV6x zm`CS+_pK8+10LZ?F`5P6M8c9?CpR_l`n zt%W=DdT@{+Op^)nzv|040pw_O7|^V zqlXr)(_@P&^qA3-=rPj;ikQaj>a=~qI}xJ=x#jxynQVgY&!XVz0a|34a6T1rmPOa_ zeI4B|LpSh82w305TFeXBSqy23mO0&`+gKqwZJ)(_2Y=Wz8}7k?ET#<)U_fTm zhDR_U+iAlmFhGH6!v^AJLO+b#h}*`@Fy}V^Aoi|7FDF@nFO=LT>-3Enb-U(iVFJ2Pi7HK*zwnzI7V41F)(cTILX(anzVM>qT7A7?z}lmGw# literal 0 HcmV?d00001 diff --git a/device/target/classes/com/entity/User.class b/device/target/classes/com/entity/User.class new file mode 100644 index 0000000000000000000000000000000000000000..0655dc99f8129f65a2e79b9a748f504b8562dc8c GIT binary patch literal 1714 zcma)7YflqF6uncnT}rDhFL{ZA2)5<1_#+ZmzGWs8QGRl|4TGpDt8^Ob1%6#CQ>_gE$XTS zI;bPwgck|V`ke$zr3C(Rf~w*tp-$cA0ryaIh4x~Ui+Lgui``7Ih9n}5>QV(SQZ;ns z23|w#NL}KrF2I`ZNJduwH>s8A772jP(|wxD(`_o`X@Vy6G^2-ED&UTE<8~Dt&!*G- z`}H%?P>jaHCFxp6;fs=A^zG3+-kVA23QE&7WoZcW9G+5&^7xPpei8l%>@ZeFd>W-O zLF04>9(2U}IoK(D*q_D*wB6jeiw)?#xp5DPnLZxIc_g!78Em@pli0UV%>#^?aB-3r zFwaK;^pF^{DYgU$jP^!`k9}nUB!VnUdOwXe0UBhac!6~8$7Of|74)o0#wM5K05pq6G t<}~`|jJhf2oC!IfB%eLqH)qs{G3P8eQ}h&tNa2sE2&?<~IX?9Bi+{#GINJaK literal 0 HcmV?d00001 diff --git a/device/target/classes/com/mapper/DeviceMapper.class b/device/target/classes/com/mapper/DeviceMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..35817c0a6fe9e25204d35c52afe402ffc8e7ae3d GIT binary patch literal 363 zcmb7=!AiqG5QhJ)n%JtKr{W8EbS~Z^f+C(G1q;RNWF6v`WH%(6LSM~;58y+I(?n3b zdDxkS*?+$O-;d9?cK}y7Nij=tl;YT6x^$)I*tcTvoUeJqRIx8N~Qb6{@*uq@_FV-y#?`PgWUf%#*;3&g9!$F2agW1wmo>L#i;Hg;gnyF@A(L=csoASbjhDr{Ndk#G{ zL&?c?ZQXZdLlkPbZ6(qTcXB_rm*au>8zm8cFVGf9*-kg=zcl{EWpMo4 iv4J}Km*uH}!9-(6p9{^qnkU%9bgUWnwN7Y5Pci<&O`;lDt{oQ)7YH|T3DS31}yC6Hp{u;cK5j56Y|$A`~m(bak5cF zJB#^%nK$pfdH;BQ18{+p60;IVC5{!QOWS%*<6sn?>NUSGb?jTZZ`MYqs@B0#!@=2A z7|CrKPB!-47)gi0kmJ5L1Kn^mce%aH0OONQ8>)kr_28?kN@2DPo;C6@Tga&7yGn*Pnv; e_?N*#L17}XC$EI$eaRCXpvbkvq0~a=Q{WSgb#SHt literal 0 HcmV?d00001 diff --git a/device/target/classes/com/mapper/MaintenancerecordMapper.class b/device/target/classes/com/mapper/MaintenancerecordMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..6a82d789a47c5620ce574643f0c30f7f26b471fb GIT binary patch literal 396 zcmb7=F-yci5QX2Kns}#ztzczg=`?l`K?|!Kf(Q1Ky&>+A?1s%oxW8uM5Aa8clPCy^ zg~iSc?Av+Y+qd_ZR{)nd%CX3CkmJx`zH+taG(<75<%XY`8um5aR~xaZC~at|;?TNv z7^vM=oLt{ELr*qDp_aQ&BHeN?%W1rt9*9paZE4BQC-Lm9L{a^^xGoG9t1v_>cdk*( z(_fm;Jr^U1!O6p*t6F(
=1u1(3VKG&Nj}!{QXrjIR2g0 gKr{U-Y-V6E(YK@D3az_ZC)h)ldX9bVnc`F66L1rC-~a#s literal 0 HcmV?d00001 diff --git a/device/target/classes/com/mapper/RoleMapper.class b/device/target/classes/com/mapper/RoleMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..09aa02959e2f4b5436a71bd7adbea87ccab2f735 GIT binary patch literal 357 zcmb7=zfQwI4934JkkA5xg@G4f#0y&x5)4d1NUhY}30Ao3{zS_svVH4@p6b{Md2UgysT|+D<=;j#H5@UdV}jSb`5dM^_!5L@WlH9+6_|1<*4*m&z@j#@pmT!)&8%g cG6RE|z5_iU)E=sx;RxB}a~!MB^nVWg02VB3r2qf` literal 0 HcmV?d00001 diff --git a/device/target/classes/com/mapper/ScraprecordMapper.class b/device/target/classes/com/mapper/ScraprecordMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..e226a206eb3af5f3111ccaf6c88d52059effa167 GIT binary patch literal 378 zcmb7=F-yci5QX2Kdht#LD?zZfbQ-&epoLXLxPYC-WN(OjB)eg=5$>;9_yhb=;#^Kp zw6fTlg_*bCd;9+J`Uc<*9;%htlovL%RB>qC zG7QwND^9NOnxQ8fqEO3SCy{Qsm;3R0H44Nhm)2C;$XyiOT;|ug!MqGZv~uSfg`NDE zZnYO1y20sUPHt>e+R4*RG6CRjvI%E&IVf z`AoyQVhmzBbz@i}U9V|yW;e2=!O zvkg~ad7ni%mk40|Z1USeN*A@e!#3C-GY_W%F@ literal 0 HcmV?d00001 diff --git a/device/target/classes/com/mapper/UsagerecordMapper.class b/device/target/classes/com/mapper/UsagerecordMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..729eb90c9674852d72b7fdc3d81379082872a981 GIT binary patch literal 378 zcmb7=F-yci5QX2Kns}#zl^|GKI*naK(84MrcxY!a$qjLjWH;JQ@P|9rj}hpchyqrRFt*vsAAvQ zg&(L}Rh(?>+aXfzgHXqPFM+N(%I$c)7zN^zO)Gkc+(;1JTojju!EEk_P|J;N6?XJv zy3wAk=?2I5gUUO3w9!_rTsh~HQoV}?r=<@KanJR$kR8nse=pGHAw`|6eSf+812Q=L i9n?Sr{VQo^U@+0MrGE;o+gc~sK{oaryV^6IPk~R0ZFFD& literal 0 HcmV?d00001 diff --git a/device/target/classes/com/mapper/UserMapper.class b/device/target/classes/com/mapper/UserMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..f9b2de5ea6c62a5d97c40e838e001a3d1b35a74d GIT binary patch literal 357 zcmb7=u};J=42J(4&~gU|76x8`5ie{-NH8!JA#vh%w^${oHmQ;n>0XV22jHO)ZV%}s zHip=iWBdEbUPE&^o*}g;fZ$zv>l|3^HJ%qo*lv9?C(wns{LO} cWd;T_eS3O7sNGjP!vV6%=QvcK>Hi$~0W+~{%m4rY literal 0 HcmV?d00001 diff --git a/device/target/classes/com/service/DeviceService.class b/device/target/classes/com/service/DeviceService.class new file mode 100644 index 0000000000000000000000000000000000000000..fe23a8b86562c89de08429a886681a63845197a2 GIT binary patch literal 723 zcmcIiO;5r=5S^8e3ZfzkiT?mD?m=%go(KsEMv^ARgO{bd)FtgM*=~vbYaaXo{wU+L z3nE629yZO)ym|B9Og}!~-T~kSdLEp6aN$9hK$DA=48@d1g1}RM66%D8T3MsxSQt7t z7|*5R!*AFKQ~sa?&X`Ul*BMRn8M887##xHpM$kl9#+hYwTrm3t+V{e~Xg+0zVNIBn zKqX;I0*ydMirLKI{QRHh-`W5q_9qLrVl-wdqJcG1 zMgHKCz=7llWPH610zD^KC@XDFU3-aaC7R25z9D@6!S^s*h|v1`7bsq>P^r|4ZWNCL zC*AqjomOaX20AmL7|9ry*l|PGEmwsR0++>IH*`AyJk8dt(?;OBfd6^j{o?8ba6|Yi z_>)zu1gcQOxQhxC%n;k_P&PuAz7e~g? AsQ>@~ literal 0 HcmV?d00001 diff --git a/device/target/classes/com/service/DevicecategoryService.class b/device/target/classes/com/service/DevicecategoryService.class new file mode 100644 index 0000000000000000000000000000000000000000..93bf8bf59bce2cc1879833e5eb4eb7feaea33f36 GIT binary patch literal 317 zcmbVIy9&ZU5S;Uo^U+w_`2${|UBpTRAz+a&xLlTSlH5sh5%X&net;h(CQ%E;%3^m1 zc6Mgi+x>C{u*8^Sz%k?)F$_bU80pHK7~I6*o9B9YLCb`?JBXMW~Zd1#O9U1_8CT@EptU%oz|YyPr^%L m-UMNoHSTZupG1bqcV>pgAE7-4hE84G`bDTwukC$!?c@&|4rBZP literal 0 HcmV?d00001 diff --git a/device/target/classes/com/service/LocationService.class b/device/target/classes/com/service/LocationService.class new file mode 100644 index 0000000000000000000000000000000000000000..f58311ee5ce4bb6d82d36516d8123cdb03cbd3cc GIT binary patch literal 299 zcmbVIy$*sf5dP|41s4Z5-@y*LVH{0NNF3NrN^M99v<3>1S99&#&yEZaVmukLSb?ibCav9saW2`+^X`H zRV9;mD|M-iW~D4@B_umVU$E~;Qd?yk78>CwMhAz0z>iE-2zgYQb6fSRA8pf`6Rcau gUUG0kupA~N*!~f5MnEufHFghyLzAvgG3zG%0QK}-ivR!s literal 0 HcmV?d00001 diff --git a/device/target/classes/com/service/MaintenancerecordService.class b/device/target/classes/com/service/MaintenancerecordService.class new file mode 100644 index 0000000000000000000000000000000000000000..471cf8b97c5f3a1692891b3f1f2b98b0a1ea0689 GIT binary patch literal 326 zcmbV|Jr2S!4256#E0l!`urZSXwjxF(BoISSkfv4@)FvoRE4Ug12jEbMP+$SEFxY;> zv)?CQZ|4huIfeoH0R{m=hC!?{EnH=ZA=~UlEqE?;#&^k{q>DDv6g&~8P^qbSaY}?! z@?!>o3X>Sx-k|k+u8Z9G+FgBHyv{Jc`9e;UV oho%o4hRK8B9rDY|F#3dNnEgTDV_<0cYWrWot4`Cq=ruFA16KfNp#T5? literal 0 HcmV?d00001 diff --git a/device/target/classes/com/service/OperationlogService.class b/device/target/classes/com/service/OperationlogService.class new file mode 100644 index 0000000000000000000000000000000000000000..9fcfae867319eed9192b712cfbd15507512497ba GIT binary patch literal 311 zcmbVIOA5j;5Pk6%ts9r_yn$KhuHsS<1Q$I)T89#86G;=XS99S3Jd_x#f`}^@GxK2P zeVFU*d;u`WkfYBr;D{IoiORKf-V#H)*~_C8h19v&rhCd jm^_@{(m&1^M&D@}W`D%(F)*}3wZn4|P^al#^qR@F|o0;^9XLCUBprl1dE(tvl+rlvMZZSFjuqi03J$=Q9-n`n3)GN z@55Yg=L>)(#y&UTG%v~4N)q43Pq6Apq@8jNkEInyOVZdhT1O0FY$_{hqw>~p`mueH=Z^>s jvxo0n`1guo@*S07@kdsVfuYw{zx@naH0b&eUN`+a0eoOl literal 0 HcmV?d00001 diff --git a/device/target/classes/com/service/SupplierService.class b/device/target/classes/com/service/SupplierService.class new file mode 100644 index 0000000000000000000000000000000000000000..9d6c6356908b29915582175e15d5a4b3a5101603 GIT binary patch literal 299 zcmbVIy$ZrG5dPv{ZCxDPdbz=dzW&kUHasB&XEI`_z;?k)~89<9K;Vq*YB- zxQ5f&l5UjIyrH^PDe;|ngLOwDZI!)n;i{@oRL7f`Ari*bDQ#8Z-Dcm_hqic`Gt6I( gU&)^nhUsrYhUFg-M+^)-Uw!`&cr@tx5TkAePbLps+yDRo literal 0 HcmV?d00001 diff --git a/device/target/classes/com/service/UsagerecordService.class b/device/target/classes/com/service/UsagerecordService.class new file mode 100644 index 0000000000000000000000000000000000000000..4ed9e89c268051920b2499287851a5599709ebf3 GIT binary patch literal 308 zcmbVIOA5j;5Pk7its8glJc3#1uHsS<1Q*2vr0Gy1Z6Zlp^lC0VfQJ%mRS?~|n3)GN z@55Yg=L>*2h5`Bk1_45bL98+@d})b6Z1$oOJQq6S+hkADM;mDho(NN@)Req9CBiFr z$VxcQh9AS{@A|A(?6Do8loyyo1iAC=+ziF0Ea@PfdMfx_#?k( zzb8MQw>to=VMbv}A)*iyh%#9yW?dr)oYIoD3@fGzJmjU|Hc7dzF=x7#XYH`=a%QEu zRL-EdTA_^83XN!5$p!ASce4pgLRo1$JbEI?SdUsnWHf7qH3ATaPT^iKfajY1y7BvkqW;Zawy literal 0 HcmV?d00001 diff --git a/device/target/classes/com/service/dto/devicePageDto.class b/device/target/classes/com/service/dto/devicePageDto.class new file mode 100644 index 0000000000000000000000000000000000000000..dc99cf0f263a9af9543f700c1d254b59057c8c8c GIT binary patch literal 1935 zcma)7+in|G6kW$YbFn*VZ0FJ%5*lbqeTnM=Ef6~i&?dcMhp4G4!4ngE6i;zH!Jbs= zukZonB@ZBhD}jXIrAT}OpTQ%gtTQuCJBfvm>~r?nXJ6J{dmsCce}4J}z%?||$YMDK ziJDsK23FGCSJkqXMg<=!>0>2*V&Fy^X)K$#srGdf8zyck@wS0G0@8o7?+D}?kL<^G zwQKiwtJ{9x?d{eDtghFxeb?)4+IzIoSKOZKuL&dz#fS8~>9whyY`8sV^I&hs=|8Y{ zx-Y}>Ow)zp zI8>7~XvBaSgOSTj;k1XsnrS+I$7^rdeOBT-eIl8pQ#_3Be0^Ydc@>ND+0G-U<=2Z} z2na7uRCFbvd49*~3#3$$iy@=wKo=dd!9|?TTxbwiPHg*j>#L@{AJAstu7KIHdm9QF z#g0AbgtW5yE3&3yX$y+ARSWm< zDSNZD@GA6G7Fe|KKIR3o3W(G5UH?gSJs2H!_hpW-B_zY%-*c~^JLIb>p*Lf0(9j#egYur_7da3*)660~th87WSRg)q@kQ$cD2Y?I@ zZ;cO`{J$X;r^g|ugOD7Y2<2bg4QA_N+#x3NT3#O+$s^`Up6cJ75W_JK9bCfO z1U-XoTxL%b#Ji3HbxD-4h9V`2+vKT4Nkfx1WlB1h7=HmN!~7d(4an!1HBjNl6wh%! z6jR4!Tp}4#y{CwbWu{au(-aE|>FG%eJEk2Y)re0ajXHKYpqHd_jdIIYN*S2=RhOFV6|3n1MDj7}?0Uie}8m--)Qw`^+g= rY2jz2KYxldIctasRWP^Q*-$o>JjrE<%*p5U>O(F>bqUs`n(*Pj4Npgy literal 0 HcmV?d00001 diff --git a/device/target/classes/com/service/impl/DeviceServiceImpl.class b/device/target/classes/com/service/impl/DeviceServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..82734f9a3f807304a4a9c5bfb32a624718c048b8 GIT binary patch literal 7508 zcmbVR33yc175;CwH<>&F1PF{E`w}29Y$7J?L@=0*1c-pOK4xCRlgUh&nSil&Z`Go0 zajAB(wN|WMsMQvSgtSUG+iLgL)~;4t5NlVvTP^+1TPAO^0QUQmx$m8O&benl=gvIw z-{X%0Sf+LbaV3su_)HMD;=v$3i-+Xt;UMzxISro=Lc@^&jt21vGV*dvwtE8TmGyW4 zeZ|;?FO=Ymc(eq!;V}&-f*6A%CAb}5D#0E2vV43+!&fzYEr<|~1o1e&E>zzLVgh>V$`cV+K;LCnJUW$y>V_J<-I54a6K3gRjJSWtf=5q}@zryWIi2}JPrKvnkbH5ca>y6G%GpP`&izGV29rjze z#fX+UhX3TPbUI%v=|bC(=gRO2ktNE9w%-_He2*X~o;yl17JlAd%b~-fbH3 zRJhHEq!Y>Ru#qJQuj@)D4p>PuO15Ji2_icoSfZ6v6Au8p|cNOV}yL|3?@dpFIL>Wp=z!nCj%?l99v)JPlQS|Q;%Bl^#&NhcH> zD|+HZ(}{2n0x3!zfaiDx$H6A!Fx~Cy;%yQ=;KhT&I9oUu(TfD46gkdN7~@B9G~;%D zhta8U-X@^!61%T4BWcHWD~Gp;c`bt>#ZV2?K>LIMoqD_WW z`m~v(=Zjmcc1Ckok|m`3yz}R^l@P~ZXBWHJh`M!3q1=%pH%O$I>i(MUH9Z&2U(F?b zB3;QOw`$m)q^j6CAYCwQN40>7rFSHvR$I4IM%ZWu6@LY%(YS{UD*NOyinY>gV)bl{ zoAs=|duY_C8S{9Kt8mVa8S(aTOIjLjwdj&(MWqSYa{2cty06_SOt2%wJ>S>pc=8Ry z2Ty+Js)C>WHC3p-M)YA=^~HcEc29T?JIJrh>XEQM#^1sABR| zr3%%<@;rByVH09*rMps^8mX&MYP7D()EHfjRpV#^N9(QBLs#Vj33%O0$5nW}rpD`P zf(q&C0yU9ctiL9&OD2tODa^W>q%PFeWHm)sQ`IzvqX_GI-eIqBp};&p3~Ifany#xE zYNn3eh-hk-u4bz_Oq4;4yymN`3N=?(^KhSzC`?Vwr))m#tPZMD@D>nHEmUD$EmDg$ zwM17-)iPaOq?YUIVzq+flaJP)k+j|E#}1vo_ZD4UqN;RNtyU6r>ZU^{58k7zRRm!V zEKRM})f(Y5$;W3<(&=ig8mFsuYCSXf)Lr+V?CE*F@93$6hjq0<)#&O{wNY1_R1IfT z+sqwCdQW)0)m~#ptPUe4p>Ub5YSm_iLL=H?#dUSL(ABAWT{Vyx*I=)v8WmQF7(<5O zz;Nm6lrj+BW-r+xAmF&Imdu;f7==aW&Cg|_t1YUTIps5luLejIwum9NW({%b;Qc3$ z)1=#!)XUQkK6>)-jVEt<=+xbWwW{s9xaGOMI5lYlwr z=T*ke6p8a3cX)-`>CIWUtnaSn_%P39Y$c?3T1L#ePA-!)W`7K3g&#?SZD5U(%X$On zKUT*aE#29KHc6Rj>0@s0y5e{-;|U_{Jeb37Bsjg6Ry4o>d2+I`ZVSW0Du~N=QEsqh&3} zL-NmdLdUEN{08wxLjTm2#phQSJR_F{XIM58m&Ms+9KdC~UyvG;L#EX!_fL1GaNX=D z@?0Hsnwt}IQa`+|CbO#lZK+=|ujJ&|ZBQ?#dS&F{gF7}_;%7CKjeHc&Rd+Ba$DJ3Q zhpC2QHZE7J8h$Hcr*{D>I8$|i)Eg4gXO_EX4VXCG>UNe(#0Va?)r{!s zjD4G6{g_a(+0Ezy?q)k7ozyR%0*=;pXLo(-+jLCjIX0iv3}MH;3Y+{kck6~7manan zGw5?FUerlk6)_E7;^VNJR;%ab(4C{kn zoW=*iIJOOfacmw0*f=s`we_d10>nJ{g7cjzK-lhddz;*G@d0urqzg+c7_b{0s`X6mmI+qWV5)JB}gHu%N6szX!n#N?N(AKaSD` zWh3Otg_PQmk%W{AWZqGXs$9^E(fOz<2o?0Aj2FPdK8zu=u~kK(!d~!BRi%ZrUX&|* z0B!O#Uf~2LR0aAFBHjg6#i2l`xCax-ZBi(Z!G*n;oJW)?Rl!hkh{8Y~4%jS$; z%#_VpRVCak$zXN{b3#R-;$Bqbq4j|?cZ!C`Fqfwmgfy}ZX`!NC%;RQAdx$0|u+4TA z#`Ad*%CQ)eu>^CmlyA#WjpbO6i&2kDuoG4EaW#Fg5;tQNfB9IA4`B@+f{89n>O%yYWukfI`Z5J8tAt5hWOl zo4BjtUF5i$5QoRXERUPBJZ{PIcz2e^d$K&FV<8G&MYV=J4ch24n1g_ZT^eq6 zAR2DdaJ&6?2k+|d&et>HM;cMpifKgOwhtT|9ETDV( zu#k=m*H@M;%3yIT5gIBNWU!>QvTSJv%LMhJ%3drdYJd38re#5I1<=4Bsv0qoKfX*y zGiIX&m9*|sY@;2v+y0p69G$iE8j5*6#hZwk_#i!-N2(C5`eEA0r-#Bvvhu$~7KJ=8 zCZSKcFSg}gLAfufucSg%8B|l=l^LvRt+Z8K?TEjowXzRucZ`Z2!@3OC6SyIR8gCI@ z7ckN|i;%n)k-Nyr)Y*E^}nh8X)ExU<@(u!AEI;W?bMJUGlHO0qpAJL>9 z9VN4T5l2j+`cO+FY%aT;MyNZ1+OpyTyO7kMKtnGY^ToYQ#MnYJ^`JR}7V5q=gKb>4 zXVB_e>k3hP2NmC$qxf_?Lt+fSIO|}7Ki73K5BD+Wl2kTD@zb_~Qyq!23hu;V=8GcD ee0&@de6C*)Q}BE@LO+2|@+}Xa$`<%f1OEfY%CMRM literal 0 HcmV?d00001 diff --git a/device/target/classes/com/service/impl/DevicecategoryServiceImpl.class b/device/target/classes/com/service/impl/DevicecategoryServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..036a03bf0fc0bac24a8646f66ed2c97b40f7e9fc GIT binary patch literal 682 zcmbVK%Sr<=6g}xv>!Vs9;6`w#Ma;(Ch#-m}R2NpdPseMGc9J2Jsm{;%53U3ket;h( z-We-s=|UuMlXLIMeH`xl$Lkw_eXKW7MyrmMI#%mg6Q~_%qy3>kd3&cPP&u~OB+%?= zLlfHdMo&ayrLjXT{&@L}0fQ+DInkMmi*^qj)G!D1V2_)4;l{`xQFl zNFXrV)dQn^>NxFF@wKmPq_1r%qpYvIPU2yjNP6^S5^c@z%s+A+6rUp%$K)m|o)^xb zAdvCeXA^|r@GJP;_0)#B*+$osDkF=ZA(D}LD+h*(tEm%b+nr-*=)7H$g?NGgFnC@ zCC+XYl+uF|nB>j8%*SKiKVIJeoM5Ml66zIfR-| z=*ukbX?Lx9L-y1|8>wMeIm+>ubKc)lDj>ti#xm7zM3I&hCqvm*WV|-YMB3@dx_)O8 zz2IOVu+*V}Q9g5=`KkEbQ#Pi)&15|8DNkuK%u=ZzIY&y?{7(KOSF`vWt0d8Gx@f!b z2L(qPPkubj30jl*cl)zC=dPwM?@ G4d4^@+tj`Q literal 0 HcmV?d00001 diff --git a/device/target/classes/com/service/impl/OperationlogServiceImpl.class b/device/target/classes/com/service/impl/OperationlogServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..29e58f647cdbe6cf96cd74716e33ce492e150ede GIT binary patch literal 668 zcmbVK%SyvQ6g|_Yt<`FMfFOvw+J&=mmr@Wx5UPTe?x*P(N0XT_nN<5H{)Q{Tg&*KY zi8rZ23tfl=?&O|x?vwlZ_5K0i1iN(<(W+vritQ?P7%E+*mFqDS+ebr&(wP}chGt)B zd6h;ZX>Y|SB&5|hz6giHs?7fZOYUAJ44uAjBA!S)QNH9VibH-KODmi*IyAvxMqCi? zG1LYs(88sblD_1DBVi&nHYty$BZ^7lFip68c2XylU@`Apu5KP2iI_?))Vs_fFQ=t; z%1sw&uQ#K9`(4s1wOJpS)cW#VWy9|;(PZNsKZuE7*tt&Pivr`@#s z#s)lzt0_K_z}T4~%gmi%WTuYocur2p$G8N5vT&*d>3%okcR9}ZEVTcMMn z!(sGMdt|HR@!SW>oj0&o0t#3mo6$fEHL{KTzl=Io$t#kdsn)QbzfEk=o9Q=!Z@_fN A5&!@I literal 0 HcmV?d00001 diff --git a/device/target/classes/com/service/impl/RoleServiceImpl.class b/device/target/classes/com/service/impl/RoleServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..0e9c1e6543802b3cd42b97bc53e03e9e2bfcb772 GIT binary patch literal 612 zcmbVKO-lnY5Pj)~wY6HURq>{tst0rNwxu9~AXE>n^q#h{Mt74Xo2~ZdU-Be)@CW## z#M!jMdJ-fsnfEf8yqU@8*ZT*6Gwjw-M6-hJ3R)HHFsyWxR<6rXY#$F9N*87#85%vM z;^l6Y)ganHo#3qB!Jz6UxDYxFQ@dR0nFR zg-b0Zd+`@W!bECfQXb7m!l@(<(}c@sCv~EX{+%zEtK%<6B95i??_7H~@U+xUxw)r< z?t=Q!m6JqrY6FwnvAk4Sajo20CinC~%ml-JKc#e$9I8Z7(dSwlM?#IJn%g~Nr#y+R z($hODBKc(OBTt;P(ztmn`BHIEM;R*&2Y9I z(()>e0%>nVFe0Yun^27U!m13<$fCPb2}9ctO~eyv$10RuMe&IDLMvh`Lt_WMDStt< z$58F5p%yN+l=C_N7YGxnfk}BZ34~KgJW3NTpPbZ*GWu8ApIn{%b0p$e+WB&qIpgJC zshx6@d9T-eqkSDQKdU$I^Bp;1^;E9t~8aIh0pDE+jQ9_yF@Q*4ocv<8>bz|6{ud_HE4zNT^ zLc2g4!{|_RWGjStj)BtAE7%JWOIRkGxq&9CWb666gc?=|6$ocht60nL2G;4$;x~XV DKN!QV literal 0 HcmV?d00001 diff --git a/device/target/classes/com/service/impl/SupplierServiceImpl.class b/device/target/classes/com/service/impl/SupplierServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..a8b8cf7d0df8367ee4b58590ac179d3e960d194a GIT binary patch literal 640 zcmbVK%Sr<=6g{!6we?Z04-{8|h`KNvcOwN61YvYxrTa{c_3BJAWHM_1!Jly@xbOq~ zDDlqJ7hQ=2ZgS4Oxj8w>+xyEafPJhqQ9-+o#X6SiSQeN(AVa<*P}$z;2~>~lr50#~ zWb|2{MA}`bC}yS|+P;c=%29zo$*RAmOkgYQ+eBvC-BDjlO43+%^E8b~yY7fQVJ;A8 zbZKCe&mA{>EH_2UCUj|YnG7T4DNEx#llsAHlaV!JJ%4%~l$#TkrrLdEvc=Q+1dbdNG(BMyzRo`qY(K5U29 z4P=%&GJ`9p5`Ayot<1c3+WKLt<)<6L3~HDZ*!+ua0zpysPoo6Ze;+b-FKl3f{{ufe ze-6QeWpS)Ck|hReyU!3$OiW;kW03~hXmFe<*EKXT&8Wh-sG7xGIkzy+b5Xwld;kq( ByPW_4 literal 0 HcmV?d00001 diff --git a/device/target/classes/com/service/impl/UsagerecordServiceImpl.class b/device/target/classes/com/service/impl/UsagerecordServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..3ac1a02325390b12441506036808b5be05c00501 GIT binary patch literal 661 zcmbVK%Sr<=6g}y~+FGsF2Z$iJvUOoL?xqw(5QOT&YWL|h)@Uagl1#N9;)l2rT=)Tg zlz3-aq0)^=;3ntXoBKH2&#(6n04La~Adh+pnoL%z}MF%-_sKr+-i zO3SMx>Pveg`XgfM9TSRCPgs@W8Cmf6$}u!Mp^3PYcC13lRTPi-trJ6OWoYc6JLNBk z4j9T^HPpfPeT|@ zvNSrz4!Mi1(!)C|BKc(OBX^#3F@6$DKAR?}qKGAi!#}FX5Tud+)Qw?(zRu!wI6#h; zgm!^8hS8zs$d(B43-_`33AU>!q7h&-Kr_G=!%|ymRC^VHWbwrZDW}AIQ~%eH3WsG+O!qj26iu u8xZ0i1LdPPuva1qSSFht0}WKj*1TUv6)S{_gtMqstogl;b=tG|4d5Hs&aaLD literal 0 HcmV?d00001 diff --git a/device/target/classes/mapper/DevicecategoryMapper.xml b/device/target/classes/mapper/DevicecategoryMapper.xml new file mode 100644 index 0000000..1b5d7b0 --- /dev/null +++ b/device/target/classes/mapper/DevicecategoryMapper.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + CategoryID, CategoryName + + + diff --git a/device/target/classes/mapper/LocationMapper.xml b/device/target/classes/mapper/LocationMapper.xml new file mode 100644 index 0000000..a53f180 --- /dev/null +++ b/device/target/classes/mapper/LocationMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + LocationID, LocationName, LocationDescription + + + diff --git a/device/target/classes/mapper/MaintenancerecordMapper.xml b/device/target/classes/mapper/MaintenancerecordMapper.xml new file mode 100644 index 0000000..dcd26a1 --- /dev/null +++ b/device/target/classes/mapper/MaintenancerecordMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + MaintenanceID, DeviceID, MaintenanceType, MaintenanceDate, Technician, MaintenanceDetails, MaintenanceCost, NextMaintenanceDate + + + diff --git a/device/target/classes/mapper/OperationlogMapper.xml b/device/target/classes/mapper/OperationlogMapper.xml new file mode 100644 index 0000000..bd25fc1 --- /dev/null +++ b/device/target/classes/mapper/OperationlogMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + LogID, OperationType, OperationTime, OperationDescription + + + diff --git a/device/target/classes/mapper/RoleMapper.xml b/device/target/classes/mapper/RoleMapper.xml new file mode 100644 index 0000000..bd07b02 --- /dev/null +++ b/device/target/classes/mapper/RoleMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + RoleID, RoleName, PermissionDescription + + + diff --git a/device/target/classes/mapper/ScraprecordMapper.xml b/device/target/classes/mapper/ScraprecordMapper.xml new file mode 100644 index 0000000..1bf8c4a --- /dev/null +++ b/device/target/classes/mapper/ScraprecordMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + ScrapID, DeviceID, ScrapDate, ScrapReason, DisposalMethod + + + diff --git a/device/target/classes/mapper/SupplierMapper.xml b/device/target/classes/mapper/SupplierMapper.xml new file mode 100644 index 0000000..3d0d7dd --- /dev/null +++ b/device/target/classes/mapper/SupplierMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + SupplierID, SupplierName, ContactPerson, ContactPhone, Address + + + diff --git a/device/target/classes/mapper/UsagerecordMapper.xml b/device/target/classes/mapper/UsagerecordMapper.xml new file mode 100644 index 0000000..d5978d0 --- /dev/null +++ b/device/target/classes/mapper/UsagerecordMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + UsageID, DeviceID, UserID, UsageDate, UsageTime, UsageType, UsageDesc + + + diff --git a/device/target/classes/mapper/UserMapper.xml b/device/target/classes/mapper/UserMapper.xml new file mode 100644 index 0000000..c6d0a2a --- /dev/null +++ b/device/target/classes/mapper/UserMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + UserID, UserName, Password, Role + + + diff --git a/device/target/classes/static/css/landc.css b/device/target/classes/static/css/landc.css new file mode 100644 index 0000000..ba0e970 --- /dev/null +++ b/device/target/classes/static/css/landc.css @@ -0,0 +1,83 @@ +*{ + margin: 0; + padding: 0; +} +body{ + background-image: url("../images/bg2.jpg"); +} +#main{ + background-color: rgba(255, 255, 255, 0.9); + width: 400px; + height: 500px; + margin: 60px auto 0rem; + border-radius: 15px; +} +.lo{ + width: 350px; + height: 80px; + border-bottom: 1px solid black; + margin: 0 auto; +} +/* .lo::after{ + content: ""; + display: block; + clear: both; +} */ +#top{ + width: 100%; + height: 100px; + margin: 0 auto ; + background-color: rgba(120, 120, 120, 0.3); + color: aliceblue; + font-size: 30px; + text-align: center; + line-height: 100px; + } +.bg{ + width: 20px; + height: 20px; + background-image: url("../images/icon-login.png"); + float: left; + margin-top: 45px; +} +.inp{ + margin-top: 45px; + float: left; + background-color: transparent; + border: 0; + outline: none; +} +.t1{ + background-position:-52px 0; +} +.t2{ + background-position:-104px 0; +} +#xl{ + width: 350px; + height: 50px; + text-align: center; + + margin: 30px auto 0; + display: block; +} +#btn{ + width: 350px; + height: 50px; + text-align: center; + background-color: rgba(0, 20, 255, 0.9); + margin: 30px auto 0; + display: block; + /* border: 0; */ + color: white; + +} +#foot{ + margin-top: 50px; + color: white; + text-align: center; +} +#a1{ + color: white; + text-decoration: none; +} \ No newline at end of file diff --git a/device/target/classes/static/device.html b/device/target/classes/static/device.html new file mode 100644 index 0000000..a66a396 --- /dev/null +++ b/device/target/classes/static/device.html @@ -0,0 +1,293 @@ + + + + + + + + + + + + + + + + +
+ + + 查找 + 运行 + + + + + + + + + + + + + + + 取 消 + 确 定 + + + + + + + + + + + + 取 消 + 确 定 + + + +
+ + + + \ No newline at end of file diff --git a/device/target/classes/static/index.html b/device/target/classes/static/index.html new file mode 100644 index 0000000..1746eba --- /dev/null +++ b/device/target/classes/static/index.html @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + +
+ + + + + + + 设备管理 + 维护管理 + + + + + 操作日志管理 + 报废记录管理 + 用户日志 + + + + + + 供应商管理 + + + + + + + + +
+ + + + + \ No newline at end of file diff --git a/device/target/classes/static/js/axios.min.js b/device/target/classes/static/js/axios.min.js new file mode 100644 index 0000000..2d03054 --- /dev/null +++ b/device/target/classes/static/js/axios.min.js @@ -0,0 +1,3 @@ +/* axios v0.20.0 | (c) 2020 by Matt Zabriskie */ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.axios=t():e.axios=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){"use strict";function r(e){var t=new s(e),n=i(s.prototype.request,t);return o.extend(n,s.prototype,t),o.extend(n,t),n}var o=n(2),i=n(3),s=n(4),a=n(22),u=n(10),c=r(u);c.Axios=s,c.create=function(e){return r(a(c.defaults,e))},c.Cancel=n(23),c.CancelToken=n(24),c.isCancel=n(9),c.all=function(e){return Promise.all(e)},c.spread=n(25),e.exports=c,e.exports.default=c},function(e,t,n){"use strict";function r(e){return"[object Array]"===R.call(e)}function o(e){return"undefined"==typeof e}function i(e){return null!==e&&!o(e)&&null!==e.constructor&&!o(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}function s(e){return"[object ArrayBuffer]"===R.call(e)}function a(e){return"undefined"!=typeof FormData&&e instanceof FormData}function u(e){var t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer}function c(e){return"string"==typeof e}function f(e){return"number"==typeof e}function p(e){return null!==e&&"object"==typeof e}function d(e){if("[object Object]"!==R.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function l(e){return"[object Date]"===R.call(e)}function h(e){return"[object File]"===R.call(e)}function m(e){return"[object Blob]"===R.call(e)}function y(e){return"[object Function]"===R.call(e)}function g(e){return p(e)&&y(e.pipe)}function v(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams}function x(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function w(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)}function b(e,t){if(null!==e&&"undefined"!=typeof e)if("object"!=typeof e&&(e=[e]),r(e))for(var n=0,o=e.length;n=200&&e<300}};u.headers={common:{Accept:"application/json, text/plain, */*"}},i.forEach(["delete","get","head"],function(e){u.headers[e]={}}),i.forEach(["post","put","patch"],function(e){u.headers[e]=i.merge(a)}),e.exports=u},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t){r.forEach(e,function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])})}},function(e,t,n){"use strict";var r=n(2),o=n(13),i=n(16),s=n(5),a=n(17),u=n(20),c=n(21),f=n(14);e.exports=function(e){return new Promise(function(t,n){var p=e.data,d=e.headers;r.isFormData(p)&&delete d["Content-Type"],(r.isBlob(p)||r.isFile(p))&&p.type&&delete d["Content-Type"];var l=new XMLHttpRequest;if(e.auth){var h=e.auth.username||"",m=unescape(encodeURIComponent(e.auth.password))||"";d.Authorization="Basic "+btoa(h+":"+m)}var y=a(e.baseURL,e.url);if(l.open(e.method.toUpperCase(),s(y,e.params,e.paramsSerializer),!0),l.timeout=e.timeout,l.onreadystatechange=function(){if(l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))){var r="getAllResponseHeaders"in l?u(l.getAllResponseHeaders()):null,i=e.responseType&&"text"!==e.responseType?l.response:l.responseText,s={data:i,status:l.status,statusText:l.statusText,headers:r,config:e,request:l};o(t,n,s),l=null}},l.onabort=function(){l&&(n(f("Request aborted",e,"ECONNABORTED",l)),l=null)},l.onerror=function(){n(f("Network Error",e,null,l)),l=null},l.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(f(t,e,"ECONNABORTED",l)),l=null},r.isStandardBrowserEnv()){var g=(e.withCredentials||c(y))&&e.xsrfCookieName?i.read(e.xsrfCookieName):void 0;g&&(d[e.xsrfHeaderName]=g)}if("setRequestHeader"in l&&r.forEach(d,function(e,t){"undefined"==typeof p&&"content-type"===t.toLowerCase()?delete d[t]:l.setRequestHeader(t,e)}),r.isUndefined(e.withCredentials)||(l.withCredentials=!!e.withCredentials),e.responseType)try{l.responseType=e.responseType}catch(t){if("json"!==e.responseType)throw t}"function"==typeof e.onDownloadProgress&&l.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then(function(e){l&&(l.abort(),n(e),l=null)}),p||(p=null),l.send(p)})}},function(e,t,n){"use strict";var r=n(14);e.exports=function(e,t,n){var o=n.config.validateStatus;n.status&&o&&!o(n.status)?t(r("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)}},function(e,t,n){"use strict";var r=n(15);e.exports=function(e,t,n,o,i){var s=new Error(e);return r(s,t,n,o,i)}},function(e,t){"use strict";e.exports=function(e,t,n,r,o){return e.config=t,n&&(e.code=n),e.request=r,e.response=o,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},function(e,t,n){"use strict";var r=n(2);e.exports=r.isStandardBrowserEnv()?function(){return{write:function(e,t,n,o,i,s){var a=[];a.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),r.isString(o)&&a.push("path="+o),r.isString(i)&&a.push("domain="+i),s===!0&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},function(e,t,n){"use strict";var r=n(18),o=n(19);e.exports=function(e,t){return e&&!r(t)?o(e,t):t}},function(e,t){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},function(e,t){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},function(e,t,n){"use strict";var r=n(2),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,i,s={};return e?(r.forEach(e.split("\n"),function(e){if(i=e.indexOf(":"),t=r.trim(e.substr(0,i)).toLowerCase(),n=r.trim(e.substr(i+1)),t){if(s[t]&&o.indexOf(t)>=0)return;"set-cookie"===t?s[t]=(s[t]?s[t]:[]).concat([n]):s[t]=s[t]?s[t]+", "+n:n}}),s):s}},function(e,t,n){"use strict";var r=n(2);e.exports=r.isStandardBrowserEnv()?function(){function e(e){var t=e;return n&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,n=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(n){var o=r.isString(n)?e(n):n;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t){function n(e,t){return r.isPlainObject(e)&&r.isPlainObject(t)?r.merge(e,t):r.isPlainObject(t)?r.merge({},t):r.isArray(t)?t.slice():t}function o(o){r.isUndefined(t[o])?r.isUndefined(e[o])||(i[o]=n(void 0,e[o])):i[o]=n(e[o],t[o])}t=t||{};var i={},s=["url","method","data"],a=["headers","auth","proxy","params"],u=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],c=["validateStatus"];r.forEach(s,function(e){r.isUndefined(t[e])||(i[e]=n(void 0,t[e]))}),r.forEach(a,o),r.forEach(u,function(o){r.isUndefined(t[o])?r.isUndefined(e[o])||(i[o]=n(void 0,e[o])):i[o]=n(void 0,t[o])}),r.forEach(c,function(r){r in t?i[r]=n(e[r],t[r]):r in e&&(i[r]=n(void 0,e[r]))});var f=s.concat(a).concat(u).concat(c),p=Object.keys(e).concat(Object.keys(t)).filter(function(e){return f.indexOf(e)===-1});return r.forEach(p,o),i}},function(e,t){"use strict";function n(e){this.message=e}n.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},n.prototype.__CANCEL__=!0,e.exports=n},function(e,t,n){"use strict";function r(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise(function(e){t=e});var n=this;e(function(e){n.reason||(n.reason=new o(e),t(n.reason))})}var o=n(23);r.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},r.source=function(){var e,t=new r(function(t){e=t});return{token:t,cancel:e}},e.exports=r},function(e,t){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}}])}); +//# sourceMappingURL=axios.min.map \ No newline at end of file diff --git a/device/target/classes/static/js/element.js b/device/target/classes/static/js/element.js new file mode 100644 index 0000000..6d6592f --- /dev/null +++ b/device/target/classes/static/js/element.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("vue")):"function"==typeof define&&define.amd?define("ELEMENT",["vue"],t):"object"==typeof exports?exports.ELEMENT=t(require("vue")):e.ELEMENT=t(e.Vue)}("undefined"!=typeof self?self:this,function(e){return function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s=51)}([function(t,n){t.exports=e},function(e,t,n){var i=n(4);e.exports=function(e,t,n){return void 0===n?i(e,t,!1):i(e,n,!1!==t)}},function(e,t,n){var i;!function(r){"use strict";var o={},s=/d{1,4}|M{1,4}|yy(?:yy)?|S{1,3}|Do|ZZ|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g,a="[^\\s]+",l=/\[([^]*?)\]/gm,u=function(){};function c(e,t){for(var n=[],i=0,r=e.length;i3?0:(e-e%10!=10)*e%10]}};var g={D:function(e){return e.getDay()},DD:function(e){return d(e.getDay())},Do:function(e,t){return t.DoFn(e.getDate())},d:function(e){return e.getDate()},dd:function(e){return d(e.getDate())},ddd:function(e,t){return t.dayNamesShort[e.getDay()]},dddd:function(e,t){return t.dayNames[e.getDay()]},M:function(e){return e.getMonth()+1},MM:function(e){return d(e.getMonth()+1)},MMM:function(e,t){return t.monthNamesShort[e.getMonth()]},MMMM:function(e,t){return t.monthNames[e.getMonth()]},yy:function(e){return d(String(e.getFullYear()),4).substr(2)},yyyy:function(e){return d(e.getFullYear(),4)},h:function(e){return e.getHours()%12||12},hh:function(e){return d(e.getHours()%12||12)},H:function(e){return e.getHours()},HH:function(e){return d(e.getHours())},m:function(e){return e.getMinutes()},mm:function(e){return d(e.getMinutes())},s:function(e){return e.getSeconds()},ss:function(e){return d(e.getSeconds())},S:function(e){return Math.round(e.getMilliseconds()/100)},SS:function(e){return d(Math.round(e.getMilliseconds()/10),2)},SSS:function(e){return d(e.getMilliseconds(),3)},a:function(e,t){return e.getHours()<12?t.amPm[0]:t.amPm[1]},A:function(e,t){return e.getHours()<12?t.amPm[0].toUpperCase():t.amPm[1].toUpperCase()},ZZ:function(e){var t=e.getTimezoneOffset();return(t>0?"-":"+")+d(100*Math.floor(Math.abs(t)/60)+Math.abs(t)%60,4)}},y={d:["\\d\\d?",function(e,t){e.day=t}],Do:["\\d\\d?"+a,function(e,t){e.day=parseInt(t,10)}],M:["\\d\\d?",function(e,t){e.month=t-1}],yy:["\\d\\d?",function(e,t){var n=+(""+(new Date).getFullYear()).substr(0,2);e.year=""+(t>68?n-1:n)+t}],h:["\\d\\d?",function(e,t){e.hour=t}],m:["\\d\\d?",function(e,t){e.minute=t}],s:["\\d\\d?",function(e,t){e.second=t}],yyyy:["\\d{4}",function(e,t){e.year=t}],S:["\\d",function(e,t){e.millisecond=100*t}],SS:["\\d{2}",function(e,t){e.millisecond=10*t}],SSS:["\\d{3}",function(e,t){e.millisecond=t}],D:["\\d\\d?",u],ddd:[a,u],MMM:[a,h("monthNamesShort")],MMMM:[a,h("monthNames")],a:[a,function(e,t,n){var i=t.toLowerCase();i===n.amPm[0]?e.isPm=!1:i===n.amPm[1]&&(e.isPm=!0)}],ZZ:["[^\\s]*?[\\+\\-]\\d\\d:?\\d\\d|[^\\s]*?Z",function(e,t){var n,i=(t+"").match(/([+-]|\d\d)/gi);i&&(n=60*i[1]+parseInt(i[2],10),e.timezoneOffset="+"===i[0]?n:-n)}]};y.dd=y.d,y.dddd=y.ddd,y.DD=y.D,y.mm=y.m,y.hh=y.H=y.HH=y.h,y.MM=y.M,y.ss=y.s,y.A=y.a,o.masks={default:"ddd MMM dd yyyy HH:mm:ss",shortDate:"M/D/yy",mediumDate:"MMM d, yyyy",longDate:"MMMM d, yyyy",fullDate:"dddd, MMMM d, yyyy",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"},o.format=function(e,t,n){var i=n||o.i18n;if("number"==typeof e&&(e=new Date(e)),"[object Date]"!==Object.prototype.toString.call(e)||isNaN(e.getTime()))throw new Error("Invalid Date in fecha.format");t=o.masks[t]||t||o.masks.default;var r=[];return(t=(t=t.replace(l,function(e,t){return r.push(t),"@@@"})).replace(s,function(t){return t in g?g[t](e,i):t.slice(1,t.length-1)})).replace(/@@@/g,function(){return r.shift()})},o.parse=function(e,t,n){var i=n||o.i18n;if("string"!=typeof t)throw new Error("Invalid format in fecha.parse");if(t=o.masks[t]||t,e.length>1e3)return null;var r={},a=[],u=[];t=t.replace(l,function(e,t){return u.push(t),"@@@"});var c,h=(c=t,c.replace(/[|\\{()[^$+*?.-]/g,"\\$&")).replace(s,function(e){if(y[e]){var t=y[e];return a.push(t[1]),"("+t[0]+")"}return e});h=h.replace(/@@@/g,function(){return u.shift()});var d=e.match(new RegExp(h,"i"));if(!d)return null;for(var f=1;fe?u():!0!==t&&(r=setTimeout(i?function(){r=void 0}:u,void 0===i?e-a:e))}}},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t){var n=/^(attrs|props|on|nativeOn|class|style|hook)$/;function i(e,t){return function(){e&&e.apply(this,arguments),t&&t.apply(this,arguments)}}e.exports=function(e){return e.reduce(function(e,t){var r,o,s,a,l;for(s in t)if(r=e[s],o=t[s],r&&n.test(s))if("class"===s&&("string"==typeof r&&(l=r,e[s]=r={},r[l]=!0),"string"==typeof o&&(l=o,t[s]=o={},o[l]=!0)),"on"===s||"nativeOn"===s||"hook"===s)for(a in o)r[a]=i(r[a],o[a]);else if(Array.isArray(r))e[s]=r.concat(o);else if(Array.isArray(o))e[s]=[r].concat(o);else for(a in o)r[a]=o[a];else e[s]=t[s];return e},{})}},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){"use strict";t.__esModule=!0;var i,r=n(57),o=(i=r)&&i.__esModule?i:{default:i};t.default=o.default||function(e){for(var t=1;t>>1,z=[["ary",k],["bind",g],["bindKey",y],["curry",_],["curryRight",w],["flip",D],["partial",x],["partialRight",C],["rearg",S]],R="[object Arguments]",H="[object Array]",j="[object AsyncFunction]",W="[object Boolean]",q="[object Date]",Y="[object DOMException]",K="[object Error]",U="[object Function]",G="[object GeneratorFunction]",X="[object Map]",Z="[object Number]",J="[object Null]",Q="[object Object]",ee="[object Proxy]",te="[object RegExp]",ne="[object Set]",ie="[object String]",re="[object Symbol]",oe="[object Undefined]",se="[object WeakMap]",ae="[object WeakSet]",le="[object ArrayBuffer]",ue="[object DataView]",ce="[object Float32Array]",he="[object Float64Array]",de="[object Int8Array]",fe="[object Int16Array]",pe="[object Int32Array]",me="[object Uint8Array]",ve="[object Uint8ClampedArray]",ge="[object Uint16Array]",ye="[object Uint32Array]",be=/\b__p \+= '';/g,_e=/\b(__p \+=) '' \+/g,we=/(__e\(.*?\)|\b__t\)) \+\n'';/g,xe=/&(?:amp|lt|gt|quot|#39);/g,Ce=/[&<>"']/g,ke=RegExp(xe.source),Se=RegExp(Ce.source),De=/<%-([\s\S]+?)%>/g,Ee=/<%([\s\S]+?)%>/g,$e=/<%=([\s\S]+?)%>/g,Te=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Me=/^\w*$/,Ne=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Oe=/[\\^$.*+?()[\]{}|]/g,Pe=RegExp(Oe.source),Ie=/^\s+|\s+$/g,Ae=/^\s+/,Fe=/\s+$/,Le=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Ve=/\{\n\/\* \[wrapped with (.+)\] \*/,Be=/,? & /,ze=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Re=/\\(\\)?/g,He=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,je=/\w*$/,We=/^[-+]0x[0-9a-f]+$/i,qe=/^0b[01]+$/i,Ye=/^\[object .+?Constructor\]$/,Ke=/^0o[0-7]+$/i,Ue=/^(?:0|[1-9]\d*)$/,Ge=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Xe=/($^)/,Ze=/['\n\r\u2028\u2029\\]/g,Je="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Qe="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",et="[\\ud800-\\udfff]",tt="["+Qe+"]",nt="["+Je+"]",it="\\d+",rt="[\\u2700-\\u27bf]",ot="[a-z\\xdf-\\xf6\\xf8-\\xff]",st="[^\\ud800-\\udfff"+Qe+it+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",at="\\ud83c[\\udffb-\\udfff]",lt="[^\\ud800-\\udfff]",ut="(?:\\ud83c[\\udde6-\\uddff]){2}",ct="[\\ud800-\\udbff][\\udc00-\\udfff]",ht="[A-Z\\xc0-\\xd6\\xd8-\\xde]",dt="(?:"+ot+"|"+st+")",ft="(?:"+ht+"|"+st+")",pt="(?:"+nt+"|"+at+")"+"?",mt="[\\ufe0e\\ufe0f]?"+pt+("(?:\\u200d(?:"+[lt,ut,ct].join("|")+")[\\ufe0e\\ufe0f]?"+pt+")*"),vt="(?:"+[rt,ut,ct].join("|")+")"+mt,gt="(?:"+[lt+nt+"?",nt,ut,ct,et].join("|")+")",yt=RegExp("['’]","g"),bt=RegExp(nt,"g"),_t=RegExp(at+"(?="+at+")|"+gt+mt,"g"),wt=RegExp([ht+"?"+ot+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[tt,ht,"$"].join("|")+")",ft+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[tt,ht+dt,"$"].join("|")+")",ht+"?"+dt+"+(?:['’](?:d|ll|m|re|s|t|ve))?",ht+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",it,vt].join("|"),"g"),xt=RegExp("[\\u200d\\ud800-\\udfff"+Je+"\\ufe0e\\ufe0f]"),Ct=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,kt=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],St=-1,Dt={};Dt[ce]=Dt[he]=Dt[de]=Dt[fe]=Dt[pe]=Dt[me]=Dt[ve]=Dt[ge]=Dt[ye]=!0,Dt[R]=Dt[H]=Dt[le]=Dt[W]=Dt[ue]=Dt[q]=Dt[K]=Dt[U]=Dt[X]=Dt[Z]=Dt[Q]=Dt[te]=Dt[ne]=Dt[ie]=Dt[se]=!1;var Et={};Et[R]=Et[H]=Et[le]=Et[ue]=Et[W]=Et[q]=Et[ce]=Et[he]=Et[de]=Et[fe]=Et[pe]=Et[X]=Et[Z]=Et[Q]=Et[te]=Et[ne]=Et[ie]=Et[re]=Et[me]=Et[ve]=Et[ge]=Et[ye]=!0,Et[K]=Et[U]=Et[se]=!1;var $t={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Tt=parseFloat,Mt=parseInt,Nt="object"==typeof e&&e&&e.Object===Object&&e,Ot="object"==typeof self&&self&&self.Object===Object&&self,Pt=Nt||Ot||Function("return this")(),It=t&&!t.nodeType&&t,At=It&&"object"==typeof i&&i&&!i.nodeType&&i,Ft=At&&At.exports===It,Lt=Ft&&Nt.process,Vt=function(){try{var e=At&&At.require&&At.require("util").types;return e||Lt&&Lt.binding&&Lt.binding("util")}catch(e){}}(),Bt=Vt&&Vt.isArrayBuffer,zt=Vt&&Vt.isDate,Rt=Vt&&Vt.isMap,Ht=Vt&&Vt.isRegExp,jt=Vt&&Vt.isSet,Wt=Vt&&Vt.isTypedArray;function qt(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function Yt(e,t,n,i){for(var r=-1,o=null==e?0:e.length;++r-1}function Jt(e,t,n){for(var i=-1,r=null==e?0:e.length;++i-1;);return n}function wn(e,t){for(var n=e.length;n--&&ln(t,e[n],0)>-1;);return n}var xn=fn({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),Cn=fn({"&":"&","<":"<",">":">",'"':""","'":"'"});function kn(e){return"\\"+$t[e]}function Sn(e){return xt.test(e)}function Dn(e){var t=-1,n=Array(e.size);return e.forEach(function(e,i){n[++t]=[i,e]}),n}function En(e,t){return function(n){return e(t(n))}}function $n(e,t){for(var n=-1,i=e.length,r=0,o=[];++n",""":'"',"'":"'"});var An=function e(t){var n,i=(t=null==t?Pt:An.defaults(Pt.Object(),t,An.pick(Pt,kt))).Array,r=t.Date,Je=t.Error,Qe=t.Function,et=t.Math,tt=t.Object,nt=t.RegExp,it=t.String,rt=t.TypeError,ot=i.prototype,st=Qe.prototype,at=tt.prototype,lt=t["__core-js_shared__"],ut=st.toString,ct=at.hasOwnProperty,ht=0,dt=(n=/[^.]+$/.exec(lt&<.keys&<.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",ft=at.toString,pt=ut.call(tt),mt=Pt._,vt=nt("^"+ut.call(ct).replace(Oe,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),gt=Ft?t.Buffer:o,_t=t.Symbol,xt=t.Uint8Array,$t=gt?gt.allocUnsafe:o,Nt=En(tt.getPrototypeOf,tt),Ot=tt.create,It=at.propertyIsEnumerable,At=ot.splice,Lt=_t?_t.isConcatSpreadable:o,Vt=_t?_t.iterator:o,on=_t?_t.toStringTag:o,fn=function(){try{var e=zo(tt,"defineProperty");return e({},"",{}),e}catch(e){}}(),Fn=t.clearTimeout!==Pt.clearTimeout&&t.clearTimeout,Ln=r&&r.now!==Pt.Date.now&&r.now,Vn=t.setTimeout!==Pt.setTimeout&&t.setTimeout,Bn=et.ceil,zn=et.floor,Rn=tt.getOwnPropertySymbols,Hn=gt?gt.isBuffer:o,jn=t.isFinite,Wn=ot.join,qn=En(tt.keys,tt),Yn=et.max,Kn=et.min,Un=r.now,Gn=t.parseInt,Xn=et.random,Zn=ot.reverse,Jn=zo(t,"DataView"),Qn=zo(t,"Map"),ei=zo(t,"Promise"),ti=zo(t,"Set"),ni=zo(t,"WeakMap"),ii=zo(tt,"create"),ri=ni&&new ni,oi={},si=hs(Jn),ai=hs(Qn),li=hs(ei),ui=hs(ti),ci=hs(ni),hi=_t?_t.prototype:o,di=hi?hi.valueOf:o,fi=hi?hi.toString:o;function pi(e){if($a(e)&&!ga(e)&&!(e instanceof yi)){if(e instanceof gi)return e;if(ct.call(e,"__wrapped__"))return ds(e)}return new gi(e)}var mi=function(){function e(){}return function(t){if(!Ea(t))return{};if(Ot)return Ot(t);e.prototype=t;var n=new e;return e.prototype=o,n}}();function vi(){}function gi(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=o}function yi(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=L,this.__views__=[]}function bi(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t=t?e:t)),e}function Fi(e,t,n,i,r,s){var a,l=t&d,u=t&f,c=t&p;if(n&&(a=r?n(e,i,r,s):n(e)),a!==o)return a;if(!Ea(e))return e;var h=ga(e);if(h){if(a=function(e){var t=e.length,n=new e.constructor(t);return t&&"string"==typeof e[0]&&ct.call(e,"index")&&(n.index=e.index,n.input=e.input),n}(e),!l)return io(e,a)}else{var m=jo(e),v=m==U||m==G;if(wa(e))return Zr(e,l);if(m==Q||m==R||v&&!r){if(a=u||v?{}:qo(e),!l)return u?function(e,t){return ro(e,Ho(e),t)}(e,function(e,t){return e&&ro(t,ol(t),e)}(a,e)):function(e,t){return ro(e,Ro(e),t)}(e,Oi(a,e))}else{if(!Et[m])return r?e:{};a=function(e,t,n){var i,r,o,s=e.constructor;switch(t){case le:return Jr(e);case W:case q:return new s(+e);case ue:return function(e,t){var n=t?Jr(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case ce:case he:case de:case fe:case pe:case me:case ve:case ge:case ye:return Qr(e,n);case X:return new s;case Z:case ie:return new s(e);case te:return(o=new(r=e).constructor(r.source,je.exec(r))).lastIndex=r.lastIndex,o;case ne:return new s;case re:return i=e,di?tt(di.call(i)):{}}}(e,m,l)}}s||(s=new Ci);var g=s.get(e);if(g)return g;if(s.set(e,a),Pa(e))return e.forEach(function(i){a.add(Fi(i,t,n,i,e,s))}),a;if(Ta(e))return e.forEach(function(i,r){a.set(r,Fi(i,t,n,r,e,s))}),a;var y=h?o:(c?u?Po:Oo:u?ol:rl)(e);return Kt(y||e,function(i,r){y&&(i=e[r=i]),Ti(a,r,Fi(i,t,n,r,e,s))}),a}function Li(e,t,n){var i=n.length;if(null==e)return!i;for(e=tt(e);i--;){var r=n[i],s=t[r],a=e[r];if(a===o&&!(r in e)||!s(a))return!1}return!0}function Vi(e,t,n){if("function"!=typeof e)throw new rt(l);return rs(function(){e.apply(o,n)},t)}function Bi(e,t,n,i){var r=-1,o=Zt,a=!0,l=e.length,u=[],c=t.length;if(!l)return u;n&&(t=Qt(t,gn(n))),i?(o=Jt,a=!1):t.length>=s&&(o=bn,a=!1,t=new xi(t));e:for(;++r-1},_i.prototype.set=function(e,t){var n=this.__data__,i=Mi(n,e);return i<0?(++this.size,n.push([e,t])):n[i][1]=t,this},wi.prototype.clear=function(){this.size=0,this.__data__={hash:new bi,map:new(Qn||_i),string:new bi}},wi.prototype.delete=function(e){var t=Vo(this,e).delete(e);return this.size-=t?1:0,t},wi.prototype.get=function(e){return Vo(this,e).get(e)},wi.prototype.has=function(e){return Vo(this,e).has(e)},wi.prototype.set=function(e,t){var n=Vo(this,e),i=n.size;return n.set(e,t),this.size+=n.size==i?0:1,this},xi.prototype.add=xi.prototype.push=function(e){return this.__data__.set(e,u),this},xi.prototype.has=function(e){return this.__data__.has(e)},Ci.prototype.clear=function(){this.__data__=new _i,this.size=0},Ci.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},Ci.prototype.get=function(e){return this.__data__.get(e)},Ci.prototype.has=function(e){return this.__data__.has(e)},Ci.prototype.set=function(e,t){var n=this.__data__;if(n instanceof _i){var i=n.__data__;if(!Qn||i.length0&&n(a)?t>1?qi(a,t-1,n,i,r):en(r,a):i||(r[r.length]=a)}return r}var Yi=lo(),Ki=lo(!0);function Ui(e,t){return e&&Yi(e,t,rl)}function Gi(e,t){return e&&Ki(e,t,rl)}function Xi(e,t){return Xt(t,function(t){return ka(e[t])})}function Zi(e,t){for(var n=0,i=(t=Kr(t,e)).length;null!=e&&nt}function tr(e,t){return null!=e&&ct.call(e,t)}function nr(e,t){return null!=e&&t in tt(e)}function ir(e,t,n){for(var r=n?Jt:Zt,s=e[0].length,a=e.length,l=a,u=i(a),c=1/0,h=[];l--;){var d=e[l];l&&t&&(d=Qt(d,gn(t))),c=Kn(d.length,c),u[l]=!n&&(t||s>=120&&d.length>=120)?new xi(l&&d):o}d=e[0];var f=-1,p=u[0];e:for(;++f=a)return l;var u=n[i];return l*("desc"==u?-1:1)}}return e.index-t.index}(e,t,n)})}function br(e,t,n){for(var i=-1,r=t.length,o={};++i-1;)a!==e&&At.call(a,l,1),At.call(e,l,1);return e}function wr(e,t){for(var n=e?t.length:0,i=n-1;n--;){var r=t[n];if(n==i||r!==o){var o=r;Ko(r)?At.call(e,r,1):Br(e,r)}}return e}function xr(e,t){return e+zn(Xn()*(t-e+1))}function Cr(e,t){var n="";if(!e||t<1||t>I)return n;do{t%2&&(n+=e),(t=zn(t/2))&&(e+=e)}while(t);return n}function kr(e,t){return os(ts(e,t,Ml),e+"")}function Sr(e){return Si(fl(e))}function Dr(e,t){var n=fl(e);return ls(n,Ai(t,0,n.length))}function Er(e,t,n,i){if(!Ea(e))return e;for(var r=-1,s=(t=Kr(t,e)).length,a=s-1,l=e;null!=l&&++ro?0:o+t),(n=n>o?o:n)<0&&(n+=o),o=t>n?0:n-t>>>0,t>>>=0;for(var s=i(o);++r>>1,s=e[o];null!==s&&!Aa(s)&&(n?s<=t:s=s){var c=t?null:ko(e);if(c)return Mn(c);a=!1,r=bn,u=new xi}else u=t?[]:l;e:for(;++i=i?e:Nr(e,t,n)}var Xr=Fn||function(e){return Pt.clearTimeout(e)};function Zr(e,t){if(t)return e.slice();var n=e.length,i=$t?$t(n):new e.constructor(n);return e.copy(i),i}function Jr(e){var t=new e.constructor(e.byteLength);return new xt(t).set(new xt(e)),t}function Qr(e,t){var n=t?Jr(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function eo(e,t){if(e!==t){var n=e!==o,i=null===e,r=e==e,s=Aa(e),a=t!==o,l=null===t,u=t==t,c=Aa(t);if(!l&&!c&&!s&&e>t||s&&a&&u&&!l&&!c||i&&a&&u||!n&&u||!r)return 1;if(!i&&!s&&!c&&e1?n[r-1]:o,a=r>2?n[2]:o;for(s=e.length>3&&"function"==typeof s?(r--,s):o,a&&Uo(n[0],n[1],a)&&(s=r<3?o:s,r=1),t=tt(t);++i-1?r[s?t[a]:a]:o}}function po(e){return No(function(t){var n=t.length,i=n,r=gi.prototype.thru;for(e&&t.reverse();i--;){var s=t[i];if("function"!=typeof s)throw new rt(l);if(r&&!a&&"wrapper"==Ao(s))var a=new gi([],!0)}for(i=a?i:n;++i1&&_.reverse(),d&&cl))return!1;var c=s.get(e);if(c&&s.get(t))return c==t;var h=-1,d=!0,f=n&v?new xi:o;for(s.set(e,t),s.set(t,e);++h-1&&e%1==0&&e1?"& ":"")+t[i],t=t.join(n>2?", ":" "),e.replace(Le,"{\n/* [wrapped with "+t+"] */\n")}(i,function(e,t){return Kt(z,function(n){var i="_."+n[0];t&n[1]&&!Zt(e,i)&&e.push(i)}),e.sort()}(function(e){var t=e.match(Ve);return t?t[1].split(Be):[]}(i),n)))}function as(e){var t=0,n=0;return function(){var i=Un(),r=M-(i-n);if(n=i,r>0){if(++t>=T)return arguments[0]}else t=0;return e.apply(o,arguments)}}function ls(e,t){var n=-1,i=e.length,r=i-1;for(t=t===o?i:t;++n1?e[t-1]:o;return n="function"==typeof n?(e.pop(),n):o,Os(e,n)});function Bs(e){var t=pi(e);return t.__chain__=!0,t}function zs(e,t){return t(e)}var Rs=No(function(e){var t=e.length,n=t?e[0]:0,i=this.__wrapped__,r=function(t){return Ii(t,e)};return!(t>1||this.__actions__.length)&&i instanceof yi&&Ko(n)?((i=i.slice(n,+n+(t?1:0))).__actions__.push({func:zs,args:[r],thisArg:o}),new gi(i,this.__chain__).thru(function(e){return t&&!e.length&&e.push(o),e})):this.thru(r)});var Hs=oo(function(e,t,n){ct.call(e,n)?++e[n]:Pi(e,n,1)});var js=fo(vs),Ws=fo(gs);function qs(e,t){return(ga(e)?Kt:zi)(e,Lo(t,3))}function Ys(e,t){return(ga(e)?Ut:Ri)(e,Lo(t,3))}var Ks=oo(function(e,t,n){ct.call(e,n)?e[n].push(t):Pi(e,n,[t])});var Us=kr(function(e,t,n){var r=-1,o="function"==typeof t,s=ba(e)?i(e.length):[];return zi(e,function(e){s[++r]=o?qt(t,e,n):rr(e,t,n)}),s}),Gs=oo(function(e,t,n){Pi(e,n,t)});function Xs(e,t){return(ga(e)?Qt:fr)(e,Lo(t,3))}var Zs=oo(function(e,t,n){e[n?0:1].push(t)},function(){return[[],[]]});var Js=kr(function(e,t){if(null==e)return[];var n=t.length;return n>1&&Uo(e,t[0],t[1])?t=[]:n>2&&Uo(t[0],t[1],t[2])&&(t=[t[0]]),yr(e,qi(t,1),[])}),Qs=Ln||function(){return Pt.Date.now()};function ea(e,t,n){return t=n?o:t,t=e&&null==t?e.length:t,Do(e,k,o,o,o,o,t)}function ta(e,t){var n;if("function"!=typeof t)throw new rt(l);return e=Ra(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=o),n}}var na=kr(function(e,t,n){var i=g;if(n.length){var r=$n(n,Fo(na));i|=x}return Do(e,i,t,n,r)}),ia=kr(function(e,t,n){var i=g|y;if(n.length){var r=$n(n,Fo(ia));i|=x}return Do(t,i,e,n,r)});function ra(e,t,n){var i,r,s,a,u,c,h=0,d=!1,f=!1,p=!0;if("function"!=typeof e)throw new rt(l);function m(t){var n=i,s=r;return i=r=o,h=t,a=e.apply(s,n)}function v(e){var n=e-c;return c===o||n>=t||n<0||f&&e-h>=s}function g(){var e=Qs();if(v(e))return y(e);u=rs(g,function(e){var n=t-(e-c);return f?Kn(n,s-(e-h)):n}(e))}function y(e){return u=o,p&&i?m(e):(i=r=o,a)}function b(){var e=Qs(),n=v(e);if(i=arguments,r=this,c=e,n){if(u===o)return function(e){return h=e,u=rs(g,t),d?m(e):a}(c);if(f)return u=rs(g,t),m(c)}return u===o&&(u=rs(g,t)),a}return t=ja(t)||0,Ea(n)&&(d=!!n.leading,s=(f="maxWait"in n)?Yn(ja(n.maxWait)||0,t):s,p="trailing"in n?!!n.trailing:p),b.cancel=function(){u!==o&&Xr(u),h=0,i=c=r=u=o},b.flush=function(){return u===o?a:y(Qs())},b}var oa=kr(function(e,t){return Vi(e,1,t)}),sa=kr(function(e,t,n){return Vi(e,ja(t)||0,n)});function aa(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new rt(l);var n=function(){var i=arguments,r=t?t.apply(this,i):i[0],o=n.cache;if(o.has(r))return o.get(r);var s=e.apply(this,i);return n.cache=o.set(r,s)||o,s};return n.cache=new(aa.Cache||wi),n}function la(e){if("function"!=typeof e)throw new rt(l);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}aa.Cache=wi;var ua=Ur(function(e,t){var n=(t=1==t.length&&ga(t[0])?Qt(t[0],gn(Lo())):Qt(qi(t,1),gn(Lo()))).length;return kr(function(i){for(var r=-1,o=Kn(i.length,n);++r=t}),va=or(function(){return arguments}())?or:function(e){return $a(e)&&ct.call(e,"callee")&&!It.call(e,"callee")},ga=i.isArray,ya=Bt?gn(Bt):function(e){return $a(e)&&Qi(e)==le};function ba(e){return null!=e&&Da(e.length)&&!ka(e)}function _a(e){return $a(e)&&ba(e)}var wa=Hn||jl,xa=zt?gn(zt):function(e){return $a(e)&&Qi(e)==q};function Ca(e){if(!$a(e))return!1;var t=Qi(e);return t==K||t==Y||"string"==typeof e.message&&"string"==typeof e.name&&!Na(e)}function ka(e){if(!Ea(e))return!1;var t=Qi(e);return t==U||t==G||t==j||t==ee}function Sa(e){return"number"==typeof e&&e==Ra(e)}function Da(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=I}function Ea(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function $a(e){return null!=e&&"object"==typeof e}var Ta=Rt?gn(Rt):function(e){return $a(e)&&jo(e)==X};function Ma(e){return"number"==typeof e||$a(e)&&Qi(e)==Z}function Na(e){if(!$a(e)||Qi(e)!=Q)return!1;var t=Nt(e);if(null===t)return!0;var n=ct.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&ut.call(n)==pt}var Oa=Ht?gn(Ht):function(e){return $a(e)&&Qi(e)==te};var Pa=jt?gn(jt):function(e){return $a(e)&&jo(e)==ne};function Ia(e){return"string"==typeof e||!ga(e)&&$a(e)&&Qi(e)==ie}function Aa(e){return"symbol"==typeof e||$a(e)&&Qi(e)==re}var Fa=Wt?gn(Wt):function(e){return $a(e)&&Da(e.length)&&!!Dt[Qi(e)]};var La=wo(dr),Va=wo(function(e,t){return e<=t});function Ba(e){if(!e)return[];if(ba(e))return Ia(e)?Pn(e):io(e);if(Vt&&e[Vt])return function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}(e[Vt]());var t=jo(e);return(t==X?Dn:t==ne?Mn:fl)(e)}function za(e){return e?(e=ja(e))===P||e===-P?(e<0?-1:1)*A:e==e?e:0:0===e?e:0}function Ra(e){var t=za(e),n=t%1;return t==t?n?t-n:t:0}function Ha(e){return e?Ai(Ra(e),0,L):0}function ja(e){if("number"==typeof e)return e;if(Aa(e))return F;if(Ea(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=Ea(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(Ie,"");var n=qe.test(e);return n||Ke.test(e)?Mt(e.slice(2),n?2:8):We.test(e)?F:+e}function Wa(e){return ro(e,ol(e))}function qa(e){return null==e?"":Lr(e)}var Ya=so(function(e,t){if(Jo(t)||ba(t))ro(t,rl(t),e);else for(var n in t)ct.call(t,n)&&Ti(e,n,t[n])}),Ka=so(function(e,t){ro(t,ol(t),e)}),Ua=so(function(e,t,n,i){ro(t,ol(t),e,i)}),Ga=so(function(e,t,n,i){ro(t,rl(t),e,i)}),Xa=No(Ii);var Za=kr(function(e,t){e=tt(e);var n=-1,i=t.length,r=i>2?t[2]:o;for(r&&Uo(t[0],t[1],r)&&(i=1);++n1),t}),ro(e,Po(e),n),i&&(n=Fi(n,d|f|p,To));for(var r=t.length;r--;)Br(n,t[r]);return n});var ul=No(function(e,t){return null==e?{}:function(e,t){return br(e,t,function(t,n){return el(e,n)})}(e,t)});function cl(e,t){if(null==e)return{};var n=Qt(Po(e),function(e){return[e]});return t=Lo(t),br(e,n,function(e,n){return t(e,n[0])})}var hl=So(rl),dl=So(ol);function fl(e){return null==e?[]:yn(e,rl(e))}var pl=co(function(e,t,n){return t=t.toLowerCase(),e+(n?ml(t):t)});function ml(e){return Cl(qa(e).toLowerCase())}function vl(e){return(e=qa(e))&&e.replace(Ge,xn).replace(bt,"")}var gl=co(function(e,t,n){return e+(n?"-":"")+t.toLowerCase()}),yl=co(function(e,t,n){return e+(n?" ":"")+t.toLowerCase()}),bl=uo("toLowerCase");var _l=co(function(e,t,n){return e+(n?"_":"")+t.toLowerCase()});var wl=co(function(e,t,n){return e+(n?" ":"")+Cl(t)});var xl=co(function(e,t,n){return e+(n?" ":"")+t.toUpperCase()}),Cl=uo("toUpperCase");function kl(e,t,n){return e=qa(e),(t=n?o:t)===o?function(e){return Ct.test(e)}(e)?function(e){return e.match(wt)||[]}(e):function(e){return e.match(ze)||[]}(e):e.match(t)||[]}var Sl=kr(function(e,t){try{return qt(e,o,t)}catch(e){return Ca(e)?e:new Je(e)}}),Dl=No(function(e,t){return Kt(t,function(t){t=cs(t),Pi(e,t,na(e[t],e))}),e});function El(e){return function(){return e}}var $l=po(),Tl=po(!0);function Ml(e){return e}function Nl(e){return ur("function"==typeof e?e:Fi(e,d))}var Ol=kr(function(e,t){return function(n){return rr(n,e,t)}}),Pl=kr(function(e,t){return function(n){return rr(e,n,t)}});function Il(e,t,n){var i=rl(t),r=Xi(t,i);null!=n||Ea(t)&&(r.length||!i.length)||(n=t,t=e,e=this,r=Xi(t,rl(t)));var o=!(Ea(n)&&"chain"in n&&!n.chain),s=ka(e);return Kt(r,function(n){var i=t[n];e[n]=i,s&&(e.prototype[n]=function(){var t=this.__chain__;if(o||t){var n=e(this.__wrapped__);return(n.__actions__=io(this.__actions__)).push({func:i,args:arguments,thisArg:e}),n.__chain__=t,n}return i.apply(e,en([this.value()],arguments))})}),e}function Al(){}var Fl=yo(Qt),Ll=yo(Gt),Vl=yo(rn);function Bl(e){return Go(e)?dn(cs(e)):function(e){return function(t){return Zi(t,e)}}(e)}var zl=_o(),Rl=_o(!0);function Hl(){return[]}function jl(){return!1}var Wl=go(function(e,t){return e+t},0),ql=Co("ceil"),Yl=go(function(e,t){return e/t},1),Kl=Co("floor");var Ul,Gl=go(function(e,t){return e*t},1),Xl=Co("round"),Zl=go(function(e,t){return e-t},0);return pi.after=function(e,t){if("function"!=typeof t)throw new rt(l);return e=Ra(e),function(){if(--e<1)return t.apply(this,arguments)}},pi.ary=ea,pi.assign=Ya,pi.assignIn=Ka,pi.assignInWith=Ua,pi.assignWith=Ga,pi.at=Xa,pi.before=ta,pi.bind=na,pi.bindAll=Dl,pi.bindKey=ia,pi.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return ga(e)?e:[e]},pi.chain=Bs,pi.chunk=function(e,t,n){t=(n?Uo(e,t,n):t===o)?1:Yn(Ra(t),0);var r=null==e?0:e.length;if(!r||t<1)return[];for(var s=0,a=0,l=i(Bn(r/t));sr?0:r+n),(i=i===o||i>r?r:Ra(i))<0&&(i+=r),i=n>i?0:Ha(i);n>>0)?(e=qa(e))&&("string"==typeof t||null!=t&&!Oa(t))&&!(t=Lr(t))&&Sn(e)?Gr(Pn(e),0,n):e.split(t,n):[]},pi.spread=function(e,t){if("function"!=typeof e)throw new rt(l);return t=null==t?0:Yn(Ra(t),0),kr(function(n){var i=n[t],r=Gr(n,0,t);return i&&en(r,i),qt(e,this,r)})},pi.tail=function(e){var t=null==e?0:e.length;return t?Nr(e,1,t):[]},pi.take=function(e,t,n){return e&&e.length?Nr(e,0,(t=n||t===o?1:Ra(t))<0?0:t):[]},pi.takeRight=function(e,t,n){var i=null==e?0:e.length;return i?Nr(e,(t=i-(t=n||t===o?1:Ra(t)))<0?0:t,i):[]},pi.takeRightWhile=function(e,t){return e&&e.length?Rr(e,Lo(t,3),!1,!0):[]},pi.takeWhile=function(e,t){return e&&e.length?Rr(e,Lo(t,3)):[]},pi.tap=function(e,t){return t(e),e},pi.throttle=function(e,t,n){var i=!0,r=!0;if("function"!=typeof e)throw new rt(l);return Ea(n)&&(i="leading"in n?!!n.leading:i,r="trailing"in n?!!n.trailing:r),ra(e,t,{leading:i,maxWait:t,trailing:r})},pi.thru=zs,pi.toArray=Ba,pi.toPairs=hl,pi.toPairsIn=dl,pi.toPath=function(e){return ga(e)?Qt(e,cs):Aa(e)?[e]:io(us(qa(e)))},pi.toPlainObject=Wa,pi.transform=function(e,t,n){var i=ga(e),r=i||wa(e)||Fa(e);if(t=Lo(t,4),null==n){var o=e&&e.constructor;n=r?i?new o:[]:Ea(e)&&ka(o)?mi(Nt(e)):{}}return(r?Kt:Ui)(e,function(e,i,r){return t(n,e,i,r)}),n},pi.unary=function(e){return ea(e,1)},pi.union=$s,pi.unionBy=Ts,pi.unionWith=Ms,pi.uniq=function(e){return e&&e.length?Vr(e):[]},pi.uniqBy=function(e,t){return e&&e.length?Vr(e,Lo(t,2)):[]},pi.uniqWith=function(e,t){return t="function"==typeof t?t:o,e&&e.length?Vr(e,o,t):[]},pi.unset=function(e,t){return null==e||Br(e,t)},pi.unzip=Ns,pi.unzipWith=Os,pi.update=function(e,t,n){return null==e?e:zr(e,t,Yr(n))},pi.updateWith=function(e,t,n,i){return i="function"==typeof i?i:o,null==e?e:zr(e,t,Yr(n),i)},pi.values=fl,pi.valuesIn=function(e){return null==e?[]:yn(e,ol(e))},pi.without=Ps,pi.words=kl,pi.wrap=function(e,t){return ca(Yr(t),e)},pi.xor=Is,pi.xorBy=As,pi.xorWith=Fs,pi.zip=Ls,pi.zipObject=function(e,t){return Wr(e||[],t||[],Ti)},pi.zipObjectDeep=function(e,t){return Wr(e||[],t||[],Er)},pi.zipWith=Vs,pi.entries=hl,pi.entriesIn=dl,pi.extend=Ka,pi.extendWith=Ua,Il(pi,pi),pi.add=Wl,pi.attempt=Sl,pi.camelCase=pl,pi.capitalize=ml,pi.ceil=ql,pi.clamp=function(e,t,n){return n===o&&(n=t,t=o),n!==o&&(n=(n=ja(n))==n?n:0),t!==o&&(t=(t=ja(t))==t?t:0),Ai(ja(e),t,n)},pi.clone=function(e){return Fi(e,p)},pi.cloneDeep=function(e){return Fi(e,d|p)},pi.cloneDeepWith=function(e,t){return Fi(e,d|p,t="function"==typeof t?t:o)},pi.cloneWith=function(e,t){return Fi(e,p,t="function"==typeof t?t:o)},pi.conformsTo=function(e,t){return null==t||Li(e,t,rl(t))},pi.deburr=vl,pi.defaultTo=function(e,t){return null==e||e!=e?t:e},pi.divide=Yl,pi.endsWith=function(e,t,n){e=qa(e),t=Lr(t);var i=e.length,r=n=n===o?i:Ai(Ra(n),0,i);return(n-=t.length)>=0&&e.slice(n,r)==t},pi.eq=fa,pi.escape=function(e){return(e=qa(e))&&Se.test(e)?e.replace(Ce,Cn):e},pi.escapeRegExp=function(e){return(e=qa(e))&&Pe.test(e)?e.replace(Oe,"\\$&"):e},pi.every=function(e,t,n){var i=ga(e)?Gt:Hi;return n&&Uo(e,t,n)&&(t=o),i(e,Lo(t,3))},pi.find=js,pi.findIndex=vs,pi.findKey=function(e,t){return sn(e,Lo(t,3),Ui)},pi.findLast=Ws,pi.findLastIndex=gs,pi.findLastKey=function(e,t){return sn(e,Lo(t,3),Gi)},pi.floor=Kl,pi.forEach=qs,pi.forEachRight=Ys,pi.forIn=function(e,t){return null==e?e:Yi(e,Lo(t,3),ol)},pi.forInRight=function(e,t){return null==e?e:Ki(e,Lo(t,3),ol)},pi.forOwn=function(e,t){return e&&Ui(e,Lo(t,3))},pi.forOwnRight=function(e,t){return e&&Gi(e,Lo(t,3))},pi.get=Qa,pi.gt=pa,pi.gte=ma,pi.has=function(e,t){return null!=e&&Wo(e,t,tr)},pi.hasIn=el,pi.head=bs,pi.identity=Ml,pi.includes=function(e,t,n,i){e=ba(e)?e:fl(e),n=n&&!i?Ra(n):0;var r=e.length;return n<0&&(n=Yn(r+n,0)),Ia(e)?n<=r&&e.indexOf(t,n)>-1:!!r&&ln(e,t,n)>-1},pi.indexOf=function(e,t,n){var i=null==e?0:e.length;if(!i)return-1;var r=null==n?0:Ra(n);return r<0&&(r=Yn(i+r,0)),ln(e,t,r)},pi.inRange=function(e,t,n){return t=za(t),n===o?(n=t,t=0):n=za(n),function(e,t,n){return e>=Kn(t,n)&&e=-I&&e<=I},pi.isSet=Pa,pi.isString=Ia,pi.isSymbol=Aa,pi.isTypedArray=Fa,pi.isUndefined=function(e){return e===o},pi.isWeakMap=function(e){return $a(e)&&jo(e)==se},pi.isWeakSet=function(e){return $a(e)&&Qi(e)==ae},pi.join=function(e,t){return null==e?"":Wn.call(e,t)},pi.kebabCase=gl,pi.last=Cs,pi.lastIndexOf=function(e,t,n){var i=null==e?0:e.length;if(!i)return-1;var r=i;return n!==o&&(r=(r=Ra(n))<0?Yn(i+r,0):Kn(r,i-1)),t==t?function(e,t,n){for(var i=n+1;i--;)if(e[i]===t)return i;return i}(e,t,r):an(e,cn,r,!0)},pi.lowerCase=yl,pi.lowerFirst=bl,pi.lt=La,pi.lte=Va,pi.max=function(e){return e&&e.length?ji(e,Ml,er):o},pi.maxBy=function(e,t){return e&&e.length?ji(e,Lo(t,2),er):o},pi.mean=function(e){return hn(e,Ml)},pi.meanBy=function(e,t){return hn(e,Lo(t,2))},pi.min=function(e){return e&&e.length?ji(e,Ml,dr):o},pi.minBy=function(e,t){return e&&e.length?ji(e,Lo(t,2),dr):o},pi.stubArray=Hl,pi.stubFalse=jl,pi.stubObject=function(){return{}},pi.stubString=function(){return""},pi.stubTrue=function(){return!0},pi.multiply=Gl,pi.nth=function(e,t){return e&&e.length?gr(e,Ra(t)):o},pi.noConflict=function(){return Pt._===this&&(Pt._=mt),this},pi.noop=Al,pi.now=Qs,pi.pad=function(e,t,n){e=qa(e);var i=(t=Ra(t))?On(e):0;if(!t||i>=t)return e;var r=(t-i)/2;return bo(zn(r),n)+e+bo(Bn(r),n)},pi.padEnd=function(e,t,n){e=qa(e);var i=(t=Ra(t))?On(e):0;return t&&it){var i=e;e=t,t=i}if(n||e%1||t%1){var r=Xn();return Kn(e+r*(t-e+Tt("1e-"+((r+"").length-1))),t)}return xr(e,t)},pi.reduce=function(e,t,n){var i=ga(e)?tn:pn,r=arguments.length<3;return i(e,Lo(t,4),n,r,zi)},pi.reduceRight=function(e,t,n){var i=ga(e)?nn:pn,r=arguments.length<3;return i(e,Lo(t,4),n,r,Ri)},pi.repeat=function(e,t,n){return t=(n?Uo(e,t,n):t===o)?1:Ra(t),Cr(qa(e),t)},pi.replace=function(){var e=arguments,t=qa(e[0]);return e.length<3?t:t.replace(e[1],e[2])},pi.result=function(e,t,n){var i=-1,r=(t=Kr(t,e)).length;for(r||(r=1,e=o);++iI)return[];var n=L,i=Kn(e,L);t=Lo(t),e-=L;for(var r=vn(i,t);++n=s)return e;var l=n-On(i);if(l<1)return i;var u=a?Gr(a,0,l).join(""):e.slice(0,l);if(r===o)return u+i;if(a&&(l+=u.length-l),Oa(r)){if(e.slice(l).search(r)){var c,h=u;for(r.global||(r=nt(r.source,qa(je.exec(r))+"g")),r.lastIndex=0;c=r.exec(h);)var d=c.index;u=u.slice(0,d===o?l:d)}}else if(e.indexOf(Lr(r),l)!=l){var f=u.lastIndexOf(r);f>-1&&(u=u.slice(0,f))}return u+i},pi.unescape=function(e){return(e=qa(e))&&ke.test(e)?e.replace(xe,In):e},pi.uniqueId=function(e){var t=++ht;return qa(e)+t},pi.upperCase=xl,pi.upperFirst=Cl,pi.each=qs,pi.eachRight=Ys,pi.first=bs,Il(pi,(Ul={},Ui(pi,function(e,t){ct.call(pi.prototype,t)||(Ul[t]=e)}),Ul),{chain:!1}),pi.VERSION="4.17.10",Kt(["bind","bindKey","curry","curryRight","partial","partialRight"],function(e){pi[e].placeholder=pi}),Kt(["drop","take"],function(e,t){yi.prototype[e]=function(n){n=n===o?1:Yn(Ra(n),0);var i=this.__filtered__&&!t?new yi(this):this.clone();return i.__filtered__?i.__takeCount__=Kn(n,i.__takeCount__):i.__views__.push({size:Kn(n,L),type:e+(i.__dir__<0?"Right":"")}),i},yi.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}}),Kt(["filter","map","takeWhile"],function(e,t){var n=t+1,i=n==N||3==n;yi.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:Lo(e,3),type:n}),t.__filtered__=t.__filtered__||i,t}}),Kt(["head","last"],function(e,t){var n="take"+(t?"Right":"");yi.prototype[e]=function(){return this[n](1).value()[0]}}),Kt(["initial","tail"],function(e,t){var n="drop"+(t?"":"Right");yi.prototype[e]=function(){return this.__filtered__?new yi(this):this[n](1)}}),yi.prototype.compact=function(){return this.filter(Ml)},yi.prototype.find=function(e){return this.filter(e).head()},yi.prototype.findLast=function(e){return this.reverse().find(e)},yi.prototype.invokeMap=kr(function(e,t){return"function"==typeof e?new yi(this):this.map(function(n){return rr(n,e,t)})}),yi.prototype.reject=function(e){return this.filter(la(Lo(e)))},yi.prototype.slice=function(e,t){e=Ra(e);var n=this;return n.__filtered__&&(e>0||t<0)?new yi(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),t!==o&&(n=(t=Ra(t))<0?n.dropRight(-t):n.take(t-e)),n)},yi.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},yi.prototype.toArray=function(){return this.take(L)},Ui(yi.prototype,function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),i=/^(?:head|last)$/.test(t),r=pi[i?"take"+("last"==t?"Right":""):t],s=i||/^find/.test(t);r&&(pi.prototype[t]=function(){var t=this.__wrapped__,a=i?[1]:arguments,l=t instanceof yi,u=a[0],c=l||ga(t),h=function(e){var t=r.apply(pi,en([e],a));return i&&d?t[0]:t};c&&n&&"function"==typeof u&&1!=u.length&&(l=c=!1);var d=this.__chain__,f=!!this.__actions__.length,p=s&&!d,m=l&&!f;if(!s&&c){t=m?t:new yi(this);var v=e.apply(t,a);return v.__actions__.push({func:zs,args:[h],thisArg:o}),new gi(v,d)}return p&&m?e.apply(this,a):(v=this.thru(h),p?i?v.value()[0]:v.value():v)})}),Kt(["pop","push","shift","sort","splice","unshift"],function(e){var t=ot[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",i=/^(?:pop|shift)$/.test(e);pi.prototype[e]=function(){var e=arguments;if(i&&!this.__chain__){var r=this.value();return t.apply(ga(r)?r:[],e)}return this[n](function(n){return t.apply(ga(n)?n:[],e)})}}),Ui(yi.prototype,function(e,t){var n=pi[t];if(n){var i=n.name+"";(oi[i]||(oi[i]=[])).push({name:t,func:n})}}),oi[mo(o,y).name]=[{name:"wrapper",func:o}],yi.prototype.clone=function(){var e=new yi(this.__wrapped__);return e.__actions__=io(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=io(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=io(this.__views__),e},yi.prototype.reverse=function(){if(this.__filtered__){var e=new yi(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},yi.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,n=ga(e),i=t<0,r=n?e.length:0,o=function(e,t,n){for(var i=-1,r=n.length;++i=this.__values__.length;return{done:e,value:e?o:this.__values__[this.__index__++]}},pi.prototype.plant=function(e){for(var t,n=this;n instanceof vi;){var i=ds(n);i.__index__=0,i.__values__=o,t?r.__wrapped__=i:t=i;var r=i;n=n.__wrapped__}return r.__wrapped__=e,t},pi.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof yi){var t=e;return this.__actions__.length&&(t=new yi(this)),(t=t.reverse()).__actions__.push({func:zs,args:[Es],thisArg:o}),new gi(t,this.__chain__)}return this.thru(Es)},pi.prototype.toJSON=pi.prototype.valueOf=pi.prototype.value=function(){return Hr(this.__wrapped__,this.__actions__)},pi.prototype.first=pi.prototype.head,Vt&&(pi.prototype[Vt]=function(){return this}),pi}();Pt._=An,(r=function(){return An}.call(t,n,t,i))===o||(i.exports=r)}).call(this)}).call(this,n(37),n(89)(e))},function(e,t){var n=e.exports={version:"2.6.2"};"number"==typeof __e&&(__e=n)},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){var i=n(4),r=n(1);e.exports={throttle:i,debounce:r}},function(e,t,n){var i=n(16);e.exports=function(e){if(!i(e))throw TypeError(e+" is not an object!");return e}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){var i=n(40),r=n(31);e.exports=Object.keys||function(e){return i(e,r)}},function(e,t){e.exports=!0},function(e,t){var n=0,i=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+i).toString(36))}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){var i=n(5),r=n(15),o=n(60),s=n(9),a=n(7),l=function(e,t,n){var u,c,h,d=e&l.F,f=e&l.G,p=e&l.S,m=e&l.P,v=e&l.B,g=e&l.W,y=f?r:r[t]||(r[t]={}),b=y.prototype,_=f?i:p?i[t]:(i[t]||{}).prototype;for(u in f&&(n=t),n)(c=!d&&_&&void 0!==_[u])&&a(y,u)||(h=c?_[u]:n[u],y[u]=f&&"function"!=typeof _[u]?n[u]:v&&c?o(h,i):g&&_[u]==h?function(e){var t=function(t,n,i){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,i)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(h):m&&"function"==typeof h?o(Function.call,h):h,m&&((y.virtual||(y.virtual={}))[u]=h,e&l.R&&b&&!b[u]&&s(b,u,h)))};l.F=1,l.G=2,l.S=4,l.P=8,l.B=16,l.W=32,l.U=64,l.R=128,e.exports=l},function(e,t,n){var i=n(16);e.exports=function(e,t){if(!i(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!i(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!i(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!i(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")}},function(e,t){e.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},function(e,t){var n=Math.ceil,i=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?i:n)(e)}},function(e,t,n){var i=n(30)("keys"),r=n(23);e.exports=function(e){return i[e]||(i[e]=r(e))}},function(e,t,n){var i=n(15),r=n(5),o=r["__core-js_shared__"]||(r["__core-js_shared__"]={});(e.exports=function(e,t){return o[e]||(o[e]=void 0!==t?t:{})})("versions",[]).push({version:i.version,mode:n(22)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t){e.exports={}},function(e,t,n){var i=n(10).f,r=n(7),o=n(13)("toStringTag");e.exports=function(e,t,n){e&&!r(e=n?e:e.prototype,o)&&i(e,o,{configurable:!0,value:t})}},function(e,t,n){t.f=n(13)},function(e,t,n){var i=n(5),r=n(15),o=n(22),s=n(35),a=n(10).f;e.exports=function(e){var t=r.Symbol||(r.Symbol=o?{}:i.Symbol||{});"_"==e.charAt(0)||e in t||a(t,e,{value:s.f(e)})}},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){e.exports=!n(11)&&!n(17)(function(){return 7!=Object.defineProperty(n(39)("div"),"a",{get:function(){return 7}}).a})},function(e,t,n){var i=n(16),r=n(5).document,o=i(r)&&i(r.createElement);e.exports=function(e){return o?r.createElement(e):{}}},function(e,t,n){var i=n(7),r=n(12),o=n(63)(!1),s=n(29)("IE_PROTO");e.exports=function(e,t){var n,a=r(e),l=0,u=[];for(n in a)n!=s&&i(a,n)&&u.push(n);for(;t.length>l;)i(a,n=t[l++])&&(~o(u,n)||u.push(n));return u}},function(e,t,n){var i=n(42);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==i(e)?e.split(""):Object(e)}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){var i=n(27);e.exports=function(e){return Object(i(e))}},function(e,t,n){"use strict";var i=n(22),r=n(25),o=n(45),s=n(9),a=n(33),l=n(70),u=n(34),c=n(73),h=n(13)("iterator"),d=!([].keys&&"next"in[].keys()),f=function(){return this};e.exports=function(e,t,n,p,m,v,g){l(n,t,p);var y,b,_,w=function(e){if(!d&&e in S)return S[e];switch(e){case"keys":case"values":return function(){return new n(this,e)}}return function(){return new n(this,e)}},x=t+" Iterator",C="values"==m,k=!1,S=e.prototype,D=S[h]||S["@@iterator"]||m&&S[m],E=D||w(m),$=m?C?w("entries"):E:void 0,T="Array"==t&&S.entries||D;if(T&&(_=c(T.call(new e)))!==Object.prototype&&_.next&&(u(_,x,!0),i||"function"==typeof _[h]||s(_,h,f)),C&&D&&"values"!==D.name&&(k=!0,E=function(){return D.call(this)}),i&&!g||!d&&!k&&S[h]||s(S,h,E),a[t]=E,a[x]=f,m)if(y={values:C?E:w("values"),keys:v?E:w("keys"),entries:$},g)for(b in y)b in S||o(S,b,y[b]);else r(r.P+r.F*(d||k),t,y);return y}},function(e,t,n){e.exports=n(9)},function(e,t,n){var i=n(19),r=n(71),o=n(31),s=n(29)("IE_PROTO"),a=function(){},l=function(){var e,t=n(39)("iframe"),i=o.length;for(t.style.display="none",n(72).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write(" + + + + + + + +
+ + + + + + +
+
+
+ 设备管理系统 +
+
+
+ +
+
+
+ +
+
+ + +
+
+
+ +
+ + + + + \ No newline at end of file diff --git a/device/target/classes/static/maintenancerecord.html b/device/target/classes/static/maintenancerecord.html new file mode 100644 index 0000000..8f77ca7 --- /dev/null +++ b/device/target/classes/static/maintenancerecord.html @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + \ No newline at end of file diff --git a/device/target/classes/static/operationlog.html b/device/target/classes/static/operationlog.html new file mode 100644 index 0000000..5e47b9a --- /dev/null +++ b/device/target/classes/static/operationlog.html @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + \ No newline at end of file diff --git a/device/target/classes/static/scraprecord.html b/device/target/classes/static/scraprecord.html new file mode 100644 index 0000000..eae4165 --- /dev/null +++ b/device/target/classes/static/scraprecord.html @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + \ No newline at end of file diff --git a/device/target/classes/static/supplier.html b/device/target/classes/static/supplier.html new file mode 100644 index 0000000..fbffddf --- /dev/null +++ b/device/target/classes/static/supplier.html @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + \ No newline at end of file diff --git a/device/target/classes/static/usagerecord.html b/device/target/classes/static/usagerecord.html new file mode 100644 index 0000000..ab6f563 --- /dev/null +++ b/device/target/classes/static/usagerecord.html @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + \ No newline at end of file diff --git a/device/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/device/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/device/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/device/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..3b0d35e --- /dev/null +++ b/device/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,56 @@ +C:\Users\13853\Desktop\device\src\main\java\com\controller\SupplierController.java +C:\Users\13853\Desktop\device\src\main\java\com\entity\Device.java +C:\Users\13853\Desktop\device\src\main\java\com\service\dto\devicePageDto.java +C:\Users\13853\Desktop\device\src\main\java\com\entity\Maintenancerecord.java +C:\Users\13853\Desktop\device\src\main\java\com\service\impl\UsagerecordServiceImpl.java +C:\Users\13853\Desktop\device\src\main\java\com\controller\LocationController.java +C:\Users\13853\Desktop\device\src\main\java\com\service\UserService.java +C:\Users\13853\Desktop\device\src\main\java\com\entity\Location.java +C:\Users\13853\Desktop\device\src\main\java\com\mapper\OperationlogMapper.java +C:\Users\13853\Desktop\device\src\main\java\com\mapper\DeviceMapper.java +C:\Users\13853\Desktop\device\src\main\java\com\entity\Role.java +C:\Users\13853\Desktop\device\src\main\java\com\service\impl\ScraprecordServiceImpl.java +C:\Users\13853\Desktop\device\src\main\java\com\entity\Scraprecord.java +C:\Users\13853\Desktop\device\src\main\java\com\mapper\SupplierMapper.java +C:\Users\13853\Desktop\device\src\main\java\com\controller\UserController.java +C:\Users\13853\Desktop\device\src\main\java\com\service\RoleService.java +C:\Users\13853\Desktop\device\src\main\java\com\entity\Operationlog.java +C:\Users\13853\Desktop\device\src\main\java\com\service\DevicecategoryService.java +C:\Users\13853\Desktop\device\src\main\java\com\controller\from\findDevicePageFrom.java +C:\Users\13853\Desktop\device\src\main\java\com\service\impl\LocationServiceImpl.java +C:\Users\13853\Desktop\device\src\main\java\com\service\impl\DeviceServiceImpl.java +C:\Users\13853\Desktop\device\src\main\java\com\service\UsagerecordService.java +C:\Users\13853\Desktop\device\src\main\java\com\CodeGenerator.java +C:\Users\13853\Desktop\device\src\main\java\com\service\SupplierService.java +C:\Users\13853\Desktop\device\src\main\java\com\mapper\LocationMapper.java +C:\Users\13853\Desktop\device\src\main\java\com\controller\RoleController.java +C:\Users\13853\Desktop\device\src\main\java\com\mapper\UsagerecordMapper.java +C:\Users\13853\Desktop\device\src\main\java\com\commons\MyBatisPlusConfig.java +C:\Users\13853\Desktop\device\src\main\java\com\controller\DeviceController.java +C:\Users\13853\Desktop\device\src\main\java\com\service\DeviceService.java +C:\Users\13853\Desktop\device\src\main\java\com\service\impl\SupplierServiceImpl.java +C:\Users\13853\Desktop\device\src\main\java\com\controller\ScraprecordController.java +C:\Users\13853\Desktop\device\src\main\java\com\service\impl\OperationlogServiceImpl.java +C:\Users\13853\Desktop\device\src\main\java\com\service\OperationlogService.java +C:\Users\13853\Desktop\device\src\main\java\com\commons\Result.java +C:\Users\13853\Desktop\device\src\main\java\com\service\impl\RoleServiceImpl.java +C:\Users\13853\Desktop\device\src\main\java\com\service\LocationService.java +C:\Users\13853\Desktop\device\src\main\java\com\entity\Devicecategory.java +C:\Users\13853\Desktop\device\src\main\java\com\controller\DevicecategoryController.java +C:\Users\13853\Desktop\device\src\main\java\com\entity\Usagerecord.java +C:\Users\13853\Desktop\device\src\main\java\com\entity\Supplier.java +C:\Users\13853\Desktop\device\src\main\java\com\entity\User.java +C:\Users\13853\Desktop\device\src\main\java\com\controller\MaintenancerecordController.java +C:\Users\13853\Desktop\device\src\main\java\com\service\ScraprecordService.java +C:\Users\13853\Desktop\device\src\main\java\com\DeviceApplication.java +C:\Users\13853\Desktop\device\src\main\java\com\service\impl\UserServiceImpl.java +C:\Users\13853\Desktop\device\src\main\java\com\service\MaintenancerecordService.java +C:\Users\13853\Desktop\device\src\main\java\com\mapper\MaintenancerecordMapper.java +C:\Users\13853\Desktop\device\src\main\java\com\service\impl\DevicecategoryServiceImpl.java +C:\Users\13853\Desktop\device\src\main\java\com\mapper\UserMapper.java +C:\Users\13853\Desktop\device\src\main\java\com\service\impl\MaintenancerecordServiceImpl.java +C:\Users\13853\Desktop\device\src\main\java\com\controller\UsagerecordController.java +C:\Users\13853\Desktop\device\src\main\java\com\mapper\ScraprecordMapper.java +C:\Users\13853\Desktop\device\src\main\java\com\mapper\DevicecategoryMapper.java +C:\Users\13853\Desktop\device\src\main\java\com\controller\OperationlogController.java +C:\Users\13853\Desktop\device\src\main\java\com\mapper\RoleMapper.java diff --git a/device/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/device/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/device/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/device/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/数据库脚本/a.sql b/数据库脚本/a.sql new file mode 100644 index 0000000..4982663 --- /dev/null +++ b/数据库脚本/a.sql @@ -0,0 +1,324 @@ +/* + Navicat Premium Dump SQL + + Source Server : work + Source Server Type : MySQL + Source Server Version : 80040 (8.0.40) + Source Host : localhost:3306 + Source Schema : a + + Target Server Type : MySQL + Target Server Version : 80040 (8.0.40) + File Encoding : 65001 + + Date: 29/12/2024 13:42:11 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for device +-- ---------------------------- +DROP TABLE IF EXISTS `device`; +CREATE TABLE `device` ( + `DeviceID` int NOT NULL AUTO_INCREMENT, + `DeviceName` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `DeviceType` int NOT NULL, + `Model` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `PurchaseDate` date NOT NULL, + `Status` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '0', + `Location` int NOT NULL, + PRIMARY KEY (`DeviceID`) USING BTREE, + INDEX `fk_device_category`(`DeviceType` ASC) USING BTREE, + INDEX `fk_device_location`(`Location` ASC) USING BTREE, + CONSTRAINT `fk_device_category` FOREIGN KEY (`DeviceType`) REFERENCES `devicecategory` (`CategoryID`) ON DELETE CASCADE ON UPDATE RESTRICT, + CONSTRAINT `fk_device_location` FOREIGN KEY (`Location`) REFERENCES `location` (`LocationID`) ON DELETE CASCADE ON UPDATE RESTRICT +) ENGINE = InnoDB AUTO_INCREMENT = 18 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of device +-- ---------------------------- +INSERT INTO `device` VALUES (1, '切割机1', 3, 'QG800', '2024-12-28', '0', 1); +INSERT INTO `device` VALUES (2, '水冷切割1', 4, 'T6113', '2024-12-28', '0', 1); +INSERT INTO `device` VALUES (3, '切割机3', 1, 'CAK6140', '2024-12-28', '0', 1); +INSERT INTO `device` VALUES (4, '切割机4', 4, 'CAK6141', '2024-12-28', '0', 7); +INSERT INTO `device` VALUES (5, '切割机34', 4, 'JH21-80', '2024-12-28', '1', 7); +INSERT INTO `device` VALUES (6, '切割机6', 4, 'JH21-80', '2024-12-28', '0', 7); +INSERT INTO `device` VALUES (7, '服务器A1', 9, 'HUAWEI RH2288 V3', '2023-01-15', '正常', 9); +INSERT INTO `device` VALUES (8, '服务器A1', 9, 'HUAWEI RH2288 V3', '2023-01-15', '正常', 9); +INSERT INTO `device` VALUES (9, '交换机B2', 10, 'Cisco Catalyst 9300', '2023-03-10', '正常', 10); +INSERT INTO `device` VALUES (10, '磁盘阵列C3', 11, 'Lenovo ThinkSystem DM5000F', '2023-04-20', '正常', 11); +INSERT INTO `device` VALUES (11, '防火墙D4', 12, 'FortiGate 60E', '2023-05-15', '正常', 12); +INSERT INTO `device` VALUES (12, '打印机E5', 16, 'HP LaserJet Pro MFP M28w', '2023-06-05', '正常', 15); +INSERT INTO `device` VALUES (13, '笔记本电脑F6', 17, 'Apple MacBook Air M1', '2023-07-25', '正常', 16); +INSERT INTO `device` VALUES (14, '路由器G7', 10, 'Microsoft Azure Stack Edge', '2023-08-10', '正常', 17); +INSERT INTO `device` VALUES (15, '摄像头H8', 15, 'Hikvision DS-2CD2T86G1-LU', '2023-09-20', '正常', 18); +INSERT INTO `device` VALUES (16, '扫描仪I9', 13, 'Canon imageFORMULA DR-C225W', '2023-10-15', '正常', 12); +INSERT INTO `device` VALUES (17, '手机J10', 17, 'Huawei P40 Pro', '2023-11-05', '正常', 15); + +-- ---------------------------- +-- Table structure for devicecategory +-- ---------------------------- +DROP TABLE IF EXISTS `devicecategory`; +CREATE TABLE `devicecategory` ( + `CategoryID` int NOT NULL AUTO_INCREMENT, + `CategoryName` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + PRIMARY KEY (`CategoryID`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 19 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of devicecategory +-- ---------------------------- +INSERT INTO `devicecategory` VALUES (1, '手持式切割机'); +INSERT INTO `devicecategory` VALUES (2, '台式切割机'); +INSERT INTO `devicecategory` VALUES (3, '火焰切割机'); +INSERT INTO `devicecategory` VALUES (4, '等离子切割机'); +INSERT INTO `devicecategory` VALUES (5, 'X7150'); +INSERT INTO `devicecategory` VALUES (6, 'T6113'); +INSERT INTO `devicecategory` VALUES (7, 'JH21-80'); +INSERT INTO `devicecategory` VALUES (8, 'ZX7-400'); +INSERT INTO `devicecategory` VALUES (9, '服务器'); +INSERT INTO `devicecategory` VALUES (10, '网络设备'); +INSERT INTO `devicecategory` VALUES (11, '存储设备'); +INSERT INTO `devicecategory` VALUES (12, '安全设备'); +INSERT INTO `devicecategory` VALUES (13, '办公设备'); +INSERT INTO `devicecategory` VALUES (14, '测试设备'); +INSERT INTO `devicecategory` VALUES (15, '监控设备'); +INSERT INTO `devicecategory` VALUES (16, '打印设备'); +INSERT INTO `devicecategory` VALUES (17, '移动设备'); +INSERT INTO `devicecategory` VALUES (18, '其他'); + +-- ---------------------------- +-- Table structure for location +-- ---------------------------- +DROP TABLE IF EXISTS `location`; +CREATE TABLE `location` ( + `LocationID` int NOT NULL AUTO_INCREMENT, + `LocationName` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `LocationDescription` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL, + PRIMARY KEY (`LocationID`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 19 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of location +-- ---------------------------- +INSERT INTO `location` VALUES (1, 'A1-b1', '无'); +INSERT INTO `location` VALUES (2, 'A1-b2', '无'); +INSERT INTO `location` VALUES (3, 'A1-c1', '无'); +INSERT INTO `location` VALUES (4, 'A1-c2', '无'); +INSERT INTO `location` VALUES (5, 'B1-b1', '无'); +INSERT INTO `location` VALUES (6, 'B1-b2', '无'); +INSERT INTO `location` VALUES (7, 'C1-b1', '无'); +INSERT INTO `location` VALUES (8, 'C1-b2', '无'); +INSERT INTO `location` VALUES (9, '数据中心A区', NULL); +INSERT INTO `location` VALUES (10, '数据中心B区', NULL); +INSERT INTO `location` VALUES (11, '办公楼一层', NULL); +INSERT INTO `location` VALUES (12, '办公楼二层', NULL); +INSERT INTO `location` VALUES (13, '实验室', NULL); +INSERT INTO `location` VALUES (14, '仓库', NULL); +INSERT INTO `location` VALUES (15, '前台', NULL); +INSERT INTO `location` VALUES (16, '会议室', NULL); +INSERT INTO `location` VALUES (17, '研发部', NULL); +INSERT INTO `location` VALUES (18, '测试间', NULL); + +-- ---------------------------- +-- Table structure for maintenancerecord +-- ---------------------------- +DROP TABLE IF EXISTS `maintenancerecord`; +CREATE TABLE `maintenancerecord` ( + `MaintenanceID` int NOT NULL AUTO_INCREMENT, + `DeviceID` int NOT NULL, + `MaintenanceType` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `MaintenanceDate` date NOT NULL, + `Technician` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `MaintenanceDetails` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL, + `MaintenanceCost` decimal(10, 2) NULL DEFAULT NULL, + `NextMaintenanceDate` date NULL DEFAULT NULL, + PRIMARY KEY (`MaintenanceID`) USING BTREE, + INDEX `fk_maintenance_device`(`DeviceID` ASC) USING BTREE, + CONSTRAINT `fk_maintenance_device` FOREIGN KEY (`DeviceID`) REFERENCES `device` (`DeviceID`) ON DELETE CASCADE ON UPDATE RESTRICT +) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of maintenancerecord +-- ---------------------------- +INSERT INTO `maintenancerecord` VALUES (1, 1, '日常维护', '2024-12-28', 'admin', '成功', 100.00, '2025-01-28'); +INSERT INTO `maintenancerecord` VALUES (2, 2, '日常维护', '2024-12-28', 'admin', '成功', 100.00, '2025-01-28'); +INSERT INTO `maintenancerecord` VALUES (3, 2, '日常维护', '2024-12-28', 'admin', '成功', 100.00, '2025-01-28'); +INSERT INTO `maintenancerecord` VALUES (4, 2, '日常维护', '2024-12-28', 'admin', '成功', 100.00, '2025-01-28'); +INSERT INTO `maintenancerecord` VALUES (5, 5, '日常维护', '2024-12-28', 'admin', '成功', 100.00, '2025-01-28'); +INSERT INTO `maintenancerecord` VALUES (6, 4, '定期检查', '2023-06-15', '张伟', '成功', 500.00, '2024-06-15'); +INSERT INTO `maintenancerecord` VALUES (7, 5, '紧急维修', '2023-07-10', '李华', '成功', 800.00, '2024-07-10'); +INSERT INTO `maintenancerecord` VALUES (8, 6, '硬件更换', '2023-08-20', '王强', '成功', 1200.00, '2024-08-20'); +INSERT INTO `maintenancerecord` VALUES (9, 4, '软件升级', '2023-09-15', '赵敏', '成功', 300.00, '2024-09-15'); +INSERT INTO `maintenancerecord` VALUES (10, 5, '耗材更换', '2023-10-05', '孙丽', '成功', 150.00, '2024-10-05'); +INSERT INTO `maintenancerecord` VALUES (11, 5, '清洁保养', '2023-11-25', '周杰', '成功', 100.00, '2024-11-25'); +INSERT INTO `maintenancerecord` VALUES (12, 7, '固件更新', '2023-12-10', '吴芳', '成功', 200.00, '2024-12-10'); +INSERT INTO `maintenancerecord` VALUES (13, 8, '镜头校准', '2024-01-20', '郑浩', '成功', 250.00, '2025-01-20'); +INSERT INTO `maintenancerecord` VALUES (14, 5, '滚轮更换', '2024-02-15', '陈静', '成功', 120.00, '2025-02-15'); +INSERT INTO `maintenancerecord` VALUES (15, 7, '电池更换', '2024-03-05', '黄勇', '成功', 80.00, '2025-03-05'); + +-- ---------------------------- +-- Table structure for operationlog +-- ---------------------------- +DROP TABLE IF EXISTS `operationlog`; +CREATE TABLE `operationlog` ( + `LogID` int NOT NULL AUTO_INCREMENT, + `OperationType` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `OperationTime` date NOT NULL, + `OperationDescription` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL, + PRIMARY KEY (`LogID`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of operationlog +-- ---------------------------- +INSERT INTO `operationlog` VALUES (1, '运行', '2024-12-28', '成功'); +INSERT INTO `operationlog` VALUES (2, '运行', '2024-12-28', '成功'); +INSERT INTO `operationlog` VALUES (3, '运行', '2024-12-28', '成功'); + +-- ---------------------------- +-- Table structure for role +-- ---------------------------- +DROP TABLE IF EXISTS `role`; +CREATE TABLE `role` ( + `RoleID` int NOT NULL AUTO_INCREMENT, + `RoleName` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `PermissionDescription` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL, + PRIMARY KEY (`RoleID`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of role +-- ---------------------------- +INSERT INTO `role` VALUES (1, '普通用户', NULL); +INSERT INTO `role` VALUES (2, '维修工', NULL); +INSERT INTO `role` VALUES (3, '管理员', '拥有所有权限'); +INSERT INTO `role` VALUES (4, '维护人员', '可以进行设备维护和状态更新'); +INSERT INTO `role` VALUES (5, '普通用户', '仅能查看设备状态和历史记录'); +INSERT INTO `role` VALUES (6, '采购员', '负责设备采购和供应商管理'); +INSERT INTO `role` VALUES (7, '技术支持', '处理技术问题和支持请求'); +INSERT INTO `role` VALUES (8, '财务人员', '管理预算和成本'); +INSERT INTO `role` VALUES (9, 'HR', '人力资源管理'); +INSERT INTO `role` VALUES (10, '项目经理', '项目进度和资源调配'); +INSERT INTO `role` VALUES (11, '质量保证', '确保设备符合标准'); +INSERT INTO `role` VALUES (12, '访客', '临时访问权限'); + +-- ---------------------------- +-- Table structure for scraprecord +-- ---------------------------- +DROP TABLE IF EXISTS `scraprecord`; +CREATE TABLE `scraprecord` ( + `ScrapID` int NOT NULL AUTO_INCREMENT, + `DeviceID` int NOT NULL, + `ScrapDate` date NOT NULL, + `ScrapReason` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `DisposalMethod` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + PRIMARY KEY (`ScrapID`) USING BTREE, + UNIQUE INDEX `DeviceID`(`DeviceID` ASC) USING BTREE, + CONSTRAINT `fk_scrap_device` FOREIGN KEY (`DeviceID`) REFERENCES `device` (`DeviceID`) ON DELETE CASCADE ON UPDATE RESTRICT +) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of scraprecord +-- ---------------------------- +INSERT INTO `scraprecord` VALUES (1, 5, '2024-12-28', '日常报废', '设备到期'); +INSERT INTO `scraprecord` VALUES (2, 7, '2024-01-15', '硬件老化,性能不满足需求', '回收利用'); + +-- ---------------------------- +-- Table structure for supplier +-- ---------------------------- +DROP TABLE IF EXISTS `supplier`; +CREATE TABLE `supplier` ( + `SupplierID` int NOT NULL AUTO_INCREMENT, + `SupplierName` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `ContactPerson` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `ContactPhone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `Address` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + PRIMARY KEY (`SupplierID`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of supplier +-- ---------------------------- +INSERT INTO `supplier` VALUES (1, '供应商1', '张先生', '110', '上海'); +INSERT INTO `supplier` VALUES (2, '供应商2', '李女士', '120', '深圳'); +INSERT INTO `supplier` VALUES (3, '华为科技有限公司', '李华', '+86-755-12345678', '深圳市南山区科技路'); +INSERT INTO `supplier` VALUES (4, '思科系统(中国)有限公司', '张伟', '+86-10-87654321', '北京市朝阳区建国门外大街'); +INSERT INTO `supplier` VALUES (5, '联想集团', '王强', '+86-10-98765432', '北京市海淀区上地西路'); +INSERT INTO `supplier` VALUES (6, '戴尔科技公司', '赵敏', '+86-21-54321876', '上海市浦东新区世纪大道'); +INSERT INTO `supplier` VALUES (7, '惠普发展公司', '孙丽', '+86-21-65432109', '上海市徐汇区漕溪北路'); +INSERT INTO `supplier` VALUES (8, '苹果贸易(上海)有限公司', '周杰', '+86-21-12345678', '上海市陆家嘴环路'); +INSERT INTO `supplier` VALUES (9, '微软(中国)有限公司', '吴芳', '+86-10-87654321', '北京市朝阳区东三环中路'); +INSERT INTO `supplier` VALUES (10, '甲骨文中国', '郑浩', '+86-10-12345678', '北京市海淀区知春路'); +INSERT INTO `supplier` VALUES (11, 'IBM中国有限公司', '陈静', '+86-10-98765432', '北京市朝阳区光华东里'); +INSERT INTO `supplier` VALUES (12, '阿里巴巴集团', '黄勇', '+86-10-12345678', '杭州市滨江区网商路'); + +-- ---------------------------- +-- Table structure for usagerecord +-- ---------------------------- +DROP TABLE IF EXISTS `usagerecord`; +CREATE TABLE `usagerecord` ( + `UsageID` int NOT NULL AUTO_INCREMENT, + `DeviceID` int NULL DEFAULT NULL, + `UserID` int NULL DEFAULT NULL, + `UsageDate` date NULL DEFAULT NULL, + `UsageTime` time NULL DEFAULT NULL, + `UsageType` enum('Reading','Writing','Other') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `UsageDesc` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + PRIMARY KEY (`UsageID`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of usagerecord +-- ---------------------------- +INSERT INTO `usagerecord` VALUES (1, NULL, 1, '2024-12-29', '16:36:41', NULL, '登录失败'); +INSERT INTO `usagerecord` VALUES (2, NULL, 1, '2024-12-29', '16:36:49', NULL, '登录成功'); +INSERT INTO `usagerecord` VALUES (3, NULL, 2, '2024-12-29', '16:41:19', NULL, '登录成功'); +INSERT INTO `usagerecord` VALUES (4, NULL, 1, '2024-12-29', '16:41:44', NULL, '登录成功'); +INSERT INTO `usagerecord` VALUES (5, NULL, 2, '2024-12-29', '16:42:05', NULL, '登录成功'); +INSERT INTO `usagerecord` VALUES (6, NULL, 1, '2024-12-29', '16:45:04', NULL, '登录成功'); +INSERT INTO `usagerecord` VALUES (7, NULL, 1, '2024-12-29', '16:48:00', NULL, '登录成功'); +INSERT INTO `usagerecord` VALUES (8, NULL, 2, '2024-12-29', '16:48:14', NULL, '登录成功'); +INSERT INTO `usagerecord` VALUES (9, NULL, 1, '2024-12-29', '01:15:06', NULL, '登录成功'); +INSERT INTO `usagerecord` VALUES (10, NULL, 1, '2024-12-29', '03:53:58', NULL, '登录成功'); +INSERT INTO `usagerecord` VALUES (11, NULL, 1, '2024-01-01', '08:30:00', NULL, '登录成功'); +INSERT INTO `usagerecord` VALUES (12, NULL, 25, '2024-01-01', '09:00:00', NULL, '登录成功'); +INSERT INTO `usagerecord` VALUES (13, NULL, 27, '2024-01-01', '10:00:00', NULL, '登录成功'); +INSERT INTO `usagerecord` VALUES (14, NULL, 2, '2024-01-01', '08:45:00', NULL, '登录成功'); +INSERT INTO `usagerecord` VALUES (15, NULL, 31, '2024-01-01', '14:00:00', NULL, '登录成功'); + +-- ---------------------------- +-- Table structure for user +-- ---------------------------- +DROP TABLE IF EXISTS `user`; +CREATE TABLE `user` ( + `UserID` int NOT NULL AUTO_INCREMENT, + `UserName` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `Password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `Role` int NOT NULL, + PRIMARY KEY (`UserID`) USING BTREE, + UNIQUE INDEX `UserName`(`UserName` ASC) USING BTREE, + INDEX `fk_user_role`(`Role` ASC) USING BTREE, + CONSTRAINT `fk_user_role` FOREIGN KEY (`Role`) REFERENCES `role` (`RoleID`) ON DELETE CASCADE ON UPDATE RESTRICT +) ENGINE = InnoDB AUTO_INCREMENT = 34 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of user +-- ---------------------------- +INSERT INTO `user` VALUES (1, 'admin', '123', 2); +INSERT INTO `user` VALUES (2, 'user1', '123', 1); +INSERT INTO `user` VALUES (3, 'user2', '123', 1); +INSERT INTO `user` VALUES (24, 'admin1', 'admin123', 1); +INSERT INTO `user` VALUES (25, 'maintainer1', 'maintainer123', 2); +INSERT INTO `user` VALUES (26, 'maintainer2', 'maintainer123', 2); +INSERT INTO `user` VALUES (27, 'techsupport1', 'tech123', 5); +INSERT INTO `user` VALUES (28, 'techsupport2', 'tech123', 5); +INSERT INTO `user` VALUES (29, 'user3', 'user123', 3); +INSERT INTO `user` VALUES (30, 'user4', 'user123', 3); +INSERT INTO `user` VALUES (31, 'buyer', 'buyer123', 4); +INSERT INTO `user` VALUES (32, 'finance', 'finance123', 6); +INSERT INTO `user` VALUES (33, 'hr', 'hr123', 7); + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/数据库脚本/其他脚本.txt b/数据库脚本/其他脚本.txt new file mode 100644 index 0000000..754f965 --- /dev/null +++ b/数据库脚本/其他脚本.txt @@ -0,0 +1,611 @@ +1.设备表 (Device): +CREATE TABLE Device ( + DeviceID SERIAL PRIMARY KEY, + DeviceName VARCHAR(100) NOT NULL, + DeviceType INT NOT NULL REFERENCES DeviceCategory(CategoryID), + Model VARCHAR(50) NOT NULL, + PurchaseDate DATE NOT NULL, + Status VARCHAR(20) DEFAULT '正常', + Location INT NOT NULL REFERENCES Location(LocationID) +); +2.供应商表 (Supplier): +CREATE TABLE Supplier ( + SupplierID SERIAL PRIMARY KEY, + SupplierName VARCHAR(100) NOT NULL, + ContactPerson VARCHAR(50), + ContactPhone VARCHAR(20), + Address VARCHAR(200) +); +3.设备维护记录表 (MaintenanceRecord): +CREATE TABLE MaintenanceRecord ( + MaintenanceID SERIAL PRIMARY KEY, + DeviceID INT NOT NULL REFERENCES Device(DeviceID), + MaintenanceType VARCHAR(50) NOT NULL, + MaintenanceDate DATE NOT NULL, + Technician VARCHAR(50) NOT NULL, + MaintenanceDetails TEXT, + MaintenanceCost DECIMAL(10, 2), + NextMaintenanceDate DATE +); +4.设备报废记录表 (ScrapRecord): +CREATE TABLE ScrapRecord ( + ScrapID SERIAL PRIMARY KEY, + DeviceID INT NOT NULL UNIQUE REFERENCES Device(DeviceID), + ScrapDate DATE NOT NULL, + ScrapReason TEXT NOT NULL, + DisposalMethod VARCHAR(100) NOT NULL +); +5.登录记录表 (LoginRecord): +CREATE TABLE LoginRecord ( +UsageID SERIAL PRIMARY KEY, +UserID VARCHAR(50) NOT NULL, +UsageDate DATE NOT NULL, +UsageTime TIME NOT NULL, +UsageDesc TEXT, +LoginDuration INT GENERATED ALWAYS AS ( + CASE +WHEN LogoutTime IS NOT NULL THEN EXTRACT(EPOCH FROM ((UsageDate || ' ' || LogoutTime)::TIMESTAMP - (UsageDate || ' ' || UsageTime)::TIMESTAMP)) / 60 +ELSE NULL +END +); +6.库存位置表 (Location): +CREATE TABLE Location ( + LocationID SERIAL PRIMARY KEY, + LocationName VARCHAR(100) NOT NULL, + LocationDescription TEXT +); +7.用户表 (User): +CREATE TABLE User ( + UserID SERIAL PRIMARY KEY, + UserName VARCHAR(50) NOT NULL UNIQUE, + Password VARCHAR(255) NOT NULL, + Role INT NOT NULL REFERENCES Role(RoleID) +); +8.角色表 (Role): +CREATE TABLE Role ( + RoleID SERIAL PRIMARY KEY, + RoleName VARCHAR(50) NOT NULL, + PermissionDescription TEXT +); +9.设备类别表 (DeviceCategory): +CREATE TABLE DeviceCategory ( + CategoryID SERIAL PRIMARY KEY, + CategoryName VARCHAR(50) NOT NULL +); +10.操作日志表 (OperationLog): +CREATE TABLE OperationLog ( + LogID SERIAL PRIMARY KEY, + OperationType VARCHAR(50) NOT NULL, + OperationTime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + OperationDescription TEXT +); + +索引设计 +根据常用查询条件创建索引: +CREATE INDEX idx_device_status ON Device(Status); +CREATE INDEX idx_device_location ON Device(Location); +CREATE INDEX idx_maintenance_date ON MaintenanceRecord(MaintenanceDate); +CREATE INDEX idx_usage_device ON UsageRecord(DeviceID); +CREATE INDEX idx_usage_starttime ON UsageRecord(StartTime); + +视图创建脚本 +1.查询设备状态视图: +CREATE VIEW DeviceStatusView AS +SELECT + d.DeviceID, + d.DeviceName, + d.Status, + l.LocationName +FROM + Device d +JOIN + Location l ON d.Location = l.LocationID; +2.维护记录视图: +CREATE VIEW MaintenanceSummary AS +SELECT + m.MaintenanceID, + d.DeviceName, + m.MaintenanceType, + m.MaintenanceDate, + m.Technician, + m.MaintenanceCost +FROM + MaintenanceRecord m +JOIN + Device d ON m.DeviceID = d.DeviceID; +3.设备使用详情视图: +CREATE VIEW DeviceUsageDetails AS +SELECT + u.UsageID, + d.DeviceName, + u.User, + u.StartTime, + u.EndTime, + u.UsageDuration +FROM + UsageRecord u +JOIN + Device d ON u.DeviceID = d.DeviceID; +4.报废设备视图: +CREATE VIEW ScrapDeviceView AS +SELECT + s.ScrapID, + d.DeviceName, + s.ScrapDate, + s.ScrapReason, + s.DisposalMethod +FROM + ScrapRecord s +JOIN + Device d ON s.DeviceID = d.DeviceID; +5.设备与供应商关联视图: +CREATE VIEW DeviceSupplierView AS +SELECT + d.DeviceID, + d.DeviceName, + s.SupplierName, + s.ContactPerson, + s.ContactPhone +FROM + Device d +JOIN + Supplier s ON d.DeviceType = s.SupplierID; + +存储过程: +1.添加新设备的存储过程: +CREATE OR REPLACE PROCEDURE AddDevice( + p_DeviceName VARCHAR, + p_DeviceType INT, + p_Model VARCHAR, + p_PurchaseDate DATE, + p_Location INT +) +AS $$ +BEGIN + INSERT INTO Device(DeviceName, DeviceType, Model, PurchaseDate, Location) + VALUES (p_DeviceName, p_DeviceType, p_Model, p_PurchaseDate, p_Location); +END; +$$ LANGUAGE plpgsql; +2.生成设备维护提醒: +CREATE OR REPLACE PROCEDURE MaintenanceReminder() +AS $$ +BEGIN + INSERT INTO OperationLog(OperationType, OperationDescription) + SELECT + 'Reminder', + CONCAT('设备ID ', DeviceID, ' 需要进行维护,计划日期: ', NextMaintenanceDate) + FROM + MaintenanceRecord + WHERE + NextMaintenanceDate <= CURRENT_DATE; +END; +$$ LANGUAGE plpgsql; +3.批量更新设备状态为报废: +CREATE OR REPLACE PROCEDURE BatchScrapDevices() +AS $$ +BEGIN + UPDATE Device + SET Status = '已报废' + WHERE Status = '正常' AND DeviceID IN ( + SELECT DeviceID FROM ScrapRecord + ); +END; +$$ LANGUAGE plpgsql; +4.统计设备使用时长: +CREATE OR REPLACE FUNCTION CalculateUsageTime(p_DeviceID INT) +RETURNS INT AS $$ +DECLARE + total_usage INT; +BEGIN + SELECT SUM(UsageDuration) INTO total_usage + FROM UsageRecord + WHERE DeviceID = p_DeviceID; + RETURN COALESCE(total_usage, 0); +END; +5.$$ LANGUAGE plpgsql;删除设备和关联记录: +CREATE OR REPLACE PROCEDURE DeleteDevice(p_DeviceID INT) +AS $$ +BEGIN + DELETE FROM MaintenanceRecord WHERE DeviceID = p_DeviceID; + DELETE FROM ScrapRecord WHERE DeviceID = p_DeviceID; + DELETE FROM UsageRecord WHERE DeviceID = p_DeviceID; + DELETE FROM Device WHERE DeviceID = p_DeviceID; +END; +$$ LANGUAGE plpgsql; + + +SELECT * FROM Device WHERE Status = '正常'; + +SELECT * FROM Device WHERE SupplierID = 1; + +SELECT * FROM Device WHERE Status IN ('正常', '维护中'); + +SELECT * FROM Device WHERE Location NOT IN (SELECT LocationID FROM Location WHERE LocationName = '仓库'); + +SELECT * FROM Device WHERE PurchaseDate BETWEEN '2024-01-01' AND '2024-06-30'; + +SELECT * FROM MaintenanceRecord WHERE MaintenanceCost BETWEEN 1000 AND 5000; + +SELECT * FROM Device WHERE DeviceName LIKE '%空压机%'; + +SELECT * FROM Device WHERE Model LIKE 'ModelA%'; + +CREATE VIEW LatestMaintenance AS +SELECT d.DeviceID, d.DeviceName, m.MaintenanceID, m.MaintenanceDate, m.MaintenanceDetails +FROM Device d +LEFT JOIN ( + SELECT DeviceID, MAX(MaintenanceDate) AS LastMaintenanceDate + FROM MaintenanceRecord + GROUP BY DeviceID +) lm ON d.DeviceID = lm.DeviceID +LEFT JOIN MaintenanceRecord m ON lm.DeviceID = m.DeviceID AND lm.LastMaintenanceDate = m.MaintenanceDate; + +SELECT * FROM LatestMaintenance; + +SELECT d.DeviceID, d.DeviceName, s.SupplierName +FROM Device d +JOIN Supplier s ON d.SupplierID = s.SupplierID; + +SELECT * FROM Device WHERE DeviceID IN (SELECT DeviceID FROM MaintenanceRecord); + +SELECT * FROM Device WHERE DeviceID NOT IN (SELECT DeviceID FROM MaintenanceRecord); + +SELECT * FROM Device WHERE EXISTS (SELECT 1 FROM ScrapRecord WHERE ScrapRecord.DeviceID = Device.DeviceID); + +SELECT * FROM Device WHERE NOT EXISTS (SELECT 1 FROM ScrapRecord WHERE ScrapRecord.DeviceID = Device.DeviceID); + +SELECT d.* FROM Device d +WHERE Status = '正常' AND EXISTS ( + SELECT 1 FROM MaintenanceRecord m + WHERE m.DeviceID = d.DeviceID AND m.MaintenanceDate >= DATE_SUB(CURRENT_DATE, INTERVAL '1 YEAR') +); + +SELECT DISTINCT UserID FROM LoginRecord +WHERE UsageDate >= DATE_SUB(CURRENT_DATE, INTERVAL '1 MONTH'); + +SELECT DeviceType, COUNT(*) FROM Device GROUP BY DeviceType; + +SELECT SupplierID, COUNT(*) FROM Device GROUP BY SupplierID; + +SELECT DeviceID, SUM(MaintenanceCost) AS TotalCost FROM MaintenanceRecord GROUP BY DeviceID; + +SELECT DATE_TRUNC('month', PurchaseDate) AS Month, COUNT(*) AS DeviceCount +FROM Device +GROUP BY DATE_TRUNC('month', PurchaseDate) +ORDER BY Month; + +UPDATE Device +SET DeviceName = '更新后的空压机-A01', + Model = 'NewModelA', + PurchaseDate = '2024-02-01', + Status = '维护中', + Location = 2 +WHERE DeviceID = 1; + +DELETE FROM MaintenanceRecord WHERE DeviceID = 1; + +DELETE FROM ScrapRecord WHERE DeviceID = 1; + +DELETE FROM Device WHERE DeviceID = 1; + +UPDATE MaintenanceRecord +SET MaintenanceType = '定期保养', + MaintenanceDate = '2024-03-01', + Technician = '李工程师', + MaintenanceDetails = '更换了过滤器', + NextMaintenanceDate = '2024-06-01' +WHERE MaintenanceID = 1; + +DELETE FROM MaintenanceRecord WHERE MaintenanceID = 1; + +UPDATE ScrapRecord +SET ScrapReason = '设备老化无法修复', + DisposalMethod = '出售' +WHERE ScrapID = 1; + +DELETE FROM ScrapRecord WHERE ScrapID = 1; +UPDATE ScrapRecord SET InvalidFlag = TRUE WHERE ScrapID = 1; + +UPDATE LoginRecord SET UsageDesc = '管理员例行检查' WHERE UsageID = 1; + +DELETE FROM LoginRecord WHERE UsageID = 1; + +UPDATE User SET Password = crypt('new_secure_password', gen_salt('bf')), Role = (SELECT RoleID FROM Role WHERE RoleName = '普通用户') WHERE UserName = 'admin_user'; + +DELETE FROM User WHERE UserName = 'read_only_user'; + +UPDATE Role SET PermissionDescription = '可以查看设备信息,但不能修改' WHERE RoleID = 2; + +DELETE FROM Role WHERE RoleID = 3; + +UPDATE OperationLog SET OperationDescription = '新增了一台空压机设备' WHERE LogID = 1; + +DELETE FROM OperationLog WHERE LogID = 1; + +UPDATE DeviceCategory SET CategoryName = '新型空压机' WHERE CategoryID = 1; + +DELETE FROM DeviceCategory WHERE CategoryID = 2; + +UPDATE Location SET LocationDescription = '主生产车间的主要设备存放区' WHERE LocationID = 1; + +DELETE FROM Location WHERE LocationID = 3; + +UPDATE Device SET Status = '已报废' WHERE Status = '正常' AND DeviceID IN ( SELECT DeviceID FROM ScrapRecord ); + +DELETE FROM Supplier WHERE SupplierID NOT IN (SELECT SupplierID FROM Device); + +CREATE VIEW DeviceStatusView AS +SELECT d.DeviceID, d.DeviceName, d.Status, l.LocationName +FROM Device d +JOIN Location l ON d.Location = l.LocationID; + +CREATE VIEW LatestMaintenanceView AS +SELECT d.DeviceID, d.DeviceName, m.MaintenanceID, m.MaintenanceType, m.MaintenanceDate, m.Technician, m.NextMaintenanceDate +FROM Device d +LEFT JOIN ( + SELECT DeviceID, MAX(MaintenanceDate) AS LastMaintenanceDate + FROM MaintenanceRecord + GROUP BY DeviceID +) lm ON d.DeviceID = lm.DeviceID +LEFT JOIN MaintenanceRecord m ON lm.DeviceID = m.DeviceID AND lm.LastMaintenanceDate = m.MaintenanceDate; + +CREATE VIEW ScrappedDevicesView AS +SELECT d.DeviceID, d.DeviceName, s.ScrapDate, s.ScrapReason, s.DisposalMethod +FROM Device d +JOIN ScrapRecord s ON d.DeviceID = s.DeviceID; + +CREATE VIEW DeviceUsageStatisticsView AS +SELECT d.DeviceID, d.DeviceName, COALESCE(SUM(u.UsageDuration), 0) AS TotalUsageTime +FROM Device d +LEFT JOIN LoginRecord u ON d.DeviceID = u.DeviceID +GROUP BY d.DeviceID, d.DeviceName; + +CREATE VIEW UserPermissionsView AS +SELECT u.UserID, u.UserName, r.RoleName, r.PermissionDescription +FROM User u +JOIN Role r ON u.Role = r.RoleID; + +CREATE VIEW MaintenanceCostStatisticsView AS +SELECT d.DeviceID, d.DeviceName, COALESCE(SUM(m.MaintenanceCost), 0) AS TotalMaintenanceCost +FROM Device d +LEFT JOIN MaintenanceRecord m ON d.DeviceID = m.DeviceID +GROUP BY d.DeviceID, d.DeviceName; + +CREATE VIEW DeviceSupplierAssociationView AS +SELECT d.DeviceID, d.DeviceName, s.SupplierName, s.ContactPerson, s.ContactPhone +FROM Device d +JOIN Supplier s ON d.SupplierID = s.SupplierID; + +CREATE VIEW OperationLogSummaryView AS +SELECT o.OperationType, COUNT(*) AS OperationCount +FROM OperationLog o +GROUP BY o.OperationType; + +CREATE VIEW DeviceCategoryStatisticsView AS +SELECT c.CategoryID, c.CategoryName, COUNT(d.DeviceID) AS DeviceCount +FROM DeviceCategory c +LEFT JOIN Device d ON c.CategoryID = d.DeviceType +GROUP BY c.CategoryID, c.CategoryName; + +CREATE VIEW LocationDeviceInventoryView AS +SELECT l.LocationID, l.LocationName, d.DeviceID, d.DeviceName +FROM Location l +JOIN Device d ON l.LocationID = d.Location +ORDER BY l.LocationName, d.DeviceName; + +CREATE INDEX idx_device_status ON Device(Status); + +CREATE INDEX idx_device_location ON Device(Location); + +CREATE INDEX idx_maintenance_deviceid ON MaintenanceRecord(DeviceID); + +CREATE INDEX idx_maintenance_date ON MaintenanceRecord(MaintenanceDate); + +CREATE UNIQUE INDEX idx_scrap_deviceid_unique ON ScrapRecord(DeviceID); + +CREATE INDEX idx_login_userid ON LoginRecord(UserID); + +CREATE INDEX idx_login_usage_time ON LoginRecord(UsageTime); + +CREATE INDEX idx_supplier_name ON Supplier(SupplierName); + +CREATE INDEX idx_operation_type ON OperationLog(OperationType); + +CREATE INDEX idx_role_name ON Role(RoleName); + +CREATE INDEX idx_category_name ON DeviceCategory(CategoryName); + +CREATE OR REPLACE PROCEDURE AddDevice( + p_DeviceName VARCHAR, + p_DeviceType INT, + p_Model VARCHAR, + p_PurchaseDate DATE, + p_Status VARCHAR, + p_Location INT, + p_SupplierID INT +) +AS $$ +BEGIN + INSERT INTO Device (DeviceName, DeviceType, Model, PurchaseDate, Status, Location, SupplierID) + VALUES (p_DeviceName, p_DeviceType, p_Model, p_PurchaseDate, p_Status, p_Location, p_SupplierID); +END; +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE PROCEDURE UpdateDevice( + p_DeviceID INT, + p_DeviceName VARCHAR, + p_DeviceType INT, + p_Model VARCHAR, + p_PurchaseDate DATE, + p_Status VARCHAR, + p_Location INT, + p_SupplierID INT +) +AS $$ +BEGIN + UPDATE Device + SET DeviceName = p_DeviceName, + DeviceType = p_DeviceType, + Model = p_Model, + PurchaseDate = p_PurchaseDate, + Status = p_Status, + Location = p_Location, + SupplierID = p_SupplierID + WHERE DeviceID = p_DeviceID; +END; +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE PROCEDURE DeleteDevice(p_DeviceID INT) +AS $$ +BEGIN + DELETE FROM MaintenanceRecord WHERE DeviceID = p_DeviceID; + DELETE FROM ScrapRecord WHERE DeviceID = p_DeviceID; + DELETE FROM LoginRecord WHERE DeviceID = p_DeviceID; + DELETE FROM Device WHERE DeviceID = p_DeviceID; +END; +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE PROCEDURE BatchScrapDevices() +AS $$ +BEGIN + UPDATE Device + SET Status = '已报废' + WHERE Status = '正常' AND DeviceID IN ( + SELECT DeviceID FROM ScrapRecord + ); +END; +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE PROCEDURE GenerateMaintenanceReminders() +AS $$ +BEGIN + INSERT INTO OperationLog(OperationType, OperationDescription) + SELECT 'Reminder', CONCAT('设备ID ', DeviceID, ' 需要进行维护,计划日期: ', NextMaintenanceDate) + FROM MaintenanceRecord + WHERE NextMaintenanceDate <= CURRENT_DATE; +END; +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION CalculateTotalUsageTime(p_DeviceID INT) +RETURNS INT AS $$ +DECLARE + total_usage INT; +BEGIN + SELECT COALESCE(SUM(UsageDuration), 0) INTO total_usage + FROM LoginRecord + WHERE DeviceID = p_DeviceID; + RETURN total_usage; +END; +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION update_device_status_on_maintenance() +RETURNS TRIGGER AS $$ +BEGIN + UPDATE Device SET Status = '维护中' WHERE DeviceID = NEW.DeviceID; + RETURN NEW; +END; +$$ LANGUAGE plpgsql; + +CREATE TRIGGER trg_update_device_status_on_maintenance +AFTER INSERT ON MaintenanceRecord +FOR EACH ROW +EXECUTE FUNCTION update_device_status_on_maintenance(); + +CREATE OR REPLACE FUNCTION reset_device_status_on_maintenance_delete() +RETURNS TRIGGER AS $$ +DECLARE + maintenance_count INT; +BEGIN + SELECT COUNT(*) INTO maintenance_count FROM MaintenanceRecord WHERE DeviceID = OLD.DeviceID; + IF maintenance_count = 0 THEN + UPDATE Device SET Status = '正常' WHERE DeviceID = OLD.DeviceID; + END IF; + RETURN OLD; +END; +$$ LANGUAGE plpgsql; + +CREATE TRIGGER trg_reset_device_status_on_maintenance_delete +AFTER DELETE ON MaintenanceRecord +FOR EACH ROW +EXECUTE FUNCTION reset_device_status_on_maintenance_delete(); + +CREATE OR REPLACE FUNCTION log_user_login() +RETURNS TRIGGER AS $$ +BEGIN + INSERT INTO OperationLog (OperationType, OperationDescription, UserID) + VALUES ('Login', CONCAT('用户 ', NEW.UserName, ' 登录'), NEW.UserID); + RETURN NEW; +END; +$$ LANGUAGE plpgsql; + +CREATE TRIGGER trg_log_user_login +AFTER INSERT ON User +FOR EACH ROW +EXECUTE FUNCTION log_user_login(); + +CREATE OR REPLACE FUNCTION log_device_purchase() +RETURNS TRIGGER AS $$ +BEGIN + INSERT INTO OperationLog (OperationType, OperationDescription) + VALUES ('Purchase', CONCAT('新设备 ', NEW.DeviceName, ' 已采购')); + RETURN NEW; +END; +$$ LANGUAGE plpgsql; + +CREATE TRIGGER trg_log_device_purchase +AFTER INSERT ON Device +FOR EACH ROW +EXECUTE FUNCTION log_device_purchase(); + +CREATE OR REPLACE FUNCTION log_device_location_change() +RETURNS TRIGGER AS $$ +BEGIN + IF OLD.Location <> NEW.Location THEN + INSERT INTO OperationLog (OperationType, OperationDescription) + VALUES ('LocationChange', CONCAT('设备 ', NEW.DeviceName, ' 的位置从 ', OLD.Location, ' 变更为 ', NEW.Location)); + END IF; + RETURN NEW; +END; +$$ LANGUAGE plpgsql; + +CREATE TRIGGER trg_log_device_location_change +AFTER UPDATE OF Location ON Device +FOR EACH ROW +EXECUTE FUNCTION log_device_location_change(); + +CREATE TABLE AuditTrail ( + LogID SERIAL PRIMARY KEY, + TableName VARCHAR NOT NULL, + RecordID INT NOT NULL, + Action CHAR(1) CHECK (Action IN ('I', 'U', 'D')), + ChangedFields JSONB, + ChangeTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); + +CREATE OR REPLACE FUNCTION audit_trigger_function() +RETURNS TRIGGER AS $$ +BEGIN + IF TG_OP = 'INSERT' THEN + INSERT INTO AuditTrail (TableName, RecordID, Action, ChangedFields) + VALUES (TG_TABLE_NAME, NEW.DeviceID, 'I', row_to_json(NEW)); + RETURN NEW; + ELSIF TG_OP = 'UPDATE' THEN + INSERT INTO AuditTrail (TableName, RecordID, Action, ChangedFields) + VALUES (TG_TABLE_NAME, NEW.DeviceID, 'U', jsonb_build_object( + 'OldValues', row_to_json(OLD), + 'NewValues', row_to_json(NEW) + )); + RETURN NEW; + ELSIF TG_OP = 'DELETE' THEN + INSERT INTO AuditTrail (TableName, RecordID, Action, ChangedFields) + VALUES (TG_TABLE_NAME, OLD.DeviceID, 'D', row_to_json(OLD)); + RETURN OLD; + END IF; +END; +$$ LANGUAGE plpgsql; + +CREATE TRIGGER trg_audit_device +AFTER INSERT OR UPDATE OR DELETE ON Device +FOR EACH ROW +EXECUTE FUNCTION audit_trigger_function(); + diff --git a/数据库脚本/数据初始化脚本.txt b/数据库脚本/数据初始化脚本.txt new file mode 100644 index 0000000..b21012c --- /dev/null +++ b/数据库脚本/数据初始化脚本.txt @@ -0,0 +1,103 @@ +设备类别表 +INSERT INTO DeviceCategory (CategoryName) VALUES +('服务器'), +('网络设备'), +('存储设备'), +('安全设备'), +('办公设备'), +('测试设备'), +('监控设备'), +('打印设备'), +('移动设备'), +('其他'); +设备表 +INSERT INTO Device (DeviceName, DeviceType, Model, PurchaseDate, Status, Location) VALUES +('服务器A1', (SELECT CategoryID FROM DeviceCategory WHERE CategoryName = '服务器'), 'HUAWEI RH2288 V3', '2023-01-15', '正常', (SELECT LocationID FROM Location WHERE LocationName = '数据中心A区')), +('交换机B2', (SELECT CategoryID FROM DeviceCategory WHERE CategoryName = '网络设备'), 'Cisco Catalyst 9300', '2023-03-10', '正常', (SELECT LocationID FROM Location WHERE LocationName = '数据中心B区')), +('磁盘阵列C3', (SELECT CategoryID FROM DeviceCategory WHERE CategoryName = '存储设备'), 'Lenovo ThinkSystem DM5000F', '2023-04-20', '正常', (SELECT LocationID FROM Location WHERE LocationName = '办公楼一层')), +('防火墙D4', (SELECT CategoryID FROM DeviceCategory WHERE CategoryName = '安全设备'), 'FortiGate 60E', '2023-05-15', '正常', (SELECT LocationID FROM Location WHERE LocationName = '办公楼二层')), +('打印机E5', (SELECT CategoryID FROM DeviceCategory WHERE CategoryName = '打印设备'), 'HP LaserJet Pro MFP M28w', '2023-06-05', '正常', (SELECT LocationID FROM Location WHERE LocationName = '前台')), +('笔记本电脑F6', (SELECT CategoryID FROM DeviceCategory WHERE CategoryName = '移动设备'), 'Apple MacBook Air M1', '2023-07-25', '正常', (SELECT LocationID FROM Location WHERE LocationName = '会议室')), +('路由器G7', (SELECT CategoryID FROM DeviceCategory WHERE CategoryName = '网络设备'), 'Microsoft Azure Stack Edge', '2023-08-10', '正常', (SELECT LocationID FROM Location WHERE LocationName = '研发部')), +('摄像头H8', (SELECT CategoryID FROM DeviceCategory WHERE CategoryName = '监控设备'), 'Hikvision DS-2CD2T86G1-LU', '2023-09-20', '正常', (SELECT LocationID FROM Location WHERE LocationName = '测试间')), +('扫描仪I9', (SELECT CategoryID FROM DeviceCategory WHERE CategoryName = '办公设备'), 'Canon imageFORMULA DR-C225W', '2023-10-15', '正常', (SELECT LocationID FROM Location WHERE LocationName = '办公楼二层')), +('手机J10', (SELECT CategoryID FROM DeviceCategory WHERE CategoryName = '移动设备'), 'Huawei P40 Pro', '2023-11-05', '正常', (SELECT LocationID FROM Location WHERE LocationName = '前台')); +用户表 +INSERT INTO User (UserName, Password, Role) VALUES +('admin1', 'admin123', 1), -- 管理员 +('maintainer1', 'maintainer123', 2), -- 维护人员 +('maintainer2', 'maintainer123', 2), -- 维护人员 +('techsupport1', 'tech123', 5), -- 技术支持 +('techsupport2', 'tech123', 5), -- 技术支持 +('user3', 'user123', 3), -- 普通用户 +('user4', 'user123', 3), -- 普通用户 +('buyer', 'buyer123', 4), -- 采购员 +('finance', 'finance123', 6), -- 财务人员 +('hr', 'hr123', 7); -- HR +角色表 +INSERT INTO Role (RoleName, PermissionDescription) VALUES +('管理员', '拥有所有权限'), +('维护人员', '可以进行设备维护和状态更新'), +('普通用户', '仅能查看设备状态和历史记录'), +('采购员', '负责设备采购和供应商管理'), +('技术支持', '处理技术问题和支持请求'), +('财务人员', '管理预算和成本'), +('HR', '人力资源管理'), +('项目经理', '项目进度和资源调配'), +('质量保证', '确保设备符合标准'), +('访客', '临时访问权限'); +维护记录表 +INSERT INTO MaintenanceRecord (DeviceID, MaintenanceType, MaintenanceDate, Technician, NextMaintenanceDate, MaintenanceCost,MaintenanceDetails) VALUES +(4, '定期检查', '2023-06-15', '张伟', '2024-06-15', 500.00,'成功'), +(5, '紧急维修', '2023-07-10', '李华', '2024-07-10', 800.00,'成功'), +(6, '硬件更换', '2023-08-20', '王强', '2024-08-20', 1200.00,'成功'), +(4, '软件升级', '2023-09-15', '赵敏', '2024-09-15', 300.00,'成功'), +(5, '耗材更换', '2023-10-05', '孙丽', '2024-10-05', 150.00,'成功'), +(5, '清洁保养', '2023-11-25', '周杰', '2024-11-25', 100.00,'成功'), +(7, '固件更新', '2023-12-10', '吴芳', '2024-12-10', 200.00,'成功'), +(8, '镜头校准', '2024-01-20', '郑浩', '2025-01-20', 250.00,'成功'), +(5, '滚轮更换', '2024-02-15', '陈静', '2025-02-15', 120.00,'成功'), +(7, '电池更换', '2024-03-05', '黄勇', '2025-03-05', 80.00,'成功'); +报废记录表 +INSERT INTO ScrapRecord (DeviceID, ScrapDate, ScrapReason, DisposalMethod) VALUES +((SELECT DeviceID FROM Device WHERE DeviceName = '服务器A1' LIMIT 1), '2024-01-15', '硬件老化,性能不满足需求', '回收利用'), +((SELECT DeviceID FROM Device WHERE DeviceName = '交换机B2' LIMIT 1), '2024-03-10', '损坏无法修复', '专业销毁'), +((SELECT DeviceID FROM Device WHERE DeviceName = '磁盘阵列C3' LIMIT 1), '2024-05-20', '故障频发,维修成本过高', '回收利用'), +((SELECT DeviceID FROM Device WHERE DeviceName = '防火墙D4' LIMIT 1), '2024-07-15', '型号过时,无配件支持', '专业销毁'), +((SELECT DeviceID FROM Device WHERE DeviceName = '打印机E5' LIMIT 1), '2024-09-05', '墨盒泄露,污染严重', '环保处理'), +((SELECT DeviceID FROM Device WHERE DeviceName = '笔记本电脑F6' LIMIT 1), '2024-11-25', '屏幕破裂,维修价值低', '专业销毁'), +((SELECT DeviceID FROM Device WHERE DeviceName = '路由器G7' LIMIT 1), '2025-01-10', '性能不足,影响网络速度', '回收利用'), +((SELECT DeviceID FROM Device WHERE DeviceName = '摄像头H8' LIMIT 1), '2025-03-20', '视频质量差,画面模糊', '环保处理'), +((SELECT DeviceID FROM Device WHERE DeviceName = '扫描仪I9' LIMIT 1), '2025-05-15', '光学组件失效,图像失真', '专业销毁'), +((SELECT DeviceID FROM Device WHERE DeviceName = '手机J10' LIMIT 1), '2025-07-05', '电池膨胀,存在安全隐患', '环保处理'); +供应商表 +INSERT INTO Supplier (SupplierName, ContactPerson, ContactPhone, Address) VALUES +('华为科技有限公司', '李华', '+86-755-12345678', '深圳市南山区科技路'), +('思科系统(中国)有限公司', '张伟', '+86-10-87654321', '北京市朝阳区建国门外大街'), +('联想集团', '王强', '+86-10-98765432', '北京市海淀区上地西路'), +('戴尔科技公司', '赵敏', '+86-21-54321876', '上海市浦东新区世纪大道'), +('惠普发展公司', '孙丽', '+86-21-65432109', '上海市徐汇区漕溪北路'), +('苹果贸易(上海)有限公司', '周杰', '+86-21-12345678', '上海市陆家嘴环路'), +('微软(中国)有限公司', '吴芳', '+86-10-87654321', '北京市朝阳区东三环中路'), +('甲骨文中国', '郑浩', '+86-10-12345678', '北京市海淀区知春路'), +('IBM中国有限公司', '陈静', '+86-10-98765432', '北京市朝阳区光华东里'), +('阿里巴巴集团', '黄勇', '+86-10-12345678', '杭州市滨江区网商路'); +库存位置表  +INSERT INTO Location (LocationName) VALUES +('数据中心A区'), +('数据中心B区'), +('办公楼一层'), +('办公楼二层'), +('实验室'), +('仓库'), +('前台'), +('会议室'), +('研发部'), +('测试间'); +登录记录表 +INSERT INTO UsageRecord (UserID, UsageDate, UsageTime,UsageDesc) VALUES +((SELECT UserID FROM User WHERE UserName = 'admin' LIMIT 1), '2024-01-01', '08:30:00', '登录成功'), +((SELECT UserID FROM User WHERE UserName = 'maintainer1' LIMIT 1), '2024-01-01','09:00:00', '登录成功'), +((SELECT UserID FROM User WHERE UserName = 'techsupport1' LIMIT 1), '2024-01-01','10:00:00', '登录成功'), +((SELECT UserID FROM User WHERE UserName = 'user1' LIMIT 1), '2024-01-01','08:45:00', '登录成功'), +((SELECT UserID FROM User WHERE UserName = 'buyer' LIMIT 1), '2024-01-01','14:00:00', '登录成功'); \ No newline at end of file diff --git a/数据库脚本/数据库创建脚本.txt b/数据库脚本/数据库创建脚本.txt new file mode 100644 index 0000000..89801ee --- /dev/null +++ b/数据库脚本/数据库创建脚本.txt @@ -0,0 +1,92 @@ +-- 设备类别表 +CREATE TABLE DeviceCategory ( + CategoryID INT AUTO_INCREMENT PRIMARY KEY, + CategoryName VARCHAR(50) NOT NULL +); + +-- 库存位置表 +CREATE TABLE Location ( + LocationID INT AUTO_INCREMENT PRIMARY KEY, + LocationName VARCHAR(100) NOT NULL, + LocationDescription TEXT +); + +-- 设备表 +CREATE TABLE Device ( + DeviceID INT AUTO_INCREMENT PRIMARY KEY, + DeviceName VARCHAR(100) NOT NULL, + DeviceType INT NOT NULL, + Model VARCHAR(50) NOT NULL, + PurchaseDate DATE NOT NULL, + Status VARCHAR(20) DEFAULT '正常', + Location INT NOT NULL, + CONSTRAINT fk_device_category FOREIGN KEY (DeviceType) REFERENCES DeviceCategory(CategoryID) ON DELETE CASCADE, + CONSTRAINT fk_device_location FOREIGN KEY (Location) REFERENCES Location(LocationID) ON DELETE CASCADE +); + +-- 供应商表 +CREATE TABLE Supplier ( + SupplierID INT AUTO_INCREMENT PRIMARY KEY, + SupplierName VARCHAR(100) NOT NULL, + ContactPerson VARCHAR(50), + ContactPhone VARCHAR(20), + Address VARCHAR(200) +); + +-- 设备维护记录表 +CREATE TABLE MaintenanceRecord ( + MaintenanceID INT AUTO_INCREMENT PRIMARY KEY, + DeviceID INT NOT NULL, + MaintenanceType VARCHAR(50) NOT NULL, + MaintenanceDate DATE NOT NULL, + Technician VARCHAR(50) NOT NULL, + MaintenanceDetails TEXT, + MaintenanceCost DECIMAL(10, 2), + NextMaintenanceDate DATE, + CONSTRAINT fk_maintenance_device FOREIGN KEY (DeviceID) REFERENCES Device(DeviceID) ON DELETE CASCADE +); + +-- 设备报废记录表 +CREATE TABLE ScrapRecord ( + ScrapID INT AUTO_INCREMENT PRIMARY KEY, + DeviceID INT NOT NULL UNIQUE, + ScrapDate DATE NOT NULL, + ScrapReason TEXT NOT NULL, + DisposalMethod VARCHAR(100) NOT NULL, + CONSTRAINT fk_scrap_device FOREIGN KEY (DeviceID) REFERENCES Device(DeviceID) ON DELETE CASCADE +); + +-- 系统登录使用记录表 +CREATE TABLE UsageRecord ( + UsageID INT AUTO_INCREMENT PRIMARY KEY, + DeviceID INT NOT NULL, + User VARCHAR(50) NOT NULL, + StartTime DATETIME NOT NULL, + EndTime DATETIME NOT NULL, + UsageDuration INT GENERATED ALWAYS AS (TIMESTAMPDIFF(MINUTE, StartTime, EndTime)) STORED, + CONSTRAINT fk_usage_device FOREIGN KEY (DeviceID) REFERENCES Device(DeviceID) ON DELETE CASCADE +); + +-- 角色表 +CREATE TABLE Role ( + RoleID INT AUTO_INCREMENT PRIMARY KEY, + RoleName VARCHAR(50) NOT NULL, + PermissionDescription TEXT +); + +-- 用户表 +CREATE TABLE User ( + UserID INT AUTO_INCREMENT PRIMARY KEY, + UserName VARCHAR(50) NOT NULL UNIQUE, + Password VARCHAR(255) NOT NULL, + Role INT NOT NULL, + CONSTRAINT fk_user_role FOREIGN KEY (Role) REFERENCES Role(RoleID) ON DELETE CASCADE +); + +-- 操作日志表 +CREATE TABLE OperationLog ( + LogID INT AUTO_INCREMENT PRIMARY KEY, + OperationType VARCHAR(50) NOT NULL, + OperationTime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + OperationDescription TEXT +);