diff --git a/pom.xml b/pom.xml index ec5ddc3..f02731e 100644 --- a/pom.xml +++ b/pom.xml @@ -74,11 +74,6 @@ 4.5.13 - - com.casic - casic-admin-core - 2.0.0.alpha - @@ -198,6 +193,25 @@ 1.8 + + + com.casic + casic-core + 2.0.0.alpha + + + + com.casic + casic-admin-support + 2.0.0.alpha + + + + com.casic + casic-admin-core + 2.0.0.alpha + + diff --git a/pom.xml b/pom.xml index ec5ddc3..f02731e 100644 --- a/pom.xml +++ b/pom.xml @@ -74,11 +74,6 @@ 4.5.13 - - com.casic - casic-admin-core - 2.0.0.alpha - @@ -198,6 +193,25 @@ 1.8 + + + com.casic + casic-core + 2.0.0.alpha + + + + com.casic + casic-admin-support + 2.0.0.alpha + + + + com.casic + casic-admin-core + 2.0.0.alpha + + diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java index 9afd0b9..affdcb5 100644 --- a/src/main/java/com/casic/CasicApplication.java +++ b/src/main/java/com/casic/CasicApplication.java @@ -1,6 +1,7 @@ package com.casic; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @@ -19,7 +20,9 @@ @Slf4j @ComponentScan(basePackages= "com.casic.**") +@MapperScan(basePackages = {"com.casic.**.dao", "com.casic.**.mapper"}) @SpringBootApplication +@EnableTransactionManagement(proxyTargetClass = true) public class CasicApplication { public static void main(String[] args) { log.info("CasicApplication is success!"); diff --git a/pom.xml b/pom.xml index ec5ddc3..f02731e 100644 --- a/pom.xml +++ b/pom.xml @@ -74,11 +74,6 @@ 4.5.13 - - com.casic - casic-admin-core - 2.0.0.alpha - @@ -198,6 +193,25 @@ 1.8 + + + com.casic + casic-core + 2.0.0.alpha + + + + com.casic + casic-admin-support + 2.0.0.alpha + + + + com.casic + casic-admin-core + 2.0.0.alpha + + diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java index 9afd0b9..affdcb5 100644 --- a/src/main/java/com/casic/CasicApplication.java +++ b/src/main/java/com/casic/CasicApplication.java @@ -1,6 +1,7 @@ package com.casic; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @@ -19,7 +20,9 @@ @Slf4j @ComponentScan(basePackages= "com.casic.**") +@MapperScan(basePackages = {"com.casic.**.dao", "com.casic.**.mapper"}) @SpringBootApplication +@EnableTransactionManagement(proxyTargetClass = true) public class CasicApplication { public static void main(String[] args) { log.info("CasicApplication is success!"); diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java index 7d19680..1615fb8 100644 --- a/src/main/java/com/casic/config/CorsConfig.java +++ b/src/main/java/com/casic/config/CorsConfig.java @@ -1,31 +1,31 @@ -package com.casic.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.web.filter.CorsFilter; - -/** - * 基础框架 - 跨域请求配置 - */ -@Configuration -public class CorsConfig { - @Bean - public CorsFilter corsFilter() { - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", buildConfig()); - return new CorsFilter(source); - } - - private CorsConfiguration buildConfig() { - CorsConfiguration corsConfiguration = new CorsConfiguration(); - // 1允许任何域名使用 - corsConfiguration.addAllowedOrigin("*"); - // 2允许任何头 - corsConfiguration.addAllowedHeader("*"); - // 3允许任何方法(post、get等) - corsConfiguration.addAllowedMethod("*"); - return corsConfiguration; - } -} \ No newline at end of file +//package com.casic.config; +// +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.web.cors.CorsConfiguration; +//import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +//import org.springframework.web.filter.CorsFilter; +// +///** +// * 基础框架 - 跨域请求配置 +// */ +//@Configuration +//public class CorsConfig { +// @Bean +// public CorsFilter corsFilter() { +// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); +// source.registerCorsConfiguration("/**", buildConfig()); +// return new CorsFilter(source); +// } +// +// private CorsConfiguration buildConfig() { +// CorsConfiguration corsConfiguration = new CorsConfiguration(); +// // 1允许任何域名使用 +// corsConfiguration.addAllowedOrigin("*"); +// // 2允许任何头 +// corsConfiguration.addAllowedHeader("*"); +// // 3允许任何方法(post、get等) +// corsConfiguration.addAllowedMethod("*"); +// return corsConfiguration; +// } +//} \ No newline at end of file diff --git a/pom.xml b/pom.xml index ec5ddc3..f02731e 100644 --- a/pom.xml +++ b/pom.xml @@ -74,11 +74,6 @@ 4.5.13 - - com.casic - casic-admin-core - 2.0.0.alpha - @@ -198,6 +193,25 @@ 1.8 + + + com.casic + casic-core + 2.0.0.alpha + + + + com.casic + casic-admin-support + 2.0.0.alpha + + + + com.casic + casic-admin-core + 2.0.0.alpha + + diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java index 9afd0b9..affdcb5 100644 --- a/src/main/java/com/casic/CasicApplication.java +++ b/src/main/java/com/casic/CasicApplication.java @@ -1,6 +1,7 @@ package com.casic; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @@ -19,7 +20,9 @@ @Slf4j @ComponentScan(basePackages= "com.casic.**") +@MapperScan(basePackages = {"com.casic.**.dao", "com.casic.**.mapper"}) @SpringBootApplication +@EnableTransactionManagement(proxyTargetClass = true) public class CasicApplication { public static void main(String[] args) { log.info("CasicApplication is success!"); diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java index 7d19680..1615fb8 100644 --- a/src/main/java/com/casic/config/CorsConfig.java +++ b/src/main/java/com/casic/config/CorsConfig.java @@ -1,31 +1,31 @@ -package com.casic.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.web.filter.CorsFilter; - -/** - * 基础框架 - 跨域请求配置 - */ -@Configuration -public class CorsConfig { - @Bean - public CorsFilter corsFilter() { - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", buildConfig()); - return new CorsFilter(source); - } - - private CorsConfiguration buildConfig() { - CorsConfiguration corsConfiguration = new CorsConfiguration(); - // 1允许任何域名使用 - corsConfiguration.addAllowedOrigin("*"); - // 2允许任何头 - corsConfiguration.addAllowedHeader("*"); - // 3允许任何方法(post、get等) - corsConfiguration.addAllowedMethod("*"); - return corsConfiguration; - } -} \ No newline at end of file +//package com.casic.config; +// +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.web.cors.CorsConfiguration; +//import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +//import org.springframework.web.filter.CorsFilter; +// +///** +// * 基础框架 - 跨域请求配置 +// */ +//@Configuration +//public class CorsConfig { +// @Bean +// public CorsFilter corsFilter() { +// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); +// source.registerCorsConfiguration("/**", buildConfig()); +// return new CorsFilter(source); +// } +// +// private CorsConfiguration buildConfig() { +// CorsConfiguration corsConfiguration = new CorsConfiguration(); +// // 1允许任何域名使用 +// corsConfiguration.addAllowedOrigin("*"); +// // 2允许任何头 +// corsConfiguration.addAllowedHeader("*"); +// // 3允许任何方法(post、get等) +// corsConfiguration.addAllowedMethod("*"); +// return corsConfiguration; +// } +//} \ No newline at end of file diff --git a/src/main/java/com/casic/config/dto/RoleDto.java b/src/main/java/com/casic/config/dto/RoleDto.java new file mode 100644 index 0000000..ca08f84 --- /dev/null +++ b/src/main/java/com/casic/config/dto/RoleDto.java @@ -0,0 +1,11 @@ +package com.casic.config.dto; + +import lombok.Data; + +@Data +public class RoleDto { + + private Long id; + private String name; + +} diff --git a/pom.xml b/pom.xml index ec5ddc3..f02731e 100644 --- a/pom.xml +++ b/pom.xml @@ -74,11 +74,6 @@ 4.5.13 - - com.casic - casic-admin-core - 2.0.0.alpha - @@ -198,6 +193,25 @@ 1.8 + + + com.casic + casic-core + 2.0.0.alpha + + + + com.casic + casic-admin-support + 2.0.0.alpha + + + + com.casic + casic-admin-core + 2.0.0.alpha + + diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java index 9afd0b9..affdcb5 100644 --- a/src/main/java/com/casic/CasicApplication.java +++ b/src/main/java/com/casic/CasicApplication.java @@ -1,6 +1,7 @@ package com.casic; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @@ -19,7 +20,9 @@ @Slf4j @ComponentScan(basePackages= "com.casic.**") +@MapperScan(basePackages = {"com.casic.**.dao", "com.casic.**.mapper"}) @SpringBootApplication +@EnableTransactionManagement(proxyTargetClass = true) public class CasicApplication { public static void main(String[] args) { log.info("CasicApplication is success!"); diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java index 7d19680..1615fb8 100644 --- a/src/main/java/com/casic/config/CorsConfig.java +++ b/src/main/java/com/casic/config/CorsConfig.java @@ -1,31 +1,31 @@ -package com.casic.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.web.filter.CorsFilter; - -/** - * 基础框架 - 跨域请求配置 - */ -@Configuration -public class CorsConfig { - @Bean - public CorsFilter corsFilter() { - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", buildConfig()); - return new CorsFilter(source); - } - - private CorsConfiguration buildConfig() { - CorsConfiguration corsConfiguration = new CorsConfiguration(); - // 1允许任何域名使用 - corsConfiguration.addAllowedOrigin("*"); - // 2允许任何头 - corsConfiguration.addAllowedHeader("*"); - // 3允许任何方法(post、get等) - corsConfiguration.addAllowedMethod("*"); - return corsConfiguration; - } -} \ No newline at end of file +//package com.casic.config; +// +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.web.cors.CorsConfiguration; +//import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +//import org.springframework.web.filter.CorsFilter; +// +///** +// * 基础框架 - 跨域请求配置 +// */ +//@Configuration +//public class CorsConfig { +// @Bean +// public CorsFilter corsFilter() { +// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); +// source.registerCorsConfiguration("/**", buildConfig()); +// return new CorsFilter(source); +// } +// +// private CorsConfiguration buildConfig() { +// CorsConfiguration corsConfiguration = new CorsConfiguration(); +// // 1允许任何域名使用 +// corsConfiguration.addAllowedOrigin("*"); +// // 2允许任何头 +// corsConfiguration.addAllowedHeader("*"); +// // 3允许任何方法(post、get等) +// corsConfiguration.addAllowedMethod("*"); +// return corsConfiguration; +// } +//} \ No newline at end of file diff --git a/src/main/java/com/casic/config/dto/RoleDto.java b/src/main/java/com/casic/config/dto/RoleDto.java new file mode 100644 index 0000000..ca08f84 --- /dev/null +++ b/src/main/java/com/casic/config/dto/RoleDto.java @@ -0,0 +1,11 @@ +package com.casic.config.dto; + +import lombok.Data; + +@Data +public class RoleDto { + + private Long id; + private String name; + +} diff --git a/src/main/java/com/casic/config/task/TaskConfigurer.java b/src/main/java/com/casic/config/task/TaskConfigurer.java index 699c0e3..5a3a029 100644 --- a/src/main/java/com/casic/config/task/TaskConfigurer.java +++ b/src/main/java/com/casic/config/task/TaskConfigurer.java @@ -1,6 +1,7 @@ package com.casic.config.task; import com.casic.service.DeviceDataService; +import com.casic.service.IPartitionStrategyService; import com.casic.service.UserDataDelayReceiver; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; @@ -24,18 +25,30 @@ private String onlineStateCron; @Value("${casic.device.transfer-user.cron}") private String transferUserCron; - + @Value("${casic.device.partition.cron}") + private String partitionCron; private final DeviceDataService deviceDataService; private final UserDataDelayReceiver userDataDelayReceiver; + private final IPartitionStrategyService partitionStrategyService; @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { - TriggerTask triggrtTask = new TriggerTask(nextDayDevice(), + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), triggerContext -> { return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); }); - taskRegistrar.addTriggerTask(triggrtTask); + TriggerTask transferUserTask = new TriggerTask(getUserData(), + triggerContext -> { + return new CronTrigger(transferUserCron).nextExecutionTime(triggerContext); + }); + TriggerTask partitionTask = new TriggerTask(createPartition(), + triggerContext -> { + return new CronTrigger(partitionCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + taskRegistrar.addTriggerTask(transferUserTask); + taskRegistrar.addTriggerTask(partitionTask); } private Runnable nextDayDevice() { @@ -57,6 +70,18 @@ userDataDelayReceiver.saveNewUserData(); } }; + } + + /** + * 定时同步普光 + */ + private Runnable createPartition() { + return new Runnable() { + @Override + public void run() { + partitionStrategyService.createPartition("DATA_H2S", "data_h2s_log"); + } + }; } diff --git a/pom.xml b/pom.xml index ec5ddc3..f02731e 100644 --- a/pom.xml +++ b/pom.xml @@ -74,11 +74,6 @@ 4.5.13 - - com.casic - casic-admin-core - 2.0.0.alpha - @@ -198,6 +193,25 @@ 1.8 + + + com.casic + casic-core + 2.0.0.alpha + + + + com.casic + casic-admin-support + 2.0.0.alpha + + + + com.casic + casic-admin-core + 2.0.0.alpha + + diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java index 9afd0b9..affdcb5 100644 --- a/src/main/java/com/casic/CasicApplication.java +++ b/src/main/java/com/casic/CasicApplication.java @@ -1,6 +1,7 @@ package com.casic; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @@ -19,7 +20,9 @@ @Slf4j @ComponentScan(basePackages= "com.casic.**") +@MapperScan(basePackages = {"com.casic.**.dao", "com.casic.**.mapper"}) @SpringBootApplication +@EnableTransactionManagement(proxyTargetClass = true) public class CasicApplication { public static void main(String[] args) { log.info("CasicApplication is success!"); diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java index 7d19680..1615fb8 100644 --- a/src/main/java/com/casic/config/CorsConfig.java +++ b/src/main/java/com/casic/config/CorsConfig.java @@ -1,31 +1,31 @@ -package com.casic.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.web.filter.CorsFilter; - -/** - * 基础框架 - 跨域请求配置 - */ -@Configuration -public class CorsConfig { - @Bean - public CorsFilter corsFilter() { - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", buildConfig()); - return new CorsFilter(source); - } - - private CorsConfiguration buildConfig() { - CorsConfiguration corsConfiguration = new CorsConfiguration(); - // 1允许任何域名使用 - corsConfiguration.addAllowedOrigin("*"); - // 2允许任何头 - corsConfiguration.addAllowedHeader("*"); - // 3允许任何方法(post、get等) - corsConfiguration.addAllowedMethod("*"); - return corsConfiguration; - } -} \ No newline at end of file +//package com.casic.config; +// +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.web.cors.CorsConfiguration; +//import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +//import org.springframework.web.filter.CorsFilter; +// +///** +// * 基础框架 - 跨域请求配置 +// */ +//@Configuration +//public class CorsConfig { +// @Bean +// public CorsFilter corsFilter() { +// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); +// source.registerCorsConfiguration("/**", buildConfig()); +// return new CorsFilter(source); +// } +// +// private CorsConfiguration buildConfig() { +// CorsConfiguration corsConfiguration = new CorsConfiguration(); +// // 1允许任何域名使用 +// corsConfiguration.addAllowedOrigin("*"); +// // 2允许任何头 +// corsConfiguration.addAllowedHeader("*"); +// // 3允许任何方法(post、get等) +// corsConfiguration.addAllowedMethod("*"); +// return corsConfiguration; +// } +//} \ No newline at end of file diff --git a/src/main/java/com/casic/config/dto/RoleDto.java b/src/main/java/com/casic/config/dto/RoleDto.java new file mode 100644 index 0000000..ca08f84 --- /dev/null +++ b/src/main/java/com/casic/config/dto/RoleDto.java @@ -0,0 +1,11 @@ +package com.casic.config.dto; + +import lombok.Data; + +@Data +public class RoleDto { + + private Long id; + private String name; + +} diff --git a/src/main/java/com/casic/config/task/TaskConfigurer.java b/src/main/java/com/casic/config/task/TaskConfigurer.java index 699c0e3..5a3a029 100644 --- a/src/main/java/com/casic/config/task/TaskConfigurer.java +++ b/src/main/java/com/casic/config/task/TaskConfigurer.java @@ -1,6 +1,7 @@ package com.casic.config.task; import com.casic.service.DeviceDataService; +import com.casic.service.IPartitionStrategyService; import com.casic.service.UserDataDelayReceiver; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; @@ -24,18 +25,30 @@ private String onlineStateCron; @Value("${casic.device.transfer-user.cron}") private String transferUserCron; - + @Value("${casic.device.partition.cron}") + private String partitionCron; private final DeviceDataService deviceDataService; private final UserDataDelayReceiver userDataDelayReceiver; + private final IPartitionStrategyService partitionStrategyService; @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { - TriggerTask triggrtTask = new TriggerTask(nextDayDevice(), + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), triggerContext -> { return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); }); - taskRegistrar.addTriggerTask(triggrtTask); + TriggerTask transferUserTask = new TriggerTask(getUserData(), + triggerContext -> { + return new CronTrigger(transferUserCron).nextExecutionTime(triggerContext); + }); + TriggerTask partitionTask = new TriggerTask(createPartition(), + triggerContext -> { + return new CronTrigger(partitionCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + taskRegistrar.addTriggerTask(transferUserTask); + taskRegistrar.addTriggerTask(partitionTask); } private Runnable nextDayDevice() { @@ -57,6 +70,18 @@ userDataDelayReceiver.saveNewUserData(); } }; + } + + /** + * 定时同步普光 + */ + private Runnable createPartition() { + return new Runnable() { + @Override + public void run() { + partitionStrategyService.createPartition("DATA_H2S", "data_h2s_log"); + } + }; } diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java index d7e3722..e6ae7bc 100644 --- a/src/main/java/com/casic/controller/DeviceDataController.java +++ b/src/main/java/com/casic/controller/DeviceDataController.java @@ -1,40 +1,40 @@ -package com.casic.controller; - -import com.alibaba.fastjson.JSON; -import com.casic.service.DeviceDataService; -import com.casic.service.ThirdDataService; -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.*; - -import java.util.Map; - -@RestController -@RequestMapping("/device") -@RequiredArgsConstructor -public class DeviceDataController { - - private final DeviceDataService deviceDataService; - - @RequestMapping("/recent-data") - public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "recentNum", required = true) String recentNum, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); - } - - @RequestMapping("/data/list-page") - public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "currentIndex", required = true) Integer currentIndex, - @RequestParam(value = "pageSize", required = true) Integer pageSize, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); - } - - @RequestMapping("/level/{deviceType}") - public Object getLevelList(@PathVariable("deviceType")String deviceType) { - return deviceDataService.getLevel(deviceType); - } - - - -} +//package com.casic.controller; +// +//import com.alibaba.fastjson.JSON; +//import com.casic.service.DeviceDataService; +//import com.casic.service.ThirdDataService; +//import lombok.RequiredArgsConstructor; +//import org.springframework.web.bind.annotation.*; +// +//import java.util.Map; +// +//@RestController +//@RequestMapping("/device") +//@RequiredArgsConstructor +//public class DeviceDataController { +// +// private final DeviceDataService deviceDataService; +// +// @RequestMapping("/recent-data") +// public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "recentNum", required = true) String recentNum, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); +// } +// +// @RequestMapping("/data/list-page") +// public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "currentIndex", required = true) Integer currentIndex, +// @RequestParam(value = "pageSize", required = true) Integer pageSize, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); +// } +// +// @RequestMapping("/level/{deviceType}") +// public Object getLevelList(@PathVariable("deviceType")String deviceType) { +// return deviceDataService.getLevel(deviceType); +// } +// +// +// +//} diff --git a/pom.xml b/pom.xml index ec5ddc3..f02731e 100644 --- a/pom.xml +++ b/pom.xml @@ -74,11 +74,6 @@ 4.5.13 - - com.casic - casic-admin-core - 2.0.0.alpha - @@ -198,6 +193,25 @@ 1.8 + + + com.casic + casic-core + 2.0.0.alpha + + + + com.casic + casic-admin-support + 2.0.0.alpha + + + + com.casic + casic-admin-core + 2.0.0.alpha + + diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java index 9afd0b9..affdcb5 100644 --- a/src/main/java/com/casic/CasicApplication.java +++ b/src/main/java/com/casic/CasicApplication.java @@ -1,6 +1,7 @@ package com.casic; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @@ -19,7 +20,9 @@ @Slf4j @ComponentScan(basePackages= "com.casic.**") +@MapperScan(basePackages = {"com.casic.**.dao", "com.casic.**.mapper"}) @SpringBootApplication +@EnableTransactionManagement(proxyTargetClass = true) public class CasicApplication { public static void main(String[] args) { log.info("CasicApplication is success!"); diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java index 7d19680..1615fb8 100644 --- a/src/main/java/com/casic/config/CorsConfig.java +++ b/src/main/java/com/casic/config/CorsConfig.java @@ -1,31 +1,31 @@ -package com.casic.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.web.filter.CorsFilter; - -/** - * 基础框架 - 跨域请求配置 - */ -@Configuration -public class CorsConfig { - @Bean - public CorsFilter corsFilter() { - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", buildConfig()); - return new CorsFilter(source); - } - - private CorsConfiguration buildConfig() { - CorsConfiguration corsConfiguration = new CorsConfiguration(); - // 1允许任何域名使用 - corsConfiguration.addAllowedOrigin("*"); - // 2允许任何头 - corsConfiguration.addAllowedHeader("*"); - // 3允许任何方法(post、get等) - corsConfiguration.addAllowedMethod("*"); - return corsConfiguration; - } -} \ No newline at end of file +//package com.casic.config; +// +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.web.cors.CorsConfiguration; +//import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +//import org.springframework.web.filter.CorsFilter; +// +///** +// * 基础框架 - 跨域请求配置 +// */ +//@Configuration +//public class CorsConfig { +// @Bean +// public CorsFilter corsFilter() { +// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); +// source.registerCorsConfiguration("/**", buildConfig()); +// return new CorsFilter(source); +// } +// +// private CorsConfiguration buildConfig() { +// CorsConfiguration corsConfiguration = new CorsConfiguration(); +// // 1允许任何域名使用 +// corsConfiguration.addAllowedOrigin("*"); +// // 2允许任何头 +// corsConfiguration.addAllowedHeader("*"); +// // 3允许任何方法(post、get等) +// corsConfiguration.addAllowedMethod("*"); +// return corsConfiguration; +// } +//} \ No newline at end of file diff --git a/src/main/java/com/casic/config/dto/RoleDto.java b/src/main/java/com/casic/config/dto/RoleDto.java new file mode 100644 index 0000000..ca08f84 --- /dev/null +++ b/src/main/java/com/casic/config/dto/RoleDto.java @@ -0,0 +1,11 @@ +package com.casic.config.dto; + +import lombok.Data; + +@Data +public class RoleDto { + + private Long id; + private String name; + +} diff --git a/src/main/java/com/casic/config/task/TaskConfigurer.java b/src/main/java/com/casic/config/task/TaskConfigurer.java index 699c0e3..5a3a029 100644 --- a/src/main/java/com/casic/config/task/TaskConfigurer.java +++ b/src/main/java/com/casic/config/task/TaskConfigurer.java @@ -1,6 +1,7 @@ package com.casic.config.task; import com.casic.service.DeviceDataService; +import com.casic.service.IPartitionStrategyService; import com.casic.service.UserDataDelayReceiver; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; @@ -24,18 +25,30 @@ private String onlineStateCron; @Value("${casic.device.transfer-user.cron}") private String transferUserCron; - + @Value("${casic.device.partition.cron}") + private String partitionCron; private final DeviceDataService deviceDataService; private final UserDataDelayReceiver userDataDelayReceiver; + private final IPartitionStrategyService partitionStrategyService; @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { - TriggerTask triggrtTask = new TriggerTask(nextDayDevice(), + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), triggerContext -> { return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); }); - taskRegistrar.addTriggerTask(triggrtTask); + TriggerTask transferUserTask = new TriggerTask(getUserData(), + triggerContext -> { + return new CronTrigger(transferUserCron).nextExecutionTime(triggerContext); + }); + TriggerTask partitionTask = new TriggerTask(createPartition(), + triggerContext -> { + return new CronTrigger(partitionCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + taskRegistrar.addTriggerTask(transferUserTask); + taskRegistrar.addTriggerTask(partitionTask); } private Runnable nextDayDevice() { @@ -57,6 +70,18 @@ userDataDelayReceiver.saveNewUserData(); } }; + } + + /** + * 定时同步普光 + */ + private Runnable createPartition() { + return new Runnable() { + @Override + public void run() { + partitionStrategyService.createPartition("DATA_H2S", "data_h2s_log"); + } + }; } diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java index d7e3722..e6ae7bc 100644 --- a/src/main/java/com/casic/controller/DeviceDataController.java +++ b/src/main/java/com/casic/controller/DeviceDataController.java @@ -1,40 +1,40 @@ -package com.casic.controller; - -import com.alibaba.fastjson.JSON; -import com.casic.service.DeviceDataService; -import com.casic.service.ThirdDataService; -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.*; - -import java.util.Map; - -@RestController -@RequestMapping("/device") -@RequiredArgsConstructor -public class DeviceDataController { - - private final DeviceDataService deviceDataService; - - @RequestMapping("/recent-data") - public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "recentNum", required = true) String recentNum, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); - } - - @RequestMapping("/data/list-page") - public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "currentIndex", required = true) Integer currentIndex, - @RequestParam(value = "pageSize", required = true) Integer pageSize, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); - } - - @RequestMapping("/level/{deviceType}") - public Object getLevelList(@PathVariable("deviceType")String deviceType) { - return deviceDataService.getLevel(deviceType); - } - - - -} +//package com.casic.controller; +// +//import com.alibaba.fastjson.JSON; +//import com.casic.service.DeviceDataService; +//import com.casic.service.ThirdDataService; +//import lombok.RequiredArgsConstructor; +//import org.springframework.web.bind.annotation.*; +// +//import java.util.Map; +// +//@RestController +//@RequestMapping("/device") +//@RequiredArgsConstructor +//public class DeviceDataController { +// +// private final DeviceDataService deviceDataService; +// +// @RequestMapping("/recent-data") +// public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "recentNum", required = true) String recentNum, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); +// } +// +// @RequestMapping("/data/list-page") +// public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "currentIndex", required = true) Integer currentIndex, +// @RequestParam(value = "pageSize", required = true) Integer pageSize, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); +// } +// +// @RequestMapping("/level/{deviceType}") +// public Object getLevelList(@PathVariable("deviceType")String deviceType) { +// return deviceDataService.getLevel(deviceType); +// } +// +// +// +//} diff --git a/src/main/java/com/casic/dao/PartitionStrategyMapper.java b/src/main/java/com/casic/dao/PartitionStrategyMapper.java new file mode 100644 index 0000000..a9481d0 --- /dev/null +++ b/src/main/java/com/casic/dao/PartitionStrategyMapper.java @@ -0,0 +1,44 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; + +/** + * 分区mapper + * + * @author lwh + */ +@Mapper +public interface PartitionStrategyMapper { + + /** + * 当前表最大分区查询 + * + * @param tableName 分区表名称 + * @return + */ + String selectMaxId(@Param("tableName") String tableName, @Param("tableOwner") String tableOwner); + + /** + * 增加表分区 + * + * @param tableName 表名称 + * @param partitionName 分区名称 + * @param time 分区最大值 + */ + void createPartition(@Param("tableName") String tableName, @Param("partitionName") String partitionName, + @Param("time") String time, @Param("storage") String storage); + + /** + * 创建表空间 + * + * @param tableSpaceName 表空间名称 + * @param dataFilePath 文件地址 + * @param tableSpaceSize 表空间大小(单位 M) + */ + void createTableSpace(@Param("tableSpaceName") String tableSpaceName, @Param("dataFilePath") String dataFilePath, @Param("tableSpaceSize") Integer tableSpaceSize); + + +} diff --git a/pom.xml b/pom.xml index ec5ddc3..f02731e 100644 --- a/pom.xml +++ b/pom.xml @@ -74,11 +74,6 @@ 4.5.13 - - com.casic - casic-admin-core - 2.0.0.alpha - @@ -198,6 +193,25 @@ 1.8 + + + com.casic + casic-core + 2.0.0.alpha + + + + com.casic + casic-admin-support + 2.0.0.alpha + + + + com.casic + casic-admin-core + 2.0.0.alpha + + diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java index 9afd0b9..affdcb5 100644 --- a/src/main/java/com/casic/CasicApplication.java +++ b/src/main/java/com/casic/CasicApplication.java @@ -1,6 +1,7 @@ package com.casic; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @@ -19,7 +20,9 @@ @Slf4j @ComponentScan(basePackages= "com.casic.**") +@MapperScan(basePackages = {"com.casic.**.dao", "com.casic.**.mapper"}) @SpringBootApplication +@EnableTransactionManagement(proxyTargetClass = true) public class CasicApplication { public static void main(String[] args) { log.info("CasicApplication is success!"); diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java index 7d19680..1615fb8 100644 --- a/src/main/java/com/casic/config/CorsConfig.java +++ b/src/main/java/com/casic/config/CorsConfig.java @@ -1,31 +1,31 @@ -package com.casic.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.web.filter.CorsFilter; - -/** - * 基础框架 - 跨域请求配置 - */ -@Configuration -public class CorsConfig { - @Bean - public CorsFilter corsFilter() { - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", buildConfig()); - return new CorsFilter(source); - } - - private CorsConfiguration buildConfig() { - CorsConfiguration corsConfiguration = new CorsConfiguration(); - // 1允许任何域名使用 - corsConfiguration.addAllowedOrigin("*"); - // 2允许任何头 - corsConfiguration.addAllowedHeader("*"); - // 3允许任何方法(post、get等) - corsConfiguration.addAllowedMethod("*"); - return corsConfiguration; - } -} \ No newline at end of file +//package com.casic.config; +// +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.web.cors.CorsConfiguration; +//import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +//import org.springframework.web.filter.CorsFilter; +// +///** +// * 基础框架 - 跨域请求配置 +// */ +//@Configuration +//public class CorsConfig { +// @Bean +// public CorsFilter corsFilter() { +// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); +// source.registerCorsConfiguration("/**", buildConfig()); +// return new CorsFilter(source); +// } +// +// private CorsConfiguration buildConfig() { +// CorsConfiguration corsConfiguration = new CorsConfiguration(); +// // 1允许任何域名使用 +// corsConfiguration.addAllowedOrigin("*"); +// // 2允许任何头 +// corsConfiguration.addAllowedHeader("*"); +// // 3允许任何方法(post、get等) +// corsConfiguration.addAllowedMethod("*"); +// return corsConfiguration; +// } +//} \ No newline at end of file diff --git a/src/main/java/com/casic/config/dto/RoleDto.java b/src/main/java/com/casic/config/dto/RoleDto.java new file mode 100644 index 0000000..ca08f84 --- /dev/null +++ b/src/main/java/com/casic/config/dto/RoleDto.java @@ -0,0 +1,11 @@ +package com.casic.config.dto; + +import lombok.Data; + +@Data +public class RoleDto { + + private Long id; + private String name; + +} diff --git a/src/main/java/com/casic/config/task/TaskConfigurer.java b/src/main/java/com/casic/config/task/TaskConfigurer.java index 699c0e3..5a3a029 100644 --- a/src/main/java/com/casic/config/task/TaskConfigurer.java +++ b/src/main/java/com/casic/config/task/TaskConfigurer.java @@ -1,6 +1,7 @@ package com.casic.config.task; import com.casic.service.DeviceDataService; +import com.casic.service.IPartitionStrategyService; import com.casic.service.UserDataDelayReceiver; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; @@ -24,18 +25,30 @@ private String onlineStateCron; @Value("${casic.device.transfer-user.cron}") private String transferUserCron; - + @Value("${casic.device.partition.cron}") + private String partitionCron; private final DeviceDataService deviceDataService; private final UserDataDelayReceiver userDataDelayReceiver; + private final IPartitionStrategyService partitionStrategyService; @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { - TriggerTask triggrtTask = new TriggerTask(nextDayDevice(), + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), triggerContext -> { return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); }); - taskRegistrar.addTriggerTask(triggrtTask); + TriggerTask transferUserTask = new TriggerTask(getUserData(), + triggerContext -> { + return new CronTrigger(transferUserCron).nextExecutionTime(triggerContext); + }); + TriggerTask partitionTask = new TriggerTask(createPartition(), + triggerContext -> { + return new CronTrigger(partitionCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + taskRegistrar.addTriggerTask(transferUserTask); + taskRegistrar.addTriggerTask(partitionTask); } private Runnable nextDayDevice() { @@ -57,6 +70,18 @@ userDataDelayReceiver.saveNewUserData(); } }; + } + + /** + * 定时同步普光 + */ + private Runnable createPartition() { + return new Runnable() { + @Override + public void run() { + partitionStrategyService.createPartition("DATA_H2S", "data_h2s_log"); + } + }; } diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java index d7e3722..e6ae7bc 100644 --- a/src/main/java/com/casic/controller/DeviceDataController.java +++ b/src/main/java/com/casic/controller/DeviceDataController.java @@ -1,40 +1,40 @@ -package com.casic.controller; - -import com.alibaba.fastjson.JSON; -import com.casic.service.DeviceDataService; -import com.casic.service.ThirdDataService; -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.*; - -import java.util.Map; - -@RestController -@RequestMapping("/device") -@RequiredArgsConstructor -public class DeviceDataController { - - private final DeviceDataService deviceDataService; - - @RequestMapping("/recent-data") - public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "recentNum", required = true) String recentNum, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); - } - - @RequestMapping("/data/list-page") - public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "currentIndex", required = true) Integer currentIndex, - @RequestParam(value = "pageSize", required = true) Integer pageSize, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); - } - - @RequestMapping("/level/{deviceType}") - public Object getLevelList(@PathVariable("deviceType")String deviceType) { - return deviceDataService.getLevel(deviceType); - } - - - -} +//package com.casic.controller; +// +//import com.alibaba.fastjson.JSON; +//import com.casic.service.DeviceDataService; +//import com.casic.service.ThirdDataService; +//import lombok.RequiredArgsConstructor; +//import org.springframework.web.bind.annotation.*; +// +//import java.util.Map; +// +//@RestController +//@RequestMapping("/device") +//@RequiredArgsConstructor +//public class DeviceDataController { +// +// private final DeviceDataService deviceDataService; +// +// @RequestMapping("/recent-data") +// public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "recentNum", required = true) String recentNum, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); +// } +// +// @RequestMapping("/data/list-page") +// public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "currentIndex", required = true) Integer currentIndex, +// @RequestParam(value = "pageSize", required = true) Integer pageSize, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); +// } +// +// @RequestMapping("/level/{deviceType}") +// public Object getLevelList(@PathVariable("deviceType")String deviceType) { +// return deviceDataService.getLevel(deviceType); +// } +// +// +// +//} diff --git a/src/main/java/com/casic/dao/PartitionStrategyMapper.java b/src/main/java/com/casic/dao/PartitionStrategyMapper.java new file mode 100644 index 0000000..a9481d0 --- /dev/null +++ b/src/main/java/com/casic/dao/PartitionStrategyMapper.java @@ -0,0 +1,44 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; + +/** + * 分区mapper + * + * @author lwh + */ +@Mapper +public interface PartitionStrategyMapper { + + /** + * 当前表最大分区查询 + * + * @param tableName 分区表名称 + * @return + */ + String selectMaxId(@Param("tableName") String tableName, @Param("tableOwner") String tableOwner); + + /** + * 增加表分区 + * + * @param tableName 表名称 + * @param partitionName 分区名称 + * @param time 分区最大值 + */ + void createPartition(@Param("tableName") String tableName, @Param("partitionName") String partitionName, + @Param("time") String time, @Param("storage") String storage); + + /** + * 创建表空间 + * + * @param tableSpaceName 表空间名称 + * @param dataFilePath 文件地址 + * @param tableSpaceSize 表空间大小(单位 M) + */ + void createTableSpace(@Param("tableSpaceName") String tableSpaceName, @Param("dataFilePath") String dataFilePath, @Param("tableSpaceSize") Integer tableSpaceSize); + + +} diff --git a/src/main/java/com/casic/dao/UserMapper.java b/src/main/java/com/casic/dao/UserMapper.java deleted file mode 100644 index 266d786..0000000 --- a/src/main/java/com/casic/dao/UserMapper.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.model.User; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface UserMapper extends BaseMapper { - - - //获取所有的角色 - @Select(" SELECT id,name " + - " FROM sys_role " + - " where name like '达州%' ") - List> getRolesByName(); -} diff --git a/pom.xml b/pom.xml index ec5ddc3..f02731e 100644 --- a/pom.xml +++ b/pom.xml @@ -74,11 +74,6 @@ 4.5.13 - - com.casic - casic-admin-core - 2.0.0.alpha - @@ -198,6 +193,25 @@ 1.8 + + + com.casic + casic-core + 2.0.0.alpha + + + + com.casic + casic-admin-support + 2.0.0.alpha + + + + com.casic + casic-admin-core + 2.0.0.alpha + + diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java index 9afd0b9..affdcb5 100644 --- a/src/main/java/com/casic/CasicApplication.java +++ b/src/main/java/com/casic/CasicApplication.java @@ -1,6 +1,7 @@ package com.casic; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @@ -19,7 +20,9 @@ @Slf4j @ComponentScan(basePackages= "com.casic.**") +@MapperScan(basePackages = {"com.casic.**.dao", "com.casic.**.mapper"}) @SpringBootApplication +@EnableTransactionManagement(proxyTargetClass = true) public class CasicApplication { public static void main(String[] args) { log.info("CasicApplication is success!"); diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java index 7d19680..1615fb8 100644 --- a/src/main/java/com/casic/config/CorsConfig.java +++ b/src/main/java/com/casic/config/CorsConfig.java @@ -1,31 +1,31 @@ -package com.casic.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.web.filter.CorsFilter; - -/** - * 基础框架 - 跨域请求配置 - */ -@Configuration -public class CorsConfig { - @Bean - public CorsFilter corsFilter() { - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", buildConfig()); - return new CorsFilter(source); - } - - private CorsConfiguration buildConfig() { - CorsConfiguration corsConfiguration = new CorsConfiguration(); - // 1允许任何域名使用 - corsConfiguration.addAllowedOrigin("*"); - // 2允许任何头 - corsConfiguration.addAllowedHeader("*"); - // 3允许任何方法(post、get等) - corsConfiguration.addAllowedMethod("*"); - return corsConfiguration; - } -} \ No newline at end of file +//package com.casic.config; +// +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.web.cors.CorsConfiguration; +//import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +//import org.springframework.web.filter.CorsFilter; +// +///** +// * 基础框架 - 跨域请求配置 +// */ +//@Configuration +//public class CorsConfig { +// @Bean +// public CorsFilter corsFilter() { +// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); +// source.registerCorsConfiguration("/**", buildConfig()); +// return new CorsFilter(source); +// } +// +// private CorsConfiguration buildConfig() { +// CorsConfiguration corsConfiguration = new CorsConfiguration(); +// // 1允许任何域名使用 +// corsConfiguration.addAllowedOrigin("*"); +// // 2允许任何头 +// corsConfiguration.addAllowedHeader("*"); +// // 3允许任何方法(post、get等) +// corsConfiguration.addAllowedMethod("*"); +// return corsConfiguration; +// } +//} \ No newline at end of file diff --git a/src/main/java/com/casic/config/dto/RoleDto.java b/src/main/java/com/casic/config/dto/RoleDto.java new file mode 100644 index 0000000..ca08f84 --- /dev/null +++ b/src/main/java/com/casic/config/dto/RoleDto.java @@ -0,0 +1,11 @@ +package com.casic.config.dto; + +import lombok.Data; + +@Data +public class RoleDto { + + private Long id; + private String name; + +} diff --git a/src/main/java/com/casic/config/task/TaskConfigurer.java b/src/main/java/com/casic/config/task/TaskConfigurer.java index 699c0e3..5a3a029 100644 --- a/src/main/java/com/casic/config/task/TaskConfigurer.java +++ b/src/main/java/com/casic/config/task/TaskConfigurer.java @@ -1,6 +1,7 @@ package com.casic.config.task; import com.casic.service.DeviceDataService; +import com.casic.service.IPartitionStrategyService; import com.casic.service.UserDataDelayReceiver; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; @@ -24,18 +25,30 @@ private String onlineStateCron; @Value("${casic.device.transfer-user.cron}") private String transferUserCron; - + @Value("${casic.device.partition.cron}") + private String partitionCron; private final DeviceDataService deviceDataService; private final UserDataDelayReceiver userDataDelayReceiver; + private final IPartitionStrategyService partitionStrategyService; @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { - TriggerTask triggrtTask = new TriggerTask(nextDayDevice(), + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), triggerContext -> { return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); }); - taskRegistrar.addTriggerTask(triggrtTask); + TriggerTask transferUserTask = new TriggerTask(getUserData(), + triggerContext -> { + return new CronTrigger(transferUserCron).nextExecutionTime(triggerContext); + }); + TriggerTask partitionTask = new TriggerTask(createPartition(), + triggerContext -> { + return new CronTrigger(partitionCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + taskRegistrar.addTriggerTask(transferUserTask); + taskRegistrar.addTriggerTask(partitionTask); } private Runnable nextDayDevice() { @@ -57,6 +70,18 @@ userDataDelayReceiver.saveNewUserData(); } }; + } + + /** + * 定时同步普光 + */ + private Runnable createPartition() { + return new Runnable() { + @Override + public void run() { + partitionStrategyService.createPartition("DATA_H2S", "data_h2s_log"); + } + }; } diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java index d7e3722..e6ae7bc 100644 --- a/src/main/java/com/casic/controller/DeviceDataController.java +++ b/src/main/java/com/casic/controller/DeviceDataController.java @@ -1,40 +1,40 @@ -package com.casic.controller; - -import com.alibaba.fastjson.JSON; -import com.casic.service.DeviceDataService; -import com.casic.service.ThirdDataService; -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.*; - -import java.util.Map; - -@RestController -@RequestMapping("/device") -@RequiredArgsConstructor -public class DeviceDataController { - - private final DeviceDataService deviceDataService; - - @RequestMapping("/recent-data") - public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "recentNum", required = true) String recentNum, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); - } - - @RequestMapping("/data/list-page") - public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "currentIndex", required = true) Integer currentIndex, - @RequestParam(value = "pageSize", required = true) Integer pageSize, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); - } - - @RequestMapping("/level/{deviceType}") - public Object getLevelList(@PathVariable("deviceType")String deviceType) { - return deviceDataService.getLevel(deviceType); - } - - - -} +//package com.casic.controller; +// +//import com.alibaba.fastjson.JSON; +//import com.casic.service.DeviceDataService; +//import com.casic.service.ThirdDataService; +//import lombok.RequiredArgsConstructor; +//import org.springframework.web.bind.annotation.*; +// +//import java.util.Map; +// +//@RestController +//@RequestMapping("/device") +//@RequiredArgsConstructor +//public class DeviceDataController { +// +// private final DeviceDataService deviceDataService; +// +// @RequestMapping("/recent-data") +// public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "recentNum", required = true) String recentNum, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); +// } +// +// @RequestMapping("/data/list-page") +// public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "currentIndex", required = true) Integer currentIndex, +// @RequestParam(value = "pageSize", required = true) Integer pageSize, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); +// } +// +// @RequestMapping("/level/{deviceType}") +// public Object getLevelList(@PathVariable("deviceType")String deviceType) { +// return deviceDataService.getLevel(deviceType); +// } +// +// +// +//} diff --git a/src/main/java/com/casic/dao/PartitionStrategyMapper.java b/src/main/java/com/casic/dao/PartitionStrategyMapper.java new file mode 100644 index 0000000..a9481d0 --- /dev/null +++ b/src/main/java/com/casic/dao/PartitionStrategyMapper.java @@ -0,0 +1,44 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; + +/** + * 分区mapper + * + * @author lwh + */ +@Mapper +public interface PartitionStrategyMapper { + + /** + * 当前表最大分区查询 + * + * @param tableName 分区表名称 + * @return + */ + String selectMaxId(@Param("tableName") String tableName, @Param("tableOwner") String tableOwner); + + /** + * 增加表分区 + * + * @param tableName 表名称 + * @param partitionName 分区名称 + * @param time 分区最大值 + */ + void createPartition(@Param("tableName") String tableName, @Param("partitionName") String partitionName, + @Param("time") String time, @Param("storage") String storage); + + /** + * 创建表空间 + * + * @param tableSpaceName 表空间名称 + * @param dataFilePath 文件地址 + * @param tableSpaceSize 表空间大小(单位 M) + */ + void createTableSpace(@Param("tableSpaceName") String tableSpaceName, @Param("dataFilePath") String dataFilePath, @Param("tableSpaceSize") Integer tableSpaceSize); + + +} diff --git a/src/main/java/com/casic/dao/UserMapper.java b/src/main/java/com/casic/dao/UserMapper.java deleted file mode 100644 index 266d786..0000000 --- a/src/main/java/com/casic/dao/UserMapper.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.model.User; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface UserMapper extends BaseMapper { - - - //获取所有的角色 - @Select(" SELECT id,name " + - " FROM sys_role " + - " where name like '达州%' ") - List> getRolesByName(); -} diff --git a/src/main/java/com/casic/dao/UsersMapper.java b/src/main/java/com/casic/dao/UsersMapper.java new file mode 100644 index 0000000..d394db7 --- /dev/null +++ b/src/main/java/com/casic/dao/UsersMapper.java @@ -0,0 +1,30 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.config.dto.RoleDto; +import com.casic.model.User; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * @author cz + */ + +@Mapper +public interface UsersMapper extends BaseMapper { + + @Select(" SELECT id,name " + + " FROM sys_role " + + " where name like '%达州%' " + + " AND DEL_FLAG=0 ") + List getRolesByName(); + + @Select("SELECT ID " + + "FROM SYS_DEPT " + + "WHERE SIMPLE_NAME LIKE '%达州%'" + + "AND DEL_FLAG=0 " + + "LIMIT 1 ") + Long getDeptIdByName(); +} diff --git a/pom.xml b/pom.xml index ec5ddc3..f02731e 100644 --- a/pom.xml +++ b/pom.xml @@ -74,11 +74,6 @@ 4.5.13 - - com.casic - casic-admin-core - 2.0.0.alpha - @@ -198,6 +193,25 @@ 1.8 + + + com.casic + casic-core + 2.0.0.alpha + + + + com.casic + casic-admin-support + 2.0.0.alpha + + + + com.casic + casic-admin-core + 2.0.0.alpha + + diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java index 9afd0b9..affdcb5 100644 --- a/src/main/java/com/casic/CasicApplication.java +++ b/src/main/java/com/casic/CasicApplication.java @@ -1,6 +1,7 @@ package com.casic; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @@ -19,7 +20,9 @@ @Slf4j @ComponentScan(basePackages= "com.casic.**") +@MapperScan(basePackages = {"com.casic.**.dao", "com.casic.**.mapper"}) @SpringBootApplication +@EnableTransactionManagement(proxyTargetClass = true) public class CasicApplication { public static void main(String[] args) { log.info("CasicApplication is success!"); diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java index 7d19680..1615fb8 100644 --- a/src/main/java/com/casic/config/CorsConfig.java +++ b/src/main/java/com/casic/config/CorsConfig.java @@ -1,31 +1,31 @@ -package com.casic.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.web.filter.CorsFilter; - -/** - * 基础框架 - 跨域请求配置 - */ -@Configuration -public class CorsConfig { - @Bean - public CorsFilter corsFilter() { - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", buildConfig()); - return new CorsFilter(source); - } - - private CorsConfiguration buildConfig() { - CorsConfiguration corsConfiguration = new CorsConfiguration(); - // 1允许任何域名使用 - corsConfiguration.addAllowedOrigin("*"); - // 2允许任何头 - corsConfiguration.addAllowedHeader("*"); - // 3允许任何方法(post、get等) - corsConfiguration.addAllowedMethod("*"); - return corsConfiguration; - } -} \ No newline at end of file +//package com.casic.config; +// +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.web.cors.CorsConfiguration; +//import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +//import org.springframework.web.filter.CorsFilter; +// +///** +// * 基础框架 - 跨域请求配置 +// */ +//@Configuration +//public class CorsConfig { +// @Bean +// public CorsFilter corsFilter() { +// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); +// source.registerCorsConfiguration("/**", buildConfig()); +// return new CorsFilter(source); +// } +// +// private CorsConfiguration buildConfig() { +// CorsConfiguration corsConfiguration = new CorsConfiguration(); +// // 1允许任何域名使用 +// corsConfiguration.addAllowedOrigin("*"); +// // 2允许任何头 +// corsConfiguration.addAllowedHeader("*"); +// // 3允许任何方法(post、get等) +// corsConfiguration.addAllowedMethod("*"); +// return corsConfiguration; +// } +//} \ No newline at end of file diff --git a/src/main/java/com/casic/config/dto/RoleDto.java b/src/main/java/com/casic/config/dto/RoleDto.java new file mode 100644 index 0000000..ca08f84 --- /dev/null +++ b/src/main/java/com/casic/config/dto/RoleDto.java @@ -0,0 +1,11 @@ +package com.casic.config.dto; + +import lombok.Data; + +@Data +public class RoleDto { + + private Long id; + private String name; + +} diff --git a/src/main/java/com/casic/config/task/TaskConfigurer.java b/src/main/java/com/casic/config/task/TaskConfigurer.java index 699c0e3..5a3a029 100644 --- a/src/main/java/com/casic/config/task/TaskConfigurer.java +++ b/src/main/java/com/casic/config/task/TaskConfigurer.java @@ -1,6 +1,7 @@ package com.casic.config.task; import com.casic.service.DeviceDataService; +import com.casic.service.IPartitionStrategyService; import com.casic.service.UserDataDelayReceiver; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; @@ -24,18 +25,30 @@ private String onlineStateCron; @Value("${casic.device.transfer-user.cron}") private String transferUserCron; - + @Value("${casic.device.partition.cron}") + private String partitionCron; private final DeviceDataService deviceDataService; private final UserDataDelayReceiver userDataDelayReceiver; + private final IPartitionStrategyService partitionStrategyService; @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { - TriggerTask triggrtTask = new TriggerTask(nextDayDevice(), + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), triggerContext -> { return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); }); - taskRegistrar.addTriggerTask(triggrtTask); + TriggerTask transferUserTask = new TriggerTask(getUserData(), + triggerContext -> { + return new CronTrigger(transferUserCron).nextExecutionTime(triggerContext); + }); + TriggerTask partitionTask = new TriggerTask(createPartition(), + triggerContext -> { + return new CronTrigger(partitionCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + taskRegistrar.addTriggerTask(transferUserTask); + taskRegistrar.addTriggerTask(partitionTask); } private Runnable nextDayDevice() { @@ -57,6 +70,18 @@ userDataDelayReceiver.saveNewUserData(); } }; + } + + /** + * 定时同步普光 + */ + private Runnable createPartition() { + return new Runnable() { + @Override + public void run() { + partitionStrategyService.createPartition("DATA_H2S", "data_h2s_log"); + } + }; } diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java index d7e3722..e6ae7bc 100644 --- a/src/main/java/com/casic/controller/DeviceDataController.java +++ b/src/main/java/com/casic/controller/DeviceDataController.java @@ -1,40 +1,40 @@ -package com.casic.controller; - -import com.alibaba.fastjson.JSON; -import com.casic.service.DeviceDataService; -import com.casic.service.ThirdDataService; -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.*; - -import java.util.Map; - -@RestController -@RequestMapping("/device") -@RequiredArgsConstructor -public class DeviceDataController { - - private final DeviceDataService deviceDataService; - - @RequestMapping("/recent-data") - public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "recentNum", required = true) String recentNum, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); - } - - @RequestMapping("/data/list-page") - public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "currentIndex", required = true) Integer currentIndex, - @RequestParam(value = "pageSize", required = true) Integer pageSize, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); - } - - @RequestMapping("/level/{deviceType}") - public Object getLevelList(@PathVariable("deviceType")String deviceType) { - return deviceDataService.getLevel(deviceType); - } - - - -} +//package com.casic.controller; +// +//import com.alibaba.fastjson.JSON; +//import com.casic.service.DeviceDataService; +//import com.casic.service.ThirdDataService; +//import lombok.RequiredArgsConstructor; +//import org.springframework.web.bind.annotation.*; +// +//import java.util.Map; +// +//@RestController +//@RequestMapping("/device") +//@RequiredArgsConstructor +//public class DeviceDataController { +// +// private final DeviceDataService deviceDataService; +// +// @RequestMapping("/recent-data") +// public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "recentNum", required = true) String recentNum, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); +// } +// +// @RequestMapping("/data/list-page") +// public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "currentIndex", required = true) Integer currentIndex, +// @RequestParam(value = "pageSize", required = true) Integer pageSize, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); +// } +// +// @RequestMapping("/level/{deviceType}") +// public Object getLevelList(@PathVariable("deviceType")String deviceType) { +// return deviceDataService.getLevel(deviceType); +// } +// +// +// +//} diff --git a/src/main/java/com/casic/dao/PartitionStrategyMapper.java b/src/main/java/com/casic/dao/PartitionStrategyMapper.java new file mode 100644 index 0000000..a9481d0 --- /dev/null +++ b/src/main/java/com/casic/dao/PartitionStrategyMapper.java @@ -0,0 +1,44 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; + +/** + * 分区mapper + * + * @author lwh + */ +@Mapper +public interface PartitionStrategyMapper { + + /** + * 当前表最大分区查询 + * + * @param tableName 分区表名称 + * @return + */ + String selectMaxId(@Param("tableName") String tableName, @Param("tableOwner") String tableOwner); + + /** + * 增加表分区 + * + * @param tableName 表名称 + * @param partitionName 分区名称 + * @param time 分区最大值 + */ + void createPartition(@Param("tableName") String tableName, @Param("partitionName") String partitionName, + @Param("time") String time, @Param("storage") String storage); + + /** + * 创建表空间 + * + * @param tableSpaceName 表空间名称 + * @param dataFilePath 文件地址 + * @param tableSpaceSize 表空间大小(单位 M) + */ + void createTableSpace(@Param("tableSpaceName") String tableSpaceName, @Param("dataFilePath") String dataFilePath, @Param("tableSpaceSize") Integer tableSpaceSize); + + +} diff --git a/src/main/java/com/casic/dao/UserMapper.java b/src/main/java/com/casic/dao/UserMapper.java deleted file mode 100644 index 266d786..0000000 --- a/src/main/java/com/casic/dao/UserMapper.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.model.User; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface UserMapper extends BaseMapper { - - - //获取所有的角色 - @Select(" SELECT id,name " + - " FROM sys_role " + - " where name like '达州%' ") - List> getRolesByName(); -} diff --git a/src/main/java/com/casic/dao/UsersMapper.java b/src/main/java/com/casic/dao/UsersMapper.java new file mode 100644 index 0000000..d394db7 --- /dev/null +++ b/src/main/java/com/casic/dao/UsersMapper.java @@ -0,0 +1,30 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.config.dto.RoleDto; +import com.casic.model.User; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * @author cz + */ + +@Mapper +public interface UsersMapper extends BaseMapper { + + @Select(" SELECT id,name " + + " FROM sys_role " + + " where name like '%达州%' " + + " AND DEL_FLAG=0 ") + List getRolesByName(); + + @Select("SELECT ID " + + "FROM SYS_DEPT " + + "WHERE SIMPLE_NAME LIKE '%达州%'" + + "AND DEL_FLAG=0 " + + "LIMIT 1 ") + Long getDeptIdByName(); +} diff --git a/src/main/java/com/casic/model/DataH2s.java b/src/main/java/com/casic/model/DataH2s.java index eaeef1f..b53b19e 100644 --- a/src/main/java/com/casic/model/DataH2s.java +++ b/src/main/java/com/casic/model/DataH2s.java @@ -15,7 +15,7 @@ @TableName("data_h2s") public class DataH2s { - @TableId(value = "ID", type = IdType.AUTO) + @TableId(value = "ID", type = IdType.ASSIGN_ID) private Long id; private String devcode; diff --git a/pom.xml b/pom.xml index ec5ddc3..f02731e 100644 --- a/pom.xml +++ b/pom.xml @@ -74,11 +74,6 @@ 4.5.13 - - com.casic - casic-admin-core - 2.0.0.alpha - @@ -198,6 +193,25 @@ 1.8 + + + com.casic + casic-core + 2.0.0.alpha + + + + com.casic + casic-admin-support + 2.0.0.alpha + + + + com.casic + casic-admin-core + 2.0.0.alpha + + diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java index 9afd0b9..affdcb5 100644 --- a/src/main/java/com/casic/CasicApplication.java +++ b/src/main/java/com/casic/CasicApplication.java @@ -1,6 +1,7 @@ package com.casic; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @@ -19,7 +20,9 @@ @Slf4j @ComponentScan(basePackages= "com.casic.**") +@MapperScan(basePackages = {"com.casic.**.dao", "com.casic.**.mapper"}) @SpringBootApplication +@EnableTransactionManagement(proxyTargetClass = true) public class CasicApplication { public static void main(String[] args) { log.info("CasicApplication is success!"); diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java index 7d19680..1615fb8 100644 --- a/src/main/java/com/casic/config/CorsConfig.java +++ b/src/main/java/com/casic/config/CorsConfig.java @@ -1,31 +1,31 @@ -package com.casic.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.web.filter.CorsFilter; - -/** - * 基础框架 - 跨域请求配置 - */ -@Configuration -public class CorsConfig { - @Bean - public CorsFilter corsFilter() { - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", buildConfig()); - return new CorsFilter(source); - } - - private CorsConfiguration buildConfig() { - CorsConfiguration corsConfiguration = new CorsConfiguration(); - // 1允许任何域名使用 - corsConfiguration.addAllowedOrigin("*"); - // 2允许任何头 - corsConfiguration.addAllowedHeader("*"); - // 3允许任何方法(post、get等) - corsConfiguration.addAllowedMethod("*"); - return corsConfiguration; - } -} \ No newline at end of file +//package com.casic.config; +// +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.web.cors.CorsConfiguration; +//import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +//import org.springframework.web.filter.CorsFilter; +// +///** +// * 基础框架 - 跨域请求配置 +// */ +//@Configuration +//public class CorsConfig { +// @Bean +// public CorsFilter corsFilter() { +// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); +// source.registerCorsConfiguration("/**", buildConfig()); +// return new CorsFilter(source); +// } +// +// private CorsConfiguration buildConfig() { +// CorsConfiguration corsConfiguration = new CorsConfiguration(); +// // 1允许任何域名使用 +// corsConfiguration.addAllowedOrigin("*"); +// // 2允许任何头 +// corsConfiguration.addAllowedHeader("*"); +// // 3允许任何方法(post、get等) +// corsConfiguration.addAllowedMethod("*"); +// return corsConfiguration; +// } +//} \ No newline at end of file diff --git a/src/main/java/com/casic/config/dto/RoleDto.java b/src/main/java/com/casic/config/dto/RoleDto.java new file mode 100644 index 0000000..ca08f84 --- /dev/null +++ b/src/main/java/com/casic/config/dto/RoleDto.java @@ -0,0 +1,11 @@ +package com.casic.config.dto; + +import lombok.Data; + +@Data +public class RoleDto { + + private Long id; + private String name; + +} diff --git a/src/main/java/com/casic/config/task/TaskConfigurer.java b/src/main/java/com/casic/config/task/TaskConfigurer.java index 699c0e3..5a3a029 100644 --- a/src/main/java/com/casic/config/task/TaskConfigurer.java +++ b/src/main/java/com/casic/config/task/TaskConfigurer.java @@ -1,6 +1,7 @@ package com.casic.config.task; import com.casic.service.DeviceDataService; +import com.casic.service.IPartitionStrategyService; import com.casic.service.UserDataDelayReceiver; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; @@ -24,18 +25,30 @@ private String onlineStateCron; @Value("${casic.device.transfer-user.cron}") private String transferUserCron; - + @Value("${casic.device.partition.cron}") + private String partitionCron; private final DeviceDataService deviceDataService; private final UserDataDelayReceiver userDataDelayReceiver; + private final IPartitionStrategyService partitionStrategyService; @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { - TriggerTask triggrtTask = new TriggerTask(nextDayDevice(), + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), triggerContext -> { return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); }); - taskRegistrar.addTriggerTask(triggrtTask); + TriggerTask transferUserTask = new TriggerTask(getUserData(), + triggerContext -> { + return new CronTrigger(transferUserCron).nextExecutionTime(triggerContext); + }); + TriggerTask partitionTask = new TriggerTask(createPartition(), + triggerContext -> { + return new CronTrigger(partitionCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + taskRegistrar.addTriggerTask(transferUserTask); + taskRegistrar.addTriggerTask(partitionTask); } private Runnable nextDayDevice() { @@ -57,6 +70,18 @@ userDataDelayReceiver.saveNewUserData(); } }; + } + + /** + * 定时同步普光 + */ + private Runnable createPartition() { + return new Runnable() { + @Override + public void run() { + partitionStrategyService.createPartition("DATA_H2S", "data_h2s_log"); + } + }; } diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java index d7e3722..e6ae7bc 100644 --- a/src/main/java/com/casic/controller/DeviceDataController.java +++ b/src/main/java/com/casic/controller/DeviceDataController.java @@ -1,40 +1,40 @@ -package com.casic.controller; - -import com.alibaba.fastjson.JSON; -import com.casic.service.DeviceDataService; -import com.casic.service.ThirdDataService; -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.*; - -import java.util.Map; - -@RestController -@RequestMapping("/device") -@RequiredArgsConstructor -public class DeviceDataController { - - private final DeviceDataService deviceDataService; - - @RequestMapping("/recent-data") - public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "recentNum", required = true) String recentNum, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); - } - - @RequestMapping("/data/list-page") - public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "currentIndex", required = true) Integer currentIndex, - @RequestParam(value = "pageSize", required = true) Integer pageSize, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); - } - - @RequestMapping("/level/{deviceType}") - public Object getLevelList(@PathVariable("deviceType")String deviceType) { - return deviceDataService.getLevel(deviceType); - } - - - -} +//package com.casic.controller; +// +//import com.alibaba.fastjson.JSON; +//import com.casic.service.DeviceDataService; +//import com.casic.service.ThirdDataService; +//import lombok.RequiredArgsConstructor; +//import org.springframework.web.bind.annotation.*; +// +//import java.util.Map; +// +//@RestController +//@RequestMapping("/device") +//@RequiredArgsConstructor +//public class DeviceDataController { +// +// private final DeviceDataService deviceDataService; +// +// @RequestMapping("/recent-data") +// public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "recentNum", required = true) String recentNum, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); +// } +// +// @RequestMapping("/data/list-page") +// public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "currentIndex", required = true) Integer currentIndex, +// @RequestParam(value = "pageSize", required = true) Integer pageSize, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); +// } +// +// @RequestMapping("/level/{deviceType}") +// public Object getLevelList(@PathVariable("deviceType")String deviceType) { +// return deviceDataService.getLevel(deviceType); +// } +// +// +// +//} diff --git a/src/main/java/com/casic/dao/PartitionStrategyMapper.java b/src/main/java/com/casic/dao/PartitionStrategyMapper.java new file mode 100644 index 0000000..a9481d0 --- /dev/null +++ b/src/main/java/com/casic/dao/PartitionStrategyMapper.java @@ -0,0 +1,44 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; + +/** + * 分区mapper + * + * @author lwh + */ +@Mapper +public interface PartitionStrategyMapper { + + /** + * 当前表最大分区查询 + * + * @param tableName 分区表名称 + * @return + */ + String selectMaxId(@Param("tableName") String tableName, @Param("tableOwner") String tableOwner); + + /** + * 增加表分区 + * + * @param tableName 表名称 + * @param partitionName 分区名称 + * @param time 分区最大值 + */ + void createPartition(@Param("tableName") String tableName, @Param("partitionName") String partitionName, + @Param("time") String time, @Param("storage") String storage); + + /** + * 创建表空间 + * + * @param tableSpaceName 表空间名称 + * @param dataFilePath 文件地址 + * @param tableSpaceSize 表空间大小(单位 M) + */ + void createTableSpace(@Param("tableSpaceName") String tableSpaceName, @Param("dataFilePath") String dataFilePath, @Param("tableSpaceSize") Integer tableSpaceSize); + + +} diff --git a/src/main/java/com/casic/dao/UserMapper.java b/src/main/java/com/casic/dao/UserMapper.java deleted file mode 100644 index 266d786..0000000 --- a/src/main/java/com/casic/dao/UserMapper.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.model.User; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface UserMapper extends BaseMapper { - - - //获取所有的角色 - @Select(" SELECT id,name " + - " FROM sys_role " + - " where name like '达州%' ") - List> getRolesByName(); -} diff --git a/src/main/java/com/casic/dao/UsersMapper.java b/src/main/java/com/casic/dao/UsersMapper.java new file mode 100644 index 0000000..d394db7 --- /dev/null +++ b/src/main/java/com/casic/dao/UsersMapper.java @@ -0,0 +1,30 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.config.dto.RoleDto; +import com.casic.model.User; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * @author cz + */ + +@Mapper +public interface UsersMapper extends BaseMapper { + + @Select(" SELECT id,name " + + " FROM sys_role " + + " where name like '%达州%' " + + " AND DEL_FLAG=0 ") + List getRolesByName(); + + @Select("SELECT ID " + + "FROM SYS_DEPT " + + "WHERE SIMPLE_NAME LIKE '%达州%'" + + "AND DEL_FLAG=0 " + + "LIMIT 1 ") + Long getDeptIdByName(); +} diff --git a/src/main/java/com/casic/model/DataH2s.java b/src/main/java/com/casic/model/DataH2s.java index eaeef1f..b53b19e 100644 --- a/src/main/java/com/casic/model/DataH2s.java +++ b/src/main/java/com/casic/model/DataH2s.java @@ -15,7 +15,7 @@ @TableName("data_h2s") public class DataH2s { - @TableId(value = "ID", type = IdType.AUTO) + @TableId(value = "ID", type = IdType.ASSIGN_ID) private Long id; private String devcode; diff --git a/src/main/java/com/casic/model/User.java b/src/main/java/com/casic/model/User.java index b856672..8a7148a 100644 --- a/src/main/java/com/casic/model/User.java +++ b/src/main/java/com/casic/model/User.java @@ -21,6 +21,7 @@ type = IdType.ASSIGN_ID ) private Long id; + private String avatar; //userCode @@ -78,11 +79,6 @@ ) private String userType; - public User(String roleId, Long deptId) { - this.roleId=roleId; - this.deptId=deptId; - } - public Serializable pkVal() { return this.id; } diff --git a/pom.xml b/pom.xml index ec5ddc3..f02731e 100644 --- a/pom.xml +++ b/pom.xml @@ -74,11 +74,6 @@ 4.5.13 - - com.casic - casic-admin-core - 2.0.0.alpha - @@ -198,6 +193,25 @@ 1.8 + + + com.casic + casic-core + 2.0.0.alpha + + + + com.casic + casic-admin-support + 2.0.0.alpha + + + + com.casic + casic-admin-core + 2.0.0.alpha + + diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java index 9afd0b9..affdcb5 100644 --- a/src/main/java/com/casic/CasicApplication.java +++ b/src/main/java/com/casic/CasicApplication.java @@ -1,6 +1,7 @@ package com.casic; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @@ -19,7 +20,9 @@ @Slf4j @ComponentScan(basePackages= "com.casic.**") +@MapperScan(basePackages = {"com.casic.**.dao", "com.casic.**.mapper"}) @SpringBootApplication +@EnableTransactionManagement(proxyTargetClass = true) public class CasicApplication { public static void main(String[] args) { log.info("CasicApplication is success!"); diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java index 7d19680..1615fb8 100644 --- a/src/main/java/com/casic/config/CorsConfig.java +++ b/src/main/java/com/casic/config/CorsConfig.java @@ -1,31 +1,31 @@ -package com.casic.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.web.filter.CorsFilter; - -/** - * 基础框架 - 跨域请求配置 - */ -@Configuration -public class CorsConfig { - @Bean - public CorsFilter corsFilter() { - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", buildConfig()); - return new CorsFilter(source); - } - - private CorsConfiguration buildConfig() { - CorsConfiguration corsConfiguration = new CorsConfiguration(); - // 1允许任何域名使用 - corsConfiguration.addAllowedOrigin("*"); - // 2允许任何头 - corsConfiguration.addAllowedHeader("*"); - // 3允许任何方法(post、get等) - corsConfiguration.addAllowedMethod("*"); - return corsConfiguration; - } -} \ No newline at end of file +//package com.casic.config; +// +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.web.cors.CorsConfiguration; +//import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +//import org.springframework.web.filter.CorsFilter; +// +///** +// * 基础框架 - 跨域请求配置 +// */ +//@Configuration +//public class CorsConfig { +// @Bean +// public CorsFilter corsFilter() { +// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); +// source.registerCorsConfiguration("/**", buildConfig()); +// return new CorsFilter(source); +// } +// +// private CorsConfiguration buildConfig() { +// CorsConfiguration corsConfiguration = new CorsConfiguration(); +// // 1允许任何域名使用 +// corsConfiguration.addAllowedOrigin("*"); +// // 2允许任何头 +// corsConfiguration.addAllowedHeader("*"); +// // 3允许任何方法(post、get等) +// corsConfiguration.addAllowedMethod("*"); +// return corsConfiguration; +// } +//} \ No newline at end of file diff --git a/src/main/java/com/casic/config/dto/RoleDto.java b/src/main/java/com/casic/config/dto/RoleDto.java new file mode 100644 index 0000000..ca08f84 --- /dev/null +++ b/src/main/java/com/casic/config/dto/RoleDto.java @@ -0,0 +1,11 @@ +package com.casic.config.dto; + +import lombok.Data; + +@Data +public class RoleDto { + + private Long id; + private String name; + +} diff --git a/src/main/java/com/casic/config/task/TaskConfigurer.java b/src/main/java/com/casic/config/task/TaskConfigurer.java index 699c0e3..5a3a029 100644 --- a/src/main/java/com/casic/config/task/TaskConfigurer.java +++ b/src/main/java/com/casic/config/task/TaskConfigurer.java @@ -1,6 +1,7 @@ package com.casic.config.task; import com.casic.service.DeviceDataService; +import com.casic.service.IPartitionStrategyService; import com.casic.service.UserDataDelayReceiver; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; @@ -24,18 +25,30 @@ private String onlineStateCron; @Value("${casic.device.transfer-user.cron}") private String transferUserCron; - + @Value("${casic.device.partition.cron}") + private String partitionCron; private final DeviceDataService deviceDataService; private final UserDataDelayReceiver userDataDelayReceiver; + private final IPartitionStrategyService partitionStrategyService; @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { - TriggerTask triggrtTask = new TriggerTask(nextDayDevice(), + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), triggerContext -> { return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); }); - taskRegistrar.addTriggerTask(triggrtTask); + TriggerTask transferUserTask = new TriggerTask(getUserData(), + triggerContext -> { + return new CronTrigger(transferUserCron).nextExecutionTime(triggerContext); + }); + TriggerTask partitionTask = new TriggerTask(createPartition(), + triggerContext -> { + return new CronTrigger(partitionCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + taskRegistrar.addTriggerTask(transferUserTask); + taskRegistrar.addTriggerTask(partitionTask); } private Runnable nextDayDevice() { @@ -57,6 +70,18 @@ userDataDelayReceiver.saveNewUserData(); } }; + } + + /** + * 定时同步普光 + */ + private Runnable createPartition() { + return new Runnable() { + @Override + public void run() { + partitionStrategyService.createPartition("DATA_H2S", "data_h2s_log"); + } + }; } diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java index d7e3722..e6ae7bc 100644 --- a/src/main/java/com/casic/controller/DeviceDataController.java +++ b/src/main/java/com/casic/controller/DeviceDataController.java @@ -1,40 +1,40 @@ -package com.casic.controller; - -import com.alibaba.fastjson.JSON; -import com.casic.service.DeviceDataService; -import com.casic.service.ThirdDataService; -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.*; - -import java.util.Map; - -@RestController -@RequestMapping("/device") -@RequiredArgsConstructor -public class DeviceDataController { - - private final DeviceDataService deviceDataService; - - @RequestMapping("/recent-data") - public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "recentNum", required = true) String recentNum, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); - } - - @RequestMapping("/data/list-page") - public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "currentIndex", required = true) Integer currentIndex, - @RequestParam(value = "pageSize", required = true) Integer pageSize, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); - } - - @RequestMapping("/level/{deviceType}") - public Object getLevelList(@PathVariable("deviceType")String deviceType) { - return deviceDataService.getLevel(deviceType); - } - - - -} +//package com.casic.controller; +// +//import com.alibaba.fastjson.JSON; +//import com.casic.service.DeviceDataService; +//import com.casic.service.ThirdDataService; +//import lombok.RequiredArgsConstructor; +//import org.springframework.web.bind.annotation.*; +// +//import java.util.Map; +// +//@RestController +//@RequestMapping("/device") +//@RequiredArgsConstructor +//public class DeviceDataController { +// +// private final DeviceDataService deviceDataService; +// +// @RequestMapping("/recent-data") +// public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "recentNum", required = true) String recentNum, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); +// } +// +// @RequestMapping("/data/list-page") +// public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "currentIndex", required = true) Integer currentIndex, +// @RequestParam(value = "pageSize", required = true) Integer pageSize, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); +// } +// +// @RequestMapping("/level/{deviceType}") +// public Object getLevelList(@PathVariable("deviceType")String deviceType) { +// return deviceDataService.getLevel(deviceType); +// } +// +// +// +//} diff --git a/src/main/java/com/casic/dao/PartitionStrategyMapper.java b/src/main/java/com/casic/dao/PartitionStrategyMapper.java new file mode 100644 index 0000000..a9481d0 --- /dev/null +++ b/src/main/java/com/casic/dao/PartitionStrategyMapper.java @@ -0,0 +1,44 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; + +/** + * 分区mapper + * + * @author lwh + */ +@Mapper +public interface PartitionStrategyMapper { + + /** + * 当前表最大分区查询 + * + * @param tableName 分区表名称 + * @return + */ + String selectMaxId(@Param("tableName") String tableName, @Param("tableOwner") String tableOwner); + + /** + * 增加表分区 + * + * @param tableName 表名称 + * @param partitionName 分区名称 + * @param time 分区最大值 + */ + void createPartition(@Param("tableName") String tableName, @Param("partitionName") String partitionName, + @Param("time") String time, @Param("storage") String storage); + + /** + * 创建表空间 + * + * @param tableSpaceName 表空间名称 + * @param dataFilePath 文件地址 + * @param tableSpaceSize 表空间大小(单位 M) + */ + void createTableSpace(@Param("tableSpaceName") String tableSpaceName, @Param("dataFilePath") String dataFilePath, @Param("tableSpaceSize") Integer tableSpaceSize); + + +} diff --git a/src/main/java/com/casic/dao/UserMapper.java b/src/main/java/com/casic/dao/UserMapper.java deleted file mode 100644 index 266d786..0000000 --- a/src/main/java/com/casic/dao/UserMapper.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.model.User; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface UserMapper extends BaseMapper { - - - //获取所有的角色 - @Select(" SELECT id,name " + - " FROM sys_role " + - " where name like '达州%' ") - List> getRolesByName(); -} diff --git a/src/main/java/com/casic/dao/UsersMapper.java b/src/main/java/com/casic/dao/UsersMapper.java new file mode 100644 index 0000000..d394db7 --- /dev/null +++ b/src/main/java/com/casic/dao/UsersMapper.java @@ -0,0 +1,30 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.config.dto.RoleDto; +import com.casic.model.User; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * @author cz + */ + +@Mapper +public interface UsersMapper extends BaseMapper { + + @Select(" SELECT id,name " + + " FROM sys_role " + + " where name like '%达州%' " + + " AND DEL_FLAG=0 ") + List getRolesByName(); + + @Select("SELECT ID " + + "FROM SYS_DEPT " + + "WHERE SIMPLE_NAME LIKE '%达州%'" + + "AND DEL_FLAG=0 " + + "LIMIT 1 ") + Long getDeptIdByName(); +} diff --git a/src/main/java/com/casic/model/DataH2s.java b/src/main/java/com/casic/model/DataH2s.java index eaeef1f..b53b19e 100644 --- a/src/main/java/com/casic/model/DataH2s.java +++ b/src/main/java/com/casic/model/DataH2s.java @@ -15,7 +15,7 @@ @TableName("data_h2s") public class DataH2s { - @TableId(value = "ID", type = IdType.AUTO) + @TableId(value = "ID", type = IdType.ASSIGN_ID) private Long id; private String devcode; diff --git a/src/main/java/com/casic/model/User.java b/src/main/java/com/casic/model/User.java index b856672..8a7148a 100644 --- a/src/main/java/com/casic/model/User.java +++ b/src/main/java/com/casic/model/User.java @@ -21,6 +21,7 @@ type = IdType.ASSIGN_ID ) private Long id; + private String avatar; //userCode @@ -78,11 +79,6 @@ ) private String userType; - public User(String roleId, Long deptId) { - this.roleId=roleId; - this.deptId=deptId; - } - public Serializable pkVal() { return this.id; } diff --git a/src/main/java/com/casic/service/IPartitionStrategyService.java b/src/main/java/com/casic/service/IPartitionStrategyService.java new file mode 100644 index 0000000..3a4c82e --- /dev/null +++ b/src/main/java/com/casic/service/IPartitionStrategyService.java @@ -0,0 +1,25 @@ +package com.casic.service; + +/** + * 相差删除 + * + * @author cz + */ +public interface IPartitionStrategyService { + + + /** + * 表数据分区策略 + * + * @param tableName 分区表名称 + */ + void createPartition(String tableName, String tableSpaceFix); + + + /** + * 表空间创建 + * + * @param tableSpaceFix 表空间前缀 + */ + String createTableSpace(String tableSpaceFix); +} diff --git a/pom.xml b/pom.xml index ec5ddc3..f02731e 100644 --- a/pom.xml +++ b/pom.xml @@ -74,11 +74,6 @@ 4.5.13 - - com.casic - casic-admin-core - 2.0.0.alpha - @@ -198,6 +193,25 @@ 1.8 + + + com.casic + casic-core + 2.0.0.alpha + + + + com.casic + casic-admin-support + 2.0.0.alpha + + + + com.casic + casic-admin-core + 2.0.0.alpha + + diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java index 9afd0b9..affdcb5 100644 --- a/src/main/java/com/casic/CasicApplication.java +++ b/src/main/java/com/casic/CasicApplication.java @@ -1,6 +1,7 @@ package com.casic; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @@ -19,7 +20,9 @@ @Slf4j @ComponentScan(basePackages= "com.casic.**") +@MapperScan(basePackages = {"com.casic.**.dao", "com.casic.**.mapper"}) @SpringBootApplication +@EnableTransactionManagement(proxyTargetClass = true) public class CasicApplication { public static void main(String[] args) { log.info("CasicApplication is success!"); diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java index 7d19680..1615fb8 100644 --- a/src/main/java/com/casic/config/CorsConfig.java +++ b/src/main/java/com/casic/config/CorsConfig.java @@ -1,31 +1,31 @@ -package com.casic.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.web.filter.CorsFilter; - -/** - * 基础框架 - 跨域请求配置 - */ -@Configuration -public class CorsConfig { - @Bean - public CorsFilter corsFilter() { - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", buildConfig()); - return new CorsFilter(source); - } - - private CorsConfiguration buildConfig() { - CorsConfiguration corsConfiguration = new CorsConfiguration(); - // 1允许任何域名使用 - corsConfiguration.addAllowedOrigin("*"); - // 2允许任何头 - corsConfiguration.addAllowedHeader("*"); - // 3允许任何方法(post、get等) - corsConfiguration.addAllowedMethod("*"); - return corsConfiguration; - } -} \ No newline at end of file +//package com.casic.config; +// +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.web.cors.CorsConfiguration; +//import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +//import org.springframework.web.filter.CorsFilter; +// +///** +// * 基础框架 - 跨域请求配置 +// */ +//@Configuration +//public class CorsConfig { +// @Bean +// public CorsFilter corsFilter() { +// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); +// source.registerCorsConfiguration("/**", buildConfig()); +// return new CorsFilter(source); +// } +// +// private CorsConfiguration buildConfig() { +// CorsConfiguration corsConfiguration = new CorsConfiguration(); +// // 1允许任何域名使用 +// corsConfiguration.addAllowedOrigin("*"); +// // 2允许任何头 +// corsConfiguration.addAllowedHeader("*"); +// // 3允许任何方法(post、get等) +// corsConfiguration.addAllowedMethod("*"); +// return corsConfiguration; +// } +//} \ No newline at end of file diff --git a/src/main/java/com/casic/config/dto/RoleDto.java b/src/main/java/com/casic/config/dto/RoleDto.java new file mode 100644 index 0000000..ca08f84 --- /dev/null +++ b/src/main/java/com/casic/config/dto/RoleDto.java @@ -0,0 +1,11 @@ +package com.casic.config.dto; + +import lombok.Data; + +@Data +public class RoleDto { + + private Long id; + private String name; + +} diff --git a/src/main/java/com/casic/config/task/TaskConfigurer.java b/src/main/java/com/casic/config/task/TaskConfigurer.java index 699c0e3..5a3a029 100644 --- a/src/main/java/com/casic/config/task/TaskConfigurer.java +++ b/src/main/java/com/casic/config/task/TaskConfigurer.java @@ -1,6 +1,7 @@ package com.casic.config.task; import com.casic.service.DeviceDataService; +import com.casic.service.IPartitionStrategyService; import com.casic.service.UserDataDelayReceiver; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; @@ -24,18 +25,30 @@ private String onlineStateCron; @Value("${casic.device.transfer-user.cron}") private String transferUserCron; - + @Value("${casic.device.partition.cron}") + private String partitionCron; private final DeviceDataService deviceDataService; private final UserDataDelayReceiver userDataDelayReceiver; + private final IPartitionStrategyService partitionStrategyService; @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { - TriggerTask triggrtTask = new TriggerTask(nextDayDevice(), + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), triggerContext -> { return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); }); - taskRegistrar.addTriggerTask(triggrtTask); + TriggerTask transferUserTask = new TriggerTask(getUserData(), + triggerContext -> { + return new CronTrigger(transferUserCron).nextExecutionTime(triggerContext); + }); + TriggerTask partitionTask = new TriggerTask(createPartition(), + triggerContext -> { + return new CronTrigger(partitionCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + taskRegistrar.addTriggerTask(transferUserTask); + taskRegistrar.addTriggerTask(partitionTask); } private Runnable nextDayDevice() { @@ -57,6 +70,18 @@ userDataDelayReceiver.saveNewUserData(); } }; + } + + /** + * 定时同步普光 + */ + private Runnable createPartition() { + return new Runnable() { + @Override + public void run() { + partitionStrategyService.createPartition("DATA_H2S", "data_h2s_log"); + } + }; } diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java index d7e3722..e6ae7bc 100644 --- a/src/main/java/com/casic/controller/DeviceDataController.java +++ b/src/main/java/com/casic/controller/DeviceDataController.java @@ -1,40 +1,40 @@ -package com.casic.controller; - -import com.alibaba.fastjson.JSON; -import com.casic.service.DeviceDataService; -import com.casic.service.ThirdDataService; -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.*; - -import java.util.Map; - -@RestController -@RequestMapping("/device") -@RequiredArgsConstructor -public class DeviceDataController { - - private final DeviceDataService deviceDataService; - - @RequestMapping("/recent-data") - public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "recentNum", required = true) String recentNum, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); - } - - @RequestMapping("/data/list-page") - public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "currentIndex", required = true) Integer currentIndex, - @RequestParam(value = "pageSize", required = true) Integer pageSize, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); - } - - @RequestMapping("/level/{deviceType}") - public Object getLevelList(@PathVariable("deviceType")String deviceType) { - return deviceDataService.getLevel(deviceType); - } - - - -} +//package com.casic.controller; +// +//import com.alibaba.fastjson.JSON; +//import com.casic.service.DeviceDataService; +//import com.casic.service.ThirdDataService; +//import lombok.RequiredArgsConstructor; +//import org.springframework.web.bind.annotation.*; +// +//import java.util.Map; +// +//@RestController +//@RequestMapping("/device") +//@RequiredArgsConstructor +//public class DeviceDataController { +// +// private final DeviceDataService deviceDataService; +// +// @RequestMapping("/recent-data") +// public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "recentNum", required = true) String recentNum, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); +// } +// +// @RequestMapping("/data/list-page") +// public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "currentIndex", required = true) Integer currentIndex, +// @RequestParam(value = "pageSize", required = true) Integer pageSize, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); +// } +// +// @RequestMapping("/level/{deviceType}") +// public Object getLevelList(@PathVariable("deviceType")String deviceType) { +// return deviceDataService.getLevel(deviceType); +// } +// +// +// +//} diff --git a/src/main/java/com/casic/dao/PartitionStrategyMapper.java b/src/main/java/com/casic/dao/PartitionStrategyMapper.java new file mode 100644 index 0000000..a9481d0 --- /dev/null +++ b/src/main/java/com/casic/dao/PartitionStrategyMapper.java @@ -0,0 +1,44 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; + +/** + * 分区mapper + * + * @author lwh + */ +@Mapper +public interface PartitionStrategyMapper { + + /** + * 当前表最大分区查询 + * + * @param tableName 分区表名称 + * @return + */ + String selectMaxId(@Param("tableName") String tableName, @Param("tableOwner") String tableOwner); + + /** + * 增加表分区 + * + * @param tableName 表名称 + * @param partitionName 分区名称 + * @param time 分区最大值 + */ + void createPartition(@Param("tableName") String tableName, @Param("partitionName") String partitionName, + @Param("time") String time, @Param("storage") String storage); + + /** + * 创建表空间 + * + * @param tableSpaceName 表空间名称 + * @param dataFilePath 文件地址 + * @param tableSpaceSize 表空间大小(单位 M) + */ + void createTableSpace(@Param("tableSpaceName") String tableSpaceName, @Param("dataFilePath") String dataFilePath, @Param("tableSpaceSize") Integer tableSpaceSize); + + +} diff --git a/src/main/java/com/casic/dao/UserMapper.java b/src/main/java/com/casic/dao/UserMapper.java deleted file mode 100644 index 266d786..0000000 --- a/src/main/java/com/casic/dao/UserMapper.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.model.User; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface UserMapper extends BaseMapper { - - - //获取所有的角色 - @Select(" SELECT id,name " + - " FROM sys_role " + - " where name like '达州%' ") - List> getRolesByName(); -} diff --git a/src/main/java/com/casic/dao/UsersMapper.java b/src/main/java/com/casic/dao/UsersMapper.java new file mode 100644 index 0000000..d394db7 --- /dev/null +++ b/src/main/java/com/casic/dao/UsersMapper.java @@ -0,0 +1,30 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.config.dto.RoleDto; +import com.casic.model.User; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * @author cz + */ + +@Mapper +public interface UsersMapper extends BaseMapper { + + @Select(" SELECT id,name " + + " FROM sys_role " + + " where name like '%达州%' " + + " AND DEL_FLAG=0 ") + List getRolesByName(); + + @Select("SELECT ID " + + "FROM SYS_DEPT " + + "WHERE SIMPLE_NAME LIKE '%达州%'" + + "AND DEL_FLAG=0 " + + "LIMIT 1 ") + Long getDeptIdByName(); +} diff --git a/src/main/java/com/casic/model/DataH2s.java b/src/main/java/com/casic/model/DataH2s.java index eaeef1f..b53b19e 100644 --- a/src/main/java/com/casic/model/DataH2s.java +++ b/src/main/java/com/casic/model/DataH2s.java @@ -15,7 +15,7 @@ @TableName("data_h2s") public class DataH2s { - @TableId(value = "ID", type = IdType.AUTO) + @TableId(value = "ID", type = IdType.ASSIGN_ID) private Long id; private String devcode; diff --git a/src/main/java/com/casic/model/User.java b/src/main/java/com/casic/model/User.java index b856672..8a7148a 100644 --- a/src/main/java/com/casic/model/User.java +++ b/src/main/java/com/casic/model/User.java @@ -21,6 +21,7 @@ type = IdType.ASSIGN_ID ) private Long id; + private String avatar; //userCode @@ -78,11 +79,6 @@ ) private String userType; - public User(String roleId, Long deptId) { - this.roleId=roleId; - this.deptId=deptId; - } - public Serializable pkVal() { return this.id; } diff --git a/src/main/java/com/casic/service/IPartitionStrategyService.java b/src/main/java/com/casic/service/IPartitionStrategyService.java new file mode 100644 index 0000000..3a4c82e --- /dev/null +++ b/src/main/java/com/casic/service/IPartitionStrategyService.java @@ -0,0 +1,25 @@ +package com.casic.service; + +/** + * 相差删除 + * + * @author cz + */ +public interface IPartitionStrategyService { + + + /** + * 表数据分区策略 + * + * @param tableName 分区表名称 + */ + void createPartition(String tableName, String tableSpaceFix); + + + /** + * 表空间创建 + * + * @param tableSpaceFix 表空间前缀 + */ + String createTableSpace(String tableSpaceFix); +} diff --git a/src/main/java/com/casic/service/impl/DataScopeBuilder.java b/src/main/java/com/casic/service/impl/DataScopeBuilder.java index 793312e..50be38f 100644 --- a/src/main/java/com/casic/service/impl/DataScopeBuilder.java +++ b/src/main/java/com/casic/service/impl/DataScopeBuilder.java @@ -36,10 +36,12 @@ } userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); List> deptUserList = new ArrayList<>(); - if (userDataScopeListMap.containsKey("2")) { + if (ObjectUtils.isNotEmpty(userDataScopeListMap.get("2"))) { deptUserList.addAll(userDataScopeListMap.get("2")); } - deptUserList.addAll(userDataScopeListMap.get("3")); + if (ObjectUtils.isNotEmpty(userDataScopeListMap.get("3"))) { + deptUserList.addAll(userDataScopeListMap.get("3")); + } if (ObjectUtils.isNotEmpty(deptId)) { userIdList.addAll(getParentDeptList(deptUserList, deptId)); } diff --git a/pom.xml b/pom.xml index ec5ddc3..f02731e 100644 --- a/pom.xml +++ b/pom.xml @@ -74,11 +74,6 @@ 4.5.13 - - com.casic - casic-admin-core - 2.0.0.alpha - @@ -198,6 +193,25 @@ 1.8 + + + com.casic + casic-core + 2.0.0.alpha + + + + com.casic + casic-admin-support + 2.0.0.alpha + + + + com.casic + casic-admin-core + 2.0.0.alpha + + diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java index 9afd0b9..affdcb5 100644 --- a/src/main/java/com/casic/CasicApplication.java +++ b/src/main/java/com/casic/CasicApplication.java @@ -1,6 +1,7 @@ package com.casic; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @@ -19,7 +20,9 @@ @Slf4j @ComponentScan(basePackages= "com.casic.**") +@MapperScan(basePackages = {"com.casic.**.dao", "com.casic.**.mapper"}) @SpringBootApplication +@EnableTransactionManagement(proxyTargetClass = true) public class CasicApplication { public static void main(String[] args) { log.info("CasicApplication is success!"); diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java index 7d19680..1615fb8 100644 --- a/src/main/java/com/casic/config/CorsConfig.java +++ b/src/main/java/com/casic/config/CorsConfig.java @@ -1,31 +1,31 @@ -package com.casic.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.web.filter.CorsFilter; - -/** - * 基础框架 - 跨域请求配置 - */ -@Configuration -public class CorsConfig { - @Bean - public CorsFilter corsFilter() { - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", buildConfig()); - return new CorsFilter(source); - } - - private CorsConfiguration buildConfig() { - CorsConfiguration corsConfiguration = new CorsConfiguration(); - // 1允许任何域名使用 - corsConfiguration.addAllowedOrigin("*"); - // 2允许任何头 - corsConfiguration.addAllowedHeader("*"); - // 3允许任何方法(post、get等) - corsConfiguration.addAllowedMethod("*"); - return corsConfiguration; - } -} \ No newline at end of file +//package com.casic.config; +// +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.web.cors.CorsConfiguration; +//import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +//import org.springframework.web.filter.CorsFilter; +// +///** +// * 基础框架 - 跨域请求配置 +// */ +//@Configuration +//public class CorsConfig { +// @Bean +// public CorsFilter corsFilter() { +// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); +// source.registerCorsConfiguration("/**", buildConfig()); +// return new CorsFilter(source); +// } +// +// private CorsConfiguration buildConfig() { +// CorsConfiguration corsConfiguration = new CorsConfiguration(); +// // 1允许任何域名使用 +// corsConfiguration.addAllowedOrigin("*"); +// // 2允许任何头 +// corsConfiguration.addAllowedHeader("*"); +// // 3允许任何方法(post、get等) +// corsConfiguration.addAllowedMethod("*"); +// return corsConfiguration; +// } +//} \ No newline at end of file diff --git a/src/main/java/com/casic/config/dto/RoleDto.java b/src/main/java/com/casic/config/dto/RoleDto.java new file mode 100644 index 0000000..ca08f84 --- /dev/null +++ b/src/main/java/com/casic/config/dto/RoleDto.java @@ -0,0 +1,11 @@ +package com.casic.config.dto; + +import lombok.Data; + +@Data +public class RoleDto { + + private Long id; + private String name; + +} diff --git a/src/main/java/com/casic/config/task/TaskConfigurer.java b/src/main/java/com/casic/config/task/TaskConfigurer.java index 699c0e3..5a3a029 100644 --- a/src/main/java/com/casic/config/task/TaskConfigurer.java +++ b/src/main/java/com/casic/config/task/TaskConfigurer.java @@ -1,6 +1,7 @@ package com.casic.config.task; import com.casic.service.DeviceDataService; +import com.casic.service.IPartitionStrategyService; import com.casic.service.UserDataDelayReceiver; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; @@ -24,18 +25,30 @@ private String onlineStateCron; @Value("${casic.device.transfer-user.cron}") private String transferUserCron; - + @Value("${casic.device.partition.cron}") + private String partitionCron; private final DeviceDataService deviceDataService; private final UserDataDelayReceiver userDataDelayReceiver; + private final IPartitionStrategyService partitionStrategyService; @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { - TriggerTask triggrtTask = new TriggerTask(nextDayDevice(), + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), triggerContext -> { return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); }); - taskRegistrar.addTriggerTask(triggrtTask); + TriggerTask transferUserTask = new TriggerTask(getUserData(), + triggerContext -> { + return new CronTrigger(transferUserCron).nextExecutionTime(triggerContext); + }); + TriggerTask partitionTask = new TriggerTask(createPartition(), + triggerContext -> { + return new CronTrigger(partitionCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + taskRegistrar.addTriggerTask(transferUserTask); + taskRegistrar.addTriggerTask(partitionTask); } private Runnable nextDayDevice() { @@ -57,6 +70,18 @@ userDataDelayReceiver.saveNewUserData(); } }; + } + + /** + * 定时同步普光 + */ + private Runnable createPartition() { + return new Runnable() { + @Override + public void run() { + partitionStrategyService.createPartition("DATA_H2S", "data_h2s_log"); + } + }; } diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java index d7e3722..e6ae7bc 100644 --- a/src/main/java/com/casic/controller/DeviceDataController.java +++ b/src/main/java/com/casic/controller/DeviceDataController.java @@ -1,40 +1,40 @@ -package com.casic.controller; - -import com.alibaba.fastjson.JSON; -import com.casic.service.DeviceDataService; -import com.casic.service.ThirdDataService; -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.*; - -import java.util.Map; - -@RestController -@RequestMapping("/device") -@RequiredArgsConstructor -public class DeviceDataController { - - private final DeviceDataService deviceDataService; - - @RequestMapping("/recent-data") - public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "recentNum", required = true) String recentNum, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); - } - - @RequestMapping("/data/list-page") - public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "currentIndex", required = true) Integer currentIndex, - @RequestParam(value = "pageSize", required = true) Integer pageSize, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); - } - - @RequestMapping("/level/{deviceType}") - public Object getLevelList(@PathVariable("deviceType")String deviceType) { - return deviceDataService.getLevel(deviceType); - } - - - -} +//package com.casic.controller; +// +//import com.alibaba.fastjson.JSON; +//import com.casic.service.DeviceDataService; +//import com.casic.service.ThirdDataService; +//import lombok.RequiredArgsConstructor; +//import org.springframework.web.bind.annotation.*; +// +//import java.util.Map; +// +//@RestController +//@RequestMapping("/device") +//@RequiredArgsConstructor +//public class DeviceDataController { +// +// private final DeviceDataService deviceDataService; +// +// @RequestMapping("/recent-data") +// public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "recentNum", required = true) String recentNum, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); +// } +// +// @RequestMapping("/data/list-page") +// public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "currentIndex", required = true) Integer currentIndex, +// @RequestParam(value = "pageSize", required = true) Integer pageSize, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); +// } +// +// @RequestMapping("/level/{deviceType}") +// public Object getLevelList(@PathVariable("deviceType")String deviceType) { +// return deviceDataService.getLevel(deviceType); +// } +// +// +// +//} diff --git a/src/main/java/com/casic/dao/PartitionStrategyMapper.java b/src/main/java/com/casic/dao/PartitionStrategyMapper.java new file mode 100644 index 0000000..a9481d0 --- /dev/null +++ b/src/main/java/com/casic/dao/PartitionStrategyMapper.java @@ -0,0 +1,44 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; + +/** + * 分区mapper + * + * @author lwh + */ +@Mapper +public interface PartitionStrategyMapper { + + /** + * 当前表最大分区查询 + * + * @param tableName 分区表名称 + * @return + */ + String selectMaxId(@Param("tableName") String tableName, @Param("tableOwner") String tableOwner); + + /** + * 增加表分区 + * + * @param tableName 表名称 + * @param partitionName 分区名称 + * @param time 分区最大值 + */ + void createPartition(@Param("tableName") String tableName, @Param("partitionName") String partitionName, + @Param("time") String time, @Param("storage") String storage); + + /** + * 创建表空间 + * + * @param tableSpaceName 表空间名称 + * @param dataFilePath 文件地址 + * @param tableSpaceSize 表空间大小(单位 M) + */ + void createTableSpace(@Param("tableSpaceName") String tableSpaceName, @Param("dataFilePath") String dataFilePath, @Param("tableSpaceSize") Integer tableSpaceSize); + + +} diff --git a/src/main/java/com/casic/dao/UserMapper.java b/src/main/java/com/casic/dao/UserMapper.java deleted file mode 100644 index 266d786..0000000 --- a/src/main/java/com/casic/dao/UserMapper.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.model.User; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface UserMapper extends BaseMapper { - - - //获取所有的角色 - @Select(" SELECT id,name " + - " FROM sys_role " + - " where name like '达州%' ") - List> getRolesByName(); -} diff --git a/src/main/java/com/casic/dao/UsersMapper.java b/src/main/java/com/casic/dao/UsersMapper.java new file mode 100644 index 0000000..d394db7 --- /dev/null +++ b/src/main/java/com/casic/dao/UsersMapper.java @@ -0,0 +1,30 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.config.dto.RoleDto; +import com.casic.model.User; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * @author cz + */ + +@Mapper +public interface UsersMapper extends BaseMapper { + + @Select(" SELECT id,name " + + " FROM sys_role " + + " where name like '%达州%' " + + " AND DEL_FLAG=0 ") + List getRolesByName(); + + @Select("SELECT ID " + + "FROM SYS_DEPT " + + "WHERE SIMPLE_NAME LIKE '%达州%'" + + "AND DEL_FLAG=0 " + + "LIMIT 1 ") + Long getDeptIdByName(); +} diff --git a/src/main/java/com/casic/model/DataH2s.java b/src/main/java/com/casic/model/DataH2s.java index eaeef1f..b53b19e 100644 --- a/src/main/java/com/casic/model/DataH2s.java +++ b/src/main/java/com/casic/model/DataH2s.java @@ -15,7 +15,7 @@ @TableName("data_h2s") public class DataH2s { - @TableId(value = "ID", type = IdType.AUTO) + @TableId(value = "ID", type = IdType.ASSIGN_ID) private Long id; private String devcode; diff --git a/src/main/java/com/casic/model/User.java b/src/main/java/com/casic/model/User.java index b856672..8a7148a 100644 --- a/src/main/java/com/casic/model/User.java +++ b/src/main/java/com/casic/model/User.java @@ -21,6 +21,7 @@ type = IdType.ASSIGN_ID ) private Long id; + private String avatar; //userCode @@ -78,11 +79,6 @@ ) private String userType; - public User(String roleId, Long deptId) { - this.roleId=roleId; - this.deptId=deptId; - } - public Serializable pkVal() { return this.id; } diff --git a/src/main/java/com/casic/service/IPartitionStrategyService.java b/src/main/java/com/casic/service/IPartitionStrategyService.java new file mode 100644 index 0000000..3a4c82e --- /dev/null +++ b/src/main/java/com/casic/service/IPartitionStrategyService.java @@ -0,0 +1,25 @@ +package com.casic.service; + +/** + * 相差删除 + * + * @author cz + */ +public interface IPartitionStrategyService { + + + /** + * 表数据分区策略 + * + * @param tableName 分区表名称 + */ + void createPartition(String tableName, String tableSpaceFix); + + + /** + * 表空间创建 + * + * @param tableSpaceFix 表空间前缀 + */ + String createTableSpace(String tableSpaceFix); +} diff --git a/src/main/java/com/casic/service/impl/DataScopeBuilder.java b/src/main/java/com/casic/service/impl/DataScopeBuilder.java index 793312e..50be38f 100644 --- a/src/main/java/com/casic/service/impl/DataScopeBuilder.java +++ b/src/main/java/com/casic/service/impl/DataScopeBuilder.java @@ -36,10 +36,12 @@ } userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); List> deptUserList = new ArrayList<>(); - if (userDataScopeListMap.containsKey("2")) { + if (ObjectUtils.isNotEmpty(userDataScopeListMap.get("2"))) { deptUserList.addAll(userDataScopeListMap.get("2")); } - deptUserList.addAll(userDataScopeListMap.get("3")); + if (ObjectUtils.isNotEmpty(userDataScopeListMap.get("3"))) { + deptUserList.addAll(userDataScopeListMap.get("3")); + } if (ObjectUtils.isNotEmpty(deptId)) { userIdList.addAll(getParentDeptList(deptUserList, deptId)); } diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java index 2b51783..bd35978 100644 --- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java +++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java @@ -8,15 +8,16 @@ import com.casic.util.DeviceDataTableEnum; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.stream.Collector; import java.util.stream.Collectors; /** @@ -24,7 +25,6 @@ */ @Service @Slf4j -@RequiredArgsConstructor public class DeviceDataServiceImpl implements DeviceDataService { @Value("${casic.device.type}") @@ -33,7 +33,8 @@ @Value("${casic.device.data-day}") private Integer dataDay; - private final DeviceDataMapper deviceDataMapper; + @Resource + private DeviceDataMapper deviceDataMapper; @Override public Object getDeviceRecentData(String deviceType, String recentNum, String devcode) { diff --git a/pom.xml b/pom.xml index ec5ddc3..f02731e 100644 --- a/pom.xml +++ b/pom.xml @@ -74,11 +74,6 @@ 4.5.13 - - com.casic - casic-admin-core - 2.0.0.alpha - @@ -198,6 +193,25 @@ 1.8 + + + com.casic + casic-core + 2.0.0.alpha + + + + com.casic + casic-admin-support + 2.0.0.alpha + + + + com.casic + casic-admin-core + 2.0.0.alpha + + diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java index 9afd0b9..affdcb5 100644 --- a/src/main/java/com/casic/CasicApplication.java +++ b/src/main/java/com/casic/CasicApplication.java @@ -1,6 +1,7 @@ package com.casic; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @@ -19,7 +20,9 @@ @Slf4j @ComponentScan(basePackages= "com.casic.**") +@MapperScan(basePackages = {"com.casic.**.dao", "com.casic.**.mapper"}) @SpringBootApplication +@EnableTransactionManagement(proxyTargetClass = true) public class CasicApplication { public static void main(String[] args) { log.info("CasicApplication is success!"); diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java index 7d19680..1615fb8 100644 --- a/src/main/java/com/casic/config/CorsConfig.java +++ b/src/main/java/com/casic/config/CorsConfig.java @@ -1,31 +1,31 @@ -package com.casic.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.web.filter.CorsFilter; - -/** - * 基础框架 - 跨域请求配置 - */ -@Configuration -public class CorsConfig { - @Bean - public CorsFilter corsFilter() { - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", buildConfig()); - return new CorsFilter(source); - } - - private CorsConfiguration buildConfig() { - CorsConfiguration corsConfiguration = new CorsConfiguration(); - // 1允许任何域名使用 - corsConfiguration.addAllowedOrigin("*"); - // 2允许任何头 - corsConfiguration.addAllowedHeader("*"); - // 3允许任何方法(post、get等) - corsConfiguration.addAllowedMethod("*"); - return corsConfiguration; - } -} \ No newline at end of file +//package com.casic.config; +// +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.web.cors.CorsConfiguration; +//import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +//import org.springframework.web.filter.CorsFilter; +// +///** +// * 基础框架 - 跨域请求配置 +// */ +//@Configuration +//public class CorsConfig { +// @Bean +// public CorsFilter corsFilter() { +// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); +// source.registerCorsConfiguration("/**", buildConfig()); +// return new CorsFilter(source); +// } +// +// private CorsConfiguration buildConfig() { +// CorsConfiguration corsConfiguration = new CorsConfiguration(); +// // 1允许任何域名使用 +// corsConfiguration.addAllowedOrigin("*"); +// // 2允许任何头 +// corsConfiguration.addAllowedHeader("*"); +// // 3允许任何方法(post、get等) +// corsConfiguration.addAllowedMethod("*"); +// return corsConfiguration; +// } +//} \ No newline at end of file diff --git a/src/main/java/com/casic/config/dto/RoleDto.java b/src/main/java/com/casic/config/dto/RoleDto.java new file mode 100644 index 0000000..ca08f84 --- /dev/null +++ b/src/main/java/com/casic/config/dto/RoleDto.java @@ -0,0 +1,11 @@ +package com.casic.config.dto; + +import lombok.Data; + +@Data +public class RoleDto { + + private Long id; + private String name; + +} diff --git a/src/main/java/com/casic/config/task/TaskConfigurer.java b/src/main/java/com/casic/config/task/TaskConfigurer.java index 699c0e3..5a3a029 100644 --- a/src/main/java/com/casic/config/task/TaskConfigurer.java +++ b/src/main/java/com/casic/config/task/TaskConfigurer.java @@ -1,6 +1,7 @@ package com.casic.config.task; import com.casic.service.DeviceDataService; +import com.casic.service.IPartitionStrategyService; import com.casic.service.UserDataDelayReceiver; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; @@ -24,18 +25,30 @@ private String onlineStateCron; @Value("${casic.device.transfer-user.cron}") private String transferUserCron; - + @Value("${casic.device.partition.cron}") + private String partitionCron; private final DeviceDataService deviceDataService; private final UserDataDelayReceiver userDataDelayReceiver; + private final IPartitionStrategyService partitionStrategyService; @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { - TriggerTask triggrtTask = new TriggerTask(nextDayDevice(), + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), triggerContext -> { return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); }); - taskRegistrar.addTriggerTask(triggrtTask); + TriggerTask transferUserTask = new TriggerTask(getUserData(), + triggerContext -> { + return new CronTrigger(transferUserCron).nextExecutionTime(triggerContext); + }); + TriggerTask partitionTask = new TriggerTask(createPartition(), + triggerContext -> { + return new CronTrigger(partitionCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + taskRegistrar.addTriggerTask(transferUserTask); + taskRegistrar.addTriggerTask(partitionTask); } private Runnable nextDayDevice() { @@ -57,6 +70,18 @@ userDataDelayReceiver.saveNewUserData(); } }; + } + + /** + * 定时同步普光 + */ + private Runnable createPartition() { + return new Runnable() { + @Override + public void run() { + partitionStrategyService.createPartition("DATA_H2S", "data_h2s_log"); + } + }; } diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java index d7e3722..e6ae7bc 100644 --- a/src/main/java/com/casic/controller/DeviceDataController.java +++ b/src/main/java/com/casic/controller/DeviceDataController.java @@ -1,40 +1,40 @@ -package com.casic.controller; - -import com.alibaba.fastjson.JSON; -import com.casic.service.DeviceDataService; -import com.casic.service.ThirdDataService; -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.*; - -import java.util.Map; - -@RestController -@RequestMapping("/device") -@RequiredArgsConstructor -public class DeviceDataController { - - private final DeviceDataService deviceDataService; - - @RequestMapping("/recent-data") - public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "recentNum", required = true) String recentNum, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); - } - - @RequestMapping("/data/list-page") - public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "currentIndex", required = true) Integer currentIndex, - @RequestParam(value = "pageSize", required = true) Integer pageSize, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); - } - - @RequestMapping("/level/{deviceType}") - public Object getLevelList(@PathVariable("deviceType")String deviceType) { - return deviceDataService.getLevel(deviceType); - } - - - -} +//package com.casic.controller; +// +//import com.alibaba.fastjson.JSON; +//import com.casic.service.DeviceDataService; +//import com.casic.service.ThirdDataService; +//import lombok.RequiredArgsConstructor; +//import org.springframework.web.bind.annotation.*; +// +//import java.util.Map; +// +//@RestController +//@RequestMapping("/device") +//@RequiredArgsConstructor +//public class DeviceDataController { +// +// private final DeviceDataService deviceDataService; +// +// @RequestMapping("/recent-data") +// public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "recentNum", required = true) String recentNum, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); +// } +// +// @RequestMapping("/data/list-page") +// public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "currentIndex", required = true) Integer currentIndex, +// @RequestParam(value = "pageSize", required = true) Integer pageSize, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); +// } +// +// @RequestMapping("/level/{deviceType}") +// public Object getLevelList(@PathVariable("deviceType")String deviceType) { +// return deviceDataService.getLevel(deviceType); +// } +// +// +// +//} diff --git a/src/main/java/com/casic/dao/PartitionStrategyMapper.java b/src/main/java/com/casic/dao/PartitionStrategyMapper.java new file mode 100644 index 0000000..a9481d0 --- /dev/null +++ b/src/main/java/com/casic/dao/PartitionStrategyMapper.java @@ -0,0 +1,44 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; + +/** + * 分区mapper + * + * @author lwh + */ +@Mapper +public interface PartitionStrategyMapper { + + /** + * 当前表最大分区查询 + * + * @param tableName 分区表名称 + * @return + */ + String selectMaxId(@Param("tableName") String tableName, @Param("tableOwner") String tableOwner); + + /** + * 增加表分区 + * + * @param tableName 表名称 + * @param partitionName 分区名称 + * @param time 分区最大值 + */ + void createPartition(@Param("tableName") String tableName, @Param("partitionName") String partitionName, + @Param("time") String time, @Param("storage") String storage); + + /** + * 创建表空间 + * + * @param tableSpaceName 表空间名称 + * @param dataFilePath 文件地址 + * @param tableSpaceSize 表空间大小(单位 M) + */ + void createTableSpace(@Param("tableSpaceName") String tableSpaceName, @Param("dataFilePath") String dataFilePath, @Param("tableSpaceSize") Integer tableSpaceSize); + + +} diff --git a/src/main/java/com/casic/dao/UserMapper.java b/src/main/java/com/casic/dao/UserMapper.java deleted file mode 100644 index 266d786..0000000 --- a/src/main/java/com/casic/dao/UserMapper.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.model.User; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface UserMapper extends BaseMapper { - - - //获取所有的角色 - @Select(" SELECT id,name " + - " FROM sys_role " + - " where name like '达州%' ") - List> getRolesByName(); -} diff --git a/src/main/java/com/casic/dao/UsersMapper.java b/src/main/java/com/casic/dao/UsersMapper.java new file mode 100644 index 0000000..d394db7 --- /dev/null +++ b/src/main/java/com/casic/dao/UsersMapper.java @@ -0,0 +1,30 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.config.dto.RoleDto; +import com.casic.model.User; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * @author cz + */ + +@Mapper +public interface UsersMapper extends BaseMapper { + + @Select(" SELECT id,name " + + " FROM sys_role " + + " where name like '%达州%' " + + " AND DEL_FLAG=0 ") + List getRolesByName(); + + @Select("SELECT ID " + + "FROM SYS_DEPT " + + "WHERE SIMPLE_NAME LIKE '%达州%'" + + "AND DEL_FLAG=0 " + + "LIMIT 1 ") + Long getDeptIdByName(); +} diff --git a/src/main/java/com/casic/model/DataH2s.java b/src/main/java/com/casic/model/DataH2s.java index eaeef1f..b53b19e 100644 --- a/src/main/java/com/casic/model/DataH2s.java +++ b/src/main/java/com/casic/model/DataH2s.java @@ -15,7 +15,7 @@ @TableName("data_h2s") public class DataH2s { - @TableId(value = "ID", type = IdType.AUTO) + @TableId(value = "ID", type = IdType.ASSIGN_ID) private Long id; private String devcode; diff --git a/src/main/java/com/casic/model/User.java b/src/main/java/com/casic/model/User.java index b856672..8a7148a 100644 --- a/src/main/java/com/casic/model/User.java +++ b/src/main/java/com/casic/model/User.java @@ -21,6 +21,7 @@ type = IdType.ASSIGN_ID ) private Long id; + private String avatar; //userCode @@ -78,11 +79,6 @@ ) private String userType; - public User(String roleId, Long deptId) { - this.roleId=roleId; - this.deptId=deptId; - } - public Serializable pkVal() { return this.id; } diff --git a/src/main/java/com/casic/service/IPartitionStrategyService.java b/src/main/java/com/casic/service/IPartitionStrategyService.java new file mode 100644 index 0000000..3a4c82e --- /dev/null +++ b/src/main/java/com/casic/service/IPartitionStrategyService.java @@ -0,0 +1,25 @@ +package com.casic.service; + +/** + * 相差删除 + * + * @author cz + */ +public interface IPartitionStrategyService { + + + /** + * 表数据分区策略 + * + * @param tableName 分区表名称 + */ + void createPartition(String tableName, String tableSpaceFix); + + + /** + * 表空间创建 + * + * @param tableSpaceFix 表空间前缀 + */ + String createTableSpace(String tableSpaceFix); +} diff --git a/src/main/java/com/casic/service/impl/DataScopeBuilder.java b/src/main/java/com/casic/service/impl/DataScopeBuilder.java index 793312e..50be38f 100644 --- a/src/main/java/com/casic/service/impl/DataScopeBuilder.java +++ b/src/main/java/com/casic/service/impl/DataScopeBuilder.java @@ -36,10 +36,12 @@ } userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); List> deptUserList = new ArrayList<>(); - if (userDataScopeListMap.containsKey("2")) { + if (ObjectUtils.isNotEmpty(userDataScopeListMap.get("2"))) { deptUserList.addAll(userDataScopeListMap.get("2")); } - deptUserList.addAll(userDataScopeListMap.get("3")); + if (ObjectUtils.isNotEmpty(userDataScopeListMap.get("3"))) { + deptUserList.addAll(userDataScopeListMap.get("3")); + } if (ObjectUtils.isNotEmpty(deptId)) { userIdList.addAll(getParentDeptList(deptUserList, deptId)); } diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java index 2b51783..bd35978 100644 --- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java +++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java @@ -8,15 +8,16 @@ import com.casic.util.DeviceDataTableEnum; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.stream.Collector; import java.util.stream.Collectors; /** @@ -24,7 +25,6 @@ */ @Service @Slf4j -@RequiredArgsConstructor public class DeviceDataServiceImpl implements DeviceDataService { @Value("${casic.device.type}") @@ -33,7 +33,8 @@ @Value("${casic.device.data-day}") private Integer dataDay; - private final DeviceDataMapper deviceDataMapper; + @Resource + private DeviceDataMapper deviceDataMapper; @Override public Object getDeviceRecentData(String deviceType, String recentNum, String devcode) { diff --git a/src/main/java/com/casic/service/impl/PartitionStrategyServiceImpl.java b/src/main/java/com/casic/service/impl/PartitionStrategyServiceImpl.java new file mode 100644 index 0000000..50201dd --- /dev/null +++ b/src/main/java/com/casic/service/impl/PartitionStrategyServiceImpl.java @@ -0,0 +1,125 @@ +package com.casic.service.impl; + +import com.alibaba.druid.util.StringUtils; +import com.casic.dao.PartitionStrategyMapper; +import com.casic.service.IPartitionStrategyService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; + +/** + * 自动创建分区 + * + * @author cz + */ +@Service +@Slf4j +@RequiredArgsConstructor +public class PartitionStrategyServiceImpl implements IPartitionStrategyService { + /** + * 提前创建分区个数 + */ + @Value("${casic.ss.advancePartitionNum:3}") + private int advancePartitionNum; + /** + * 分区创建间隔(天) + */ + @Value("${casic.ss.partitionInterval:7}") + private int partitionInterval; + /** + * 分区创建间隔(天) + */ + @Value("${casic.ss.dbName:CASIC203}") + private String partitionDbName; + + @Value("${casic.ss.dataFilePath:c:\\dm\\}") + private String dataFilePath; + + @Value("${casic.ss.enableTableSpace:false}") + private boolean enableTableSpace; + + @Value("${casic.ss.tableSpaceSize:512}") + private int tableSpaceSize; + + private final PartitionStrategyMapper partitionStrategyMapper; + + @Override + public void createPartition(String tableName, String tableSpaceFix) { + Calendar end = Calendar.getInstance(); + String storage = null; +// if (enableTableSpace) { +// storage = createTableSpace(tableSpaceFix); +// } + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd"); + SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + end.add(Calendar.DAY_OF_MONTH, advancePartitionNum * partitionInterval); + Long maxTime = end.getTimeInMillis(); + String timeStr = partitionStrategyMapper.selectMaxId(tableName, "XLJC"); + String tempTableName = "XLJC." + tableName; + Long time = null; + if (StringUtils.isEmpty(timeStr) && timeStr.contains("DATE")) { + time = System.currentTimeMillis(); + } else { + timeStr = timeStr.substring(9); + try { + time = Long.valueOf(sdf1.parse(timeStr).getTime()); + } catch (ParseException rx) { + log.error("转换日期异常"); + } finally { + if (time == null) { + time = System.currentTimeMillis(); + } + } + } + //必须超出一天进行创建表 + if (maxTime - time > 86400000000L) { + while (time <= maxTime) { + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(time); + calendar.add(Calendar.DAY_OF_MONTH, partitionInterval); + time = calendar.getTimeInMillis(); + Date date = new Date(time); + String parTime = "\'" + sdf2.format(time) + "'"; + partitionStrategyMapper.createPartition(tempTableName, "P" + sdf1.format(date).substring(2), parTime, storage); + } + } +// if (tableName.equals("T_CLOCK_DATA")) { +// tempTableName = "CASIC_SYSTEM." + tableName; +// time = partitionStrategyMapper.selectMaxId(tableName, "CASIC_SYSTEM"); +// if (ObjectUtils.isEmpty(time)) { +// time = Calendar.getInstance().getTimeInMillis(); +// } +// while (time <= maxTime) { +// Calendar calendar = Calendar.getInstance(); +// calendar.setTimeInMillis(time); +// calendar.add(Calendar.DAY_OF_MONTH, partitionInterval); +// time = calendar.getTimeInMillis(); +// String formatTime = DateUtil.format(new Date(time), "yyyyMMdd"); +// partitionStrategyMapper.createPartition(tempTableName, "P" + formatTime.substring(2), time, storage); +// } +// } + } + + /** + * .*2021-12.* + * 创建表空间 + */ + @Override + public String createTableSpace(String tableSpaceFix) { +// String currMouth = tableSpaceFix + DateUtil.format(new Date(), "yyyyMM"); +// //判断当月度分区是否已经存在 +// if (!FileUtil.exist(dataFilePath, ".*" + currMouth + ".*")) { +// String pathFile = "'" + dataFilePath + currMouth + ".dbf" + "'"; +// partitionStrategyMapper.createTableSpace(currMouth, pathFile, tableSpaceSize); +// } +// return currMouth; + return null; + } + +} diff --git a/pom.xml b/pom.xml index ec5ddc3..f02731e 100644 --- a/pom.xml +++ b/pom.xml @@ -74,11 +74,6 @@ 4.5.13 - - com.casic - casic-admin-core - 2.0.0.alpha - @@ -198,6 +193,25 @@ 1.8 + + + com.casic + casic-core + 2.0.0.alpha + + + + com.casic + casic-admin-support + 2.0.0.alpha + + + + com.casic + casic-admin-core + 2.0.0.alpha + + diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java index 9afd0b9..affdcb5 100644 --- a/src/main/java/com/casic/CasicApplication.java +++ b/src/main/java/com/casic/CasicApplication.java @@ -1,6 +1,7 @@ package com.casic; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @@ -19,7 +20,9 @@ @Slf4j @ComponentScan(basePackages= "com.casic.**") +@MapperScan(basePackages = {"com.casic.**.dao", "com.casic.**.mapper"}) @SpringBootApplication +@EnableTransactionManagement(proxyTargetClass = true) public class CasicApplication { public static void main(String[] args) { log.info("CasicApplication is success!"); diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java index 7d19680..1615fb8 100644 --- a/src/main/java/com/casic/config/CorsConfig.java +++ b/src/main/java/com/casic/config/CorsConfig.java @@ -1,31 +1,31 @@ -package com.casic.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.web.filter.CorsFilter; - -/** - * 基础框架 - 跨域请求配置 - */ -@Configuration -public class CorsConfig { - @Bean - public CorsFilter corsFilter() { - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", buildConfig()); - return new CorsFilter(source); - } - - private CorsConfiguration buildConfig() { - CorsConfiguration corsConfiguration = new CorsConfiguration(); - // 1允许任何域名使用 - corsConfiguration.addAllowedOrigin("*"); - // 2允许任何头 - corsConfiguration.addAllowedHeader("*"); - // 3允许任何方法(post、get等) - corsConfiguration.addAllowedMethod("*"); - return corsConfiguration; - } -} \ No newline at end of file +//package com.casic.config; +// +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.web.cors.CorsConfiguration; +//import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +//import org.springframework.web.filter.CorsFilter; +// +///** +// * 基础框架 - 跨域请求配置 +// */ +//@Configuration +//public class CorsConfig { +// @Bean +// public CorsFilter corsFilter() { +// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); +// source.registerCorsConfiguration("/**", buildConfig()); +// return new CorsFilter(source); +// } +// +// private CorsConfiguration buildConfig() { +// CorsConfiguration corsConfiguration = new CorsConfiguration(); +// // 1允许任何域名使用 +// corsConfiguration.addAllowedOrigin("*"); +// // 2允许任何头 +// corsConfiguration.addAllowedHeader("*"); +// // 3允许任何方法(post、get等) +// corsConfiguration.addAllowedMethod("*"); +// return corsConfiguration; +// } +//} \ No newline at end of file diff --git a/src/main/java/com/casic/config/dto/RoleDto.java b/src/main/java/com/casic/config/dto/RoleDto.java new file mode 100644 index 0000000..ca08f84 --- /dev/null +++ b/src/main/java/com/casic/config/dto/RoleDto.java @@ -0,0 +1,11 @@ +package com.casic.config.dto; + +import lombok.Data; + +@Data +public class RoleDto { + + private Long id; + private String name; + +} diff --git a/src/main/java/com/casic/config/task/TaskConfigurer.java b/src/main/java/com/casic/config/task/TaskConfigurer.java index 699c0e3..5a3a029 100644 --- a/src/main/java/com/casic/config/task/TaskConfigurer.java +++ b/src/main/java/com/casic/config/task/TaskConfigurer.java @@ -1,6 +1,7 @@ package com.casic.config.task; import com.casic.service.DeviceDataService; +import com.casic.service.IPartitionStrategyService; import com.casic.service.UserDataDelayReceiver; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; @@ -24,18 +25,30 @@ private String onlineStateCron; @Value("${casic.device.transfer-user.cron}") private String transferUserCron; - + @Value("${casic.device.partition.cron}") + private String partitionCron; private final DeviceDataService deviceDataService; private final UserDataDelayReceiver userDataDelayReceiver; + private final IPartitionStrategyService partitionStrategyService; @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { - TriggerTask triggrtTask = new TriggerTask(nextDayDevice(), + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), triggerContext -> { return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); }); - taskRegistrar.addTriggerTask(triggrtTask); + TriggerTask transferUserTask = new TriggerTask(getUserData(), + triggerContext -> { + return new CronTrigger(transferUserCron).nextExecutionTime(triggerContext); + }); + TriggerTask partitionTask = new TriggerTask(createPartition(), + triggerContext -> { + return new CronTrigger(partitionCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + taskRegistrar.addTriggerTask(transferUserTask); + taskRegistrar.addTriggerTask(partitionTask); } private Runnable nextDayDevice() { @@ -57,6 +70,18 @@ userDataDelayReceiver.saveNewUserData(); } }; + } + + /** + * 定时同步普光 + */ + private Runnable createPartition() { + return new Runnable() { + @Override + public void run() { + partitionStrategyService.createPartition("DATA_H2S", "data_h2s_log"); + } + }; } diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java index d7e3722..e6ae7bc 100644 --- a/src/main/java/com/casic/controller/DeviceDataController.java +++ b/src/main/java/com/casic/controller/DeviceDataController.java @@ -1,40 +1,40 @@ -package com.casic.controller; - -import com.alibaba.fastjson.JSON; -import com.casic.service.DeviceDataService; -import com.casic.service.ThirdDataService; -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.*; - -import java.util.Map; - -@RestController -@RequestMapping("/device") -@RequiredArgsConstructor -public class DeviceDataController { - - private final DeviceDataService deviceDataService; - - @RequestMapping("/recent-data") - public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "recentNum", required = true) String recentNum, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); - } - - @RequestMapping("/data/list-page") - public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "currentIndex", required = true) Integer currentIndex, - @RequestParam(value = "pageSize", required = true) Integer pageSize, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); - } - - @RequestMapping("/level/{deviceType}") - public Object getLevelList(@PathVariable("deviceType")String deviceType) { - return deviceDataService.getLevel(deviceType); - } - - - -} +//package com.casic.controller; +// +//import com.alibaba.fastjson.JSON; +//import com.casic.service.DeviceDataService; +//import com.casic.service.ThirdDataService; +//import lombok.RequiredArgsConstructor; +//import org.springframework.web.bind.annotation.*; +// +//import java.util.Map; +// +//@RestController +//@RequestMapping("/device") +//@RequiredArgsConstructor +//public class DeviceDataController { +// +// private final DeviceDataService deviceDataService; +// +// @RequestMapping("/recent-data") +// public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "recentNum", required = true) String recentNum, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); +// } +// +// @RequestMapping("/data/list-page") +// public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "currentIndex", required = true) Integer currentIndex, +// @RequestParam(value = "pageSize", required = true) Integer pageSize, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); +// } +// +// @RequestMapping("/level/{deviceType}") +// public Object getLevelList(@PathVariable("deviceType")String deviceType) { +// return deviceDataService.getLevel(deviceType); +// } +// +// +// +//} diff --git a/src/main/java/com/casic/dao/PartitionStrategyMapper.java b/src/main/java/com/casic/dao/PartitionStrategyMapper.java new file mode 100644 index 0000000..a9481d0 --- /dev/null +++ b/src/main/java/com/casic/dao/PartitionStrategyMapper.java @@ -0,0 +1,44 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; + +/** + * 分区mapper + * + * @author lwh + */ +@Mapper +public interface PartitionStrategyMapper { + + /** + * 当前表最大分区查询 + * + * @param tableName 分区表名称 + * @return + */ + String selectMaxId(@Param("tableName") String tableName, @Param("tableOwner") String tableOwner); + + /** + * 增加表分区 + * + * @param tableName 表名称 + * @param partitionName 分区名称 + * @param time 分区最大值 + */ + void createPartition(@Param("tableName") String tableName, @Param("partitionName") String partitionName, + @Param("time") String time, @Param("storage") String storage); + + /** + * 创建表空间 + * + * @param tableSpaceName 表空间名称 + * @param dataFilePath 文件地址 + * @param tableSpaceSize 表空间大小(单位 M) + */ + void createTableSpace(@Param("tableSpaceName") String tableSpaceName, @Param("dataFilePath") String dataFilePath, @Param("tableSpaceSize") Integer tableSpaceSize); + + +} diff --git a/src/main/java/com/casic/dao/UserMapper.java b/src/main/java/com/casic/dao/UserMapper.java deleted file mode 100644 index 266d786..0000000 --- a/src/main/java/com/casic/dao/UserMapper.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.model.User; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface UserMapper extends BaseMapper { - - - //获取所有的角色 - @Select(" SELECT id,name " + - " FROM sys_role " + - " where name like '达州%' ") - List> getRolesByName(); -} diff --git a/src/main/java/com/casic/dao/UsersMapper.java b/src/main/java/com/casic/dao/UsersMapper.java new file mode 100644 index 0000000..d394db7 --- /dev/null +++ b/src/main/java/com/casic/dao/UsersMapper.java @@ -0,0 +1,30 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.config.dto.RoleDto; +import com.casic.model.User; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * @author cz + */ + +@Mapper +public interface UsersMapper extends BaseMapper { + + @Select(" SELECT id,name " + + " FROM sys_role " + + " where name like '%达州%' " + + " AND DEL_FLAG=0 ") + List getRolesByName(); + + @Select("SELECT ID " + + "FROM SYS_DEPT " + + "WHERE SIMPLE_NAME LIKE '%达州%'" + + "AND DEL_FLAG=0 " + + "LIMIT 1 ") + Long getDeptIdByName(); +} diff --git a/src/main/java/com/casic/model/DataH2s.java b/src/main/java/com/casic/model/DataH2s.java index eaeef1f..b53b19e 100644 --- a/src/main/java/com/casic/model/DataH2s.java +++ b/src/main/java/com/casic/model/DataH2s.java @@ -15,7 +15,7 @@ @TableName("data_h2s") public class DataH2s { - @TableId(value = "ID", type = IdType.AUTO) + @TableId(value = "ID", type = IdType.ASSIGN_ID) private Long id; private String devcode; diff --git a/src/main/java/com/casic/model/User.java b/src/main/java/com/casic/model/User.java index b856672..8a7148a 100644 --- a/src/main/java/com/casic/model/User.java +++ b/src/main/java/com/casic/model/User.java @@ -21,6 +21,7 @@ type = IdType.ASSIGN_ID ) private Long id; + private String avatar; //userCode @@ -78,11 +79,6 @@ ) private String userType; - public User(String roleId, Long deptId) { - this.roleId=roleId; - this.deptId=deptId; - } - public Serializable pkVal() { return this.id; } diff --git a/src/main/java/com/casic/service/IPartitionStrategyService.java b/src/main/java/com/casic/service/IPartitionStrategyService.java new file mode 100644 index 0000000..3a4c82e --- /dev/null +++ b/src/main/java/com/casic/service/IPartitionStrategyService.java @@ -0,0 +1,25 @@ +package com.casic.service; + +/** + * 相差删除 + * + * @author cz + */ +public interface IPartitionStrategyService { + + + /** + * 表数据分区策略 + * + * @param tableName 分区表名称 + */ + void createPartition(String tableName, String tableSpaceFix); + + + /** + * 表空间创建 + * + * @param tableSpaceFix 表空间前缀 + */ + String createTableSpace(String tableSpaceFix); +} diff --git a/src/main/java/com/casic/service/impl/DataScopeBuilder.java b/src/main/java/com/casic/service/impl/DataScopeBuilder.java index 793312e..50be38f 100644 --- a/src/main/java/com/casic/service/impl/DataScopeBuilder.java +++ b/src/main/java/com/casic/service/impl/DataScopeBuilder.java @@ -36,10 +36,12 @@ } userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); List> deptUserList = new ArrayList<>(); - if (userDataScopeListMap.containsKey("2")) { + if (ObjectUtils.isNotEmpty(userDataScopeListMap.get("2"))) { deptUserList.addAll(userDataScopeListMap.get("2")); } - deptUserList.addAll(userDataScopeListMap.get("3")); + if (ObjectUtils.isNotEmpty(userDataScopeListMap.get("3"))) { + deptUserList.addAll(userDataScopeListMap.get("3")); + } if (ObjectUtils.isNotEmpty(deptId)) { userIdList.addAll(getParentDeptList(deptUserList, deptId)); } diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java index 2b51783..bd35978 100644 --- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java +++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java @@ -8,15 +8,16 @@ import com.casic.util.DeviceDataTableEnum; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.stream.Collector; import java.util.stream.Collectors; /** @@ -24,7 +25,6 @@ */ @Service @Slf4j -@RequiredArgsConstructor public class DeviceDataServiceImpl implements DeviceDataService { @Value("${casic.device.type}") @@ -33,7 +33,8 @@ @Value("${casic.device.data-day}") private Integer dataDay; - private final DeviceDataMapper deviceDataMapper; + @Resource + private DeviceDataMapper deviceDataMapper; @Override public Object getDeviceRecentData(String deviceType, String recentNum, String devcode) { diff --git a/src/main/java/com/casic/service/impl/PartitionStrategyServiceImpl.java b/src/main/java/com/casic/service/impl/PartitionStrategyServiceImpl.java new file mode 100644 index 0000000..50201dd --- /dev/null +++ b/src/main/java/com/casic/service/impl/PartitionStrategyServiceImpl.java @@ -0,0 +1,125 @@ +package com.casic.service.impl; + +import com.alibaba.druid.util.StringUtils; +import com.casic.dao.PartitionStrategyMapper; +import com.casic.service.IPartitionStrategyService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; + +/** + * 自动创建分区 + * + * @author cz + */ +@Service +@Slf4j +@RequiredArgsConstructor +public class PartitionStrategyServiceImpl implements IPartitionStrategyService { + /** + * 提前创建分区个数 + */ + @Value("${casic.ss.advancePartitionNum:3}") + private int advancePartitionNum; + /** + * 分区创建间隔(天) + */ + @Value("${casic.ss.partitionInterval:7}") + private int partitionInterval; + /** + * 分区创建间隔(天) + */ + @Value("${casic.ss.dbName:CASIC203}") + private String partitionDbName; + + @Value("${casic.ss.dataFilePath:c:\\dm\\}") + private String dataFilePath; + + @Value("${casic.ss.enableTableSpace:false}") + private boolean enableTableSpace; + + @Value("${casic.ss.tableSpaceSize:512}") + private int tableSpaceSize; + + private final PartitionStrategyMapper partitionStrategyMapper; + + @Override + public void createPartition(String tableName, String tableSpaceFix) { + Calendar end = Calendar.getInstance(); + String storage = null; +// if (enableTableSpace) { +// storage = createTableSpace(tableSpaceFix); +// } + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd"); + SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + end.add(Calendar.DAY_OF_MONTH, advancePartitionNum * partitionInterval); + Long maxTime = end.getTimeInMillis(); + String timeStr = partitionStrategyMapper.selectMaxId(tableName, "XLJC"); + String tempTableName = "XLJC." + tableName; + Long time = null; + if (StringUtils.isEmpty(timeStr) && timeStr.contains("DATE")) { + time = System.currentTimeMillis(); + } else { + timeStr = timeStr.substring(9); + try { + time = Long.valueOf(sdf1.parse(timeStr).getTime()); + } catch (ParseException rx) { + log.error("转换日期异常"); + } finally { + if (time == null) { + time = System.currentTimeMillis(); + } + } + } + //必须超出一天进行创建表 + if (maxTime - time > 86400000000L) { + while (time <= maxTime) { + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(time); + calendar.add(Calendar.DAY_OF_MONTH, partitionInterval); + time = calendar.getTimeInMillis(); + Date date = new Date(time); + String parTime = "\'" + sdf2.format(time) + "'"; + partitionStrategyMapper.createPartition(tempTableName, "P" + sdf1.format(date).substring(2), parTime, storage); + } + } +// if (tableName.equals("T_CLOCK_DATA")) { +// tempTableName = "CASIC_SYSTEM." + tableName; +// time = partitionStrategyMapper.selectMaxId(tableName, "CASIC_SYSTEM"); +// if (ObjectUtils.isEmpty(time)) { +// time = Calendar.getInstance().getTimeInMillis(); +// } +// while (time <= maxTime) { +// Calendar calendar = Calendar.getInstance(); +// calendar.setTimeInMillis(time); +// calendar.add(Calendar.DAY_OF_MONTH, partitionInterval); +// time = calendar.getTimeInMillis(); +// String formatTime = DateUtil.format(new Date(time), "yyyyMMdd"); +// partitionStrategyMapper.createPartition(tempTableName, "P" + formatTime.substring(2), time, storage); +// } +// } + } + + /** + * .*2021-12.* + * 创建表空间 + */ + @Override + public String createTableSpace(String tableSpaceFix) { +// String currMouth = tableSpaceFix + DateUtil.format(new Date(), "yyyyMM"); +// //判断当月度分区是否已经存在 +// if (!FileUtil.exist(dataFilePath, ".*" + currMouth + ".*")) { +// String pathFile = "'" + dataFilePath + currMouth + ".dbf" + "'"; +// partitionStrategyMapper.createTableSpace(currMouth, pathFile, tableSpaceSize); +// } +// return currMouth; + return null; + } + +} diff --git a/src/main/java/com/casic/service/impl/UserDataDelayReceiverImpl.java b/src/main/java/com/casic/service/impl/UserDataDelayReceiverImpl.java index a3de00d..1be4a99 100644 --- a/src/main/java/com/casic/service/impl/UserDataDelayReceiverImpl.java +++ b/src/main/java/com/casic/service/impl/UserDataDelayReceiverImpl.java @@ -3,19 +3,21 @@ import com.alibaba.druid.util.StringUtils; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.casic.dao.UserMapper; +import com.casic.config.dto.RoleDto; +import com.casic.dao.UsersMapper; import com.casic.enums.UserDataEnum; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.model.User; import com.casic.service.UserDataDelayReceiver; import com.casic.util.HttpRequest; -import com.casic.util.RSAUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.HashMap; @@ -26,10 +28,10 @@ /** * @author cz */ -@RequiredArgsConstructor @Slf4j @Service -public class UserDataDelayReceiverImpl extends ServiceImpl implements UserDataDelayReceiver, UserDataEnum { +@RequiredArgsConstructor +public class UserDataDelayReceiverImpl extends ServiceImpl implements UserDataDelayReceiver, UserDataEnum { @Value("${casic.device.appName}") private String appName; @@ -62,13 +64,13 @@ } private Map getLocalRoleData() { - List> roleMapList = this.baseMapper.getRolesByName(); + List roleMapList = this.baseMapper.getRolesByName(); Map roleMap = new HashMap<>(); - for (Map role : roleMapList) { - if (role.get("NAME").contains(ADMIN)) { - roleMap.put(role.get("ID"), ADMIN); + for (RoleDto role : roleMapList) { + if (role.getName().contains(ADMIN)) { + roleMap.put(String.valueOf(role.getId()), ADMIN); } else { - roleMap.put(role.get("ID"), MEMBER); + roleMap.put(String.valueOf(role.getId()), MEMBER); } } return roleMap; @@ -78,16 +80,20 @@ * 获取当前的用户信息列表 */ private Map getLocalUserData(Map roleMap) { - List localUserList = this.baseMapper.selectList(null); - localUserList.stream() - .filter(e -> roleMap.containsKey(e.getRoleId())) - .forEach( - localUser -> { - if (roleMap.containsKey(localUser.getRoleId())) { - localUser.setUserType(roleMap.get(localUser.getRoleId())); - } - } - ); + QueryWrapper queryWrapper = new QueryWrapper() + .eq("is_sync", "1"); + List localUserList = this.baseMapper.selectList(queryWrapper); + //过滤 + localUserList = localUserList.stream() + .filter(e -> roleMap.containsKey(e.getRoleId())).collect(Collectors.toList()); + //设置用户类型 + localUserList.forEach( + localUser -> { + if (roleMap.containsKey(localUser.getRoleId())) { + localUser.setUserType(roleMap.get(localUser.getRoleId())); + } + } + ); //userCode作为账号 Map userMap = localUserList.stream() .collect( @@ -103,28 +109,22 @@ List newUserCodeList = userCodeList.stream().filter( userCode -> !userMap.containsKey(userCode)).collect(Collectors.toList()); List editUserList = userCodeList.stream().filter( - userCode -> userMap.containsKey(userCode) && !userMap.get(userCode).getUserType().equals(key) + userCode -> userMap.containsKey(userCode) && !key.equals(userMap.get(userCode).getUserType()) ).collect(Collectors.toList()); - String roleId = ""; - Long deptId = null; + Long deptId = this.baseMapper.getDeptIdByName(); + String roleId = null; for (Map.Entry entry : roleMap.entrySet()) { if (entry.getValue().equals(key)) { roleId = entry.getKey(); } } - for (Map.Entry entry : userMap.entrySet()) { - if (entry.getValue().equals(key)) { - deptId = entry.getValue().getDeptId(); - break; - } - } - if (StringUtils.isEmpty(roleId)) { + if (StringUtils.isEmpty(roleId) || ObjectUtils.isEmpty(deptId)) { return; } //新增 - doAddUser(newUserCodeList, sourceMap, roleId, deptId); + doAddUser(newUserCodeList, sourceMap, String.valueOf(roleId), deptId); //更新 - doUpdateUser(editUserList, userMap, roleId); + doUpdateUser(editUserList, userMap, String.valueOf(roleId)); return; } @@ -132,14 +132,20 @@ * 新增用户 */ private void doAddUser(List newUserCodeList, Map sourceUserMap, String roleId, Long deptId) { + if (CollectionUtils.isEmpty(newUserCodeList)) { + return; + } List users = new ArrayList<>(); + Map userMap = null; for (String userCode : newUserCodeList) { JSONArray userArray = sourceUserMap.get(userCode); if (ObjectUtils.isNotEmpty(userArray)) { - Map userMap = userArray.stream().collect( - Collectors.toMap(e -> (String) ((JSONObject) e).get("name"), e -> (String) ((JSONObject) e).get("value")) + userMap = userArray.stream().collect( + Collectors.toMap(e -> (String) ((JSONObject) e).get("name"), e -> ((JSONObject) e).get("value")) ); - User user = new User(roleId, deptId); + User user = new User(); + user.setDeptId(deptId); + user.setRoleId(roleId); populateUser(user, userMap); users.add(user); } @@ -147,23 +153,18 @@ this.saveBatch(users); } - private void populateUser(User user, Map userMap) { + private void populateUser(User user, Map userMap) { //涉及盐值的计算等操作 - user.setAccount(userMap.get("userCode")); - user.setSex(Integer.valueOf(userMap.get("sex"))); - user.setName(userMap.get("userName")); + user.setSyncId(String.valueOf((Integer) userMap.get("userId"))); + user.setAccount((String) userMap.get("userCode")); + user.setSex((Integer) userMap.get("sex")); + user.setName((String) userMap.get("userName")); //设置密码 user.setPassword("111111"); - try { - user.setPassword(RSAUtils.decrypt(user.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); - } catch (Exception var5) { - log.error("密码解密异常", var5); - } - user.setSalt(userMap.get("userName")); user.setSalt(ShiroKit.getRandomSalt(5)); user.setPassword(ShiroKit.md5(user.getPassword(), user.getSalt())); - user.setEmail(userMap.get("email")); - user.setPhone(userMap.get("mobile")); + user.setEmail((String) userMap.get("email")); + user.setPhone((String) userMap.get("mobile")); user.setStatus("1"); user.setIsSync(1); user.setDelFlag("0"); @@ -173,6 +174,9 @@ * 更新用户 */ private void doUpdateUser(List editUserCodeList, Map userMap, String roleId) { + if (CollectionUtils.isEmpty(editUserCodeList)) { + return; + } List users = new ArrayList<>(); for (String editUser : editUserCodeList) { User user = userMap.get(editUser); @@ -191,16 +195,16 @@ */ private void doGetUserDataSource(Map> userListMap, String key, Map userMap, Map roleMap) { //获取管理员的信息 - List userList = userListMap.get(key); - for (String userPath : userList) { + List roleList = userListMap.get(key); + for (String userPath : roleList) { String userUrl = appUrl + FRAGMENT_PATH + appName + "/roles/" + userPath + "/allocatedUsers"; Object roleObject = HttpRequest.sendGet(userUrl); - JSONArray roleList = ((JSONArray) ((JSONObject) roleObject).get("items")); + JSONArray userList = ((JSONArray) ((JSONObject) roleObject).get("items")); List userCodeList = new ArrayList<>(); Map sourceMap = new HashMap<>(); - for (Object role : roleList) { - JSONArray dataList = (JSONArray) ((JSONObject) role).get("data"); - String userCode = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("userCode")).findFirst().get()).get("userCode"); + for (Object user : userList) { + JSONArray dataList = (JSONArray) ((JSONObject) user).get("data"); + String userCode = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("userCode")).findFirst().get()).get("value"); userCodeList.add(userCode); //和获取的用户列表进行比较管理员、userCode是否存在 sourceMap.put(userCode, dataList); @@ -224,8 +228,8 @@ List userList = new ArrayList<>(); for (Object role : roleList) { JSONArray dataList = (JSONArray) ((JSONObject) role).get("data"); - String roleName = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("roleName")).findFirst().get()).get("roleName"); - String roleCode = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("roleCode")).findFirst().get()).get("roleCode"); + String roleName = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("roleName")).findFirst().get()).get("value"); + String roleCode = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("roleCode")).findFirst().get()).get("value"); if (roleName.contains(MEMBER)) { userList.add(roleCode); } diff --git a/pom.xml b/pom.xml index ec5ddc3..f02731e 100644 --- a/pom.xml +++ b/pom.xml @@ -74,11 +74,6 @@ 4.5.13 - - com.casic - casic-admin-core - 2.0.0.alpha - @@ -198,6 +193,25 @@ 1.8 + + + com.casic + casic-core + 2.0.0.alpha + + + + com.casic + casic-admin-support + 2.0.0.alpha + + + + com.casic + casic-admin-core + 2.0.0.alpha + + diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java index 9afd0b9..affdcb5 100644 --- a/src/main/java/com/casic/CasicApplication.java +++ b/src/main/java/com/casic/CasicApplication.java @@ -1,6 +1,7 @@ package com.casic; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @@ -19,7 +20,9 @@ @Slf4j @ComponentScan(basePackages= "com.casic.**") +@MapperScan(basePackages = {"com.casic.**.dao", "com.casic.**.mapper"}) @SpringBootApplication +@EnableTransactionManagement(proxyTargetClass = true) public class CasicApplication { public static void main(String[] args) { log.info("CasicApplication is success!"); diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java index 7d19680..1615fb8 100644 --- a/src/main/java/com/casic/config/CorsConfig.java +++ b/src/main/java/com/casic/config/CorsConfig.java @@ -1,31 +1,31 @@ -package com.casic.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.web.filter.CorsFilter; - -/** - * 基础框架 - 跨域请求配置 - */ -@Configuration -public class CorsConfig { - @Bean - public CorsFilter corsFilter() { - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", buildConfig()); - return new CorsFilter(source); - } - - private CorsConfiguration buildConfig() { - CorsConfiguration corsConfiguration = new CorsConfiguration(); - // 1允许任何域名使用 - corsConfiguration.addAllowedOrigin("*"); - // 2允许任何头 - corsConfiguration.addAllowedHeader("*"); - // 3允许任何方法(post、get等) - corsConfiguration.addAllowedMethod("*"); - return corsConfiguration; - } -} \ No newline at end of file +//package com.casic.config; +// +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.web.cors.CorsConfiguration; +//import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +//import org.springframework.web.filter.CorsFilter; +// +///** +// * 基础框架 - 跨域请求配置 +// */ +//@Configuration +//public class CorsConfig { +// @Bean +// public CorsFilter corsFilter() { +// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); +// source.registerCorsConfiguration("/**", buildConfig()); +// return new CorsFilter(source); +// } +// +// private CorsConfiguration buildConfig() { +// CorsConfiguration corsConfiguration = new CorsConfiguration(); +// // 1允许任何域名使用 +// corsConfiguration.addAllowedOrigin("*"); +// // 2允许任何头 +// corsConfiguration.addAllowedHeader("*"); +// // 3允许任何方法(post、get等) +// corsConfiguration.addAllowedMethod("*"); +// return corsConfiguration; +// } +//} \ No newline at end of file diff --git a/src/main/java/com/casic/config/dto/RoleDto.java b/src/main/java/com/casic/config/dto/RoleDto.java new file mode 100644 index 0000000..ca08f84 --- /dev/null +++ b/src/main/java/com/casic/config/dto/RoleDto.java @@ -0,0 +1,11 @@ +package com.casic.config.dto; + +import lombok.Data; + +@Data +public class RoleDto { + + private Long id; + private String name; + +} diff --git a/src/main/java/com/casic/config/task/TaskConfigurer.java b/src/main/java/com/casic/config/task/TaskConfigurer.java index 699c0e3..5a3a029 100644 --- a/src/main/java/com/casic/config/task/TaskConfigurer.java +++ b/src/main/java/com/casic/config/task/TaskConfigurer.java @@ -1,6 +1,7 @@ package com.casic.config.task; import com.casic.service.DeviceDataService; +import com.casic.service.IPartitionStrategyService; import com.casic.service.UserDataDelayReceiver; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; @@ -24,18 +25,30 @@ private String onlineStateCron; @Value("${casic.device.transfer-user.cron}") private String transferUserCron; - + @Value("${casic.device.partition.cron}") + private String partitionCron; private final DeviceDataService deviceDataService; private final UserDataDelayReceiver userDataDelayReceiver; + private final IPartitionStrategyService partitionStrategyService; @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { - TriggerTask triggrtTask = new TriggerTask(nextDayDevice(), + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), triggerContext -> { return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); }); - taskRegistrar.addTriggerTask(triggrtTask); + TriggerTask transferUserTask = new TriggerTask(getUserData(), + triggerContext -> { + return new CronTrigger(transferUserCron).nextExecutionTime(triggerContext); + }); + TriggerTask partitionTask = new TriggerTask(createPartition(), + triggerContext -> { + return new CronTrigger(partitionCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + taskRegistrar.addTriggerTask(transferUserTask); + taskRegistrar.addTriggerTask(partitionTask); } private Runnable nextDayDevice() { @@ -57,6 +70,18 @@ userDataDelayReceiver.saveNewUserData(); } }; + } + + /** + * 定时同步普光 + */ + private Runnable createPartition() { + return new Runnable() { + @Override + public void run() { + partitionStrategyService.createPartition("DATA_H2S", "data_h2s_log"); + } + }; } diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java index d7e3722..e6ae7bc 100644 --- a/src/main/java/com/casic/controller/DeviceDataController.java +++ b/src/main/java/com/casic/controller/DeviceDataController.java @@ -1,40 +1,40 @@ -package com.casic.controller; - -import com.alibaba.fastjson.JSON; -import com.casic.service.DeviceDataService; -import com.casic.service.ThirdDataService; -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.*; - -import java.util.Map; - -@RestController -@RequestMapping("/device") -@RequiredArgsConstructor -public class DeviceDataController { - - private final DeviceDataService deviceDataService; - - @RequestMapping("/recent-data") - public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "recentNum", required = true) String recentNum, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); - } - - @RequestMapping("/data/list-page") - public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "currentIndex", required = true) Integer currentIndex, - @RequestParam(value = "pageSize", required = true) Integer pageSize, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); - } - - @RequestMapping("/level/{deviceType}") - public Object getLevelList(@PathVariable("deviceType")String deviceType) { - return deviceDataService.getLevel(deviceType); - } - - - -} +//package com.casic.controller; +// +//import com.alibaba.fastjson.JSON; +//import com.casic.service.DeviceDataService; +//import com.casic.service.ThirdDataService; +//import lombok.RequiredArgsConstructor; +//import org.springframework.web.bind.annotation.*; +// +//import java.util.Map; +// +//@RestController +//@RequestMapping("/device") +//@RequiredArgsConstructor +//public class DeviceDataController { +// +// private final DeviceDataService deviceDataService; +// +// @RequestMapping("/recent-data") +// public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "recentNum", required = true) String recentNum, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); +// } +// +// @RequestMapping("/data/list-page") +// public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "currentIndex", required = true) Integer currentIndex, +// @RequestParam(value = "pageSize", required = true) Integer pageSize, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); +// } +// +// @RequestMapping("/level/{deviceType}") +// public Object getLevelList(@PathVariable("deviceType")String deviceType) { +// return deviceDataService.getLevel(deviceType); +// } +// +// +// +//} diff --git a/src/main/java/com/casic/dao/PartitionStrategyMapper.java b/src/main/java/com/casic/dao/PartitionStrategyMapper.java new file mode 100644 index 0000000..a9481d0 --- /dev/null +++ b/src/main/java/com/casic/dao/PartitionStrategyMapper.java @@ -0,0 +1,44 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; + +/** + * 分区mapper + * + * @author lwh + */ +@Mapper +public interface PartitionStrategyMapper { + + /** + * 当前表最大分区查询 + * + * @param tableName 分区表名称 + * @return + */ + String selectMaxId(@Param("tableName") String tableName, @Param("tableOwner") String tableOwner); + + /** + * 增加表分区 + * + * @param tableName 表名称 + * @param partitionName 分区名称 + * @param time 分区最大值 + */ + void createPartition(@Param("tableName") String tableName, @Param("partitionName") String partitionName, + @Param("time") String time, @Param("storage") String storage); + + /** + * 创建表空间 + * + * @param tableSpaceName 表空间名称 + * @param dataFilePath 文件地址 + * @param tableSpaceSize 表空间大小(单位 M) + */ + void createTableSpace(@Param("tableSpaceName") String tableSpaceName, @Param("dataFilePath") String dataFilePath, @Param("tableSpaceSize") Integer tableSpaceSize); + + +} diff --git a/src/main/java/com/casic/dao/UserMapper.java b/src/main/java/com/casic/dao/UserMapper.java deleted file mode 100644 index 266d786..0000000 --- a/src/main/java/com/casic/dao/UserMapper.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.model.User; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface UserMapper extends BaseMapper { - - - //获取所有的角色 - @Select(" SELECT id,name " + - " FROM sys_role " + - " where name like '达州%' ") - List> getRolesByName(); -} diff --git a/src/main/java/com/casic/dao/UsersMapper.java b/src/main/java/com/casic/dao/UsersMapper.java new file mode 100644 index 0000000..d394db7 --- /dev/null +++ b/src/main/java/com/casic/dao/UsersMapper.java @@ -0,0 +1,30 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.config.dto.RoleDto; +import com.casic.model.User; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * @author cz + */ + +@Mapper +public interface UsersMapper extends BaseMapper { + + @Select(" SELECT id,name " + + " FROM sys_role " + + " where name like '%达州%' " + + " AND DEL_FLAG=0 ") + List getRolesByName(); + + @Select("SELECT ID " + + "FROM SYS_DEPT " + + "WHERE SIMPLE_NAME LIKE '%达州%'" + + "AND DEL_FLAG=0 " + + "LIMIT 1 ") + Long getDeptIdByName(); +} diff --git a/src/main/java/com/casic/model/DataH2s.java b/src/main/java/com/casic/model/DataH2s.java index eaeef1f..b53b19e 100644 --- a/src/main/java/com/casic/model/DataH2s.java +++ b/src/main/java/com/casic/model/DataH2s.java @@ -15,7 +15,7 @@ @TableName("data_h2s") public class DataH2s { - @TableId(value = "ID", type = IdType.AUTO) + @TableId(value = "ID", type = IdType.ASSIGN_ID) private Long id; private String devcode; diff --git a/src/main/java/com/casic/model/User.java b/src/main/java/com/casic/model/User.java index b856672..8a7148a 100644 --- a/src/main/java/com/casic/model/User.java +++ b/src/main/java/com/casic/model/User.java @@ -21,6 +21,7 @@ type = IdType.ASSIGN_ID ) private Long id; + private String avatar; //userCode @@ -78,11 +79,6 @@ ) private String userType; - public User(String roleId, Long deptId) { - this.roleId=roleId; - this.deptId=deptId; - } - public Serializable pkVal() { return this.id; } diff --git a/src/main/java/com/casic/service/IPartitionStrategyService.java b/src/main/java/com/casic/service/IPartitionStrategyService.java new file mode 100644 index 0000000..3a4c82e --- /dev/null +++ b/src/main/java/com/casic/service/IPartitionStrategyService.java @@ -0,0 +1,25 @@ +package com.casic.service; + +/** + * 相差删除 + * + * @author cz + */ +public interface IPartitionStrategyService { + + + /** + * 表数据分区策略 + * + * @param tableName 分区表名称 + */ + void createPartition(String tableName, String tableSpaceFix); + + + /** + * 表空间创建 + * + * @param tableSpaceFix 表空间前缀 + */ + String createTableSpace(String tableSpaceFix); +} diff --git a/src/main/java/com/casic/service/impl/DataScopeBuilder.java b/src/main/java/com/casic/service/impl/DataScopeBuilder.java index 793312e..50be38f 100644 --- a/src/main/java/com/casic/service/impl/DataScopeBuilder.java +++ b/src/main/java/com/casic/service/impl/DataScopeBuilder.java @@ -36,10 +36,12 @@ } userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); List> deptUserList = new ArrayList<>(); - if (userDataScopeListMap.containsKey("2")) { + if (ObjectUtils.isNotEmpty(userDataScopeListMap.get("2"))) { deptUserList.addAll(userDataScopeListMap.get("2")); } - deptUserList.addAll(userDataScopeListMap.get("3")); + if (ObjectUtils.isNotEmpty(userDataScopeListMap.get("3"))) { + deptUserList.addAll(userDataScopeListMap.get("3")); + } if (ObjectUtils.isNotEmpty(deptId)) { userIdList.addAll(getParentDeptList(deptUserList, deptId)); } diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java index 2b51783..bd35978 100644 --- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java +++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java @@ -8,15 +8,16 @@ import com.casic.util.DeviceDataTableEnum; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.stream.Collector; import java.util.stream.Collectors; /** @@ -24,7 +25,6 @@ */ @Service @Slf4j -@RequiredArgsConstructor public class DeviceDataServiceImpl implements DeviceDataService { @Value("${casic.device.type}") @@ -33,7 +33,8 @@ @Value("${casic.device.data-day}") private Integer dataDay; - private final DeviceDataMapper deviceDataMapper; + @Resource + private DeviceDataMapper deviceDataMapper; @Override public Object getDeviceRecentData(String deviceType, String recentNum, String devcode) { diff --git a/src/main/java/com/casic/service/impl/PartitionStrategyServiceImpl.java b/src/main/java/com/casic/service/impl/PartitionStrategyServiceImpl.java new file mode 100644 index 0000000..50201dd --- /dev/null +++ b/src/main/java/com/casic/service/impl/PartitionStrategyServiceImpl.java @@ -0,0 +1,125 @@ +package com.casic.service.impl; + +import com.alibaba.druid.util.StringUtils; +import com.casic.dao.PartitionStrategyMapper; +import com.casic.service.IPartitionStrategyService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; + +/** + * 自动创建分区 + * + * @author cz + */ +@Service +@Slf4j +@RequiredArgsConstructor +public class PartitionStrategyServiceImpl implements IPartitionStrategyService { + /** + * 提前创建分区个数 + */ + @Value("${casic.ss.advancePartitionNum:3}") + private int advancePartitionNum; + /** + * 分区创建间隔(天) + */ + @Value("${casic.ss.partitionInterval:7}") + private int partitionInterval; + /** + * 分区创建间隔(天) + */ + @Value("${casic.ss.dbName:CASIC203}") + private String partitionDbName; + + @Value("${casic.ss.dataFilePath:c:\\dm\\}") + private String dataFilePath; + + @Value("${casic.ss.enableTableSpace:false}") + private boolean enableTableSpace; + + @Value("${casic.ss.tableSpaceSize:512}") + private int tableSpaceSize; + + private final PartitionStrategyMapper partitionStrategyMapper; + + @Override + public void createPartition(String tableName, String tableSpaceFix) { + Calendar end = Calendar.getInstance(); + String storage = null; +// if (enableTableSpace) { +// storage = createTableSpace(tableSpaceFix); +// } + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd"); + SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + end.add(Calendar.DAY_OF_MONTH, advancePartitionNum * partitionInterval); + Long maxTime = end.getTimeInMillis(); + String timeStr = partitionStrategyMapper.selectMaxId(tableName, "XLJC"); + String tempTableName = "XLJC." + tableName; + Long time = null; + if (StringUtils.isEmpty(timeStr) && timeStr.contains("DATE")) { + time = System.currentTimeMillis(); + } else { + timeStr = timeStr.substring(9); + try { + time = Long.valueOf(sdf1.parse(timeStr).getTime()); + } catch (ParseException rx) { + log.error("转换日期异常"); + } finally { + if (time == null) { + time = System.currentTimeMillis(); + } + } + } + //必须超出一天进行创建表 + if (maxTime - time > 86400000000L) { + while (time <= maxTime) { + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(time); + calendar.add(Calendar.DAY_OF_MONTH, partitionInterval); + time = calendar.getTimeInMillis(); + Date date = new Date(time); + String parTime = "\'" + sdf2.format(time) + "'"; + partitionStrategyMapper.createPartition(tempTableName, "P" + sdf1.format(date).substring(2), parTime, storage); + } + } +// if (tableName.equals("T_CLOCK_DATA")) { +// tempTableName = "CASIC_SYSTEM." + tableName; +// time = partitionStrategyMapper.selectMaxId(tableName, "CASIC_SYSTEM"); +// if (ObjectUtils.isEmpty(time)) { +// time = Calendar.getInstance().getTimeInMillis(); +// } +// while (time <= maxTime) { +// Calendar calendar = Calendar.getInstance(); +// calendar.setTimeInMillis(time); +// calendar.add(Calendar.DAY_OF_MONTH, partitionInterval); +// time = calendar.getTimeInMillis(); +// String formatTime = DateUtil.format(new Date(time), "yyyyMMdd"); +// partitionStrategyMapper.createPartition(tempTableName, "P" + formatTime.substring(2), time, storage); +// } +// } + } + + /** + * .*2021-12.* + * 创建表空间 + */ + @Override + public String createTableSpace(String tableSpaceFix) { +// String currMouth = tableSpaceFix + DateUtil.format(new Date(), "yyyyMM"); +// //判断当月度分区是否已经存在 +// if (!FileUtil.exist(dataFilePath, ".*" + currMouth + ".*")) { +// String pathFile = "'" + dataFilePath + currMouth + ".dbf" + "'"; +// partitionStrategyMapper.createTableSpace(currMouth, pathFile, tableSpaceSize); +// } +// return currMouth; + return null; + } + +} diff --git a/src/main/java/com/casic/service/impl/UserDataDelayReceiverImpl.java b/src/main/java/com/casic/service/impl/UserDataDelayReceiverImpl.java index a3de00d..1be4a99 100644 --- a/src/main/java/com/casic/service/impl/UserDataDelayReceiverImpl.java +++ b/src/main/java/com/casic/service/impl/UserDataDelayReceiverImpl.java @@ -3,19 +3,21 @@ import com.alibaba.druid.util.StringUtils; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.casic.dao.UserMapper; +import com.casic.config.dto.RoleDto; +import com.casic.dao.UsersMapper; import com.casic.enums.UserDataEnum; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.model.User; import com.casic.service.UserDataDelayReceiver; import com.casic.util.HttpRequest; -import com.casic.util.RSAUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.HashMap; @@ -26,10 +28,10 @@ /** * @author cz */ -@RequiredArgsConstructor @Slf4j @Service -public class UserDataDelayReceiverImpl extends ServiceImpl implements UserDataDelayReceiver, UserDataEnum { +@RequiredArgsConstructor +public class UserDataDelayReceiverImpl extends ServiceImpl implements UserDataDelayReceiver, UserDataEnum { @Value("${casic.device.appName}") private String appName; @@ -62,13 +64,13 @@ } private Map getLocalRoleData() { - List> roleMapList = this.baseMapper.getRolesByName(); + List roleMapList = this.baseMapper.getRolesByName(); Map roleMap = new HashMap<>(); - for (Map role : roleMapList) { - if (role.get("NAME").contains(ADMIN)) { - roleMap.put(role.get("ID"), ADMIN); + for (RoleDto role : roleMapList) { + if (role.getName().contains(ADMIN)) { + roleMap.put(String.valueOf(role.getId()), ADMIN); } else { - roleMap.put(role.get("ID"), MEMBER); + roleMap.put(String.valueOf(role.getId()), MEMBER); } } return roleMap; @@ -78,16 +80,20 @@ * 获取当前的用户信息列表 */ private Map getLocalUserData(Map roleMap) { - List localUserList = this.baseMapper.selectList(null); - localUserList.stream() - .filter(e -> roleMap.containsKey(e.getRoleId())) - .forEach( - localUser -> { - if (roleMap.containsKey(localUser.getRoleId())) { - localUser.setUserType(roleMap.get(localUser.getRoleId())); - } - } - ); + QueryWrapper queryWrapper = new QueryWrapper() + .eq("is_sync", "1"); + List localUserList = this.baseMapper.selectList(queryWrapper); + //过滤 + localUserList = localUserList.stream() + .filter(e -> roleMap.containsKey(e.getRoleId())).collect(Collectors.toList()); + //设置用户类型 + localUserList.forEach( + localUser -> { + if (roleMap.containsKey(localUser.getRoleId())) { + localUser.setUserType(roleMap.get(localUser.getRoleId())); + } + } + ); //userCode作为账号 Map userMap = localUserList.stream() .collect( @@ -103,28 +109,22 @@ List newUserCodeList = userCodeList.stream().filter( userCode -> !userMap.containsKey(userCode)).collect(Collectors.toList()); List editUserList = userCodeList.stream().filter( - userCode -> userMap.containsKey(userCode) && !userMap.get(userCode).getUserType().equals(key) + userCode -> userMap.containsKey(userCode) && !key.equals(userMap.get(userCode).getUserType()) ).collect(Collectors.toList()); - String roleId = ""; - Long deptId = null; + Long deptId = this.baseMapper.getDeptIdByName(); + String roleId = null; for (Map.Entry entry : roleMap.entrySet()) { if (entry.getValue().equals(key)) { roleId = entry.getKey(); } } - for (Map.Entry entry : userMap.entrySet()) { - if (entry.getValue().equals(key)) { - deptId = entry.getValue().getDeptId(); - break; - } - } - if (StringUtils.isEmpty(roleId)) { + if (StringUtils.isEmpty(roleId) || ObjectUtils.isEmpty(deptId)) { return; } //新增 - doAddUser(newUserCodeList, sourceMap, roleId, deptId); + doAddUser(newUserCodeList, sourceMap, String.valueOf(roleId), deptId); //更新 - doUpdateUser(editUserList, userMap, roleId); + doUpdateUser(editUserList, userMap, String.valueOf(roleId)); return; } @@ -132,14 +132,20 @@ * 新增用户 */ private void doAddUser(List newUserCodeList, Map sourceUserMap, String roleId, Long deptId) { + if (CollectionUtils.isEmpty(newUserCodeList)) { + return; + } List users = new ArrayList<>(); + Map userMap = null; for (String userCode : newUserCodeList) { JSONArray userArray = sourceUserMap.get(userCode); if (ObjectUtils.isNotEmpty(userArray)) { - Map userMap = userArray.stream().collect( - Collectors.toMap(e -> (String) ((JSONObject) e).get("name"), e -> (String) ((JSONObject) e).get("value")) + userMap = userArray.stream().collect( + Collectors.toMap(e -> (String) ((JSONObject) e).get("name"), e -> ((JSONObject) e).get("value")) ); - User user = new User(roleId, deptId); + User user = new User(); + user.setDeptId(deptId); + user.setRoleId(roleId); populateUser(user, userMap); users.add(user); } @@ -147,23 +153,18 @@ this.saveBatch(users); } - private void populateUser(User user, Map userMap) { + private void populateUser(User user, Map userMap) { //涉及盐值的计算等操作 - user.setAccount(userMap.get("userCode")); - user.setSex(Integer.valueOf(userMap.get("sex"))); - user.setName(userMap.get("userName")); + user.setSyncId(String.valueOf((Integer) userMap.get("userId"))); + user.setAccount((String) userMap.get("userCode")); + user.setSex((Integer) userMap.get("sex")); + user.setName((String) userMap.get("userName")); //设置密码 user.setPassword("111111"); - try { - user.setPassword(RSAUtils.decrypt(user.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); - } catch (Exception var5) { - log.error("密码解密异常", var5); - } - user.setSalt(userMap.get("userName")); user.setSalt(ShiroKit.getRandomSalt(5)); user.setPassword(ShiroKit.md5(user.getPassword(), user.getSalt())); - user.setEmail(userMap.get("email")); - user.setPhone(userMap.get("mobile")); + user.setEmail((String) userMap.get("email")); + user.setPhone((String) userMap.get("mobile")); user.setStatus("1"); user.setIsSync(1); user.setDelFlag("0"); @@ -173,6 +174,9 @@ * 更新用户 */ private void doUpdateUser(List editUserCodeList, Map userMap, String roleId) { + if (CollectionUtils.isEmpty(editUserCodeList)) { + return; + } List users = new ArrayList<>(); for (String editUser : editUserCodeList) { User user = userMap.get(editUser); @@ -191,16 +195,16 @@ */ private void doGetUserDataSource(Map> userListMap, String key, Map userMap, Map roleMap) { //获取管理员的信息 - List userList = userListMap.get(key); - for (String userPath : userList) { + List roleList = userListMap.get(key); + for (String userPath : roleList) { String userUrl = appUrl + FRAGMENT_PATH + appName + "/roles/" + userPath + "/allocatedUsers"; Object roleObject = HttpRequest.sendGet(userUrl); - JSONArray roleList = ((JSONArray) ((JSONObject) roleObject).get("items")); + JSONArray userList = ((JSONArray) ((JSONObject) roleObject).get("items")); List userCodeList = new ArrayList<>(); Map sourceMap = new HashMap<>(); - for (Object role : roleList) { - JSONArray dataList = (JSONArray) ((JSONObject) role).get("data"); - String userCode = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("userCode")).findFirst().get()).get("userCode"); + for (Object user : userList) { + JSONArray dataList = (JSONArray) ((JSONObject) user).get("data"); + String userCode = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("userCode")).findFirst().get()).get("value"); userCodeList.add(userCode); //和获取的用户列表进行比较管理员、userCode是否存在 sourceMap.put(userCode, dataList); @@ -224,8 +228,8 @@ List userList = new ArrayList<>(); for (Object role : roleList) { JSONArray dataList = (JSONArray) ((JSONObject) role).get("data"); - String roleName = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("roleName")).findFirst().get()).get("roleName"); - String roleCode = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("roleCode")).findFirst().get()).get("roleCode"); + String roleName = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("roleName")).findFirst().get()).get("value"); + String roleCode = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("roleCode")).findFirst().get()).get("value"); if (roleName.contains(MEMBER)) { userList.add(roleCode); } diff --git a/src/main/resources/config/application-dev.yml b/src/main/resources/config/application-dev.yml index ef7bf6a..e555596 100644 --- a/src/main/resources/config/application-dev.yml +++ b/src/main/resources/config/application-dev.yml @@ -15,16 +15,14 @@ password: ew5T4K3#203lwh redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer - # session: - # store-type: redis -#flowable数据源和多数据源配置 casic: kaptcha-open: false #是否开启登录时验证码 (true/false) - #kaptcha-open: false #是否开启登录时验证码 (true/false) db: init: enable: false spring-session-open: false #开启spring session + no-login-urls: /job/updateSinkJob,/user/login/token,/push/data,/config/confirm + logging: level.root: error level.com.casic: info diff --git a/pom.xml b/pom.xml index ec5ddc3..f02731e 100644 --- a/pom.xml +++ b/pom.xml @@ -74,11 +74,6 @@ 4.5.13 - - com.casic - casic-admin-core - 2.0.0.alpha - @@ -198,6 +193,25 @@ 1.8 + + + com.casic + casic-core + 2.0.0.alpha + + + + com.casic + casic-admin-support + 2.0.0.alpha + + + + com.casic + casic-admin-core + 2.0.0.alpha + + diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java index 9afd0b9..affdcb5 100644 --- a/src/main/java/com/casic/CasicApplication.java +++ b/src/main/java/com/casic/CasicApplication.java @@ -1,6 +1,7 @@ package com.casic; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @@ -19,7 +20,9 @@ @Slf4j @ComponentScan(basePackages= "com.casic.**") +@MapperScan(basePackages = {"com.casic.**.dao", "com.casic.**.mapper"}) @SpringBootApplication +@EnableTransactionManagement(proxyTargetClass = true) public class CasicApplication { public static void main(String[] args) { log.info("CasicApplication is success!"); diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java index 7d19680..1615fb8 100644 --- a/src/main/java/com/casic/config/CorsConfig.java +++ b/src/main/java/com/casic/config/CorsConfig.java @@ -1,31 +1,31 @@ -package com.casic.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.web.filter.CorsFilter; - -/** - * 基础框架 - 跨域请求配置 - */ -@Configuration -public class CorsConfig { - @Bean - public CorsFilter corsFilter() { - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", buildConfig()); - return new CorsFilter(source); - } - - private CorsConfiguration buildConfig() { - CorsConfiguration corsConfiguration = new CorsConfiguration(); - // 1允许任何域名使用 - corsConfiguration.addAllowedOrigin("*"); - // 2允许任何头 - corsConfiguration.addAllowedHeader("*"); - // 3允许任何方法(post、get等) - corsConfiguration.addAllowedMethod("*"); - return corsConfiguration; - } -} \ No newline at end of file +//package com.casic.config; +// +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.web.cors.CorsConfiguration; +//import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +//import org.springframework.web.filter.CorsFilter; +// +///** +// * 基础框架 - 跨域请求配置 +// */ +//@Configuration +//public class CorsConfig { +// @Bean +// public CorsFilter corsFilter() { +// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); +// source.registerCorsConfiguration("/**", buildConfig()); +// return new CorsFilter(source); +// } +// +// private CorsConfiguration buildConfig() { +// CorsConfiguration corsConfiguration = new CorsConfiguration(); +// // 1允许任何域名使用 +// corsConfiguration.addAllowedOrigin("*"); +// // 2允许任何头 +// corsConfiguration.addAllowedHeader("*"); +// // 3允许任何方法(post、get等) +// corsConfiguration.addAllowedMethod("*"); +// return corsConfiguration; +// } +//} \ No newline at end of file diff --git a/src/main/java/com/casic/config/dto/RoleDto.java b/src/main/java/com/casic/config/dto/RoleDto.java new file mode 100644 index 0000000..ca08f84 --- /dev/null +++ b/src/main/java/com/casic/config/dto/RoleDto.java @@ -0,0 +1,11 @@ +package com.casic.config.dto; + +import lombok.Data; + +@Data +public class RoleDto { + + private Long id; + private String name; + +} diff --git a/src/main/java/com/casic/config/task/TaskConfigurer.java b/src/main/java/com/casic/config/task/TaskConfigurer.java index 699c0e3..5a3a029 100644 --- a/src/main/java/com/casic/config/task/TaskConfigurer.java +++ b/src/main/java/com/casic/config/task/TaskConfigurer.java @@ -1,6 +1,7 @@ package com.casic.config.task; import com.casic.service.DeviceDataService; +import com.casic.service.IPartitionStrategyService; import com.casic.service.UserDataDelayReceiver; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; @@ -24,18 +25,30 @@ private String onlineStateCron; @Value("${casic.device.transfer-user.cron}") private String transferUserCron; - + @Value("${casic.device.partition.cron}") + private String partitionCron; private final DeviceDataService deviceDataService; private final UserDataDelayReceiver userDataDelayReceiver; + private final IPartitionStrategyService partitionStrategyService; @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { - TriggerTask triggrtTask = new TriggerTask(nextDayDevice(), + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), triggerContext -> { return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); }); - taskRegistrar.addTriggerTask(triggrtTask); + TriggerTask transferUserTask = new TriggerTask(getUserData(), + triggerContext -> { + return new CronTrigger(transferUserCron).nextExecutionTime(triggerContext); + }); + TriggerTask partitionTask = new TriggerTask(createPartition(), + triggerContext -> { + return new CronTrigger(partitionCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + taskRegistrar.addTriggerTask(transferUserTask); + taskRegistrar.addTriggerTask(partitionTask); } private Runnable nextDayDevice() { @@ -57,6 +70,18 @@ userDataDelayReceiver.saveNewUserData(); } }; + } + + /** + * 定时同步普光 + */ + private Runnable createPartition() { + return new Runnable() { + @Override + public void run() { + partitionStrategyService.createPartition("DATA_H2S", "data_h2s_log"); + } + }; } diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java index d7e3722..e6ae7bc 100644 --- a/src/main/java/com/casic/controller/DeviceDataController.java +++ b/src/main/java/com/casic/controller/DeviceDataController.java @@ -1,40 +1,40 @@ -package com.casic.controller; - -import com.alibaba.fastjson.JSON; -import com.casic.service.DeviceDataService; -import com.casic.service.ThirdDataService; -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.*; - -import java.util.Map; - -@RestController -@RequestMapping("/device") -@RequiredArgsConstructor -public class DeviceDataController { - - private final DeviceDataService deviceDataService; - - @RequestMapping("/recent-data") - public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "recentNum", required = true) String recentNum, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); - } - - @RequestMapping("/data/list-page") - public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "currentIndex", required = true) Integer currentIndex, - @RequestParam(value = "pageSize", required = true) Integer pageSize, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); - } - - @RequestMapping("/level/{deviceType}") - public Object getLevelList(@PathVariable("deviceType")String deviceType) { - return deviceDataService.getLevel(deviceType); - } - - - -} +//package com.casic.controller; +// +//import com.alibaba.fastjson.JSON; +//import com.casic.service.DeviceDataService; +//import com.casic.service.ThirdDataService; +//import lombok.RequiredArgsConstructor; +//import org.springframework.web.bind.annotation.*; +// +//import java.util.Map; +// +//@RestController +//@RequestMapping("/device") +//@RequiredArgsConstructor +//public class DeviceDataController { +// +// private final DeviceDataService deviceDataService; +// +// @RequestMapping("/recent-data") +// public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "recentNum", required = true) String recentNum, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); +// } +// +// @RequestMapping("/data/list-page") +// public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "currentIndex", required = true) Integer currentIndex, +// @RequestParam(value = "pageSize", required = true) Integer pageSize, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); +// } +// +// @RequestMapping("/level/{deviceType}") +// public Object getLevelList(@PathVariable("deviceType")String deviceType) { +// return deviceDataService.getLevel(deviceType); +// } +// +// +// +//} diff --git a/src/main/java/com/casic/dao/PartitionStrategyMapper.java b/src/main/java/com/casic/dao/PartitionStrategyMapper.java new file mode 100644 index 0000000..a9481d0 --- /dev/null +++ b/src/main/java/com/casic/dao/PartitionStrategyMapper.java @@ -0,0 +1,44 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; + +/** + * 分区mapper + * + * @author lwh + */ +@Mapper +public interface PartitionStrategyMapper { + + /** + * 当前表最大分区查询 + * + * @param tableName 分区表名称 + * @return + */ + String selectMaxId(@Param("tableName") String tableName, @Param("tableOwner") String tableOwner); + + /** + * 增加表分区 + * + * @param tableName 表名称 + * @param partitionName 分区名称 + * @param time 分区最大值 + */ + void createPartition(@Param("tableName") String tableName, @Param("partitionName") String partitionName, + @Param("time") String time, @Param("storage") String storage); + + /** + * 创建表空间 + * + * @param tableSpaceName 表空间名称 + * @param dataFilePath 文件地址 + * @param tableSpaceSize 表空间大小(单位 M) + */ + void createTableSpace(@Param("tableSpaceName") String tableSpaceName, @Param("dataFilePath") String dataFilePath, @Param("tableSpaceSize") Integer tableSpaceSize); + + +} diff --git a/src/main/java/com/casic/dao/UserMapper.java b/src/main/java/com/casic/dao/UserMapper.java deleted file mode 100644 index 266d786..0000000 --- a/src/main/java/com/casic/dao/UserMapper.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.model.User; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface UserMapper extends BaseMapper { - - - //获取所有的角色 - @Select(" SELECT id,name " + - " FROM sys_role " + - " where name like '达州%' ") - List> getRolesByName(); -} diff --git a/src/main/java/com/casic/dao/UsersMapper.java b/src/main/java/com/casic/dao/UsersMapper.java new file mode 100644 index 0000000..d394db7 --- /dev/null +++ b/src/main/java/com/casic/dao/UsersMapper.java @@ -0,0 +1,30 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.config.dto.RoleDto; +import com.casic.model.User; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * @author cz + */ + +@Mapper +public interface UsersMapper extends BaseMapper { + + @Select(" SELECT id,name " + + " FROM sys_role " + + " where name like '%达州%' " + + " AND DEL_FLAG=0 ") + List getRolesByName(); + + @Select("SELECT ID " + + "FROM SYS_DEPT " + + "WHERE SIMPLE_NAME LIKE '%达州%'" + + "AND DEL_FLAG=0 " + + "LIMIT 1 ") + Long getDeptIdByName(); +} diff --git a/src/main/java/com/casic/model/DataH2s.java b/src/main/java/com/casic/model/DataH2s.java index eaeef1f..b53b19e 100644 --- a/src/main/java/com/casic/model/DataH2s.java +++ b/src/main/java/com/casic/model/DataH2s.java @@ -15,7 +15,7 @@ @TableName("data_h2s") public class DataH2s { - @TableId(value = "ID", type = IdType.AUTO) + @TableId(value = "ID", type = IdType.ASSIGN_ID) private Long id; private String devcode; diff --git a/src/main/java/com/casic/model/User.java b/src/main/java/com/casic/model/User.java index b856672..8a7148a 100644 --- a/src/main/java/com/casic/model/User.java +++ b/src/main/java/com/casic/model/User.java @@ -21,6 +21,7 @@ type = IdType.ASSIGN_ID ) private Long id; + private String avatar; //userCode @@ -78,11 +79,6 @@ ) private String userType; - public User(String roleId, Long deptId) { - this.roleId=roleId; - this.deptId=deptId; - } - public Serializable pkVal() { return this.id; } diff --git a/src/main/java/com/casic/service/IPartitionStrategyService.java b/src/main/java/com/casic/service/IPartitionStrategyService.java new file mode 100644 index 0000000..3a4c82e --- /dev/null +++ b/src/main/java/com/casic/service/IPartitionStrategyService.java @@ -0,0 +1,25 @@ +package com.casic.service; + +/** + * 相差删除 + * + * @author cz + */ +public interface IPartitionStrategyService { + + + /** + * 表数据分区策略 + * + * @param tableName 分区表名称 + */ + void createPartition(String tableName, String tableSpaceFix); + + + /** + * 表空间创建 + * + * @param tableSpaceFix 表空间前缀 + */ + String createTableSpace(String tableSpaceFix); +} diff --git a/src/main/java/com/casic/service/impl/DataScopeBuilder.java b/src/main/java/com/casic/service/impl/DataScopeBuilder.java index 793312e..50be38f 100644 --- a/src/main/java/com/casic/service/impl/DataScopeBuilder.java +++ b/src/main/java/com/casic/service/impl/DataScopeBuilder.java @@ -36,10 +36,12 @@ } userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); List> deptUserList = new ArrayList<>(); - if (userDataScopeListMap.containsKey("2")) { + if (ObjectUtils.isNotEmpty(userDataScopeListMap.get("2"))) { deptUserList.addAll(userDataScopeListMap.get("2")); } - deptUserList.addAll(userDataScopeListMap.get("3")); + if (ObjectUtils.isNotEmpty(userDataScopeListMap.get("3"))) { + deptUserList.addAll(userDataScopeListMap.get("3")); + } if (ObjectUtils.isNotEmpty(deptId)) { userIdList.addAll(getParentDeptList(deptUserList, deptId)); } diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java index 2b51783..bd35978 100644 --- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java +++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java @@ -8,15 +8,16 @@ import com.casic.util.DeviceDataTableEnum; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.stream.Collector; import java.util.stream.Collectors; /** @@ -24,7 +25,6 @@ */ @Service @Slf4j -@RequiredArgsConstructor public class DeviceDataServiceImpl implements DeviceDataService { @Value("${casic.device.type}") @@ -33,7 +33,8 @@ @Value("${casic.device.data-day}") private Integer dataDay; - private final DeviceDataMapper deviceDataMapper; + @Resource + private DeviceDataMapper deviceDataMapper; @Override public Object getDeviceRecentData(String deviceType, String recentNum, String devcode) { diff --git a/src/main/java/com/casic/service/impl/PartitionStrategyServiceImpl.java b/src/main/java/com/casic/service/impl/PartitionStrategyServiceImpl.java new file mode 100644 index 0000000..50201dd --- /dev/null +++ b/src/main/java/com/casic/service/impl/PartitionStrategyServiceImpl.java @@ -0,0 +1,125 @@ +package com.casic.service.impl; + +import com.alibaba.druid.util.StringUtils; +import com.casic.dao.PartitionStrategyMapper; +import com.casic.service.IPartitionStrategyService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; + +/** + * 自动创建分区 + * + * @author cz + */ +@Service +@Slf4j +@RequiredArgsConstructor +public class PartitionStrategyServiceImpl implements IPartitionStrategyService { + /** + * 提前创建分区个数 + */ + @Value("${casic.ss.advancePartitionNum:3}") + private int advancePartitionNum; + /** + * 分区创建间隔(天) + */ + @Value("${casic.ss.partitionInterval:7}") + private int partitionInterval; + /** + * 分区创建间隔(天) + */ + @Value("${casic.ss.dbName:CASIC203}") + private String partitionDbName; + + @Value("${casic.ss.dataFilePath:c:\\dm\\}") + private String dataFilePath; + + @Value("${casic.ss.enableTableSpace:false}") + private boolean enableTableSpace; + + @Value("${casic.ss.tableSpaceSize:512}") + private int tableSpaceSize; + + private final PartitionStrategyMapper partitionStrategyMapper; + + @Override + public void createPartition(String tableName, String tableSpaceFix) { + Calendar end = Calendar.getInstance(); + String storage = null; +// if (enableTableSpace) { +// storage = createTableSpace(tableSpaceFix); +// } + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd"); + SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + end.add(Calendar.DAY_OF_MONTH, advancePartitionNum * partitionInterval); + Long maxTime = end.getTimeInMillis(); + String timeStr = partitionStrategyMapper.selectMaxId(tableName, "XLJC"); + String tempTableName = "XLJC." + tableName; + Long time = null; + if (StringUtils.isEmpty(timeStr) && timeStr.contains("DATE")) { + time = System.currentTimeMillis(); + } else { + timeStr = timeStr.substring(9); + try { + time = Long.valueOf(sdf1.parse(timeStr).getTime()); + } catch (ParseException rx) { + log.error("转换日期异常"); + } finally { + if (time == null) { + time = System.currentTimeMillis(); + } + } + } + //必须超出一天进行创建表 + if (maxTime - time > 86400000000L) { + while (time <= maxTime) { + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(time); + calendar.add(Calendar.DAY_OF_MONTH, partitionInterval); + time = calendar.getTimeInMillis(); + Date date = new Date(time); + String parTime = "\'" + sdf2.format(time) + "'"; + partitionStrategyMapper.createPartition(tempTableName, "P" + sdf1.format(date).substring(2), parTime, storage); + } + } +// if (tableName.equals("T_CLOCK_DATA")) { +// tempTableName = "CASIC_SYSTEM." + tableName; +// time = partitionStrategyMapper.selectMaxId(tableName, "CASIC_SYSTEM"); +// if (ObjectUtils.isEmpty(time)) { +// time = Calendar.getInstance().getTimeInMillis(); +// } +// while (time <= maxTime) { +// Calendar calendar = Calendar.getInstance(); +// calendar.setTimeInMillis(time); +// calendar.add(Calendar.DAY_OF_MONTH, partitionInterval); +// time = calendar.getTimeInMillis(); +// String formatTime = DateUtil.format(new Date(time), "yyyyMMdd"); +// partitionStrategyMapper.createPartition(tempTableName, "P" + formatTime.substring(2), time, storage); +// } +// } + } + + /** + * .*2021-12.* + * 创建表空间 + */ + @Override + public String createTableSpace(String tableSpaceFix) { +// String currMouth = tableSpaceFix + DateUtil.format(new Date(), "yyyyMM"); +// //判断当月度分区是否已经存在 +// if (!FileUtil.exist(dataFilePath, ".*" + currMouth + ".*")) { +// String pathFile = "'" + dataFilePath + currMouth + ".dbf" + "'"; +// partitionStrategyMapper.createTableSpace(currMouth, pathFile, tableSpaceSize); +// } +// return currMouth; + return null; + } + +} diff --git a/src/main/java/com/casic/service/impl/UserDataDelayReceiverImpl.java b/src/main/java/com/casic/service/impl/UserDataDelayReceiverImpl.java index a3de00d..1be4a99 100644 --- a/src/main/java/com/casic/service/impl/UserDataDelayReceiverImpl.java +++ b/src/main/java/com/casic/service/impl/UserDataDelayReceiverImpl.java @@ -3,19 +3,21 @@ import com.alibaba.druid.util.StringUtils; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.casic.dao.UserMapper; +import com.casic.config.dto.RoleDto; +import com.casic.dao.UsersMapper; import com.casic.enums.UserDataEnum; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.model.User; import com.casic.service.UserDataDelayReceiver; import com.casic.util.HttpRequest; -import com.casic.util.RSAUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.HashMap; @@ -26,10 +28,10 @@ /** * @author cz */ -@RequiredArgsConstructor @Slf4j @Service -public class UserDataDelayReceiverImpl extends ServiceImpl implements UserDataDelayReceiver, UserDataEnum { +@RequiredArgsConstructor +public class UserDataDelayReceiverImpl extends ServiceImpl implements UserDataDelayReceiver, UserDataEnum { @Value("${casic.device.appName}") private String appName; @@ -62,13 +64,13 @@ } private Map getLocalRoleData() { - List> roleMapList = this.baseMapper.getRolesByName(); + List roleMapList = this.baseMapper.getRolesByName(); Map roleMap = new HashMap<>(); - for (Map role : roleMapList) { - if (role.get("NAME").contains(ADMIN)) { - roleMap.put(role.get("ID"), ADMIN); + for (RoleDto role : roleMapList) { + if (role.getName().contains(ADMIN)) { + roleMap.put(String.valueOf(role.getId()), ADMIN); } else { - roleMap.put(role.get("ID"), MEMBER); + roleMap.put(String.valueOf(role.getId()), MEMBER); } } return roleMap; @@ -78,16 +80,20 @@ * 获取当前的用户信息列表 */ private Map getLocalUserData(Map roleMap) { - List localUserList = this.baseMapper.selectList(null); - localUserList.stream() - .filter(e -> roleMap.containsKey(e.getRoleId())) - .forEach( - localUser -> { - if (roleMap.containsKey(localUser.getRoleId())) { - localUser.setUserType(roleMap.get(localUser.getRoleId())); - } - } - ); + QueryWrapper queryWrapper = new QueryWrapper() + .eq("is_sync", "1"); + List localUserList = this.baseMapper.selectList(queryWrapper); + //过滤 + localUserList = localUserList.stream() + .filter(e -> roleMap.containsKey(e.getRoleId())).collect(Collectors.toList()); + //设置用户类型 + localUserList.forEach( + localUser -> { + if (roleMap.containsKey(localUser.getRoleId())) { + localUser.setUserType(roleMap.get(localUser.getRoleId())); + } + } + ); //userCode作为账号 Map userMap = localUserList.stream() .collect( @@ -103,28 +109,22 @@ List newUserCodeList = userCodeList.stream().filter( userCode -> !userMap.containsKey(userCode)).collect(Collectors.toList()); List editUserList = userCodeList.stream().filter( - userCode -> userMap.containsKey(userCode) && !userMap.get(userCode).getUserType().equals(key) + userCode -> userMap.containsKey(userCode) && !key.equals(userMap.get(userCode).getUserType()) ).collect(Collectors.toList()); - String roleId = ""; - Long deptId = null; + Long deptId = this.baseMapper.getDeptIdByName(); + String roleId = null; for (Map.Entry entry : roleMap.entrySet()) { if (entry.getValue().equals(key)) { roleId = entry.getKey(); } } - for (Map.Entry entry : userMap.entrySet()) { - if (entry.getValue().equals(key)) { - deptId = entry.getValue().getDeptId(); - break; - } - } - if (StringUtils.isEmpty(roleId)) { + if (StringUtils.isEmpty(roleId) || ObjectUtils.isEmpty(deptId)) { return; } //新增 - doAddUser(newUserCodeList, sourceMap, roleId, deptId); + doAddUser(newUserCodeList, sourceMap, String.valueOf(roleId), deptId); //更新 - doUpdateUser(editUserList, userMap, roleId); + doUpdateUser(editUserList, userMap, String.valueOf(roleId)); return; } @@ -132,14 +132,20 @@ * 新增用户 */ private void doAddUser(List newUserCodeList, Map sourceUserMap, String roleId, Long deptId) { + if (CollectionUtils.isEmpty(newUserCodeList)) { + return; + } List users = new ArrayList<>(); + Map userMap = null; for (String userCode : newUserCodeList) { JSONArray userArray = sourceUserMap.get(userCode); if (ObjectUtils.isNotEmpty(userArray)) { - Map userMap = userArray.stream().collect( - Collectors.toMap(e -> (String) ((JSONObject) e).get("name"), e -> (String) ((JSONObject) e).get("value")) + userMap = userArray.stream().collect( + Collectors.toMap(e -> (String) ((JSONObject) e).get("name"), e -> ((JSONObject) e).get("value")) ); - User user = new User(roleId, deptId); + User user = new User(); + user.setDeptId(deptId); + user.setRoleId(roleId); populateUser(user, userMap); users.add(user); } @@ -147,23 +153,18 @@ this.saveBatch(users); } - private void populateUser(User user, Map userMap) { + private void populateUser(User user, Map userMap) { //涉及盐值的计算等操作 - user.setAccount(userMap.get("userCode")); - user.setSex(Integer.valueOf(userMap.get("sex"))); - user.setName(userMap.get("userName")); + user.setSyncId(String.valueOf((Integer) userMap.get("userId"))); + user.setAccount((String) userMap.get("userCode")); + user.setSex((Integer) userMap.get("sex")); + user.setName((String) userMap.get("userName")); //设置密码 user.setPassword("111111"); - try { - user.setPassword(RSAUtils.decrypt(user.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); - } catch (Exception var5) { - log.error("密码解密异常", var5); - } - user.setSalt(userMap.get("userName")); user.setSalt(ShiroKit.getRandomSalt(5)); user.setPassword(ShiroKit.md5(user.getPassword(), user.getSalt())); - user.setEmail(userMap.get("email")); - user.setPhone(userMap.get("mobile")); + user.setEmail((String) userMap.get("email")); + user.setPhone((String) userMap.get("mobile")); user.setStatus("1"); user.setIsSync(1); user.setDelFlag("0"); @@ -173,6 +174,9 @@ * 更新用户 */ private void doUpdateUser(List editUserCodeList, Map userMap, String roleId) { + if (CollectionUtils.isEmpty(editUserCodeList)) { + return; + } List users = new ArrayList<>(); for (String editUser : editUserCodeList) { User user = userMap.get(editUser); @@ -191,16 +195,16 @@ */ private void doGetUserDataSource(Map> userListMap, String key, Map userMap, Map roleMap) { //获取管理员的信息 - List userList = userListMap.get(key); - for (String userPath : userList) { + List roleList = userListMap.get(key); + for (String userPath : roleList) { String userUrl = appUrl + FRAGMENT_PATH + appName + "/roles/" + userPath + "/allocatedUsers"; Object roleObject = HttpRequest.sendGet(userUrl); - JSONArray roleList = ((JSONArray) ((JSONObject) roleObject).get("items")); + JSONArray userList = ((JSONArray) ((JSONObject) roleObject).get("items")); List userCodeList = new ArrayList<>(); Map sourceMap = new HashMap<>(); - for (Object role : roleList) { - JSONArray dataList = (JSONArray) ((JSONObject) role).get("data"); - String userCode = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("userCode")).findFirst().get()).get("userCode"); + for (Object user : userList) { + JSONArray dataList = (JSONArray) ((JSONObject) user).get("data"); + String userCode = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("userCode")).findFirst().get()).get("value"); userCodeList.add(userCode); //和获取的用户列表进行比较管理员、userCode是否存在 sourceMap.put(userCode, dataList); @@ -224,8 +228,8 @@ List userList = new ArrayList<>(); for (Object role : roleList) { JSONArray dataList = (JSONArray) ((JSONObject) role).get("data"); - String roleName = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("roleName")).findFirst().get()).get("roleName"); - String roleCode = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("roleCode")).findFirst().get()).get("roleCode"); + String roleName = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("roleName")).findFirst().get()).get("value"); + String roleCode = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("roleCode")).findFirst().get()).get("value"); if (roleName.contains(MEMBER)) { userList.add(roleCode); } diff --git a/src/main/resources/config/application-dev.yml b/src/main/resources/config/application-dev.yml index ef7bf6a..e555596 100644 --- a/src/main/resources/config/application-dev.yml +++ b/src/main/resources/config/application-dev.yml @@ -15,16 +15,14 @@ password: ew5T4K3#203lwh redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer - # session: - # store-type: redis -#flowable数据源和多数据源配置 casic: kaptcha-open: false #是否开启登录时验证码 (true/false) - #kaptcha-open: false #是否开启登录时验证码 (true/false) db: init: enable: false spring-session-open: false #开启spring session + no-login-urls: /job/updateSinkJob,/user/login/token,/push/data,/config/confirm + logging: level.root: error level.com.casic: info diff --git a/src/main/resources/config/application-dz.yml b/src/main/resources/config/application-dz.yml index ef3f9da..ceabc64 100644 --- a/src/main/resources/config/application-dz.yml +++ b/src/main/resources/config/application-dz.yml @@ -25,6 +25,7 @@ init: enable: false spring-session-open: false #开启spring session + no-login-urls: /job/updateSinkJob,/user/login/token,/push/data,/config/confirm logging: level.root: error level.com.casic: info diff --git a/pom.xml b/pom.xml index ec5ddc3..f02731e 100644 --- a/pom.xml +++ b/pom.xml @@ -74,11 +74,6 @@ 4.5.13 - - com.casic - casic-admin-core - 2.0.0.alpha - @@ -198,6 +193,25 @@ 1.8 + + + com.casic + casic-core + 2.0.0.alpha + + + + com.casic + casic-admin-support + 2.0.0.alpha + + + + com.casic + casic-admin-core + 2.0.0.alpha + + diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java index 9afd0b9..affdcb5 100644 --- a/src/main/java/com/casic/CasicApplication.java +++ b/src/main/java/com/casic/CasicApplication.java @@ -1,6 +1,7 @@ package com.casic; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @@ -19,7 +20,9 @@ @Slf4j @ComponentScan(basePackages= "com.casic.**") +@MapperScan(basePackages = {"com.casic.**.dao", "com.casic.**.mapper"}) @SpringBootApplication +@EnableTransactionManagement(proxyTargetClass = true) public class CasicApplication { public static void main(String[] args) { log.info("CasicApplication is success!"); diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java index 7d19680..1615fb8 100644 --- a/src/main/java/com/casic/config/CorsConfig.java +++ b/src/main/java/com/casic/config/CorsConfig.java @@ -1,31 +1,31 @@ -package com.casic.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.web.filter.CorsFilter; - -/** - * 基础框架 - 跨域请求配置 - */ -@Configuration -public class CorsConfig { - @Bean - public CorsFilter corsFilter() { - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", buildConfig()); - return new CorsFilter(source); - } - - private CorsConfiguration buildConfig() { - CorsConfiguration corsConfiguration = new CorsConfiguration(); - // 1允许任何域名使用 - corsConfiguration.addAllowedOrigin("*"); - // 2允许任何头 - corsConfiguration.addAllowedHeader("*"); - // 3允许任何方法(post、get等) - corsConfiguration.addAllowedMethod("*"); - return corsConfiguration; - } -} \ No newline at end of file +//package com.casic.config; +// +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.web.cors.CorsConfiguration; +//import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +//import org.springframework.web.filter.CorsFilter; +// +///** +// * 基础框架 - 跨域请求配置 +// */ +//@Configuration +//public class CorsConfig { +// @Bean +// public CorsFilter corsFilter() { +// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); +// source.registerCorsConfiguration("/**", buildConfig()); +// return new CorsFilter(source); +// } +// +// private CorsConfiguration buildConfig() { +// CorsConfiguration corsConfiguration = new CorsConfiguration(); +// // 1允许任何域名使用 +// corsConfiguration.addAllowedOrigin("*"); +// // 2允许任何头 +// corsConfiguration.addAllowedHeader("*"); +// // 3允许任何方法(post、get等) +// corsConfiguration.addAllowedMethod("*"); +// return corsConfiguration; +// } +//} \ No newline at end of file diff --git a/src/main/java/com/casic/config/dto/RoleDto.java b/src/main/java/com/casic/config/dto/RoleDto.java new file mode 100644 index 0000000..ca08f84 --- /dev/null +++ b/src/main/java/com/casic/config/dto/RoleDto.java @@ -0,0 +1,11 @@ +package com.casic.config.dto; + +import lombok.Data; + +@Data +public class RoleDto { + + private Long id; + private String name; + +} diff --git a/src/main/java/com/casic/config/task/TaskConfigurer.java b/src/main/java/com/casic/config/task/TaskConfigurer.java index 699c0e3..5a3a029 100644 --- a/src/main/java/com/casic/config/task/TaskConfigurer.java +++ b/src/main/java/com/casic/config/task/TaskConfigurer.java @@ -1,6 +1,7 @@ package com.casic.config.task; import com.casic.service.DeviceDataService; +import com.casic.service.IPartitionStrategyService; import com.casic.service.UserDataDelayReceiver; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; @@ -24,18 +25,30 @@ private String onlineStateCron; @Value("${casic.device.transfer-user.cron}") private String transferUserCron; - + @Value("${casic.device.partition.cron}") + private String partitionCron; private final DeviceDataService deviceDataService; private final UserDataDelayReceiver userDataDelayReceiver; + private final IPartitionStrategyService partitionStrategyService; @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { - TriggerTask triggrtTask = new TriggerTask(nextDayDevice(), + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), triggerContext -> { return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); }); - taskRegistrar.addTriggerTask(triggrtTask); + TriggerTask transferUserTask = new TriggerTask(getUserData(), + triggerContext -> { + return new CronTrigger(transferUserCron).nextExecutionTime(triggerContext); + }); + TriggerTask partitionTask = new TriggerTask(createPartition(), + triggerContext -> { + return new CronTrigger(partitionCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + taskRegistrar.addTriggerTask(transferUserTask); + taskRegistrar.addTriggerTask(partitionTask); } private Runnable nextDayDevice() { @@ -57,6 +70,18 @@ userDataDelayReceiver.saveNewUserData(); } }; + } + + /** + * 定时同步普光 + */ + private Runnable createPartition() { + return new Runnable() { + @Override + public void run() { + partitionStrategyService.createPartition("DATA_H2S", "data_h2s_log"); + } + }; } diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java index d7e3722..e6ae7bc 100644 --- a/src/main/java/com/casic/controller/DeviceDataController.java +++ b/src/main/java/com/casic/controller/DeviceDataController.java @@ -1,40 +1,40 @@ -package com.casic.controller; - -import com.alibaba.fastjson.JSON; -import com.casic.service.DeviceDataService; -import com.casic.service.ThirdDataService; -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.*; - -import java.util.Map; - -@RestController -@RequestMapping("/device") -@RequiredArgsConstructor -public class DeviceDataController { - - private final DeviceDataService deviceDataService; - - @RequestMapping("/recent-data") - public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "recentNum", required = true) String recentNum, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); - } - - @RequestMapping("/data/list-page") - public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "currentIndex", required = true) Integer currentIndex, - @RequestParam(value = "pageSize", required = true) Integer pageSize, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); - } - - @RequestMapping("/level/{deviceType}") - public Object getLevelList(@PathVariable("deviceType")String deviceType) { - return deviceDataService.getLevel(deviceType); - } - - - -} +//package com.casic.controller; +// +//import com.alibaba.fastjson.JSON; +//import com.casic.service.DeviceDataService; +//import com.casic.service.ThirdDataService; +//import lombok.RequiredArgsConstructor; +//import org.springframework.web.bind.annotation.*; +// +//import java.util.Map; +// +//@RestController +//@RequestMapping("/device") +//@RequiredArgsConstructor +//public class DeviceDataController { +// +// private final DeviceDataService deviceDataService; +// +// @RequestMapping("/recent-data") +// public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "recentNum", required = true) String recentNum, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); +// } +// +// @RequestMapping("/data/list-page") +// public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "currentIndex", required = true) Integer currentIndex, +// @RequestParam(value = "pageSize", required = true) Integer pageSize, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); +// } +// +// @RequestMapping("/level/{deviceType}") +// public Object getLevelList(@PathVariable("deviceType")String deviceType) { +// return deviceDataService.getLevel(deviceType); +// } +// +// +// +//} diff --git a/src/main/java/com/casic/dao/PartitionStrategyMapper.java b/src/main/java/com/casic/dao/PartitionStrategyMapper.java new file mode 100644 index 0000000..a9481d0 --- /dev/null +++ b/src/main/java/com/casic/dao/PartitionStrategyMapper.java @@ -0,0 +1,44 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; + +/** + * 分区mapper + * + * @author lwh + */ +@Mapper +public interface PartitionStrategyMapper { + + /** + * 当前表最大分区查询 + * + * @param tableName 分区表名称 + * @return + */ + String selectMaxId(@Param("tableName") String tableName, @Param("tableOwner") String tableOwner); + + /** + * 增加表分区 + * + * @param tableName 表名称 + * @param partitionName 分区名称 + * @param time 分区最大值 + */ + void createPartition(@Param("tableName") String tableName, @Param("partitionName") String partitionName, + @Param("time") String time, @Param("storage") String storage); + + /** + * 创建表空间 + * + * @param tableSpaceName 表空间名称 + * @param dataFilePath 文件地址 + * @param tableSpaceSize 表空间大小(单位 M) + */ + void createTableSpace(@Param("tableSpaceName") String tableSpaceName, @Param("dataFilePath") String dataFilePath, @Param("tableSpaceSize") Integer tableSpaceSize); + + +} diff --git a/src/main/java/com/casic/dao/UserMapper.java b/src/main/java/com/casic/dao/UserMapper.java deleted file mode 100644 index 266d786..0000000 --- a/src/main/java/com/casic/dao/UserMapper.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.model.User; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface UserMapper extends BaseMapper { - - - //获取所有的角色 - @Select(" SELECT id,name " + - " FROM sys_role " + - " where name like '达州%' ") - List> getRolesByName(); -} diff --git a/src/main/java/com/casic/dao/UsersMapper.java b/src/main/java/com/casic/dao/UsersMapper.java new file mode 100644 index 0000000..d394db7 --- /dev/null +++ b/src/main/java/com/casic/dao/UsersMapper.java @@ -0,0 +1,30 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.config.dto.RoleDto; +import com.casic.model.User; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * @author cz + */ + +@Mapper +public interface UsersMapper extends BaseMapper { + + @Select(" SELECT id,name " + + " FROM sys_role " + + " where name like '%达州%' " + + " AND DEL_FLAG=0 ") + List getRolesByName(); + + @Select("SELECT ID " + + "FROM SYS_DEPT " + + "WHERE SIMPLE_NAME LIKE '%达州%'" + + "AND DEL_FLAG=0 " + + "LIMIT 1 ") + Long getDeptIdByName(); +} diff --git a/src/main/java/com/casic/model/DataH2s.java b/src/main/java/com/casic/model/DataH2s.java index eaeef1f..b53b19e 100644 --- a/src/main/java/com/casic/model/DataH2s.java +++ b/src/main/java/com/casic/model/DataH2s.java @@ -15,7 +15,7 @@ @TableName("data_h2s") public class DataH2s { - @TableId(value = "ID", type = IdType.AUTO) + @TableId(value = "ID", type = IdType.ASSIGN_ID) private Long id; private String devcode; diff --git a/src/main/java/com/casic/model/User.java b/src/main/java/com/casic/model/User.java index b856672..8a7148a 100644 --- a/src/main/java/com/casic/model/User.java +++ b/src/main/java/com/casic/model/User.java @@ -21,6 +21,7 @@ type = IdType.ASSIGN_ID ) private Long id; + private String avatar; //userCode @@ -78,11 +79,6 @@ ) private String userType; - public User(String roleId, Long deptId) { - this.roleId=roleId; - this.deptId=deptId; - } - public Serializable pkVal() { return this.id; } diff --git a/src/main/java/com/casic/service/IPartitionStrategyService.java b/src/main/java/com/casic/service/IPartitionStrategyService.java new file mode 100644 index 0000000..3a4c82e --- /dev/null +++ b/src/main/java/com/casic/service/IPartitionStrategyService.java @@ -0,0 +1,25 @@ +package com.casic.service; + +/** + * 相差删除 + * + * @author cz + */ +public interface IPartitionStrategyService { + + + /** + * 表数据分区策略 + * + * @param tableName 分区表名称 + */ + void createPartition(String tableName, String tableSpaceFix); + + + /** + * 表空间创建 + * + * @param tableSpaceFix 表空间前缀 + */ + String createTableSpace(String tableSpaceFix); +} diff --git a/src/main/java/com/casic/service/impl/DataScopeBuilder.java b/src/main/java/com/casic/service/impl/DataScopeBuilder.java index 793312e..50be38f 100644 --- a/src/main/java/com/casic/service/impl/DataScopeBuilder.java +++ b/src/main/java/com/casic/service/impl/DataScopeBuilder.java @@ -36,10 +36,12 @@ } userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); List> deptUserList = new ArrayList<>(); - if (userDataScopeListMap.containsKey("2")) { + if (ObjectUtils.isNotEmpty(userDataScopeListMap.get("2"))) { deptUserList.addAll(userDataScopeListMap.get("2")); } - deptUserList.addAll(userDataScopeListMap.get("3")); + if (ObjectUtils.isNotEmpty(userDataScopeListMap.get("3"))) { + deptUserList.addAll(userDataScopeListMap.get("3")); + } if (ObjectUtils.isNotEmpty(deptId)) { userIdList.addAll(getParentDeptList(deptUserList, deptId)); } diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java index 2b51783..bd35978 100644 --- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java +++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java @@ -8,15 +8,16 @@ import com.casic.util.DeviceDataTableEnum; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.stream.Collector; import java.util.stream.Collectors; /** @@ -24,7 +25,6 @@ */ @Service @Slf4j -@RequiredArgsConstructor public class DeviceDataServiceImpl implements DeviceDataService { @Value("${casic.device.type}") @@ -33,7 +33,8 @@ @Value("${casic.device.data-day}") private Integer dataDay; - private final DeviceDataMapper deviceDataMapper; + @Resource + private DeviceDataMapper deviceDataMapper; @Override public Object getDeviceRecentData(String deviceType, String recentNum, String devcode) { diff --git a/src/main/java/com/casic/service/impl/PartitionStrategyServiceImpl.java b/src/main/java/com/casic/service/impl/PartitionStrategyServiceImpl.java new file mode 100644 index 0000000..50201dd --- /dev/null +++ b/src/main/java/com/casic/service/impl/PartitionStrategyServiceImpl.java @@ -0,0 +1,125 @@ +package com.casic.service.impl; + +import com.alibaba.druid.util.StringUtils; +import com.casic.dao.PartitionStrategyMapper; +import com.casic.service.IPartitionStrategyService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; + +/** + * 自动创建分区 + * + * @author cz + */ +@Service +@Slf4j +@RequiredArgsConstructor +public class PartitionStrategyServiceImpl implements IPartitionStrategyService { + /** + * 提前创建分区个数 + */ + @Value("${casic.ss.advancePartitionNum:3}") + private int advancePartitionNum; + /** + * 分区创建间隔(天) + */ + @Value("${casic.ss.partitionInterval:7}") + private int partitionInterval; + /** + * 分区创建间隔(天) + */ + @Value("${casic.ss.dbName:CASIC203}") + private String partitionDbName; + + @Value("${casic.ss.dataFilePath:c:\\dm\\}") + private String dataFilePath; + + @Value("${casic.ss.enableTableSpace:false}") + private boolean enableTableSpace; + + @Value("${casic.ss.tableSpaceSize:512}") + private int tableSpaceSize; + + private final PartitionStrategyMapper partitionStrategyMapper; + + @Override + public void createPartition(String tableName, String tableSpaceFix) { + Calendar end = Calendar.getInstance(); + String storage = null; +// if (enableTableSpace) { +// storage = createTableSpace(tableSpaceFix); +// } + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd"); + SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + end.add(Calendar.DAY_OF_MONTH, advancePartitionNum * partitionInterval); + Long maxTime = end.getTimeInMillis(); + String timeStr = partitionStrategyMapper.selectMaxId(tableName, "XLJC"); + String tempTableName = "XLJC." + tableName; + Long time = null; + if (StringUtils.isEmpty(timeStr) && timeStr.contains("DATE")) { + time = System.currentTimeMillis(); + } else { + timeStr = timeStr.substring(9); + try { + time = Long.valueOf(sdf1.parse(timeStr).getTime()); + } catch (ParseException rx) { + log.error("转换日期异常"); + } finally { + if (time == null) { + time = System.currentTimeMillis(); + } + } + } + //必须超出一天进行创建表 + if (maxTime - time > 86400000000L) { + while (time <= maxTime) { + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(time); + calendar.add(Calendar.DAY_OF_MONTH, partitionInterval); + time = calendar.getTimeInMillis(); + Date date = new Date(time); + String parTime = "\'" + sdf2.format(time) + "'"; + partitionStrategyMapper.createPartition(tempTableName, "P" + sdf1.format(date).substring(2), parTime, storage); + } + } +// if (tableName.equals("T_CLOCK_DATA")) { +// tempTableName = "CASIC_SYSTEM." + tableName; +// time = partitionStrategyMapper.selectMaxId(tableName, "CASIC_SYSTEM"); +// if (ObjectUtils.isEmpty(time)) { +// time = Calendar.getInstance().getTimeInMillis(); +// } +// while (time <= maxTime) { +// Calendar calendar = Calendar.getInstance(); +// calendar.setTimeInMillis(time); +// calendar.add(Calendar.DAY_OF_MONTH, partitionInterval); +// time = calendar.getTimeInMillis(); +// String formatTime = DateUtil.format(new Date(time), "yyyyMMdd"); +// partitionStrategyMapper.createPartition(tempTableName, "P" + formatTime.substring(2), time, storage); +// } +// } + } + + /** + * .*2021-12.* + * 创建表空间 + */ + @Override + public String createTableSpace(String tableSpaceFix) { +// String currMouth = tableSpaceFix + DateUtil.format(new Date(), "yyyyMM"); +// //判断当月度分区是否已经存在 +// if (!FileUtil.exist(dataFilePath, ".*" + currMouth + ".*")) { +// String pathFile = "'" + dataFilePath + currMouth + ".dbf" + "'"; +// partitionStrategyMapper.createTableSpace(currMouth, pathFile, tableSpaceSize); +// } +// return currMouth; + return null; + } + +} diff --git a/src/main/java/com/casic/service/impl/UserDataDelayReceiverImpl.java b/src/main/java/com/casic/service/impl/UserDataDelayReceiverImpl.java index a3de00d..1be4a99 100644 --- a/src/main/java/com/casic/service/impl/UserDataDelayReceiverImpl.java +++ b/src/main/java/com/casic/service/impl/UserDataDelayReceiverImpl.java @@ -3,19 +3,21 @@ import com.alibaba.druid.util.StringUtils; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.casic.dao.UserMapper; +import com.casic.config.dto.RoleDto; +import com.casic.dao.UsersMapper; import com.casic.enums.UserDataEnum; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.model.User; import com.casic.service.UserDataDelayReceiver; import com.casic.util.HttpRequest; -import com.casic.util.RSAUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.HashMap; @@ -26,10 +28,10 @@ /** * @author cz */ -@RequiredArgsConstructor @Slf4j @Service -public class UserDataDelayReceiverImpl extends ServiceImpl implements UserDataDelayReceiver, UserDataEnum { +@RequiredArgsConstructor +public class UserDataDelayReceiverImpl extends ServiceImpl implements UserDataDelayReceiver, UserDataEnum { @Value("${casic.device.appName}") private String appName; @@ -62,13 +64,13 @@ } private Map getLocalRoleData() { - List> roleMapList = this.baseMapper.getRolesByName(); + List roleMapList = this.baseMapper.getRolesByName(); Map roleMap = new HashMap<>(); - for (Map role : roleMapList) { - if (role.get("NAME").contains(ADMIN)) { - roleMap.put(role.get("ID"), ADMIN); + for (RoleDto role : roleMapList) { + if (role.getName().contains(ADMIN)) { + roleMap.put(String.valueOf(role.getId()), ADMIN); } else { - roleMap.put(role.get("ID"), MEMBER); + roleMap.put(String.valueOf(role.getId()), MEMBER); } } return roleMap; @@ -78,16 +80,20 @@ * 获取当前的用户信息列表 */ private Map getLocalUserData(Map roleMap) { - List localUserList = this.baseMapper.selectList(null); - localUserList.stream() - .filter(e -> roleMap.containsKey(e.getRoleId())) - .forEach( - localUser -> { - if (roleMap.containsKey(localUser.getRoleId())) { - localUser.setUserType(roleMap.get(localUser.getRoleId())); - } - } - ); + QueryWrapper queryWrapper = new QueryWrapper() + .eq("is_sync", "1"); + List localUserList = this.baseMapper.selectList(queryWrapper); + //过滤 + localUserList = localUserList.stream() + .filter(e -> roleMap.containsKey(e.getRoleId())).collect(Collectors.toList()); + //设置用户类型 + localUserList.forEach( + localUser -> { + if (roleMap.containsKey(localUser.getRoleId())) { + localUser.setUserType(roleMap.get(localUser.getRoleId())); + } + } + ); //userCode作为账号 Map userMap = localUserList.stream() .collect( @@ -103,28 +109,22 @@ List newUserCodeList = userCodeList.stream().filter( userCode -> !userMap.containsKey(userCode)).collect(Collectors.toList()); List editUserList = userCodeList.stream().filter( - userCode -> userMap.containsKey(userCode) && !userMap.get(userCode).getUserType().equals(key) + userCode -> userMap.containsKey(userCode) && !key.equals(userMap.get(userCode).getUserType()) ).collect(Collectors.toList()); - String roleId = ""; - Long deptId = null; + Long deptId = this.baseMapper.getDeptIdByName(); + String roleId = null; for (Map.Entry entry : roleMap.entrySet()) { if (entry.getValue().equals(key)) { roleId = entry.getKey(); } } - for (Map.Entry entry : userMap.entrySet()) { - if (entry.getValue().equals(key)) { - deptId = entry.getValue().getDeptId(); - break; - } - } - if (StringUtils.isEmpty(roleId)) { + if (StringUtils.isEmpty(roleId) || ObjectUtils.isEmpty(deptId)) { return; } //新增 - doAddUser(newUserCodeList, sourceMap, roleId, deptId); + doAddUser(newUserCodeList, sourceMap, String.valueOf(roleId), deptId); //更新 - doUpdateUser(editUserList, userMap, roleId); + doUpdateUser(editUserList, userMap, String.valueOf(roleId)); return; } @@ -132,14 +132,20 @@ * 新增用户 */ private void doAddUser(List newUserCodeList, Map sourceUserMap, String roleId, Long deptId) { + if (CollectionUtils.isEmpty(newUserCodeList)) { + return; + } List users = new ArrayList<>(); + Map userMap = null; for (String userCode : newUserCodeList) { JSONArray userArray = sourceUserMap.get(userCode); if (ObjectUtils.isNotEmpty(userArray)) { - Map userMap = userArray.stream().collect( - Collectors.toMap(e -> (String) ((JSONObject) e).get("name"), e -> (String) ((JSONObject) e).get("value")) + userMap = userArray.stream().collect( + Collectors.toMap(e -> (String) ((JSONObject) e).get("name"), e -> ((JSONObject) e).get("value")) ); - User user = new User(roleId, deptId); + User user = new User(); + user.setDeptId(deptId); + user.setRoleId(roleId); populateUser(user, userMap); users.add(user); } @@ -147,23 +153,18 @@ this.saveBatch(users); } - private void populateUser(User user, Map userMap) { + private void populateUser(User user, Map userMap) { //涉及盐值的计算等操作 - user.setAccount(userMap.get("userCode")); - user.setSex(Integer.valueOf(userMap.get("sex"))); - user.setName(userMap.get("userName")); + user.setSyncId(String.valueOf((Integer) userMap.get("userId"))); + user.setAccount((String) userMap.get("userCode")); + user.setSex((Integer) userMap.get("sex")); + user.setName((String) userMap.get("userName")); //设置密码 user.setPassword("111111"); - try { - user.setPassword(RSAUtils.decrypt(user.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); - } catch (Exception var5) { - log.error("密码解密异常", var5); - } - user.setSalt(userMap.get("userName")); user.setSalt(ShiroKit.getRandomSalt(5)); user.setPassword(ShiroKit.md5(user.getPassword(), user.getSalt())); - user.setEmail(userMap.get("email")); - user.setPhone(userMap.get("mobile")); + user.setEmail((String) userMap.get("email")); + user.setPhone((String) userMap.get("mobile")); user.setStatus("1"); user.setIsSync(1); user.setDelFlag("0"); @@ -173,6 +174,9 @@ * 更新用户 */ private void doUpdateUser(List editUserCodeList, Map userMap, String roleId) { + if (CollectionUtils.isEmpty(editUserCodeList)) { + return; + } List users = new ArrayList<>(); for (String editUser : editUserCodeList) { User user = userMap.get(editUser); @@ -191,16 +195,16 @@ */ private void doGetUserDataSource(Map> userListMap, String key, Map userMap, Map roleMap) { //获取管理员的信息 - List userList = userListMap.get(key); - for (String userPath : userList) { + List roleList = userListMap.get(key); + for (String userPath : roleList) { String userUrl = appUrl + FRAGMENT_PATH + appName + "/roles/" + userPath + "/allocatedUsers"; Object roleObject = HttpRequest.sendGet(userUrl); - JSONArray roleList = ((JSONArray) ((JSONObject) roleObject).get("items")); + JSONArray userList = ((JSONArray) ((JSONObject) roleObject).get("items")); List userCodeList = new ArrayList<>(); Map sourceMap = new HashMap<>(); - for (Object role : roleList) { - JSONArray dataList = (JSONArray) ((JSONObject) role).get("data"); - String userCode = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("userCode")).findFirst().get()).get("userCode"); + for (Object user : userList) { + JSONArray dataList = (JSONArray) ((JSONObject) user).get("data"); + String userCode = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("userCode")).findFirst().get()).get("value"); userCodeList.add(userCode); //和获取的用户列表进行比较管理员、userCode是否存在 sourceMap.put(userCode, dataList); @@ -224,8 +228,8 @@ List userList = new ArrayList<>(); for (Object role : roleList) { JSONArray dataList = (JSONArray) ((JSONObject) role).get("data"); - String roleName = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("roleName")).findFirst().get()).get("roleName"); - String roleCode = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("roleCode")).findFirst().get()).get("roleCode"); + String roleName = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("roleName")).findFirst().get()).get("value"); + String roleCode = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("roleCode")).findFirst().get()).get("value"); if (roleName.contains(MEMBER)) { userList.add(roleCode); } diff --git a/src/main/resources/config/application-dev.yml b/src/main/resources/config/application-dev.yml index ef7bf6a..e555596 100644 --- a/src/main/resources/config/application-dev.yml +++ b/src/main/resources/config/application-dev.yml @@ -15,16 +15,14 @@ password: ew5T4K3#203lwh redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer - # session: - # store-type: redis -#flowable数据源和多数据源配置 casic: kaptcha-open: false #是否开启登录时验证码 (true/false) - #kaptcha-open: false #是否开启登录时验证码 (true/false) db: init: enable: false spring-session-open: false #开启spring session + no-login-urls: /job/updateSinkJob,/user/login/token,/push/data,/config/confirm + logging: level.root: error level.com.casic: info diff --git a/src/main/resources/config/application-dz.yml b/src/main/resources/config/application-dz.yml index ef3f9da..ceabc64 100644 --- a/src/main/resources/config/application-dz.yml +++ b/src/main/resources/config/application-dz.yml @@ -25,6 +25,7 @@ init: enable: false spring-session-open: false #开启spring session + no-login-urls: /job/updateSinkJob,/user/login/token,/push/data,/config/confirm logging: level.root: error level.com.casic: info diff --git a/src/main/resources/config/application.yml b/src/main/resources/config/application.yml index 89bd54e..ffa9d4c 100644 --- a/src/main/resources/config/application.yml +++ b/src/main/resources/config/application.yml @@ -38,7 +38,9 @@ online: cron: 0 0 0/1 * * ? # 多长时间判断离线 transfer-user: - cron: 0 0 0,12 * * ? # 数据同步,每天凌晨0点、中午12点各进行同步一次 + cron: 0 0 0,12 * * ? # 数据同步,每天凌晨0点、中午12点各进行同步一次 0 0 0,12 * * ? + partition: + cron: 0 0/1 * * * ? data-day: 3 #多少天为离线 type: 14 #硫化氢 diff --git a/pom.xml b/pom.xml index ec5ddc3..f02731e 100644 --- a/pom.xml +++ b/pom.xml @@ -74,11 +74,6 @@ 4.5.13 - - com.casic - casic-admin-core - 2.0.0.alpha - @@ -198,6 +193,25 @@ 1.8 + + + com.casic + casic-core + 2.0.0.alpha + + + + com.casic + casic-admin-support + 2.0.0.alpha + + + + com.casic + casic-admin-core + 2.0.0.alpha + + diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java index 9afd0b9..affdcb5 100644 --- a/src/main/java/com/casic/CasicApplication.java +++ b/src/main/java/com/casic/CasicApplication.java @@ -1,6 +1,7 @@ package com.casic; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @@ -19,7 +20,9 @@ @Slf4j @ComponentScan(basePackages= "com.casic.**") +@MapperScan(basePackages = {"com.casic.**.dao", "com.casic.**.mapper"}) @SpringBootApplication +@EnableTransactionManagement(proxyTargetClass = true) public class CasicApplication { public static void main(String[] args) { log.info("CasicApplication is success!"); diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java index 7d19680..1615fb8 100644 --- a/src/main/java/com/casic/config/CorsConfig.java +++ b/src/main/java/com/casic/config/CorsConfig.java @@ -1,31 +1,31 @@ -package com.casic.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.web.filter.CorsFilter; - -/** - * 基础框架 - 跨域请求配置 - */ -@Configuration -public class CorsConfig { - @Bean - public CorsFilter corsFilter() { - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", buildConfig()); - return new CorsFilter(source); - } - - private CorsConfiguration buildConfig() { - CorsConfiguration corsConfiguration = new CorsConfiguration(); - // 1允许任何域名使用 - corsConfiguration.addAllowedOrigin("*"); - // 2允许任何头 - corsConfiguration.addAllowedHeader("*"); - // 3允许任何方法(post、get等) - corsConfiguration.addAllowedMethod("*"); - return corsConfiguration; - } -} \ No newline at end of file +//package com.casic.config; +// +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.web.cors.CorsConfiguration; +//import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +//import org.springframework.web.filter.CorsFilter; +// +///** +// * 基础框架 - 跨域请求配置 +// */ +//@Configuration +//public class CorsConfig { +// @Bean +// public CorsFilter corsFilter() { +// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); +// source.registerCorsConfiguration("/**", buildConfig()); +// return new CorsFilter(source); +// } +// +// private CorsConfiguration buildConfig() { +// CorsConfiguration corsConfiguration = new CorsConfiguration(); +// // 1允许任何域名使用 +// corsConfiguration.addAllowedOrigin("*"); +// // 2允许任何头 +// corsConfiguration.addAllowedHeader("*"); +// // 3允许任何方法(post、get等) +// corsConfiguration.addAllowedMethod("*"); +// return corsConfiguration; +// } +//} \ No newline at end of file diff --git a/src/main/java/com/casic/config/dto/RoleDto.java b/src/main/java/com/casic/config/dto/RoleDto.java new file mode 100644 index 0000000..ca08f84 --- /dev/null +++ b/src/main/java/com/casic/config/dto/RoleDto.java @@ -0,0 +1,11 @@ +package com.casic.config.dto; + +import lombok.Data; + +@Data +public class RoleDto { + + private Long id; + private String name; + +} diff --git a/src/main/java/com/casic/config/task/TaskConfigurer.java b/src/main/java/com/casic/config/task/TaskConfigurer.java index 699c0e3..5a3a029 100644 --- a/src/main/java/com/casic/config/task/TaskConfigurer.java +++ b/src/main/java/com/casic/config/task/TaskConfigurer.java @@ -1,6 +1,7 @@ package com.casic.config.task; import com.casic.service.DeviceDataService; +import com.casic.service.IPartitionStrategyService; import com.casic.service.UserDataDelayReceiver; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; @@ -24,18 +25,30 @@ private String onlineStateCron; @Value("${casic.device.transfer-user.cron}") private String transferUserCron; - + @Value("${casic.device.partition.cron}") + private String partitionCron; private final DeviceDataService deviceDataService; private final UserDataDelayReceiver userDataDelayReceiver; + private final IPartitionStrategyService partitionStrategyService; @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { - TriggerTask triggrtTask = new TriggerTask(nextDayDevice(), + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), triggerContext -> { return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); }); - taskRegistrar.addTriggerTask(triggrtTask); + TriggerTask transferUserTask = new TriggerTask(getUserData(), + triggerContext -> { + return new CronTrigger(transferUserCron).nextExecutionTime(triggerContext); + }); + TriggerTask partitionTask = new TriggerTask(createPartition(), + triggerContext -> { + return new CronTrigger(partitionCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + taskRegistrar.addTriggerTask(transferUserTask); + taskRegistrar.addTriggerTask(partitionTask); } private Runnable nextDayDevice() { @@ -57,6 +70,18 @@ userDataDelayReceiver.saveNewUserData(); } }; + } + + /** + * 定时同步普光 + */ + private Runnable createPartition() { + return new Runnable() { + @Override + public void run() { + partitionStrategyService.createPartition("DATA_H2S", "data_h2s_log"); + } + }; } diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java index d7e3722..e6ae7bc 100644 --- a/src/main/java/com/casic/controller/DeviceDataController.java +++ b/src/main/java/com/casic/controller/DeviceDataController.java @@ -1,40 +1,40 @@ -package com.casic.controller; - -import com.alibaba.fastjson.JSON; -import com.casic.service.DeviceDataService; -import com.casic.service.ThirdDataService; -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.*; - -import java.util.Map; - -@RestController -@RequestMapping("/device") -@RequiredArgsConstructor -public class DeviceDataController { - - private final DeviceDataService deviceDataService; - - @RequestMapping("/recent-data") - public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "recentNum", required = true) String recentNum, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); - } - - @RequestMapping("/data/list-page") - public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, - @RequestParam(value = "currentIndex", required = true) Integer currentIndex, - @RequestParam(value = "pageSize", required = true) Integer pageSize, - @RequestParam(value = "devcode", required = false) String devcode) { - return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); - } - - @RequestMapping("/level/{deviceType}") - public Object getLevelList(@PathVariable("deviceType")String deviceType) { - return deviceDataService.getLevel(deviceType); - } - - - -} +//package com.casic.controller; +// +//import com.alibaba.fastjson.JSON; +//import com.casic.service.DeviceDataService; +//import com.casic.service.ThirdDataService; +//import lombok.RequiredArgsConstructor; +//import org.springframework.web.bind.annotation.*; +// +//import java.util.Map; +// +//@RestController +//@RequestMapping("/device") +//@RequiredArgsConstructor +//public class DeviceDataController { +// +// private final DeviceDataService deviceDataService; +// +// @RequestMapping("/recent-data") +// public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "recentNum", required = true) String recentNum, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode); +// } +// +// @RequestMapping("/data/list-page") +// public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType, +// @RequestParam(value = "currentIndex", required = true) Integer currentIndex, +// @RequestParam(value = "pageSize", required = true) Integer pageSize, +// @RequestParam(value = "devcode", required = false) String devcode) { +// return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode); +// } +// +// @RequestMapping("/level/{deviceType}") +// public Object getLevelList(@PathVariable("deviceType")String deviceType) { +// return deviceDataService.getLevel(deviceType); +// } +// +// +// +//} diff --git a/src/main/java/com/casic/dao/PartitionStrategyMapper.java b/src/main/java/com/casic/dao/PartitionStrategyMapper.java new file mode 100644 index 0000000..a9481d0 --- /dev/null +++ b/src/main/java/com/casic/dao/PartitionStrategyMapper.java @@ -0,0 +1,44 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; + +/** + * 分区mapper + * + * @author lwh + */ +@Mapper +public interface PartitionStrategyMapper { + + /** + * 当前表最大分区查询 + * + * @param tableName 分区表名称 + * @return + */ + String selectMaxId(@Param("tableName") String tableName, @Param("tableOwner") String tableOwner); + + /** + * 增加表分区 + * + * @param tableName 表名称 + * @param partitionName 分区名称 + * @param time 分区最大值 + */ + void createPartition(@Param("tableName") String tableName, @Param("partitionName") String partitionName, + @Param("time") String time, @Param("storage") String storage); + + /** + * 创建表空间 + * + * @param tableSpaceName 表空间名称 + * @param dataFilePath 文件地址 + * @param tableSpaceSize 表空间大小(单位 M) + */ + void createTableSpace(@Param("tableSpaceName") String tableSpaceName, @Param("dataFilePath") String dataFilePath, @Param("tableSpaceSize") Integer tableSpaceSize); + + +} diff --git a/src/main/java/com/casic/dao/UserMapper.java b/src/main/java/com/casic/dao/UserMapper.java deleted file mode 100644 index 266d786..0000000 --- a/src/main/java/com/casic/dao/UserMapper.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.model.User; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface UserMapper extends BaseMapper { - - - //获取所有的角色 - @Select(" SELECT id,name " + - " FROM sys_role " + - " where name like '达州%' ") - List> getRolesByName(); -} diff --git a/src/main/java/com/casic/dao/UsersMapper.java b/src/main/java/com/casic/dao/UsersMapper.java new file mode 100644 index 0000000..d394db7 --- /dev/null +++ b/src/main/java/com/casic/dao/UsersMapper.java @@ -0,0 +1,30 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.config.dto.RoleDto; +import com.casic.model.User; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * @author cz + */ + +@Mapper +public interface UsersMapper extends BaseMapper { + + @Select(" SELECT id,name " + + " FROM sys_role " + + " where name like '%达州%' " + + " AND DEL_FLAG=0 ") + List getRolesByName(); + + @Select("SELECT ID " + + "FROM SYS_DEPT " + + "WHERE SIMPLE_NAME LIKE '%达州%'" + + "AND DEL_FLAG=0 " + + "LIMIT 1 ") + Long getDeptIdByName(); +} diff --git a/src/main/java/com/casic/model/DataH2s.java b/src/main/java/com/casic/model/DataH2s.java index eaeef1f..b53b19e 100644 --- a/src/main/java/com/casic/model/DataH2s.java +++ b/src/main/java/com/casic/model/DataH2s.java @@ -15,7 +15,7 @@ @TableName("data_h2s") public class DataH2s { - @TableId(value = "ID", type = IdType.AUTO) + @TableId(value = "ID", type = IdType.ASSIGN_ID) private Long id; private String devcode; diff --git a/src/main/java/com/casic/model/User.java b/src/main/java/com/casic/model/User.java index b856672..8a7148a 100644 --- a/src/main/java/com/casic/model/User.java +++ b/src/main/java/com/casic/model/User.java @@ -21,6 +21,7 @@ type = IdType.ASSIGN_ID ) private Long id; + private String avatar; //userCode @@ -78,11 +79,6 @@ ) private String userType; - public User(String roleId, Long deptId) { - this.roleId=roleId; - this.deptId=deptId; - } - public Serializable pkVal() { return this.id; } diff --git a/src/main/java/com/casic/service/IPartitionStrategyService.java b/src/main/java/com/casic/service/IPartitionStrategyService.java new file mode 100644 index 0000000..3a4c82e --- /dev/null +++ b/src/main/java/com/casic/service/IPartitionStrategyService.java @@ -0,0 +1,25 @@ +package com.casic.service; + +/** + * 相差删除 + * + * @author cz + */ +public interface IPartitionStrategyService { + + + /** + * 表数据分区策略 + * + * @param tableName 分区表名称 + */ + void createPartition(String tableName, String tableSpaceFix); + + + /** + * 表空间创建 + * + * @param tableSpaceFix 表空间前缀 + */ + String createTableSpace(String tableSpaceFix); +} diff --git a/src/main/java/com/casic/service/impl/DataScopeBuilder.java b/src/main/java/com/casic/service/impl/DataScopeBuilder.java index 793312e..50be38f 100644 --- a/src/main/java/com/casic/service/impl/DataScopeBuilder.java +++ b/src/main/java/com/casic/service/impl/DataScopeBuilder.java @@ -36,10 +36,12 @@ } userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); List> deptUserList = new ArrayList<>(); - if (userDataScopeListMap.containsKey("2")) { + if (ObjectUtils.isNotEmpty(userDataScopeListMap.get("2"))) { deptUserList.addAll(userDataScopeListMap.get("2")); } - deptUserList.addAll(userDataScopeListMap.get("3")); + if (ObjectUtils.isNotEmpty(userDataScopeListMap.get("3"))) { + deptUserList.addAll(userDataScopeListMap.get("3")); + } if (ObjectUtils.isNotEmpty(deptId)) { userIdList.addAll(getParentDeptList(deptUserList, deptId)); } diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java index 2b51783..bd35978 100644 --- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java +++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java @@ -8,15 +8,16 @@ import com.casic.util.DeviceDataTableEnum; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.stream.Collector; import java.util.stream.Collectors; /** @@ -24,7 +25,6 @@ */ @Service @Slf4j -@RequiredArgsConstructor public class DeviceDataServiceImpl implements DeviceDataService { @Value("${casic.device.type}") @@ -33,7 +33,8 @@ @Value("${casic.device.data-day}") private Integer dataDay; - private final DeviceDataMapper deviceDataMapper; + @Resource + private DeviceDataMapper deviceDataMapper; @Override public Object getDeviceRecentData(String deviceType, String recentNum, String devcode) { diff --git a/src/main/java/com/casic/service/impl/PartitionStrategyServiceImpl.java b/src/main/java/com/casic/service/impl/PartitionStrategyServiceImpl.java new file mode 100644 index 0000000..50201dd --- /dev/null +++ b/src/main/java/com/casic/service/impl/PartitionStrategyServiceImpl.java @@ -0,0 +1,125 @@ +package com.casic.service.impl; + +import com.alibaba.druid.util.StringUtils; +import com.casic.dao.PartitionStrategyMapper; +import com.casic.service.IPartitionStrategyService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; + +/** + * 自动创建分区 + * + * @author cz + */ +@Service +@Slf4j +@RequiredArgsConstructor +public class PartitionStrategyServiceImpl implements IPartitionStrategyService { + /** + * 提前创建分区个数 + */ + @Value("${casic.ss.advancePartitionNum:3}") + private int advancePartitionNum; + /** + * 分区创建间隔(天) + */ + @Value("${casic.ss.partitionInterval:7}") + private int partitionInterval; + /** + * 分区创建间隔(天) + */ + @Value("${casic.ss.dbName:CASIC203}") + private String partitionDbName; + + @Value("${casic.ss.dataFilePath:c:\\dm\\}") + private String dataFilePath; + + @Value("${casic.ss.enableTableSpace:false}") + private boolean enableTableSpace; + + @Value("${casic.ss.tableSpaceSize:512}") + private int tableSpaceSize; + + private final PartitionStrategyMapper partitionStrategyMapper; + + @Override + public void createPartition(String tableName, String tableSpaceFix) { + Calendar end = Calendar.getInstance(); + String storage = null; +// if (enableTableSpace) { +// storage = createTableSpace(tableSpaceFix); +// } + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd"); + SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + end.add(Calendar.DAY_OF_MONTH, advancePartitionNum * partitionInterval); + Long maxTime = end.getTimeInMillis(); + String timeStr = partitionStrategyMapper.selectMaxId(tableName, "XLJC"); + String tempTableName = "XLJC." + tableName; + Long time = null; + if (StringUtils.isEmpty(timeStr) && timeStr.contains("DATE")) { + time = System.currentTimeMillis(); + } else { + timeStr = timeStr.substring(9); + try { + time = Long.valueOf(sdf1.parse(timeStr).getTime()); + } catch (ParseException rx) { + log.error("转换日期异常"); + } finally { + if (time == null) { + time = System.currentTimeMillis(); + } + } + } + //必须超出一天进行创建表 + if (maxTime - time > 86400000000L) { + while (time <= maxTime) { + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(time); + calendar.add(Calendar.DAY_OF_MONTH, partitionInterval); + time = calendar.getTimeInMillis(); + Date date = new Date(time); + String parTime = "\'" + sdf2.format(time) + "'"; + partitionStrategyMapper.createPartition(tempTableName, "P" + sdf1.format(date).substring(2), parTime, storage); + } + } +// if (tableName.equals("T_CLOCK_DATA")) { +// tempTableName = "CASIC_SYSTEM." + tableName; +// time = partitionStrategyMapper.selectMaxId(tableName, "CASIC_SYSTEM"); +// if (ObjectUtils.isEmpty(time)) { +// time = Calendar.getInstance().getTimeInMillis(); +// } +// while (time <= maxTime) { +// Calendar calendar = Calendar.getInstance(); +// calendar.setTimeInMillis(time); +// calendar.add(Calendar.DAY_OF_MONTH, partitionInterval); +// time = calendar.getTimeInMillis(); +// String formatTime = DateUtil.format(new Date(time), "yyyyMMdd"); +// partitionStrategyMapper.createPartition(tempTableName, "P" + formatTime.substring(2), time, storage); +// } +// } + } + + /** + * .*2021-12.* + * 创建表空间 + */ + @Override + public String createTableSpace(String tableSpaceFix) { +// String currMouth = tableSpaceFix + DateUtil.format(new Date(), "yyyyMM"); +// //判断当月度分区是否已经存在 +// if (!FileUtil.exist(dataFilePath, ".*" + currMouth + ".*")) { +// String pathFile = "'" + dataFilePath + currMouth + ".dbf" + "'"; +// partitionStrategyMapper.createTableSpace(currMouth, pathFile, tableSpaceSize); +// } +// return currMouth; + return null; + } + +} diff --git a/src/main/java/com/casic/service/impl/UserDataDelayReceiverImpl.java b/src/main/java/com/casic/service/impl/UserDataDelayReceiverImpl.java index a3de00d..1be4a99 100644 --- a/src/main/java/com/casic/service/impl/UserDataDelayReceiverImpl.java +++ b/src/main/java/com/casic/service/impl/UserDataDelayReceiverImpl.java @@ -3,19 +3,21 @@ import com.alibaba.druid.util.StringUtils; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.casic.dao.UserMapper; +import com.casic.config.dto.RoleDto; +import com.casic.dao.UsersMapper; import com.casic.enums.UserDataEnum; import com.casic.missiles.core.shiro.ShiroKit; import com.casic.model.User; import com.casic.service.UserDataDelayReceiver; import com.casic.util.HttpRequest; -import com.casic.util.RSAUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.HashMap; @@ -26,10 +28,10 @@ /** * @author cz */ -@RequiredArgsConstructor @Slf4j @Service -public class UserDataDelayReceiverImpl extends ServiceImpl implements UserDataDelayReceiver, UserDataEnum { +@RequiredArgsConstructor +public class UserDataDelayReceiverImpl extends ServiceImpl implements UserDataDelayReceiver, UserDataEnum { @Value("${casic.device.appName}") private String appName; @@ -62,13 +64,13 @@ } private Map getLocalRoleData() { - List> roleMapList = this.baseMapper.getRolesByName(); + List roleMapList = this.baseMapper.getRolesByName(); Map roleMap = new HashMap<>(); - for (Map role : roleMapList) { - if (role.get("NAME").contains(ADMIN)) { - roleMap.put(role.get("ID"), ADMIN); + for (RoleDto role : roleMapList) { + if (role.getName().contains(ADMIN)) { + roleMap.put(String.valueOf(role.getId()), ADMIN); } else { - roleMap.put(role.get("ID"), MEMBER); + roleMap.put(String.valueOf(role.getId()), MEMBER); } } return roleMap; @@ -78,16 +80,20 @@ * 获取当前的用户信息列表 */ private Map getLocalUserData(Map roleMap) { - List localUserList = this.baseMapper.selectList(null); - localUserList.stream() - .filter(e -> roleMap.containsKey(e.getRoleId())) - .forEach( - localUser -> { - if (roleMap.containsKey(localUser.getRoleId())) { - localUser.setUserType(roleMap.get(localUser.getRoleId())); - } - } - ); + QueryWrapper queryWrapper = new QueryWrapper() + .eq("is_sync", "1"); + List localUserList = this.baseMapper.selectList(queryWrapper); + //过滤 + localUserList = localUserList.stream() + .filter(e -> roleMap.containsKey(e.getRoleId())).collect(Collectors.toList()); + //设置用户类型 + localUserList.forEach( + localUser -> { + if (roleMap.containsKey(localUser.getRoleId())) { + localUser.setUserType(roleMap.get(localUser.getRoleId())); + } + } + ); //userCode作为账号 Map userMap = localUserList.stream() .collect( @@ -103,28 +109,22 @@ List newUserCodeList = userCodeList.stream().filter( userCode -> !userMap.containsKey(userCode)).collect(Collectors.toList()); List editUserList = userCodeList.stream().filter( - userCode -> userMap.containsKey(userCode) && !userMap.get(userCode).getUserType().equals(key) + userCode -> userMap.containsKey(userCode) && !key.equals(userMap.get(userCode).getUserType()) ).collect(Collectors.toList()); - String roleId = ""; - Long deptId = null; + Long deptId = this.baseMapper.getDeptIdByName(); + String roleId = null; for (Map.Entry entry : roleMap.entrySet()) { if (entry.getValue().equals(key)) { roleId = entry.getKey(); } } - for (Map.Entry entry : userMap.entrySet()) { - if (entry.getValue().equals(key)) { - deptId = entry.getValue().getDeptId(); - break; - } - } - if (StringUtils.isEmpty(roleId)) { + if (StringUtils.isEmpty(roleId) || ObjectUtils.isEmpty(deptId)) { return; } //新增 - doAddUser(newUserCodeList, sourceMap, roleId, deptId); + doAddUser(newUserCodeList, sourceMap, String.valueOf(roleId), deptId); //更新 - doUpdateUser(editUserList, userMap, roleId); + doUpdateUser(editUserList, userMap, String.valueOf(roleId)); return; } @@ -132,14 +132,20 @@ * 新增用户 */ private void doAddUser(List newUserCodeList, Map sourceUserMap, String roleId, Long deptId) { + if (CollectionUtils.isEmpty(newUserCodeList)) { + return; + } List users = new ArrayList<>(); + Map userMap = null; for (String userCode : newUserCodeList) { JSONArray userArray = sourceUserMap.get(userCode); if (ObjectUtils.isNotEmpty(userArray)) { - Map userMap = userArray.stream().collect( - Collectors.toMap(e -> (String) ((JSONObject) e).get("name"), e -> (String) ((JSONObject) e).get("value")) + userMap = userArray.stream().collect( + Collectors.toMap(e -> (String) ((JSONObject) e).get("name"), e -> ((JSONObject) e).get("value")) ); - User user = new User(roleId, deptId); + User user = new User(); + user.setDeptId(deptId); + user.setRoleId(roleId); populateUser(user, userMap); users.add(user); } @@ -147,23 +153,18 @@ this.saveBatch(users); } - private void populateUser(User user, Map userMap) { + private void populateUser(User user, Map userMap) { //涉及盐值的计算等操作 - user.setAccount(userMap.get("userCode")); - user.setSex(Integer.valueOf(userMap.get("sex"))); - user.setName(userMap.get("userName")); + user.setSyncId(String.valueOf((Integer) userMap.get("userId"))); + user.setAccount((String) userMap.get("userCode")); + user.setSex((Integer) userMap.get("sex")); + user.setName((String) userMap.get("userName")); //设置密码 user.setPassword("111111"); - try { - user.setPassword(RSAUtils.decrypt(user.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); - } catch (Exception var5) { - log.error("密码解密异常", var5); - } - user.setSalt(userMap.get("userName")); user.setSalt(ShiroKit.getRandomSalt(5)); user.setPassword(ShiroKit.md5(user.getPassword(), user.getSalt())); - user.setEmail(userMap.get("email")); - user.setPhone(userMap.get("mobile")); + user.setEmail((String) userMap.get("email")); + user.setPhone((String) userMap.get("mobile")); user.setStatus("1"); user.setIsSync(1); user.setDelFlag("0"); @@ -173,6 +174,9 @@ * 更新用户 */ private void doUpdateUser(List editUserCodeList, Map userMap, String roleId) { + if (CollectionUtils.isEmpty(editUserCodeList)) { + return; + } List users = new ArrayList<>(); for (String editUser : editUserCodeList) { User user = userMap.get(editUser); @@ -191,16 +195,16 @@ */ private void doGetUserDataSource(Map> userListMap, String key, Map userMap, Map roleMap) { //获取管理员的信息 - List userList = userListMap.get(key); - for (String userPath : userList) { + List roleList = userListMap.get(key); + for (String userPath : roleList) { String userUrl = appUrl + FRAGMENT_PATH + appName + "/roles/" + userPath + "/allocatedUsers"; Object roleObject = HttpRequest.sendGet(userUrl); - JSONArray roleList = ((JSONArray) ((JSONObject) roleObject).get("items")); + JSONArray userList = ((JSONArray) ((JSONObject) roleObject).get("items")); List userCodeList = new ArrayList<>(); Map sourceMap = new HashMap<>(); - for (Object role : roleList) { - JSONArray dataList = (JSONArray) ((JSONObject) role).get("data"); - String userCode = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("userCode")).findFirst().get()).get("userCode"); + for (Object user : userList) { + JSONArray dataList = (JSONArray) ((JSONObject) user).get("data"); + String userCode = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("userCode")).findFirst().get()).get("value"); userCodeList.add(userCode); //和获取的用户列表进行比较管理员、userCode是否存在 sourceMap.put(userCode, dataList); @@ -224,8 +228,8 @@ List userList = new ArrayList<>(); for (Object role : roleList) { JSONArray dataList = (JSONArray) ((JSONObject) role).get("data"); - String roleName = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("roleName")).findFirst().get()).get("roleName"); - String roleCode = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("roleCode")).findFirst().get()).get("roleCode"); + String roleName = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("roleName")).findFirst().get()).get("value"); + String roleCode = (String) ((JSONObject) dataList.stream().filter(e -> ((JSONObject) e).get("name").equals("roleCode")).findFirst().get()).get("value"); if (roleName.contains(MEMBER)) { userList.add(roleCode); } diff --git a/src/main/resources/config/application-dev.yml b/src/main/resources/config/application-dev.yml index ef7bf6a..e555596 100644 --- a/src/main/resources/config/application-dev.yml +++ b/src/main/resources/config/application-dev.yml @@ -15,16 +15,14 @@ password: ew5T4K3#203lwh redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer - # session: - # store-type: redis -#flowable数据源和多数据源配置 casic: kaptcha-open: false #是否开启登录时验证码 (true/false) - #kaptcha-open: false #是否开启登录时验证码 (true/false) db: init: enable: false spring-session-open: false #开启spring session + no-login-urls: /job/updateSinkJob,/user/login/token,/push/data,/config/confirm + logging: level.root: error level.com.casic: info diff --git a/src/main/resources/config/application-dz.yml b/src/main/resources/config/application-dz.yml index ef3f9da..ceabc64 100644 --- a/src/main/resources/config/application-dz.yml +++ b/src/main/resources/config/application-dz.yml @@ -25,6 +25,7 @@ init: enable: false spring-session-open: false #开启spring session + no-login-urls: /job/updateSinkJob,/user/login/token,/push/data,/config/confirm logging: level.root: error level.com.casic: info diff --git a/src/main/resources/config/application.yml b/src/main/resources/config/application.yml index 89bd54e..ffa9d4c 100644 --- a/src/main/resources/config/application.yml +++ b/src/main/resources/config/application.yml @@ -38,7 +38,9 @@ online: cron: 0 0 0/1 * * ? # 多长时间判断离线 transfer-user: - cron: 0 0 0,12 * * ? # 数据同步,每天凌晨0点、中午12点各进行同步一次 + cron: 0 0 0,12 * * ? # 数据同步,每天凌晨0点、中午12点各进行同步一次 0 0 0,12 * * ? + partition: + cron: 0 0/1 * * * ? data-day: 3 #多少天为离线 type: 14 #硫化氢 diff --git a/src/main/resources/mapper/PartitionStrategyMapper.xml b/src/main/resources/mapper/PartitionStrategyMapper.xml new file mode 100644 index 0000000..abaf156 --- /dev/null +++ b/src/main/resources/mapper/PartitionStrategyMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + ALTER TABLE ${tableName} + ADD PARTITION ${partitionName} VALUES LESS THAN (${time}) + + STORAGE (ON ${storage}) + + + + + CREATE TABLESPACE ${tableSpaceName} DATAFILE ${dataFilePath} SIZE ${tableSpaceSize}; + + + \ No newline at end of file