diff --git a/ArcFace64.dat b/ArcFace64.dat index e04abe452..17a8243c6 100644 --- a/ArcFace64.dat +++ b/ArcFace64.dat @@ -1 +1 @@ -EWEPEPEOGMGTELIZJUGECKIUJDBCJTCNISGPBNHLJTJUBHEWGNAKGEGAIOHJDQAJGNCFDRFZJEDMJTGEDVIQGKEJIKACHIIXDEELIWCCEEELCVCEHFHAJGIPGIIKJRASJFEHAMIKCIGXAPGEHIIZGFBBJMFJJNGFHUGDGDFGFAITGDAXBGAZGKAMBMDABKBAERDUHDAUDOEBIBGBBMCUIZGABKCABIDMFHFRILIIANEBEWBOAIJHBYFAIREBFQFFCHHREKFTFJJQIAGFDSDZHMHUCGBVHIAUENBCJIBBJDIHHDIQFKFNDEBJCKCFGLJKBMHFAZHTHOIRGLJFDUHWEVFGFHDKIBEKFVCGAQJGCYBZAMHDJBJREAIOJPIAJDCJFXHKHPJTHUBTJPDWISESIEIPISDWDRAMFVFFBJCTFVFAARGJHFIMELIQJEAHFRFQDTERDCCGDCIKCAGBJVDLGHEXEBAWAMAFITJDANGBCRDPBPEECBAVAEBBBYBUERFXCYIOHWAOHQBVDFJGCEFZFHAUJGJNJGAPDRJMESBAFHGACOCDDHCOCCEXDDDVDRAVDEHOGBBRANCXEJFVBIABDLDOAVCQBICYCDIBAXJRBQGVDFHQAKDYEDHRHVAGGUJHIAHSFIFUCIDCBRHZDOASDAIDHCJNDEJCFDHIBCFLCQBYFWGNFKAIJQFKFBAPEBGMDOBXGGCAIUENJHDRATFCHIGBCCGZBDJLHQFSHDINHJEVIJESEWANJFEQIVBAILJLBACPHNCHEMAYHJGBAOHLCTGAGLFWBQHFFPEKBYHDEUAOBAABJSBNFFINFDAAGUJTAVBVDHDTEEFNBSJKJNCODGHEECIRGXARCCFZFBFMDJCDGREDCNFOAWEPFIFCGWEBBZHPFVHDBUHFCHFDACJCGSARHMCMBMDDCRCWHBAZJBHHJMDKFWBKFQIHAFADBLGFCSJBEWFAJLGVGPBNANFPINAHIRIJEYJRFWDPCDCSBEGHHTGMATCWEYGQHGAHEJIEHQDZEHCRIRGLJHDABFJKDKBPGUJFJICIGVHRIZHXDWADHMDTABAXCGJIBLHIBYDJELBYBJIFJNDCCICIJDELBOJBJEBRFZDCBUHXGDBKCVBGGQHUFUJIIYHFAAIBBDCEAYDLFHBDBJCADMDFCDGMAYHLHDBGDSCHCECOEAEYJOIFHZ \ No newline at end of file +EWEPEPEOGMGTELIZJUGECKIUJDBCJTCNISGPBNHLJTJUBHEWGNAKGEGAIOHJDQAJGNCFDRFZJEDMJTGEDVIQGKEJIKACHIIXDEELIWCCEEELCVCEHFHAJGIPGIIKJRASJFEHAMIKCIGXAPGEHIIZGFBBJMFJJNGFHUGDGDFGFAITGDAXBGAZGKAMBMDABKBAERDUHDAUDOEBIBGBBMCUIZGABKCABIDMFHFRILIIANEBEWBOAIJHBYFAIREBFQFFCHHREKFTFJJQIAGFDSDZHMHUCGBVHIAUENBCJIBBJDIHHDIQFKFNDEBJCKCFGLJKBMHFAZHTHOIRGLJFDUHWEVFGFHDKIBEKFVCGAQJGCYBZAMHDJBJREAIOJPIAJDCJFXHKHPJTHUBTJPDWISESIEIPISDWDRAMFVFFBJCTFVFAARGJHFIMELIQJEAHFRFQDTERDCCGDCIKCAGBJVDLGHEXEBAWAMAFITJDANGBCRDPBPEECBAVAEBNJADGIPJAFWFJCYDZHFBFDHCMDCGNGTJTARACGRGOCDFWBPIRHKJACZAEHDJLGUFUGJDTHNJODDEBEVJLJUDDAAIJGNBPIQJOFNDHGKDQGOIBCWEGDBHDHDDBDPCFGLIBCRIPDSHECTAJBKGHGYAPDFJHFEDMCPAUHBDXAXEQCOEVCFDLGKAUASEZDAESETEUAJGHJFHLCTANBPDDCOGABTJJBBJHGLJPFMCQJOBTHPCNBMGFIPGNCHJSHOJGFQFSHGGUBVACADCHEDFDJHCKFEHBDIFJIUINCVJUDUENFHIUEFJFDBEPFHHGJAGLJGAOEMJNDYANAADPDODKGXFMHUCVHVCXGLCFHLFLETEZIWCTEFBRAOFFADEUIDFCGWDBCSAVDQJOANHKGHCSBFIBEACRITIEJGETGEJIAFDAIRJLHMEIBRCUIKDLBTHWHIEPHOGABGBBCCFFHKIECJJQHUDFHDITIQBQBCANARGIBPDUFTDHFKGOCMEEFHGXCTJVCOIXFUFDEAGZGNILISHSHKJGHQAEEAHLDWAWJADUGGELCKBACPAEINFSJHBQIFBVJHJICEAEGEFKBHCIHZCNJUJLIHGPFLILBRJTIYFUAZJVCPHPFQFYIDGZAUFXANHWBFJGJJHWFFBRCVBOCXJDIMBNBQJGJEFPGTAEDJFLHGITESAKCFBZBD \ No newline at end of file diff --git a/pom.xml b/pom.xml index ce0ff556c..3d8ed97b5 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.springframework.boot spring-boot-starter-parent - 2.1.1.RELEASE + 2.2.3.RELEASE com.zhgd @@ -27,7 +27,7 @@ 0.9.1 2.6 1.9.6 - 9.0.12 + 9.0.30 @@ -807,6 +807,66 @@ mpxj 10.11.0 + + + org.example + wflow-server1 + 1.0-SNAPSHOT + system + ${basedir}/src/main/resources/lib/wflow-server-1.0-SNAPSHOT.jar + + + + org.flowable + flowable-spring-boot-starter-actuator + 6.7.2 + + + org.mybatis + mybatis + + + org.springframework.boot + spring-boot-starter-actuator + + + + + + cn.dev33 + sa-token-spring-boot-starter + 1.30.0 + + + + com.belerweb + pinyin4j + 2.5.1 + + + + com.googlecode.aviator + aviator + 5.3.1 + + + + org.javadelight + delight-nashorn-sandbox + 0.3.2 + + + + xerces + xercesImpl + 2.12.0 + + + + com.alibaba.fastjson2 + fastjson2 + 2.0.40 + diff --git a/src/main/java/com/zhgd/config/DataSourceOneConfig.java b/src/main/java/com/zhgd/config/DataSourceOneConfig.java new file mode 100644 index 000000000..ae202b243 --- /dev/null +++ b/src/main/java/com/zhgd/config/DataSourceOneConfig.java @@ -0,0 +1,55 @@ +package com.zhgd.config; + +import com.baomidou.mybatisplus.core.MybatisConfiguration; +import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean; +import org.apache.ibatis.logging.stdout.StdOutImpl; +import org.apache.ibatis.session.SqlSessionFactory; +import org.mybatis.spring.SqlSessionTemplate; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.jdbc.DataSourceBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Lazy; +import org.springframework.context.annotation.Primary; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; +import org.springframework.jdbc.datasource.DataSourceTransactionManager; + +import javax.sql.DataSource; + +@Configuration +@MapperScan(basePackages = {"com.zhgd.*.*.*.*.mapper", "com.zhgd.*.*.*.mapper"}, sqlSessionTemplateRef = "db1SqlSessionTemplate") +public class DataSourceOneConfig { + + @Bean + @ConfigurationProperties(prefix = "spring.datasource.db1") + public DataSource db1DataSource() { + return DataSourceBuilder.create().build(); + } + + @Bean + @Lazy //这个是懒加载的注解,根据自己项目需要看是否添加 + public SqlSessionFactory db1SqlSessionFactory(@Qualifier("db1DataSource") DataSource dataSource) throws Exception { + MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean(); + bean.setDataSource(dataSource); + //开启驼峰 + MybatisConfiguration configuration = new MybatisConfiguration(); + configuration.setMapUnderscoreToCamelCase(true); + configuration.setLogImpl(StdOutImpl.class); + bean.setConfiguration(configuration); + bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:com/zhgd/xmgl/**/*.xml")); + return bean.getObject(); + } + @Bean + @Primary + public DataSourceTransactionManager db1TransactionManager(@Qualifier("db1DataSource") DataSource dataSource) { + return new DataSourceTransactionManager(dataSource); + } + @Bean + @Primary + @Lazy + public SqlSessionTemplate db1SqlSessionTemplate(@Qualifier("db1SqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception { + return new SqlSessionTemplate(sqlSessionFactory); + } +} diff --git a/src/main/java/com/zhgd/config/DataSourceTwoConfig.java b/src/main/java/com/zhgd/config/DataSourceTwoConfig.java new file mode 100644 index 000000000..6531fec63 --- /dev/null +++ b/src/main/java/com/zhgd/config/DataSourceTwoConfig.java @@ -0,0 +1,52 @@ +package com.zhgd.config; + +import com.baomidou.mybatisplus.core.MybatisConfiguration; +import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean; +import org.apache.ibatis.logging.stdout.StdOutImpl; +import org.apache.ibatis.session.SqlSessionFactory; +import org.mybatis.spring.SqlSessionTemplate; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.jdbc.DataSourceBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; +import org.springframework.jdbc.datasource.DataSourceTransactionManager; + +import javax.sql.DataSource; + +@Configuration +@MapperScan(basePackages = "com.wflow.mapper", sqlSessionTemplateRef = "sqlSessionTemplate2") +public class DataSourceTwoConfig { + + @Primary + @Bean(name = "dataSource2") + @ConfigurationProperties(prefix = "spring.datasource.db2") + public DataSource dataSource() { + return DataSourceBuilder.create().build(); + } + + @Primary + @Bean(name = "sqlSessionFactory2") + public SqlSessionFactory db1SqlSessionFactory(@Qualifier("dataSource2") DataSource dataSource) throws Exception { + MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean(); + bean.setDataSource(dataSource); + //开启驼峰 + MybatisConfiguration configuration = new MybatisConfiguration(); + configuration.setMapUnderscoreToCamelCase(true); + configuration.setLogImpl(StdOutImpl.class); + bean.setConfiguration(configuration); + bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/*.xml")); + return bean.getObject(); + } + @Bean(name = "transactionManager2") + public DataSourceTransactionManager transactionManager(@Qualifier("dataSource2") DataSource dataSource) { + return new DataSourceTransactionManager(dataSource); + } + @Bean(name = "sqlSessionTemplate2") + public SqlSessionTemplate sqlSessionTemplate(@Qualifier("sqlSessionFactory2") SqlSessionFactory sqlSessionFactory) throws Exception { + return new SqlSessionTemplate(sqlSessionFactory); + } +} diff --git a/src/main/java/com/zhgd/netty/tcp/location/EventLoopGroupConfig.java b/src/main/java/com/zhgd/netty/tcp/location/EventLoopGroupConfig.java index 199d1491f..6c9b286c6 100644 --- a/src/main/java/com/zhgd/netty/tcp/location/EventLoopGroupConfig.java +++ b/src/main/java/com/zhgd/netty/tcp/location/EventLoopGroupConfig.java @@ -6,6 +6,7 @@ import io.netty.util.concurrent.EventExecutorGroup; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; /** * @Author: Zpsw @@ -30,6 +31,7 @@ public class EventLoopGroupConfig { * * @return */ + @Primary @Bean(name = "bossGroup") public NioEventLoopGroup bossGroup() { return new NioEventLoopGroup(bossThreadsNum); diff --git a/src/main/java/com/zhgd/xmgl/config/AsyncConfig.java b/src/main/java/com/zhgd/xmgl/config/AsyncConfig.java index f657e71c2..592ad5f03 100644 --- a/src/main/java/com/zhgd/xmgl/config/AsyncConfig.java +++ b/src/main/java/com/zhgd/xmgl/config/AsyncConfig.java @@ -1,326 +1,331 @@ -package com.zhgd.xmgl.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; - -import java.util.concurrent.ThreadPoolExecutor; - -/** - * @program: wisdomSite - * @description: 线程池配置 - * @author: Mr.Peng - * @create: 2021-02-23 10:04 - **/ -@Configuration -public class AsyncConfig { - /** - * Set the ThreadPoolExecutor's core pool size. - */ - private int corePoolSize = 8; - /** - * Set the ThreadPoolExecutor's maximum pool size. - */ - private int maxPoolSize = 16; - /** - * Set the capacity for the ThreadPoolExecutor's BlockingQueue. - */ - private int queueCapacity = 200; - - /** - * 默认情况下,在创建了线程池后,线程池中的线程数为0,当有任务来之后,就会创建一个线程去执行任务, - * 当线程池中的线程数目达到corePoolSize后,就会把到达的任务放到缓存队列当中; - * 当队列满了,就继续创建线程,当线程数量大于等于maxPoolSize后,开始使用拒绝策略拒绝 - */ - - @Bean("taskExecutor") - public ThreadPoolTaskExecutor taskExecutor() { - ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); - /** 核心线程数(默认线程数) */ - executor.setCorePoolSize(corePoolSize); - /** 最大线程数 */ - executor.setMaxPoolSize(maxPoolSize); - executor.setQueueCapacity(queueCapacity); - /** 允许线程空闲时间(单位:默认为秒) */ - executor.setKeepAliveSeconds(60); - /** 线程池名前缀 */ - executor.setThreadNamePrefix("taskExecutor-"); - // 线程池对拒绝任务的处理策略 - executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); - // 初始化 - executor.initialize(); - return executor; - } - - /** - * 默认情况下,在创建了线程池后,线程池中的线程数为0,当有任务来之后,就会创建一个线程去执行任务, - * 当线程池中的线程数目达到corePoolSize后,就会把到达的任务放到缓存队列当中; - * 当队列满了,就继续创建线程,当线程数量大于等于maxPoolSize后,开始使用拒绝策略拒绝 - */ - - @Bean("doubleCarbonExecutor") - public ThreadPoolTaskExecutor doubleCarbonExecutor() { - ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); - /** 核心线程数(默认线程数) */ - executor.setCorePoolSize(corePoolSize); - /** 最大线程数 */ - executor.setMaxPoolSize(maxPoolSize); - executor.setQueueCapacity(queueCapacity); - /** 允许线程空闲时间(单位:默认为秒) */ - executor.setKeepAliveSeconds(60); - /** 线程池名前缀 */ - executor.setThreadNamePrefix("doubleCarbonExecutor-"); - // 线程池对拒绝任务的处理策略 - executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); - // 初始化 - executor.initialize(); - return executor; - } - - @Bean("countAttendanceExecutor") - public ThreadPoolTaskExecutor attendanceExecutor() { - ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); - /** 核心线程数(默认线程数) */ - executor.setCorePoolSize(corePoolSize); - /** 最大线程数 */ - executor.setMaxPoolSize(maxPoolSize); - executor.setQueueCapacity(queueCapacity); - /** 允许线程空闲时间(单位:默认为秒) */ - executor.setKeepAliveSeconds(60); - /** 线程池名前缀 */ - executor.setThreadNamePrefix("countAttendanceExecutor-"); - // 线程池对拒绝任务的处理策略 - executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); - // 初始化 - executor.initialize(); - return executor; - } - - @Bean("sendAttendanceExecutor") - public ThreadPoolTaskExecutor sendAttendanceExecutor() { - ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); - /** 核心线程数(默认线程数) */ - executor.setCorePoolSize(corePoolSize); - /** 最大线程数 */ - executor.setMaxPoolSize(maxPoolSize); - executor.setQueueCapacity(queueCapacity); - /** 允许线程空闲时间(单位:默认为秒) */ - executor.setKeepAliveSeconds(60); - /** 线程池名前缀 */ - executor.setThreadNamePrefix("sendAttendanceExecutor-"); - // 线程池对拒绝任务的处理策略 - executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); - // 初始化 - executor.initialize(); - return executor; - } - - @Bean("sendWorkerExecutor") - public ThreadPoolTaskExecutor sendWorkerExecutor() { - ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); - /** 核心线程数(默认线程数) */ - executor.setCorePoolSize(corePoolSize); - /** 最大线程数 */ - executor.setMaxPoolSize(maxPoolSize); - executor.setQueueCapacity(queueCapacity); - /** 允许线程空闲时间(单位:默认为秒) */ - executor.setKeepAliveSeconds(60); - /** 线程池名前缀 */ - executor.setThreadNamePrefix("sendWorkerExecutor-"); - // 线程池对拒绝任务的处理策略 - executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); - // 初始化 - executor.initialize(); - return executor; - } - - @Bean("sendExitWorkerExecutor") - public ThreadPoolTaskExecutor sendExitWorkerExecutor() { - ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); - /** 核心线程数(默认线程数) */ - executor.setCorePoolSize(corePoolSize); - /** 最大线程数 */ - executor.setMaxPoolSize(maxPoolSize); - executor.setQueueCapacity(queueCapacity); - /** 允许线程空闲时间(单位:默认为秒) */ - executor.setKeepAliveSeconds(60); - /** 线程池名前缀 */ - executor.setThreadNamePrefix("sendExitWorkerExecutor-"); - // 线程池对拒绝任务的处理策略 - executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); - // 初始化 - executor.initialize(); - return executor; - } - - @Bean("environmentNoiseDataExecutor") - public ThreadPoolTaskExecutor sendEnvironmentNoiseDataExecutor() { - ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); - /** 核心线程数(默认线程数) */ - executor.setCorePoolSize(corePoolSize); - /** 最大线程数 */ - executor.setMaxPoolSize(maxPoolSize); - executor.setQueueCapacity(queueCapacity); - /** 允许线程空闲时间(单位:默认为秒) */ - executor.setKeepAliveSeconds(60); - /** 线程池名前缀 */ - executor.setThreadNamePrefix("environmentNoiseDataExecutor-"); - // 线程池对拒绝任务的处理策略 - executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); - // 初始化 - executor.initialize(); - return executor; - } - - @Bean("electricalExecutor") - public ThreadPoolTaskExecutor sendElectricalExecutor() { - ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); - /** 核心线程数(默认线程数) */ - executor.setCorePoolSize(corePoolSize); - /** 最大线程数 */ - executor.setMaxPoolSize(maxPoolSize); - executor.setQueueCapacity(queueCapacity); - /** 允许线程空闲时间(单位:默认为秒) */ - executor.setKeepAliveSeconds(60); - /** 线程池名前缀 */ - executor.setThreadNamePrefix("electricalExecutor-"); - // 线程池对拒绝任务的处理策略 - executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); - // 初始化 - executor.initialize(); - return executor; - } - - @Bean("towerExecutor") - public ThreadPoolTaskExecutor sendTowerExecutor() { - ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); - /** 核心线程数(默认线程数) */ - executor.setCorePoolSize(corePoolSize); - /** 最大线程数 */ - executor.setMaxPoolSize(maxPoolSize); - executor.setQueueCapacity(queueCapacity); - /** 允许线程空闲时间(单位:默认为秒) */ - executor.setKeepAliveSeconds(60); - /** 线程池名前缀 */ - executor.setThreadNamePrefix("towerExecutor-"); - // 线程池对拒绝任务的处理策略 - executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); - // 初始化 - executor.initialize(); - return executor; - } - - @Bean("lifterExecutor") - public ThreadPoolTaskExecutor sendLifterExecutor() { - ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); - /** 核心线程数(默认线程数) */ - executor.setCorePoolSize(corePoolSize); - /** 最大线程数 */ - executor.setMaxPoolSize(maxPoolSize); - executor.setQueueCapacity(queueCapacity); - /** 允许线程空闲时间(单位:默认为秒) */ - executor.setKeepAliveSeconds(60); - /** 线程池名前缀 */ - executor.setThreadNamePrefix("lifterExecutor-"); - // 线程池对拒绝任务的处理策略 - executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); - // 初始化 - executor.initialize(); - return executor; - } - - @Bean("devExcavationExecutor") - public ThreadPoolTaskExecutor sendDevExcavationEExecutor() { - ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); - /** 核心线程数(默认线程数) */ - executor.setCorePoolSize(corePoolSize); - /** 最大线程数 */ - executor.setMaxPoolSize(maxPoolSize); - executor.setQueueCapacity(queueCapacity); - /** 允许线程空闲时间(单位:默认为秒) */ - executor.setKeepAliveSeconds(60); - /** 线程池名前缀 */ - executor.setThreadNamePrefix("devExcavationExecutor-"); - // 线程池对拒绝任务的处理策略 - executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); - // 初始化 - executor.initialize(); - return executor; - } - - @Bean("gantryCraneExecutor") - public ThreadPoolTaskExecutor sendGantryCraneExecutor() { - ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); - /** 核心线程数(默认线程数) */ - executor.setCorePoolSize(corePoolSize); - /** 最大线程数 */ - executor.setMaxPoolSize(maxPoolSize); - executor.setQueueCapacity(queueCapacity); - /** 允许线程空闲时间(单位:默认为秒) */ - executor.setKeepAliveSeconds(60); - /** 线程池名前缀 */ - executor.setThreadNamePrefix("gantryCraneExecutor-"); - // 线程池对拒绝任务的处理策略 - executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); - // 初始化 - executor.initialize(); - return executor; - } - - @Bean("fileExecutor") - public ThreadPoolTaskExecutor fileExecutor() { - ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); - /** 核心线程数(默认线程数) */ - executor.setCorePoolSize(corePoolSize); - /** 最大线程数 */ - executor.setMaxPoolSize(maxPoolSize); - executor.setQueueCapacity(queueCapacity); - /** 允许线程空闲时间(单位:默认为秒) */ - executor.setKeepAliveSeconds(60); - /** 线程池名前缀 */ - executor.setThreadNamePrefix("fileExecutor-"); - // 线程池对拒绝任务的处理策略 - executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); - // 初始化 - executor.initialize(); - return executor; - } - - @Bean("asyncExecutor") - public ThreadPoolTaskExecutor asyncExecutor() { - ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); - /** 核心线程数(默认线程数) */ - executor.setCorePoolSize(corePoolSize); - /** 最大线程数 */ - executor.setMaxPoolSize(maxPoolSize); - executor.setQueueCapacity(queueCapacity); - /** 允许线程空闲时间(单位:默认为秒) */ - executor.setKeepAliveSeconds(60); - /** 线程池名前缀 */ - executor.setThreadNamePrefix("asyncExecutor-"); - // 线程池对拒绝任务的处理策略 - executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); - // 初始化 - executor.initialize(); - return executor; - } - - @Bean("bimExecutor") - public ThreadPoolTaskExecutor bimExecutor() { - ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); - /** 核心线程数(默认线程数) */ - executor.setCorePoolSize(corePoolSize); - /** 最大线程数 */ - executor.setMaxPoolSize(maxPoolSize); - executor.setQueueCapacity(2000); - /** 允许线程空闲时间(单位:默认为秒) */ - executor.setKeepAliveSeconds(60); - /** 线程池名前缀 */ - executor.setThreadNamePrefix("bimExecutor-"); - // 线程池对拒绝任务的处理策略 - executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); - // 初始化 - executor.initialize(); - return executor; - } -} +//package com.zhgd.xmgl.config; +// +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.context.annotation.Primary; +//import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +// +//import java.util.concurrent.ThreadPoolExecutor; +// +///** +// * @program: wisdomSite +// * @description: 线程池配置 +// * @author: Mr.Peng +// * @create: 2021-02-23 10:04 +// **/ +//@Configuration +//public class AsyncConfig { +// /** +// * Set the ThreadPoolExecutor's core pool size. +// */ +// private int corePoolSize = 8; +// /** +// * Set the ThreadPoolExecutor's maximum pool size. +// */ +// private int maxPoolSize = 16; +// /** +// * Set the capacity for the ThreadPoolExecutor's BlockingQueue. +// */ +// private int queueCapacity = 200; +// +// /** +// * 默认情况下,在创建了线程池后,线程池中的线程数为0,当有任务来之后,就会创建一个线程去执行任务, +// * 当线程池中的线程数目达到corePoolSize后,就会把到达的任务放到缓存队列当中; +// * 当队列满了,就继续创建线程,当线程数量大于等于maxPoolSize后,开始使用拒绝策略拒绝 +// */ +// +// @Primary +// @Bean("taskExecutor") +// public ThreadPoolTaskExecutor taskExecutor() { +// ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); +// /** 核心线程数(默认线程数) */ +// executor.setCorePoolSize(corePoolSize); +// /** 最大线程数 */ +// executor.setMaxPoolSize(maxPoolSize); +// executor.setQueueCapacity(queueCapacity); +// /** 允许线程空闲时间(单位:默认为秒) */ +// executor.setKeepAliveSeconds(60); +// /** 线程池名前缀 */ +// executor.setThreadNamePrefix("taskExecutor-"); +// // 线程池对拒绝任务的处理策略 +// executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); +// // 初始化 +// executor.initialize(); +// return executor; +// } +// +// /** +// * 默认情况下,在创建了线程池后,线程池中的线程数为0,当有任务来之后,就会创建一个线程去执行任务, +// * 当线程池中的线程数目达到corePoolSize后,就会把到达的任务放到缓存队列当中; +// * 当队列满了,就继续创建线程,当线程数量大于等于maxPoolSize后,开始使用拒绝策略拒绝 +// */ +// +// @Primary +// @Bean("doubleCarbonExecutor") +// public ThreadPoolTaskExecutor doubleCarbonExecutor() { +// ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); +// /** 核心线程数(默认线程数) */ +// executor.setCorePoolSize(corePoolSize); +// /** 最大线程数 */ +// executor.setMaxPoolSize(maxPoolSize); +// executor.setQueueCapacity(queueCapacity); +// /** 允许线程空闲时间(单位:默认为秒) */ +// executor.setKeepAliveSeconds(60); +// /** 线程池名前缀 */ +// executor.setThreadNamePrefix("doubleCarbonExecutor-"); +// // 线程池对拒绝任务的处理策略 +// executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); +// // 初始化 +// executor.initialize(); +// return executor; +// } +// +// @Primary +// @Bean("countAttendanceExecutor") +// public ThreadPoolTaskExecutor attendanceExecutor() { +// ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); +// /** 核心线程数(默认线程数) */ +// executor.setCorePoolSize(corePoolSize); +// /** 最大线程数 */ +// executor.setMaxPoolSize(maxPoolSize); +// executor.setQueueCapacity(queueCapacity); +// /** 允许线程空闲时间(单位:默认为秒) */ +// executor.setKeepAliveSeconds(60); +// /** 线程池名前缀 */ +// executor.setThreadNamePrefix("countAttendanceExecutor-"); +// // 线程池对拒绝任务的处理策略 +// executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); +// // 初始化 +// executor.initialize(); +// return executor; +// } +// +// @Primary +// @Bean("sendAttendanceExecutor") +// public ThreadPoolTaskExecutor sendAttendanceExecutor() { +// ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); +// /** 核心线程数(默认线程数) */ +// executor.setCorePoolSize(corePoolSize); +// /** 最大线程数 */ +// executor.setMaxPoolSize(maxPoolSize); +// executor.setQueueCapacity(queueCapacity); +// /** 允许线程空闲时间(单位:默认为秒) */ +// executor.setKeepAliveSeconds(60); +// /** 线程池名前缀 */ +// executor.setThreadNamePrefix("sendAttendanceExecutor-"); +// // 线程池对拒绝任务的处理策略 +// executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); +// // 初始化 +// executor.initialize(); +// return executor; +// } +// +// @Bean("sendWorkerExecutor") +// public ThreadPoolTaskExecutor sendWorkerExecutor() { +// ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); +// /** 核心线程数(默认线程数) */ +// executor.setCorePoolSize(corePoolSize); +// /** 最大线程数 */ +// executor.setMaxPoolSize(maxPoolSize); +// executor.setQueueCapacity(queueCapacity); +// /** 允许线程空闲时间(单位:默认为秒) */ +// executor.setKeepAliveSeconds(60); +// /** 线程池名前缀 */ +// executor.setThreadNamePrefix("sendWorkerExecutor-"); +// // 线程池对拒绝任务的处理策略 +// executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); +// // 初始化 +// executor.initialize(); +// return executor; +// } +// +// @Bean("sendExitWorkerExecutor") +// public ThreadPoolTaskExecutor sendExitWorkerExecutor() { +// ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); +// /** 核心线程数(默认线程数) */ +// executor.setCorePoolSize(corePoolSize); +// /** 最大线程数 */ +// executor.setMaxPoolSize(maxPoolSize); +// executor.setQueueCapacity(queueCapacity); +// /** 允许线程空闲时间(单位:默认为秒) */ +// executor.setKeepAliveSeconds(60); +// /** 线程池名前缀 */ +// executor.setThreadNamePrefix("sendExitWorkerExecutor-"); +// // 线程池对拒绝任务的处理策略 +// executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); +// // 初始化 +// executor.initialize(); +// return executor; +// } +// +// @Bean("environmentNoiseDataExecutor") +// public ThreadPoolTaskExecutor sendEnvironmentNoiseDataExecutor() { +// ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); +// /** 核心线程数(默认线程数) */ +// executor.setCorePoolSize(corePoolSize); +// /** 最大线程数 */ +// executor.setMaxPoolSize(maxPoolSize); +// executor.setQueueCapacity(queueCapacity); +// /** 允许线程空闲时间(单位:默认为秒) */ +// executor.setKeepAliveSeconds(60); +// /** 线程池名前缀 */ +// executor.setThreadNamePrefix("environmentNoiseDataExecutor-"); +// // 线程池对拒绝任务的处理策略 +// executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); +// // 初始化 +// executor.initialize(); +// return executor; +// } +// +// @Bean("electricalExecutor") +// public ThreadPoolTaskExecutor sendElectricalExecutor() { +// ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); +// /** 核心线程数(默认线程数) */ +// executor.setCorePoolSize(corePoolSize); +// /** 最大线程数 */ +// executor.setMaxPoolSize(maxPoolSize); +// executor.setQueueCapacity(queueCapacity); +// /** 允许线程空闲时间(单位:默认为秒) */ +// executor.setKeepAliveSeconds(60); +// /** 线程池名前缀 */ +// executor.setThreadNamePrefix("electricalExecutor-"); +// // 线程池对拒绝任务的处理策略 +// executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); +// // 初始化 +// executor.initialize(); +// return executor; +// } +// +// @Bean("towerExecutor") +// public ThreadPoolTaskExecutor sendTowerExecutor() { +// ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); +// /** 核心线程数(默认线程数) */ +// executor.setCorePoolSize(corePoolSize); +// /** 最大线程数 */ +// executor.setMaxPoolSize(maxPoolSize); +// executor.setQueueCapacity(queueCapacity); +// /** 允许线程空闲时间(单位:默认为秒) */ +// executor.setKeepAliveSeconds(60); +// /** 线程池名前缀 */ +// executor.setThreadNamePrefix("towerExecutor-"); +// // 线程池对拒绝任务的处理策略 +// executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); +// // 初始化 +// executor.initialize(); +// return executor; +// } +// +// @Bean("lifterExecutor") +// public ThreadPoolTaskExecutor sendLifterExecutor() { +// ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); +// /** 核心线程数(默认线程数) */ +// executor.setCorePoolSize(corePoolSize); +// /** 最大线程数 */ +// executor.setMaxPoolSize(maxPoolSize); +// executor.setQueueCapacity(queueCapacity); +// /** 允许线程空闲时间(单位:默认为秒) */ +// executor.setKeepAliveSeconds(60); +// /** 线程池名前缀 */ +// executor.setThreadNamePrefix("lifterExecutor-"); +// // 线程池对拒绝任务的处理策略 +// executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); +// // 初始化 +// executor.initialize(); +// return executor; +// } +// +// @Bean("devExcavationExecutor") +// public ThreadPoolTaskExecutor sendDevExcavationEExecutor() { +// ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); +// /** 核心线程数(默认线程数) */ +// executor.setCorePoolSize(corePoolSize); +// /** 最大线程数 */ +// executor.setMaxPoolSize(maxPoolSize); +// executor.setQueueCapacity(queueCapacity); +// /** 允许线程空闲时间(单位:默认为秒) */ +// executor.setKeepAliveSeconds(60); +// /** 线程池名前缀 */ +// executor.setThreadNamePrefix("devExcavationExecutor-"); +// // 线程池对拒绝任务的处理策略 +// executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); +// // 初始化 +// executor.initialize(); +// return executor; +// } +// +// @Bean("gantryCraneExecutor") +// public ThreadPoolTaskExecutor sendGantryCraneExecutor() { +// ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); +// /** 核心线程数(默认线程数) */ +// executor.setCorePoolSize(corePoolSize); +// /** 最大线程数 */ +// executor.setMaxPoolSize(maxPoolSize); +// executor.setQueueCapacity(queueCapacity); +// /** 允许线程空闲时间(单位:默认为秒) */ +// executor.setKeepAliveSeconds(60); +// /** 线程池名前缀 */ +// executor.setThreadNamePrefix("gantryCraneExecutor-"); +// // 线程池对拒绝任务的处理策略 +// executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); +// // 初始化 +// executor.initialize(); +// return executor; +// } +// +// @Bean("fileExecutor") +// public ThreadPoolTaskExecutor fileExecutor() { +// ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); +// /** 核心线程数(默认线程数) */ +// executor.setCorePoolSize(corePoolSize); +// /** 最大线程数 */ +// executor.setMaxPoolSize(maxPoolSize); +// executor.setQueueCapacity(queueCapacity); +// /** 允许线程空闲时间(单位:默认为秒) */ +// executor.setKeepAliveSeconds(60); +// /** 线程池名前缀 */ +// executor.setThreadNamePrefix("fileExecutor-"); +// // 线程池对拒绝任务的处理策略 +// executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); +// // 初始化 +// executor.initialize(); +// return executor; +// } +// +// @Bean("asyncExecutor") +// public ThreadPoolTaskExecutor asyncExecutor() { +// ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); +// /** 核心线程数(默认线程数) */ +// executor.setCorePoolSize(corePoolSize); +// /** 最大线程数 */ +// executor.setMaxPoolSize(maxPoolSize); +// executor.setQueueCapacity(queueCapacity); +// /** 允许线程空闲时间(单位:默认为秒) */ +// executor.setKeepAliveSeconds(60); +// /** 线程池名前缀 */ +// executor.setThreadNamePrefix("asyncExecutor-"); +// // 线程池对拒绝任务的处理策略 +// executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); +// // 初始化 +// executor.initialize(); +// return executor; +// } +// +// @Bean("bimExecutor") +// public ThreadPoolTaskExecutor bimExecutor() { +// ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); +// /** 核心线程数(默认线程数) */ +// executor.setCorePoolSize(corePoolSize); +// /** 最大线程数 */ +// executor.setMaxPoolSize(maxPoolSize); +// executor.setQueueCapacity(2000); +// /** 允许线程空闲时间(单位:默认为秒) */ +// executor.setKeepAliveSeconds(60); +// /** 线程池名前缀 */ +// executor.setThreadNamePrefix("bimExecutor-"); +// // 线程池对拒绝任务的处理策略 +// executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); +// // 初始化 +// executor.initialize(); +// return executor; +// } +//} diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/SystemUser.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/SystemUser.java index 9e90ce244..39016e7e2 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/SystemUser.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/SystemUser.java @@ -67,6 +67,11 @@ public class SystemUser implements Serializable { @Excel(name = "人员姓名", width = 15) @ApiModelProperty(value = "人员姓名") private java.lang.String realName; + + @Excel(name = "头像", width = 15) + @ApiModelProperty(value = "头像") + private String avatar; + /** * 人员电话 */ diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/CompanyMapper.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/CompanyMapper.java index 433511176..fe2e831c5 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/CompanyMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/CompanyMapper.java @@ -2,11 +2,13 @@ package com.zhgd.xmgl.modules.basicdata.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.wflow.bean.vo.OrgTreeVo; import com.zhgd.jeecg.common.mybatis.EntityMap; import com.zhgd.xmgl.modules.basicdata.entity.Company; import com.zhgd.xmgl.modules.basicdata.entity.SystemUser; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; import java.util.Map; @@ -49,4 +51,12 @@ public interface CompanyMapper extends BaseMapper { * @return */ Company getHeadquarterCompany(Map map); + + /** + * 查询某部门下的子部门列表 + * @param deptId 父部门 + * @return 子部门列表,type字段固定返回固定值 dept + */ + @Select("SELECT company_sn id, company_name `name`, 'dept' AS 'type' FROM company WHERE parent_id=#{deptId}") + List selectByDept(@Param("deptId") String deptId); } diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/SystemUserMapper.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/SystemUserMapper.java index d20861e86..cb7decfb9 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/SystemUserMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/SystemUserMapper.java @@ -3,10 +3,17 @@ package com.zhgd.xmgl.modules.basicdata.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.wflow.bean.do_.DeptDo; +import com.wflow.bean.do_.UserDeptDo; +import com.wflow.bean.vo.OrgTreeVo; +import com.zhgd.jeecg.common.mybatis.EntityMap; import com.zhgd.xmgl.modules.basicdata.entity.SystemUser; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.springframework.security.core.parameters.P; +import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -52,4 +59,37 @@ public interface SystemUserMapper extends BaseMapper { List getOrgSnListByUserId(HashMap paramMap); List getTenantListBySn(Map map); + + /** + * 查询该部门下的所有用户 + * @param deptId 部门ID + * @return 用户列表 type为固定值user + */ + @Select("SELECT user_id id, real_name `name`, 'user' AS 'type', avatar " + + "FROM system_user" + + " WHERE sn = #{deptId}") + List selectUsersByDept(@Param("deptId") String deptId); + + /** + * 查询指定用户所在的部门,一个用户可能同时在多个部门下 + * + * @param userId 用户ID + * @return 用户所在的部门列表 + */ + @Select("SELECT d.company_sn id, d.company_name FROM system_user u, company d WHERE u.sn = d.company_sn AND u.user_id = #{userId}") + List getUserDepts(@Param("userId") String userId); + + /** + * 批量查询指定用户及部门信息 + * + * @param udIds 用户ID_部门id 字符串拼接的集合 + * @return 用户部门信息列表 + */ + @Select({""}) + List getUserDepInfosBatch(@Param("list") Collection udIds); } diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/FlowOrgRepositoryServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/FlowOrgRepositoryServiceImpl.java new file mode 100644 index 000000000..b63fd6062 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/FlowOrgRepositoryServiceImpl.java @@ -0,0 +1,201 @@ +package com.zhgd.xmgl.modules.basicdata.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.wflow.bean.do_.DeptDo; +import com.wflow.bean.do_.RoleDo; +import com.wflow.bean.do_.UserDeptDo; +import com.wflow.bean.do_.UserDo; +import com.wflow.bean.vo.ModelGroupVo; +import com.wflow.bean.vo.OrgTreeVo; +import com.wflow.bean.vo.UserVo; +import com.wflow.service.OrgRepositoryService; +import com.zhgd.xmgl.modules.basicdata.entity.BaseRoleUser; +import com.zhgd.xmgl.modules.basicdata.entity.Company; +import com.zhgd.xmgl.modules.basicdata.entity.SystemUser; +import com.zhgd.xmgl.modules.basicdata.mapper.BaseRoleMapper; +import com.zhgd.xmgl.modules.basicdata.mapper.BaseRoleUserMapper; +import com.zhgd.xmgl.modules.basicdata.mapper.CompanyMapper; +import com.zhgd.xmgl.modules.basicdata.mapper.SystemUserMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.stream.Collectors; + +@Primary +@Service +public class FlowOrgRepositoryServiceImpl implements OrgRepositoryService { + + @Autowired + private SystemUserMapper systemUserMapper; + + @Autowired + private BaseRoleUserMapper baseRoleUserMapper; + + @Autowired + private BaseRoleMapper systemRoleMapper; + + @Autowired + private CompanyMapper companyMapper; + + @Override + public List getModelsByPerm(String userId) { + return null; + } + + @Override + public UserDo getUserById(String userId) { + SystemUser systemUser = systemUserMapper.selectById(userId); + if (Objects.nonNull(systemUser)){ + UserDo userDo = new UserDo(); + userDo.setUserId(systemUser.getUserId().toString()); + userDo.setUserName(systemUser.getRealName()); + userDo.setAvatar(systemUser.getAvatar()); + return userDo; + } + return null; + } + + @Override + public List selectUsersByPy(String py) { + return null; + } + + @Override + public List selectUsersByDept(String deptId) { + return systemUserMapper.selectUsersByDept(deptId); + } + + @Override + public List getUsersBatch(Collection userIds) { + try { + return systemUserMapper.selectBatchIds(userIds).stream() + .map(u -> new UserDo(u.getUserId().toString(), u.getRealName(), u.getAvatar())) + .collect(Collectors.toList()); + } catch (Exception e) { + return Collections.emptyList(); + } + } + + @Override + public Set getUsersByDepts(Collection deptIds) { + try { + return systemUserMapper.selectList( + new LambdaQueryWrapper() + .select(SystemUser::getUserId) + .in(SystemUser::getDepartment, deptIds)) + .stream().map(Object::toString) + .collect(Collectors.toSet()); + } catch (Exception e) { + return Collections.emptySet(); + } + } + + @Override + public DeptDo getDeptById(String deptId) { + Company departments = companyMapper.selectOne(Wrappers.lambdaQuery().eq(Company::getCompanySn, deptId)); + if (Objects.nonNull(departments)){ + DeptDo deptDo = new DeptDo(); + deptDo.setId(departments.getCompanySn().toString()); + deptDo.setDeptName(departments.getCompanyName()); + deptDo.setLeader(""); + deptDo.setParentId(departments.getParentId().toString()); + return deptDo; + } + return null; + } + + @Override + public List getDeptsByUser(String userId) { + return systemUserMapper.getUserDepts(userId); + } + + @Override + public List getSysAllDepts() { + try { + return companyMapper.selectList(null).stream() + .map(d -> new DeptDo(d.getCompanySn().toString(), d.getCompanyName(), "", d.getParentId().toString())) + .collect(Collectors.toList()); + } catch (Exception e) { + return Collections.emptyList(); + } + } + + @Override + public List getSysAllUserDepts() { + try { + return systemUserMapper.selectList(null).stream() + .map(d -> new UserDeptDo(d.getUserId().toString(), d.getDepartment())) + .collect(Collectors.toList()); + } catch (Exception e) { + return Collections.emptyList(); + } + } + + @Override + public List getSubDeptById(String parentId) { + return companyMapper.selectByDept(parentId); + } + + @Override + public List getRecursiveSubDept(String parentId) { + List list = new ArrayList<>(); + loadSubDept(parentId, list); + return list; + } + + /** + * 递归加载所有子部门 + * @param parentId 父部门ID + * @param subDepts 所有子部门缓存 + */ + private void loadSubDept(String parentId, List subDepts){ + List departments = companyMapper.selectList( + new LambdaQueryWrapper() + .eq(Company::getParentId, parentId)); + subDepts.addAll(departments.stream().map(Company::getCompanySn).collect(Collectors.toList()).stream().map(Object::toString).collect(Collectors.toList())); + departments.forEach(d -> loadSubDept(d.getCompanySn().toString(), subDepts)); + } + + @Override + public List getSysAllRoles() { + try { + return systemRoleMapper.selectList(null).stream() + .map(r -> new RoleDo(r.getRoleId().toString(), r.getRoleName())) + .collect(Collectors.toList()); + } catch (Exception e) { + return Collections.emptyList(); + } + } + + @Override + public Set getUsersByRoles(List roles) { + return baseRoleUserMapper.selectList(new LambdaQueryWrapper() + .select(BaseRoleUser::getUserId) + .in(BaseRoleUser::getRoleId, roles)).stream() + .map(Object::toString).collect(Collectors.toSet()); + } + + @Override + public String getUserSign(String userId) { + return systemUserMapper.selectById(userId).getUserId().toString(); + } + + @Override + public void updateUserSign(String userId, String signature) { + + } + + @Override + public UserVo getUserDetail(String userId) { + return null; + } + + @Override + public Map getUserDeptInfos(Collection userDeptIds) { + return systemUserMapper.getUserDepInfosBatch(userDeptIds) + .stream().collect(Collectors.toMap(UserDeptDo::getUserId, v -> v)); + } +} diff --git a/src/main/resources/application-gsx-other-env-show.properties b/src/main/resources/application-gsx-other-env-show.properties index aaee2e504..1dab66bf4 100644 --- a/src/main/resources/application-gsx-other-env-show.properties +++ b/src/main/resources/application-gsx-other-env-show.properties @@ -6,10 +6,18 @@ http.port=23912 #spring.datasource.url=jdbc:mysql://139.9.66.234:3386/wisdomsite_ty?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true #spring.datasource.url=jdbc:mysql://182.90.224.237:3306/wisdomsite?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true&useSSL=false #spring.datasource.url=jdbc:mysql://139.9.66.234:3306/wisdomsite?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true -spring.datasource.url=jdbc:mysql://192.168.34.221:3306/wisdomsite_other_env_show?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true&useSSL=false -spring.datasource.username=ENC(XR4C/hvTYCUqudS49Wh/jA==) +spring.datasource.db1.jdbc-url=jdbc:mysql://192.168.34.221:3306/wisdomsite_other_env_show?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true&useSSL=false +spring.datasource.db1.driver-class-name=com.mysql.jdbc.Driver +spring.datasource.db1.username=ENC(XR4C/hvTYCUqudS49Wh/jA==) #spring.datasource.password=ENC(hHkiHEc6vSWjqfOtg2/2Uiihs0vX3l7V) -spring.datasource.password=ENC(LsKaVL2ycDu+uUNoPndYLA==) +spring.datasource.db1.password=ENC(LsKaVL2ycDu+uUNoPndYLA==) + + +spring.datasource.db2.jdbc-url=jdbc:mysql://192.168.34.155:3306/wflow_pro?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8 +spring.datasource.db2.driver-class-name=com.mysql.jdbc.Driver +spring.datasource.db2.username=root +spring.datasource.db2.password=root + server.port=19111 #server.port=30246 basePath=C:/jxj/prod/backEnd/itbgpImage/ @@ -110,3 +118,15 @@ xiwon.url=http://openapi.xiwon588.com/ udp.port=51236 #上传的图片的url前缀 upload.image.url.prefix=http://192.168.34.221:9111/image/ + + +spring.mail.host=smtp.qq.com +spring.mail.username=smartiots@qq.com +spring.mail.password=fnrruelrccqaeaefx0 +spring.mail.protocol=smtps +spring.mail.default-encoding=UTF-8 +spring.mail.properties.default-encoding=UTF-8 +spring.mail.properties.mail.smtp.port=465 +spring.mail.properties.mail.smtp.auth=true +spring.mail.properties.mail.smtp.starttls.enable=true +spring.mail.properties.mail.smtp.starttls.required=true diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 63a45adf4..4b1b7717c 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,5 +1,5 @@ # 环境选择 -spring.profiles.active=dev +spring.profiles.active=gsx-other-env-show # 国际化配置 spring.messages.basename=i18n/messages spring.messages.encoding=utf-8 diff --git a/src/main/resources/lib/wflow-server-1.0-SNAPSHOT.jar b/src/main/resources/lib/wflow-server-1.0-SNAPSHOT.jar new file mode 100644 index 000000000..15fa179ba Binary files /dev/null and b/src/main/resources/lib/wflow-server-1.0-SNAPSHOT.jar differ