From 15fdb9b2183a4c36b4036e419107fc4571507720 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子li <15040126243@163.com>
Date: 星期二, 11 五月 2021 17:37:27 +0800
Subject: [PATCH] !32 版本更新 v1.0.1 Merge pull request !32 from 疯狂的狮子li/dev

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java          |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java                    |   58 +++++++++-----
 ruoyi-framework/src/main/java/com/ruoyi/framework/config/FeignConfig.java                 |    2 
 pom.xml                                                                                   |    2 
 ruoyi-admin/src/main/resources/application.yml                                            |   26 ++++++
 ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java           |    2 
 ruoyi-admin/src/main/resources/banner.txt                                                 |   10 ++
 ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java           |    3 
 ruoyi-framework/src/main/java/com/ruoyi/framework/config/ApplicationConfig.java           |   14 +--
 ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java                                 |    2 
 ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MimeTypeUtils.java                 |    4 +
 ruoyi-ui/package.json                                                                     |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java      |    1 
 ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java            |   60 +++++++++-----
 ruoyi-common/src/main/java/com/ruoyi/common/exception/file/InvalidExtensionException.java |   10 ++
 ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java               |   17 ++-
 ruoyi-ui/src/assets/styles/element-ui.scss                                                |    8 ++
 17 files changed, 158 insertions(+), 65 deletions(-)

diff --git a/pom.xml b/pom.xml
index 43443e1..74ccf9d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
     <description>RuoYi-Vue-Plus鍚庡彴绠$悊绯荤粺</description>
     
     <properties>
-        <ruoyi-vue-plus.version>1.0.0</ruoyi-vue-plus.version>
+        <ruoyi-vue-plus.version>1.0.1</ruoyi-vue-plus.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
         <java.version>1.8</java.version>
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
index 6be5918..5b55927 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
@@ -17,6 +17,6 @@
     {
         System.setProperty("spring.devtools.restart.enabled", "false");
         SpringApplication.run(RuoYiApplication.class, args);
-        System.out.println("(鈾モ棤鈥库棤)锞夛緸  鑻ヤ緷鍚姩鎴愬姛   醿�(麓凇`醿�)锞�");
+        System.out.println("(鈾モ棤鈥库棤)锞夛緸  RuoYi-Vue-Plus鍚姩鎴愬姛   醿�(麓凇`醿�)锞�");
     }
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java
index 0332a14..1d7eb02 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java
@@ -48,6 +48,7 @@
         return util.exportExcel(list, "鎿嶄綔鏃ュ織");
     }
 
+    @Log(title = "鎿嶄綔鏃ュ織", businessType = BusinessType.DELETE)
     @PreAuthorize("@ss.hasPermi('monitor:operlog:remove')")
     @DeleteMapping("/{operIds}")
     public AjaxResult remove(@PathVariable Long[] operIds)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java b/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java
index 9657081..8a1b74b 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java
@@ -21,32 +21,54 @@
 
 /**
  * Swagger2鐨勬帴鍙i厤缃�
- * 
- * @author ruoyi
+ *
+ * @author Lion Li
  */
 @Configuration
 @EnableSwagger2WebMvc
 @EnableKnife4j
-public class SwaggerConfig
-{
-    /** 绯荤粺鍩虹閰嶇疆 */
+public class SwaggerConfig {
+    /**
+     * 绯荤粺鍩虹閰嶇疆
+     */
     @Autowired
     private RuoYiConfig ruoyiConfig;
 
-    /** 鏄惁寮�鍚痵wagger */
+    /**
+     * 鏄惁寮�鍚痵wagger
+     */
     @Value("${swagger.enabled}")
     private boolean enabled;
 
-    /** 璁剧疆璇锋眰鐨勭粺涓�鍓嶇紑 */
+    /**
+     * 璁剧疆璇锋眰鐨勭粺涓�鍓嶇紑
+     */
     @Value("${swagger.pathMapping}")
     private String pathMapping;
+
+    /**
+     * 鏍囬
+     */
+    @Value("${swagger.title}")
+    private String title;
+
+    /**
+     * 鎻忚堪
+     */
+    @Value("${swagger.description}")
+    private String description;
+
+    /**
+     * 鐗堟湰
+     */
+    @Value("${swagger.version}")
+    private String version;
 
     /**
      * 鍒涘缓API
      */
     @Bean
-    public Docket createRestApi()
-    {
+    public Docket createRestApi() {
         return new Docket(DocumentationType.SWAGGER_2)
                 // 鏄惁鍚敤Swagger
                 .enable(enabled)
@@ -70,8 +92,7 @@
     /**
      * 瀹夊叏妯″紡锛岃繖閲屾寚瀹歵oken閫氳繃Authorization澶磋姹傚ご浼犻��
      */
-    private List<ApiKey> securitySchemes()
-    {
+    private List<ApiKey> securitySchemes() {
         List<ApiKey> apiKeyList = new ArrayList<ApiKey>();
         apiKeyList.add(new ApiKey("Authorization", "Authorization", "header"));
         return apiKeyList;
@@ -80,8 +101,7 @@
     /**
      * 瀹夊叏涓婁笅鏂�
      */
-    private List<SecurityContext> securityContexts()
-    {
+    private List<SecurityContext> securityContexts() {
         List<SecurityContext> securityContexts = new ArrayList<>();
         securityContexts.add(
                 SecurityContext.builder()
@@ -94,8 +114,7 @@
     /**
      * 榛樿鐨勫畨鍏ㄤ笂寮曠敤
      */
-    private List<SecurityReference> defaultAuth()
-    {
+    private List<SecurityReference> defaultAuth() {
         AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
         AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
         authorizationScopes[0] = authorizationScope;
@@ -107,18 +126,17 @@
     /**
      * 娣诲姞鎽樿淇℃伅
      */
-    private ApiInfo apiInfo()
-    {
+    private ApiInfo apiInfo() {
         // 鐢ˋpiInfoBuilder杩涜瀹氬埗
         return new ApiInfoBuilder()
                 // 璁剧疆鏍囬
-                .title("鏍囬锛氳嫢渚濈鐞嗙郴缁焈鎺ュ彛鏂囨。")
+                .title(title)
                 // 鎻忚堪
-                .description("鎻忚堪锛氱敤浜庣鐞嗛泦鍥㈡棗涓嬪叕鍙哥殑浜哄憳淇℃伅,鍏蜂綋鍖呮嫭XXX,XXX妯″潡...")
+                .description(description)
                 // 浣滆�呬俊鎭�
                 .contact(new Contact(ruoyiConfig.getName(), null, null))
                 // 鐗堟湰
-                .version("鐗堟湰鍙�:" + ruoyiConfig.getVersion())
+                .version(version)
                 .build();
     }
 }
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index 44bc437..8500728 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -119,6 +119,7 @@
 # MyBatis閰嶇疆
 # https://baomidou.com/config/
 mybatis-plus:
+  mapperPackage: com.ruoyi.**.mapper
   # 瀵瑰簲鐨� XML 鏂囦欢浣嶇疆
   mapperLocations: classpath*:mapper/**/*Mapper.xml
   # 瀹炰綋鎵弿锛屽涓猵ackage鐢ㄩ�楀彿鎴栬�呭垎鍙峰垎闅�
@@ -217,6 +218,12 @@
   enabled: true
   # 璇锋眰鍓嶇紑
   pathMapping: /dev-api
+  # 鏍囬
+  title: '鏍囬锛歊uoYi-Vue-Plus鍚庡彴绠$悊绯荤粺_鎺ュ彛鏂囨。'
+  # 鎻忚堪
+  description: '鎻忚堪锛氱敤浜庣鐞嗛泦鍥㈡棗涓嬪叕鍙哥殑浜哄憳淇℃伅,鍏蜂綋鍖呮嫭XXX,XXX妯″潡...'
+  # 鐗堟湰
+  version: '鐗堟湰鍙�: ${ruoyi-vue-plus.version}'
 
 # 闃叉XSS鏀诲嚮
 xss: 
@@ -227,7 +234,26 @@
   # 鍖归厤閾炬帴
   urlPatterns: /system/*,/monitor/*,/tool/*
 
+threadPoolConfig:
+  # 鏄惁寮�鍚嚎绋嬫睜
+  enabled: false
+  # 鏍稿績绾跨▼姹犲ぇ灏�
+  corePoolSize: 8
+  # 鏈�澶у彲鍒涘缓鐨勭嚎绋嬫暟
+  maxPoolSize: 16
+  # 闃熷垪鏈�澶ч暱搴�
+  queueCapacity: 128
+  # 绾跨▼姹犵淮鎶ょ嚎绋嬫墍鍏佽鐨勭┖闂叉椂闂�
+  keepAliveSeconds: 300
+  # 绾跨▼姹犲鎷掔粷浠诲姟(鏃犵嚎绋嬪彲鐢�)鐨勫鐞嗙瓥鐣�
+  # CallerRunsPolicy 绛夊緟
+  # DiscardOldestPolicy 鏀惧純鏈�鏃х殑
+  # DiscardPolicy 涓㈠純
+  # AbortPolicy 涓
+  rejectedExecutionHandler: CallerRunsPolicy
+
 feign:
+  package: com.ruoyi.**.feign
   # 寮�鍚帇缂�
   compression:
     request:
diff --git a/ruoyi-admin/src/main/resources/banner.txt b/ruoyi-admin/src/main/resources/banner.txt
index fee1ce3..f592dbe 100644
--- a/ruoyi-admin/src/main/resources/banner.txt
+++ b/ruoyi-admin/src/main/resources/banner.txt
@@ -1,2 +1,8 @@
-Application Version: ${ruoyi.version}
-Spring Boot Version: ${spring-boot.version}
\ No newline at end of file
+Application Version: ${ruoyi-vue-plus.version}
+Spring Boot Version: ${spring-boot.version}
+__________            _____.___.__         ____   ____                     __________.__
+\______   \__ __  ____\__  |   |__|        \   \ /   /_ __   ____          \______   \  |  __ __  ______
+ |       _/  |  \/  _ \/   |   |  |  ______ \   Y   /  |  \_/ __ \   ______ |     ___/  | |  |  \/  ___/
+ |    |   \  |  (  <_> )____   |  | /_____/  \     /|  |  /\  ___/  /_____/ |    |   |  |_|  |  /\___ \
+ |____|_  /____/ \____// ______|__|           \___/ |____/  \___  >         |____|   |____/____//____  >
+        \/             \/                                       \/                                   \/
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/InvalidExtensionException.java b/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/InvalidExtensionException.java
index 8f63a79..f1c8e83 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/InvalidExtensionException.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/InvalidExtensionException.java
@@ -68,4 +68,14 @@
             super(allowedExtension, extension, filename);
         }
     }
+
+    public static class InvalidVideoExtensionException extends InvalidExtensionException
+    {
+        private static final long serialVersionUID = 1L;
+
+        public InvalidVideoExtensionException(String[] allowedExtension, String extension, String filename)
+        {
+            super(allowedExtension, extension, filename);
+        }
+    }
 }
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java
index 672c023..cb4a225 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java
@@ -133,15 +133,13 @@
     {
         File desc = new File(uploadDir + File.separator + fileName);
 
-        if (!desc.getParentFile().exists())
+        if (!desc.exists())
         {
-            desc.getParentFile().mkdirs();
+            if (!desc.getParentFile().exists())
+            {
+                desc.getParentFile().mkdirs();
+            }
         }
-        // 瑙e喅undertow鏂囦欢涓婁紶bug,鍥犲簳灞傚疄鐜颁笉鍚�,鏃犻渶鍒涘缓鏂版枃浠�
-//        if (!desc.exists())
-//        {
-//            desc.createNewFile();
-//        }
         return desc;
     }
 
@@ -189,6 +187,11 @@
                 throw new InvalidExtensionException.InvalidMediaExtensionException(allowedExtension, extension,
                         fileName);
             }
+            else if (allowedExtension == MimeTypeUtils.VIDEO_EXTENSION)
+            {
+                throw new InvalidExtensionException.InvalidVideoExtensionException(allowedExtension, extension,
+                        fileName);
+            }
             else
             {
                 throw new InvalidExtensionException(allowedExtension, extension, fileName);
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MimeTypeUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MimeTypeUtils.java
index 6984641..f968f1a 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MimeTypeUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MimeTypeUtils.java
@@ -24,6 +24,8 @@
     public static final String[] MEDIA_EXTENSION = { "swf", "flv", "mp3", "wav", "wma", "wmv", "mid", "avi", "mpg",
             "asf", "rm", "rmvb" };
 
+    public static final String[] VIDEO_EXTENSION = { "mp4", "avi", "rmvb" };
+
     public static final String[] DEFAULT_ALLOWED_EXTENSION = {
             // 鍥剧墖
             "bmp", "gif", "jpg", "jpeg", "png",
@@ -31,6 +33,8 @@
             "doc", "docx", "xls", "xlsx", "ppt", "pptx", "html", "htm", "txt",
             // 鍘嬬缉鏂囦欢
             "rar", "zip", "gz", "bz2",
+            // 瑙嗛鏍煎紡
+            "mp4", "avi", "rmvb",
             // pdf
             "pdf" };
 
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ApplicationConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ApplicationConfig.java
index 1d4dc1f..183c364 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ApplicationConfig.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ApplicationConfig.java
@@ -1,30 +1,26 @@
 package com.ruoyi.framework.config;
 
-import java.util.TimeZone;
-import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.EnableAspectJAutoProxy;
 
+import java.util.TimeZone;
+
 /**
  * 绋嬪簭娉ㄨВ閰嶇疆
  *
- * @author ruoyi
+ * @author Lion Li
  */
 @Configuration
 // 琛ㄧず閫氳繃aop妗嗘灦鏆撮湶璇ヤ唬鐞嗗璞�,AopContext鑳藉璁块棶
 @EnableAspectJAutoProxy(exposeProxy = true)
-// 鎸囧畾瑕佹壂鎻忕殑Mapper绫荤殑鍖呯殑璺緞
-@MapperScan("com.ruoyi.**.mapper")
-public class ApplicationConfig
-{
+public class ApplicationConfig {
     /**
      * 鏃跺尯閰嶇疆
      */
     @Bean
-    public Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization()
-    {
+    public Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization() {
         return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder.timeZone(TimeZone.getDefault());
     }
 }
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/FeignConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/FeignConfig.java
index df09516..478a450 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/FeignConfig.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/FeignConfig.java
@@ -19,7 +19,7 @@
  *
  * @author Lion Li
  */
-@EnableFeignClients("com.ruoyi.**.feign")
+@EnableFeignClients("${feign.package}")
 @Configuration
 @ConditionalOnClass(Feign.class)
 @AutoConfigureBefore(FeignAutoConfiguration.class)
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java
index 93a202c..bce2150 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java
@@ -6,6 +6,7 @@
 import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
 import com.ruoyi.framework.mybatisplus.CreateAndUpdateMetaObjectHandler;
+import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
@@ -17,6 +18,8 @@
  */
 @EnableTransactionManagement(proxyTargetClass = true)
 @Configuration
+// 鎸囧畾瑕佹壂鎻忕殑Mapper绫荤殑鍖呯殑璺緞
+@MapperScan("${mybatis-plus.mapperPackage}")
 public class MybatisPlusConfig {
 
 	@Bean
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java
index 0d67c22..30d5ef9 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java
@@ -1,44 +1,65 @@
 package com.ruoyi.framework.config;
 
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledThreadPoolExecutor;
-import java.util.concurrent.ThreadPoolExecutor;
+import com.ruoyi.common.utils.Threads;
 import org.apache.commons.lang3.concurrent.BasicThreadFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
-import com.ruoyi.common.utils.Threads;
+
+import java.util.concurrent.RejectedExecutionHandler;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledThreadPoolExecutor;
+import java.util.concurrent.ThreadPoolExecutor;
 
 /**
  * 绾跨▼姹犻厤缃�
  *
- * @author ruoyi
+ * @author Lion Li
  **/
 @Configuration
-public class ThreadPoolConfig
-{
+public class ThreadPoolConfig {
+
     // 鏍稿績绾跨▼姹犲ぇ灏�
-    private int corePoolSize = 50;
+    @Value("${threadPoolConfig.corePoolSize}")
+    private int corePoolSize;
 
     // 鏈�澶у彲鍒涘缓鐨勭嚎绋嬫暟
-    private int maxPoolSize = 200;
+    @Value("${threadPoolConfig.maxPoolSize}")
+    private int maxPoolSize;
 
     // 闃熷垪鏈�澶ч暱搴�
-    private int queueCapacity = 1000;
+    @Value("${threadPoolConfig.queueCapacity}")
+    private int queueCapacity;
 
     // 绾跨▼姹犵淮鎶ょ嚎绋嬫墍鍏佽鐨勭┖闂叉椂闂�
-    private int keepAliveSeconds = 300;
+    @Value("${threadPoolConfig.keepAliveSeconds}")
+    private int keepAliveSeconds;
+
+    // 绾跨▼姹犲鎷掔粷浠诲姟(鏃犵嚎绋嬪彲鐢�)鐨勫鐞嗙瓥鐣�
+    @Value("${threadPoolConfig.rejectedExecutionHandler}")
+    private String rejectedExecutionHandler;
 
     @Bean(name = "threadPoolTaskExecutor")
-    public ThreadPoolTaskExecutor threadPoolTaskExecutor()
-    {
+    @ConditionalOnProperty(prefix = "threadPoolTaskExecutor", name = "enabled", havingValue = "true")
+    public ThreadPoolTaskExecutor threadPoolTaskExecutor() {
         ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
         executor.setMaxPoolSize(maxPoolSize);
         executor.setCorePoolSize(corePoolSize);
         executor.setQueueCapacity(queueCapacity);
         executor.setKeepAliveSeconds(keepAliveSeconds);
-        // 绾跨▼姹犲鎷掔粷浠诲姟(鏃犵嚎绋嬪彲鐢�)鐨勫鐞嗙瓥鐣�
-        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
+        RejectedExecutionHandler handler;
+        if (rejectedExecutionHandler.equals("CallerRunsPolicy")) {
+            handler = new ThreadPoolExecutor.CallerRunsPolicy();
+        } else if (rejectedExecutionHandler.equals("DiscardOldestPolicy")) {
+            handler = new ThreadPoolExecutor.DiscardOldestPolicy();
+        } else if (rejectedExecutionHandler.equals("DiscardPolicy")) {
+            handler = new ThreadPoolExecutor.DiscardPolicy();
+        } else {
+            handler = new ThreadPoolExecutor.AbortPolicy();
+        }
+        executor.setRejectedExecutionHandler(handler);
         return executor;
     }
 
@@ -46,14 +67,11 @@
      * 鎵ц鍛ㄦ湡鎬ф垨瀹氭椂浠诲姟
      */
     @Bean(name = "scheduledExecutorService")
-    protected ScheduledExecutorService scheduledExecutorService()
-    {
+    protected ScheduledExecutorService scheduledExecutorService() {
         return new ScheduledThreadPoolExecutor(corePoolSize,
-                new BasicThreadFactory.Builder().namingPattern("schedule-pool-%d").daemon(true).build())
-        {
+                new BasicThreadFactory.Builder().namingPattern("schedule-pool-%d").daemon(true).build()) {
             @Override
-            protected void afterExecute(Runnable r, Throwable t)
-            {
+            protected void afterExecute(Runnable r, Throwable t) {
                 super.afterExecute(r, t);
                 Threads.printException(r, t);
             }
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
index d6f2a43..72fea3b 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
@@ -101,7 +101,7 @@
     /**
      * 瀵煎叆琛ㄧ粨鏋勶紙淇濆瓨锛�
      */
-    @PreAuthorize("@ss.hasPermi('tool:gen:list')")
+    @PreAuthorize("@ss.hasPermi('tool:gen:import')")
     @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.IMPORT)
     @PostMapping("/importTable")
     public AjaxResult importTableSave(String tables)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
index f25a90d..65f8601 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
@@ -241,7 +241,7 @@
         List<SysDept> children = list(new LambdaQueryWrapper<SysDept>()
                 .apply("find_in_set({0},ancestors)",deptId));
         for (SysDept child : children) {
-            child.setAncestors(child.getAncestors().replace(oldAncestors, newAncestors));
+            child.setAncestors(child.getAncestors().replaceFirst(oldAncestors, newAncestors));
         }
         if (children.size() > 0) {
             updateBatchById(children);
diff --git a/ruoyi-ui/package.json b/ruoyi-ui/package.json
index a3765b6..58ee98d 100644
--- a/ruoyi-ui/package.json
+++ b/ruoyi-ui/package.json
@@ -1,6 +1,6 @@
 {
   "name": "ruoyi-vue-plus",
-  "version": "1.0.0",
+  "version": "1.0.1",
   "description": "RuoYi-Vue-Plus鍚庡彴绠$悊绯荤粺",
   "author": "LionLi",
   "license": "MIT",
diff --git a/ruoyi-ui/src/assets/styles/element-ui.scss b/ruoyi-ui/src/assets/styles/element-ui.scss
index 955d3ca..363092a 100644
--- a/ruoyi-ui/src/assets/styles/element-ui.scss
+++ b/ruoyi-ui/src/assets/styles/element-ui.scss
@@ -82,3 +82,11 @@
 .el-range-separator {
   box-sizing: content-box;
 }
+
+.el-menu--collapse
+  > div
+  > .el-submenu
+  > .el-submenu__title
+  .el-submenu__icon-arrow {
+  display: none;
+}
\ No newline at end of file

--
Gitblit v1.9.3