Commit 2675577c2053f785189834d785bfd381349d2a79
1 parent
a2a3d070
Exists in
master
翼学云 增量接口
Showing
27 changed files
with
1935 additions
and
817 deletions
Show diff stats
cloud/quartz/pom.xml
@@ -30,6 +30,11 @@ | @@ -30,6 +30,11 @@ | ||
30 | </dependency> | 30 | </dependency> |
31 | <dependency> | 31 | <dependency> |
32 | <groupId>org.springframework.boot</groupId> | 32 | <groupId>org.springframework.boot</groupId> |
33 | + <artifactId>spring-boot-starter-web</artifactId> | ||
34 | + <version>2.2.5.RELEASE</version> | ||
35 | + </dependency> | ||
36 | + <dependency> | ||
37 | + <groupId>org.springframework.boot</groupId> | ||
33 | <artifactId>spring-boot-starter-test</artifactId> | 38 | <artifactId>spring-boot-starter-test</artifactId> |
34 | <scope>test</scope> | 39 | <scope>test</scope> |
35 | </dependency> | 40 | </dependency> |
cloud/quartz/src/main/java/com/sincere/quartz/QuartzApplication.java
@@ -15,12 +15,12 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; | @@ -15,12 +15,12 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; | ||
15 | * @version 1.0 | 15 | * @version 1.0 |
16 | * @date 2019/11/27 0027 14:24 | 16 | * @date 2019/11/27 0027 14:24 |
17 | */ | 17 | */ |
18 | +@EnableEurekaClient | ||
18 | @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) | 19 | @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) |
19 | @EnableTransactionManagement(order = 2) //设置事务执行顺序(需要在切换数据源之后,否则只走主库) | 20 | @EnableTransactionManagement(order = 2) //设置事务执行顺序(需要在切换数据源之后,否则只走主库) |
20 | @EnableCaching | 21 | @EnableCaching |
21 | @EnableScheduling | 22 | @EnableScheduling |
22 | @EnableFeignClients(basePackages = "com.sincere.quartz.feign") | 23 | @EnableFeignClients(basePackages = "com.sincere.quartz.feign") |
23 | -@EnableEurekaClient | ||
24 | @MapperScan("com.sincere.quartz.mapper") | 24 | @MapperScan("com.sincere.quartz.mapper") |
25 | public class QuartzApplication { | 25 | public class QuartzApplication { |
26 | 26 |
cloud/quartz/src/main/java/com/sincere/quartz/Swagger2.java
0 → 100644
@@ -0,0 +1,39 @@ | @@ -0,0 +1,39 @@ | ||
1 | +package com.sincere.quartz; | ||
2 | + | ||
3 | +import org.springframework.context.annotation.Bean; | ||
4 | +import org.springframework.context.annotation.Configuration; | ||
5 | +import springfox.documentation.builders.ApiInfoBuilder; | ||
6 | +import springfox.documentation.builders.ParameterBuilder; | ||
7 | +import springfox.documentation.builders.PathSelectors; | ||
8 | +import springfox.documentation.builders.RequestHandlerSelectors; | ||
9 | +import springfox.documentation.service.ApiInfo; | ||
10 | +import springfox.documentation.spi.DocumentationType; | ||
11 | +import springfox.documentation.spring.web.plugins.Docket; | ||
12 | +import springfox.documentation.swagger2.annotations.EnableSwagger2; | ||
13 | + | ||
14 | +@EnableSwagger2 | ||
15 | +@Configuration //让Spring来加载该类配置 | ||
16 | +public class Swagger2 { | ||
17 | + | ||
18 | + @Bean | ||
19 | + public Docket createRestApi() { | ||
20 | + return new Docket(DocumentationType.SWAGGER_2) | ||
21 | + .apiInfo(apiInfo()) | ||
22 | + .enableUrlTemplating(false) | ||
23 | + .select() | ||
24 | + // 扫描所有有注解的api,用这种方式更灵活 | ||
25 | + .apis(RequestHandlerSelectors.basePackage("com.sincere.quartz.controller")) | ||
26 | + .paths(PathSelectors.any()) | ||
27 | + .build(); | ||
28 | + | ||
29 | + } | ||
30 | + | ||
31 | + private ApiInfo apiInfo() { | ||
32 | + return new ApiInfoBuilder() | ||
33 | + .title("Spring Boot中使用Swagger2构建RESTful APIs") | ||
34 | + .description("接口文档") | ||
35 | + .termsOfServiceUrl("") | ||
36 | + .version("1.0") | ||
37 | + .build(); | ||
38 | + } | ||
39 | +} |
cloud/quartz/src/main/java/com/sincere/quartz/controller/YxyController.java
0 → 100644
@@ -0,0 +1,74 @@ | @@ -0,0 +1,74 @@ | ||
1 | +package com.sincere.quartz.controller; | ||
2 | + | ||
3 | +import com.sincere.common.dto.smartCampus.SyncSchoolDto; | ||
4 | +import com.sincere.common.dto.smartCampus.SyncUserDto; | ||
5 | +import com.sincere.quartz.dto.BaseDto; | ||
6 | +import com.sincere.quartz.feign.ScFeign; | ||
7 | +import com.sincere.quartz.service.YxyService; | ||
8 | +import com.sincere.quartz.third.yixueyun.YXYAddReadService; | ||
9 | +import com.sincere.quartz.third.yixueyun.YXYReadService; | ||
10 | +import com.sincere.quartz.third.yixueyun.YXYWriteService; | ||
11 | +import io.swagger.annotations.Api; | ||
12 | +import io.swagger.annotations.ApiOperation; | ||
13 | +import org.springframework.beans.factory.annotation.Autowired; | ||
14 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
15 | +import org.springframework.web.bind.annotation.RequestMethod; | ||
16 | +import org.springframework.web.bind.annotation.RestController; | ||
17 | + | ||
18 | +import java.util.List; | ||
19 | + | ||
20 | +@RestController | ||
21 | +@RequestMapping("/sync") | ||
22 | +@Api(value = "同步") | ||
23 | +public class YxyController { | ||
24 | + | ||
25 | + @Autowired | ||
26 | + YXYReadService readService ; | ||
27 | + | ||
28 | + @Autowired | ||
29 | + YXYWriteService writeService ; | ||
30 | + | ||
31 | + @Autowired | ||
32 | + ScFeign scFeign; | ||
33 | + | ||
34 | + @Autowired | ||
35 | + YXYAddReadService addReadService ; | ||
36 | + | ||
37 | + @Autowired | ||
38 | + YxyService yxyService ; | ||
39 | + | ||
40 | + @ApiOperation(value = "test") | ||
41 | + @RequestMapping(value = "test",method = RequestMethod.GET) | ||
42 | + public void test(){ | ||
43 | + addReadService.sync(); | ||
44 | + } | ||
45 | + | ||
46 | + @ApiOperation(value = "syncTeacher") | ||
47 | + @RequestMapping(value = "syncTeacher",method = RequestMethod.GET) | ||
48 | + public BaseDto syncTeacher(String schoolId){ | ||
49 | + yxyService.updateTeacherBySchool(schoolId); | ||
50 | + readService.syncTeacher(schoolId); | ||
51 | + return new BaseDto() ; | ||
52 | + } | ||
53 | + | ||
54 | + @ApiOperation(value = "syncStudent") | ||
55 | + @RequestMapping(value = "syncStudent",method = RequestMethod.GET) | ||
56 | + public BaseDto syncStudent(String schoolId){ | ||
57 | + yxyService.updateStudentBySchool(schoolId); | ||
58 | + readService.syncStudent(schoolId); | ||
59 | + return new BaseDto() ; | ||
60 | + } | ||
61 | + | ||
62 | + @ApiOperation(value = "syncWrite") | ||
63 | + @RequestMapping(value = "syncWrite",method = RequestMethod.GET) | ||
64 | + public BaseDto syncWrite(int hxyId){ | ||
65 | + List<SyncSchoolDto> schoolList = scFeign.selectSyncSchool(); | ||
66 | + for (SyncSchoolDto school : schoolList) { | ||
67 | + if(school.getSchoolId() == hxyId){ | ||
68 | + List<SyncUserDto> userList = scFeign.selectUser(school.getSchoolId()); | ||
69 | + writeService.syncUser(school, userList); | ||
70 | + } | ||
71 | + } | ||
72 | + return new BaseDto(); | ||
73 | + } | ||
74 | +} |
cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceConfig.java
@@ -12,45 +12,53 @@ import java.util.Map; | @@ -12,45 +12,53 @@ import java.util.Map; | ||
12 | 12 | ||
13 | /** | 13 | /** |
14 | * 数据源配置 | 14 | * 数据源配置 |
15 | + * | ||
15 | */ | 16 | */ |
16 | @Configuration | 17 | @Configuration |
17 | public class DataSourceConfig { | 18 | public class DataSourceConfig { |
18 | 19 | ||
19 | - @Bean(name = "master") | ||
20 | - @ConfigurationProperties(prefix = "datasource.master") | ||
21 | - public DataSource dataSource1() { | ||
22 | - return DataSourceBuilder.create().build(); | ||
23 | - } | ||
24 | - | ||
25 | - @Bean(name = "slave") | ||
26 | - @ConfigurationProperties(prefix = "datasource.slave") | ||
27 | - public DataSource dataSource2() { | ||
28 | - return DataSourceBuilder.create().build(); | ||
29 | - } | ||
30 | - | ||
31 | - @Bean(name = "yxy") | ||
32 | - @ConfigurationProperties(prefix = "datasource.yxy") | ||
33 | - public DataSource dataSource3() { | ||
34 | - return DataSourceBuilder.create().build(); | ||
35 | - } | ||
36 | - | ||
37 | - | ||
38 | - @Bean(name = "dynamicDataSource") | ||
39 | - @Primary //优先使用,多数据源 | ||
40 | - public DataSource dataSource() { | ||
41 | - DynamicDataSource dynamicDataSource = new DynamicDataSource(); | ||
42 | - DataSource master = dataSource1(); | ||
43 | - DataSource slave = dataSource2(); | ||
44 | - DataSource yxy = dataSource3(); | ||
45 | - //设置默认数据源 | ||
46 | - dynamicDataSource.setDefaultTargetDataSource(master); | ||
47 | - //配置多数据源 | ||
48 | - Map<Object, Object> map = new HashMap<>(); | ||
49 | - map.put(DataSourceType.Master.getName(), master); //key需要跟ThreadLocal中的值对应 | ||
50 | - map.put(DataSourceType.Slave.getName(), slave); | ||
51 | - map.put(DataSourceType.Yxy.getName(), yxy); | ||
52 | - dynamicDataSource.setTargetDataSources(map); | ||
53 | - return dynamicDataSource; | ||
54 | - } | 20 | + @Bean(name = "master") |
21 | + @ConfigurationProperties(prefix = "datasource.master") | ||
22 | + public DataSource dataSource1() { | ||
23 | + return DataSourceBuilder.create().build(); | ||
24 | + } | ||
55 | 25 | ||
26 | + @Bean(name = "slave") | ||
27 | + @ConfigurationProperties(prefix = "datasource.slave") | ||
28 | + public DataSource dataSource2() { | ||
29 | + return DataSourceBuilder.create().build(); | ||
30 | + } | ||
31 | + | ||
32 | + @Bean(name = "yxy") | ||
33 | + @ConfigurationProperties(prefix = "datasource.yxy") | ||
34 | + public DataSource dataSource3() { | ||
35 | + return DataSourceBuilder.create().build(); | ||
36 | + } | ||
37 | + | ||
38 | + @Bean(name = "update") | ||
39 | + @ConfigurationProperties(prefix = "datasource.update") | ||
40 | + public DataSource dataSource4() { | ||
41 | + return DataSourceBuilder.create().build(); | ||
42 | + } | ||
43 | + | ||
44 | + @Bean(name="dynamicDataSource") | ||
45 | + @Primary //优先使用,多数据源 | ||
46 | + public DataSource dataSource() { | ||
47 | + DynamicDataSource dynamicDataSource = new DynamicDataSource(); | ||
48 | + DataSource master = dataSource1(); | ||
49 | + DataSource slave = dataSource2(); | ||
50 | + DataSource yxy = dataSource3(); | ||
51 | + DataSource update = dataSource4(); | ||
52 | + //设置默认数据源 | ||
53 | + dynamicDataSource.setDefaultTargetDataSource(master); | ||
54 | + //配置多数据源 | ||
55 | + Map<Object,Object> map = new HashMap<>(); | ||
56 | + map.put(DataSourceType.Master.getName(), master); //key需要跟ThreadLocal中的值对应 | ||
57 | + map.put(DataSourceType.Slave.getName(), slave); | ||
58 | + map.put(DataSourceType.Yxy.getName(), yxy); | ||
59 | + map.put(DataSourceType.Update.getName(), update); | ||
60 | + dynamicDataSource.setTargetDataSources(map); | ||
61 | + return dynamicDataSource; | ||
62 | + } | ||
63 | + | ||
56 | } | 64 | } |
cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceType.java
@@ -2,24 +2,26 @@ package com.sincere.quartz.datasource; | @@ -2,24 +2,26 @@ package com.sincere.quartz.datasource; | ||
2 | 2 | ||
3 | public enum DataSourceType { | 3 | public enum DataSourceType { |
4 | 4 | ||
5 | - Master("master"), | 5 | + Master("master"), |
6 | 6 | ||
7 | - Slave("slave"), | 7 | + Slave("slave"), |
8 | 8 | ||
9 | - Yxy("yxy"); | 9 | + Yxy("yxy"), |
10 | 10 | ||
11 | + Update("update"); | ||
11 | 12 | ||
12 | - private String name; | ||
13 | 13 | ||
14 | - private DataSourceType(String name) { | ||
15 | - this.name = name; | ||
16 | - } | 14 | + private String name; |
17 | 15 | ||
18 | - public String getName() { | ||
19 | - return name; | ||
20 | - } | 16 | + private DataSourceType(String name) { |
17 | + this.name = name; | ||
18 | + } | ||
21 | 19 | ||
22 | - public void setName(String name) { | ||
23 | - this.name = name; | ||
24 | - } | 20 | + public String getName() { |
21 | + return name; | ||
22 | + } | ||
23 | + | ||
24 | + public void setName(String name) { | ||
25 | + this.name = name; | ||
26 | + } | ||
25 | } | 27 | } |
cloud/quartz/src/main/java/com/sincere/quartz/dto/AddStudentDto.java
0 → 100644
@@ -0,0 +1,51 @@ | @@ -0,0 +1,51 @@ | ||
1 | +package com.sincere.quartz.dto; | ||
2 | + | ||
3 | +public class AddStudentDto { | ||
4 | + | ||
5 | + private int appId ; | ||
6 | + private String userId ; | ||
7 | + private int schoolId ; | ||
8 | + private String xml ; | ||
9 | + private String Err; | ||
10 | + | ||
11 | + public String getErr() { | ||
12 | + return Err; | ||
13 | + } | ||
14 | + | ||
15 | + public void setErr(String err) { | ||
16 | + Err = err; | ||
17 | + } | ||
18 | + | ||
19 | + public int getAppId() { | ||
20 | + return appId; | ||
21 | + } | ||
22 | + | ||
23 | + public void setAppId(int appId) { | ||
24 | + this.appId = appId; | ||
25 | + } | ||
26 | + | ||
27 | + public String getUserId() { | ||
28 | + return userId; | ||
29 | + } | ||
30 | + | ||
31 | + public void setUserId(String userId) { | ||
32 | + this.userId = userId; | ||
33 | + } | ||
34 | + | ||
35 | + public int getSchoolId() { | ||
36 | + return schoolId; | ||
37 | + } | ||
38 | + | ||
39 | + public void setSchoolId(int schoolId) { | ||
40 | + this.schoolId = schoolId; | ||
41 | + } | ||
42 | + | ||
43 | + public String getXml() { | ||
44 | + return xml; | ||
45 | + } | ||
46 | + | ||
47 | + public void setXml(String xml) { | ||
48 | + this.xml = xml; | ||
49 | + } | ||
50 | + | ||
51 | +} |
cloud/quartz/src/main/java/com/sincere/quartz/dto/AddTeacherDto.java
0 → 100644
@@ -0,0 +1,69 @@ | @@ -0,0 +1,69 @@ | ||
1 | +package com.sincere.quartz.dto; | ||
2 | + | ||
3 | +public class AddTeacherDto { | ||
4 | + | ||
5 | + private int appId ; | ||
6 | + private String userId ; | ||
7 | + private int schoolId ; | ||
8 | + private String xml ; | ||
9 | + | ||
10 | + private String Err; | ||
11 | + private String YongHuId; | ||
12 | + private String LaoShiId ; | ||
13 | + | ||
14 | + public String getErr() { | ||
15 | + return Err; | ||
16 | + } | ||
17 | + | ||
18 | + public void setErr(String err) { | ||
19 | + Err = err; | ||
20 | + } | ||
21 | + | ||
22 | + public String getYongHuId() { | ||
23 | + return YongHuId; | ||
24 | + } | ||
25 | + | ||
26 | + public void setYongHuId(String yongHuId) { | ||
27 | + YongHuId = yongHuId; | ||
28 | + } | ||
29 | + | ||
30 | + public String getLaoShiId() { | ||
31 | + return LaoShiId; | ||
32 | + } | ||
33 | + | ||
34 | + public void setLaoShiId(String laoShiId) { | ||
35 | + LaoShiId = laoShiId; | ||
36 | + } | ||
37 | + | ||
38 | + public int getAppId() { | ||
39 | + return appId; | ||
40 | + } | ||
41 | + | ||
42 | + public void setAppId(int appId) { | ||
43 | + this.appId = appId; | ||
44 | + } | ||
45 | + | ||
46 | + public String getUserId() { | ||
47 | + return userId; | ||
48 | + } | ||
49 | + | ||
50 | + public void setUserId(String userId) { | ||
51 | + this.userId = userId; | ||
52 | + } | ||
53 | + | ||
54 | + public int getSchoolId() { | ||
55 | + return schoolId; | ||
56 | + } | ||
57 | + | ||
58 | + public void setSchoolId(int schoolId) { | ||
59 | + this.schoolId = schoolId; | ||
60 | + } | ||
61 | + | ||
62 | + public String getXml() { | ||
63 | + return xml; | ||
64 | + } | ||
65 | + | ||
66 | + public void setXml(String xml) { | ||
67 | + this.xml = xml; | ||
68 | + } | ||
69 | +} |
cloud/quartz/src/main/java/com/sincere/quartz/dto/BaseDto.java
0 → 100644
@@ -0,0 +1,43 @@ | @@ -0,0 +1,43 @@ | ||
1 | +package com.sincere.quartz.dto; | ||
2 | + | ||
3 | +import io.swagger.annotations.ApiModel; | ||
4 | +import io.swagger.annotations.ApiModelProperty; | ||
5 | + | ||
6 | +@ApiModel | ||
7 | +public class BaseDto<T> { | ||
8 | + | ||
9 | + @ApiModelProperty(value = "接口成功与否") | ||
10 | + private boolean success ; | ||
11 | + @ApiModelProperty(value = "错误信息") | ||
12 | + private String message ; | ||
13 | + @ApiModelProperty(value = "数据") | ||
14 | + private T data ; | ||
15 | + | ||
16 | + public boolean isSuccess() { | ||
17 | + return success; | ||
18 | + } | ||
19 | + | ||
20 | + public void setSuccess(boolean success) { | ||
21 | + this.success = success; | ||
22 | + } | ||
23 | + | ||
24 | + public String getMessage() { | ||
25 | + return message; | ||
26 | + } | ||
27 | + | ||
28 | + public void setMessage(String message) { | ||
29 | + this.message = message; | ||
30 | + } | ||
31 | + | ||
32 | + public T getData() { | ||
33 | + return data; | ||
34 | + } | ||
35 | + | ||
36 | + public void setData(T data) { | ||
37 | + this.data = data; | ||
38 | + } | ||
39 | + | ||
40 | + public BaseDto() { | ||
41 | + this.success = true ; | ||
42 | + } | ||
43 | +} |
cloud/quartz/src/main/java/com/sincere/quartz/dto/EditStudentDto.java
0 → 100644
@@ -0,0 +1,77 @@ | @@ -0,0 +1,77 @@ | ||
1 | +package com.sincere.quartz.dto; | ||
2 | + | ||
3 | +public class EditStudentDto { | ||
4 | + | ||
5 | + private int appId ; | ||
6 | + private String userId ; | ||
7 | + private String studentUserId ; | ||
8 | + private String parentUserId ; | ||
9 | + private int studentId ; | ||
10 | + private int parentId ; | ||
11 | + private String xml ; | ||
12 | + private String Err; | ||
13 | + | ||
14 | + public String getErr() { | ||
15 | + return Err; | ||
16 | + } | ||
17 | + | ||
18 | + public void setErr(String err) { | ||
19 | + Err = err; | ||
20 | + } | ||
21 | + | ||
22 | + public int getAppId() { | ||
23 | + return appId; | ||
24 | + } | ||
25 | + | ||
26 | + public void setAppId(int appId) { | ||
27 | + this.appId = appId; | ||
28 | + } | ||
29 | + | ||
30 | + public String getUserId() { | ||
31 | + return userId; | ||
32 | + } | ||
33 | + | ||
34 | + public void setUserId(String userId) { | ||
35 | + this.userId = userId; | ||
36 | + } | ||
37 | + | ||
38 | + public String getStudentUserId() { | ||
39 | + return studentUserId; | ||
40 | + } | ||
41 | + | ||
42 | + public void setStudentUserId(String studentUserId) { | ||
43 | + this.studentUserId = studentUserId; | ||
44 | + } | ||
45 | + | ||
46 | + public String getParentUserId() { | ||
47 | + return parentUserId; | ||
48 | + } | ||
49 | + | ||
50 | + public void setParentUserId(String parentUserId) { | ||
51 | + this.parentUserId = parentUserId; | ||
52 | + } | ||
53 | + | ||
54 | + public int getStudentId() { | ||
55 | + return studentId; | ||
56 | + } | ||
57 | + | ||
58 | + public void setStudentId(int studentId) { | ||
59 | + this.studentId = studentId; | ||
60 | + } | ||
61 | + | ||
62 | + public int getParentId() { | ||
63 | + return parentId; | ||
64 | + } | ||
65 | + | ||
66 | + public void setParentId(int parentId) { | ||
67 | + this.parentId = parentId; | ||
68 | + } | ||
69 | + | ||
70 | + public String getXml() { | ||
71 | + return xml; | ||
72 | + } | ||
73 | + | ||
74 | + public void setXml(String xml) { | ||
75 | + this.xml = xml; | ||
76 | + } | ||
77 | +} |
cloud/quartz/src/main/java/com/sincere/quartz/dto/EditTeacherDto.java
0 → 100644
@@ -0,0 +1,41 @@ | @@ -0,0 +1,41 @@ | ||
1 | +package com.sincere.quartz.dto; | ||
2 | + | ||
3 | +public class EditTeacherDto { | ||
4 | + | ||
5 | + private int appId ; | ||
6 | + private String userId ; | ||
7 | + private String xml ; | ||
8 | + private String Err; | ||
9 | + | ||
10 | + public String getErr() { | ||
11 | + return Err; | ||
12 | + } | ||
13 | + | ||
14 | + public void setErr(String err) { | ||
15 | + Err = err; | ||
16 | + } | ||
17 | + | ||
18 | + public int getAppId() { | ||
19 | + return appId; | ||
20 | + } | ||
21 | + | ||
22 | + public void setAppId(int appId) { | ||
23 | + this.appId = appId; | ||
24 | + } | ||
25 | + | ||
26 | + public String getUserId() { | ||
27 | + return userId; | ||
28 | + } | ||
29 | + | ||
30 | + public void setUserId(String userId) { | ||
31 | + this.userId = userId; | ||
32 | + } | ||
33 | + | ||
34 | + public String getXml() { | ||
35 | + return xml; | ||
36 | + } | ||
37 | + | ||
38 | + public void setXml(String xml) { | ||
39 | + this.xml = xml; | ||
40 | + } | ||
41 | +} |
cloud/quartz/src/main/java/com/sincere/quartz/dto/StudentView.java
0 → 100644
@@ -0,0 +1,32 @@ | @@ -0,0 +1,32 @@ | ||
1 | +package com.sincere.quartz.dto; | ||
2 | + | ||
3 | +public class StudentView { | ||
4 | + | ||
5 | + private int studentId ; | ||
6 | + private String userId ; | ||
7 | + private String name ; | ||
8 | + | ||
9 | + public int getStudentId() { | ||
10 | + return studentId; | ||
11 | + } | ||
12 | + | ||
13 | + public void setStudentId(int studentId) { | ||
14 | + this.studentId = studentId; | ||
15 | + } | ||
16 | + | ||
17 | + public String getUserId() { | ||
18 | + return userId; | ||
19 | + } | ||
20 | + | ||
21 | + public void setUserId(String userId) { | ||
22 | + this.userId = userId; | ||
23 | + } | ||
24 | + | ||
25 | + public String getName() { | ||
26 | + return name; | ||
27 | + } | ||
28 | + | ||
29 | + public void setName(String name) { | ||
30 | + this.name = name; | ||
31 | + } | ||
32 | +} |
cloud/quartz/src/main/java/com/sincere/quartz/dto/TeacherView.java
0 → 100644
@@ -0,0 +1,32 @@ | @@ -0,0 +1,32 @@ | ||
1 | +package com.sincere.quartz.dto; | ||
2 | + | ||
3 | +public class TeacherView { | ||
4 | + | ||
5 | + private int teacherId ; | ||
6 | + private String userId ; | ||
7 | + private String name ; | ||
8 | + | ||
9 | + public int getTeacherId() { | ||
10 | + return teacherId; | ||
11 | + } | ||
12 | + | ||
13 | + public void setTeacherId(int teacherId) { | ||
14 | + this.teacherId = teacherId; | ||
15 | + } | ||
16 | + | ||
17 | + public String getUserId() { | ||
18 | + return userId; | ||
19 | + } | ||
20 | + | ||
21 | + public void setUserId(String userId) { | ||
22 | + this.userId = userId; | ||
23 | + } | ||
24 | + | ||
25 | + public String getName() { | ||
26 | + return name; | ||
27 | + } | ||
28 | + | ||
29 | + public void setName(String name) { | ||
30 | + this.name = name; | ||
31 | + } | ||
32 | +} |
cloud/quartz/src/main/java/com/sincere/quartz/job/AddYxyJob.java
0 → 100644
@@ -0,0 +1,18 @@ | @@ -0,0 +1,18 @@ | ||
1 | +//package com.sincere.quartz.job; | ||
2 | +// | ||
3 | +//import com.sincere.quartz.third.yixueyun.YXYAddReadService; | ||
4 | +//import org.springframework.beans.factory.annotation.Autowired; | ||
5 | +//import org.springframework.scheduling.annotation.Scheduled; | ||
6 | +//import org.springframework.stereotype.Service; | ||
7 | +// | ||
8 | +//@Service | ||
9 | +//public class AddYxyJob { | ||
10 | +// | ||
11 | +// @Autowired | ||
12 | +// YXYAddReadService yxyAddReadService ; | ||
13 | +// | ||
14 | +// @Scheduled(cron = "30 * * * * ? ") | ||
15 | +// public void Sync(){ | ||
16 | +// yxyAddReadService.sync(); | ||
17 | +// } | ||
18 | +//} |
cloud/quartz/src/main/java/com/sincere/quartz/job/BindPushJob.java
1 | -package com.sincere.quartz.job; | ||
2 | - | ||
3 | -import com.sincere.common.dto.smartCampus.BindPushDto; | ||
4 | -import com.sincere.common.dto.smartCampus.ParentDto; | ||
5 | -import com.sincere.common.enums.PushTypeEnums; | ||
6 | -import com.sincere.common.util.DateUtils; | ||
7 | -import com.sincere.quartz.feign.ScFeign; | ||
8 | -import com.sincere.quartz.model.ShortMsg; | ||
9 | -import com.sincere.quartz.service.SmsService; | ||
10 | -import org.apache.commons.lang3.StringUtils; | ||
11 | -import org.slf4j.Logger; | ||
12 | -import org.slf4j.LoggerFactory; | ||
13 | -import org.springframework.beans.factory.annotation.Autowired; | ||
14 | -import org.springframework.scheduling.annotation.Scheduled; | ||
15 | -import org.springframework.stereotype.Service; | ||
16 | - | ||
17 | -import java.util.Date; | ||
18 | -import java.util.HashMap; | ||
19 | -import java.util.List; | ||
20 | -import java.util.Map; | ||
21 | - | ||
22 | -/** | ||
23 | - * 用户注册激活提醒 | ||
24 | - * | ||
25 | - * @author chen | ||
26 | - * @version 1.0 | ||
27 | - * @date 2019/12/10 0010 8:31 | ||
28 | - */ | ||
29 | -@Service | ||
30 | -public class BindPushJob { | ||
31 | - | ||
32 | - private Logger logger = LoggerFactory.getLogger(BindPushJob.class); | ||
33 | - | ||
34 | - | ||
35 | - @Autowired | ||
36 | - ScFeign scFeign; | ||
37 | - | ||
38 | - @Autowired | ||
39 | - SmsService smsService; | ||
40 | - | ||
41 | - private static Map<String, String> intervalDaysMap = new HashMap<>(); //redis 持久化 替换 可避免重启导致间隔的错误 | ||
42 | - | ||
43 | - @Scheduled(cron = "0 0-59 * * * ? ") | ||
44 | - public void bindPush() { | ||
45 | - Date nowDate = new Date(); | ||
46 | - List<BindPushDto> schoolList = scFeign.selectBindPushSchool(); | ||
47 | - for (BindPushDto school : schoolList) { | ||
48 | - if (school.getBeginDate().compareTo(nowDate) <= 0 && school.getEndDate().compareTo(nowDate) >= 0) { | ||
49 | - String lastDate = intervalDaysMap.get(school.getSchoolId() + "_" + school.getType()); | ||
50 | - if (StringUtils.isBlank(lastDate)) { | ||
51 | - //下发推送 | ||
52 | - bindPush(school, nowDate); | ||
53 | - } else { | ||
54 | - int day = DateUtils.getDateDifference(nowDate, DateUtils.string2Date(lastDate, DateUtils.format1), "day"); | ||
55 | - if (day == school.getIntervalDays() + 1) { | ||
56 | - //下发推送 | ||
57 | - bindPush(school, nowDate); | ||
58 | - } | ||
59 | - } | ||
60 | - } | ||
61 | - } | ||
62 | - } | ||
63 | - | ||
64 | - private void bindPush(BindPushDto bindPushDto, Date nowDate) { | ||
65 | - if (bindPushDto.getPushTime().equals(DateUtils.date2String(nowDate, DateUtils.format4))) { | ||
66 | - intervalDaysMap.put(bindPushDto.getSchoolId() + "_" + bindPushDto.getType(), DateUtils.date2String(nowDate, DateUtils.format1)); | ||
67 | - //未关注 | ||
68 | - List<ParentDto> unFollowList = scFeign.selectNotFollow(bindPushDto.getSchoolId()); | ||
69 | - logger.info(bindPushDto.getSchoolName() + "未关注人数" + unFollowList.size()); | ||
70 | - for (ParentDto parentDto : unFollowList) { | ||
71 | - sendMessage(parentDto, bindPushDto.getMsg()); | ||
72 | - } | ||
73 | - //未绑定 | ||
74 | - List<ParentDto> unBindList = scFeign.selectNotBind(bindPushDto.getSchoolId(), getThirdType(bindPushDto.getType())); | ||
75 | - logger.info(bindPushDto.getSchoolName() + "未绑定人数" + unBindList.size()); | ||
76 | - for (ParentDto parentDto : unBindList) { | ||
77 | - sendMessage(parentDto, bindPushDto.getMsg()); | ||
78 | - } | ||
79 | - } | ||
80 | - } | ||
81 | - | ||
82 | - private void sendMessage(ParentDto parentDto, String message) { | ||
83 | - //手机号为空 | ||
84 | - if (StringUtils.isNotBlank(parentDto.getMobile())) { | ||
85 | - String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | ||
86 | - ShortMsg shortMsg = new ShortMsg(); | ||
87 | - shortMsg.setTableName("smsNew" + tableSuffix); | ||
88 | - shortMsg.setSchoolId(parentDto.getSchoolId()); | ||
89 | - shortMsg.setMobile(parentDto.getMobile()); | ||
90 | - shortMsg.setMsg(message); | ||
91 | - smsService.insertSMS(shortMsg); | ||
92 | - logger.info("----学校Id---" + parentDto.getSchoolId() + "----手机号----" + parentDto.getMobile() + "---" + message); | ||
93 | - } | ||
94 | - } | ||
95 | - | ||
96 | - // 0是企业号,1是钉钉 | ||
97 | - private int getThirdType(int type) { | ||
98 | - if (type == 0) { | ||
99 | - return PushTypeEnums.QIYEHAO.getType(); | ||
100 | - } else { | ||
101 | - return PushTypeEnums.DING.getType(); | ||
102 | - } | ||
103 | - } | ||
104 | - | ||
105 | -} | 1 | +//package com.sincere.quartz.job; |
2 | +// | ||
3 | +//import com.sincere.common.dto.smartCampus.BindPushDto; | ||
4 | +//import com.sincere.common.dto.smartCampus.ParentDto; | ||
5 | +//import com.sincere.common.enums.PushTypeEnums; | ||
6 | +//import com.sincere.common.util.DateUtils; | ||
7 | +//import com.sincere.quartz.feign.ScFeign; | ||
8 | +//import com.sincere.quartz.model.ShortMsg; | ||
9 | +//import com.sincere.quartz.service.SmsService; | ||
10 | +//import org.apache.commons.lang3.StringUtils; | ||
11 | +//import org.slf4j.Logger; | ||
12 | +//import org.slf4j.LoggerFactory; | ||
13 | +//import org.springframework.beans.factory.annotation.Autowired; | ||
14 | +//import org.springframework.scheduling.annotation.Scheduled; | ||
15 | +//import org.springframework.stereotype.Service; | ||
16 | +// | ||
17 | +//import java.util.Date; | ||
18 | +//import java.util.HashMap; | ||
19 | +//import java.util.List; | ||
20 | +//import java.util.Map; | ||
21 | +// | ||
22 | +///** | ||
23 | +// * 用户注册激活提醒 | ||
24 | +// * @author chen | ||
25 | +// * @version 1.0 | ||
26 | +// * @date 2019/12/10 0010 8:31 | ||
27 | +// */ | ||
28 | +//@Service | ||
29 | +//public class BindPushJob { | ||
30 | +// | ||
31 | +// private Logger logger = LoggerFactory.getLogger(BindPushJob.class); | ||
32 | +// | ||
33 | +// | ||
34 | +// @Autowired | ||
35 | +// ScFeign scFeign; | ||
36 | +// | ||
37 | +// @Autowired | ||
38 | +// SmsService smsService; | ||
39 | +// | ||
40 | +// private static Map<String , String> intervalDaysMap = new HashMap<>(); //redis 持久化 替换 可避免重启导致间隔的错误 | ||
41 | +// | ||
42 | +// @Scheduled(cron = "0 0-59 * * * ? ") | ||
43 | +// public void bindPush(){ | ||
44 | +// Date nowDate = new Date(); | ||
45 | +// List<BindPushDto> schoolList = scFeign.selectBindPushSchool(); | ||
46 | +// for(BindPushDto school : schoolList){ | ||
47 | +// if(school.getBeginDate().compareTo(nowDate) <= 0 && school.getEndDate().compareTo(nowDate) >= 0){ | ||
48 | +// String lastDate = intervalDaysMap.get(school.getSchoolId()+"_"+school.getType()); | ||
49 | +// if(StringUtils.isBlank(lastDate)){ | ||
50 | +// //下发推送 | ||
51 | +// bindPush(school,nowDate); | ||
52 | +// }else { | ||
53 | +// int day = DateUtils.getDateDifference(nowDate,DateUtils.string2Date(lastDate,DateUtils.format1),"day") ; | ||
54 | +// if(day == school.getIntervalDays() + 1) { | ||
55 | +// //下发推送 | ||
56 | +// bindPush(school,nowDate); | ||
57 | +// } | ||
58 | +// } | ||
59 | +// } | ||
60 | +// } | ||
61 | +// } | ||
62 | +// | ||
63 | +// private void bindPush(BindPushDto bindPushDto , Date nowDate){ | ||
64 | +// if(bindPushDto.getPushTime().equals(DateUtils.date2String(nowDate,DateUtils.format4))){ | ||
65 | +// intervalDaysMap.put(bindPushDto.getSchoolId()+"_"+bindPushDto.getType(),DateUtils.date2String(nowDate,DateUtils.format1)); | ||
66 | +// //未关注 | ||
67 | +// List<ParentDto> unFollowList = scFeign.selectNotFollow(bindPushDto.getSchoolId()); | ||
68 | +// logger.info(bindPushDto.getSchoolName()+"未关注人数"+unFollowList.size()); | ||
69 | +// for(ParentDto parentDto : unFollowList){ | ||
70 | +// sendMessage(parentDto,bindPushDto.getMsg()); | ||
71 | +// } | ||
72 | +// //未绑定 | ||
73 | +// List<ParentDto> unBindList =scFeign.selectNotBind(bindPushDto.getSchoolId(),getThirdType(bindPushDto.getType())); | ||
74 | +// logger.info(bindPushDto.getSchoolName()+"未绑定人数"+unBindList.size()); | ||
75 | +// for(ParentDto parentDto : unBindList){ | ||
76 | +// sendMessage(parentDto,bindPushDto.getMsg()); | ||
77 | +// } | ||
78 | +// } | ||
79 | +// } | ||
80 | +// | ||
81 | +// private void sendMessage(ParentDto parentDto , String message){ | ||
82 | +// //手机号为空 | ||
83 | +// if(StringUtils.isNotBlank(parentDto.getMobile())){ | ||
84 | +// String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | ||
85 | +// ShortMsg shortMsg = new ShortMsg(); | ||
86 | +// shortMsg.setTableName("smsNew"+tableSuffix); | ||
87 | +// shortMsg.setSchoolId(parentDto.getSchoolId()); | ||
88 | +// shortMsg.setMobile(parentDto.getMobile()); | ||
89 | +// shortMsg.setMsg(message); | ||
90 | +// smsService.insertSMS(shortMsg); | ||
91 | +// logger.info("----学校Id---"+parentDto.getSchoolId() + "----手机号----"+parentDto.getMobile()+"---"+message); | ||
92 | +// } | ||
93 | +// } | ||
94 | +// | ||
95 | +// // 0是企业号,1是钉钉 | ||
96 | +// private int getThirdType(int type){ | ||
97 | +// if(type == 0){ | ||
98 | +// return PushTypeEnums.QIYEHAO.getType() ; | ||
99 | +// }else { | ||
100 | +// return PushTypeEnums.DING.getType() ; | ||
101 | +// } | ||
102 | +// } | ||
103 | +// | ||
104 | +//} |
cloud/quartz/src/main/java/com/sincere/quartz/job/KQJob.java
1 | -package com.sincere.quartz.job; | ||
2 | - | ||
3 | -import com.alibaba.fastjson.JSONArray; | ||
4 | -import com.alibaba.fastjson.JSONObject; | ||
5 | -import com.sincere.common.dto.smartCampus.*; | ||
6 | -import com.sincere.common.enums.PushTypeEnums; | ||
7 | -import com.sincere.common.util.DateUtils; | ||
8 | -import com.sincere.common.util.HttpClientUtils; | ||
9 | -import com.sincere.quartz.enums.KqTypeEnums; | ||
10 | -import com.sincere.quartz.enums.TypeEnums; | ||
11 | -import com.sincere.quartz.feign.ScFeign; | ||
12 | -import com.sincere.quartz.model.DingSms; | ||
13 | -import com.sincere.quartz.model.ShortMsg; | ||
14 | -import com.sincere.quartz.model.WeChatSms; | ||
15 | -import com.sincere.quartz.service.ManagerService; | ||
16 | -import com.sincere.quartz.service.SmsService; | ||
17 | -import org.apache.commons.lang3.StringUtils; | ||
18 | -import org.slf4j.Logger; | ||
19 | -import org.slf4j.LoggerFactory; | ||
20 | -import org.springframework.beans.factory.annotation.Autowired; | ||
21 | -import org.springframework.scheduling.annotation.Scheduled; | ||
22 | -import org.springframework.stereotype.Service; | ||
23 | - | ||
24 | -import java.math.BigDecimal; | ||
25 | -import java.util.*; | ||
26 | - | ||
27 | -/** | ||
28 | - * 考勤任务推送调用 | ||
29 | - * 主要推送盯盯以及企业号 | ||
30 | - * | ||
31 | - * @author chen | ||
32 | - * @version 1.0 | ||
33 | - * @date 2019/11/27 0027 17:05 | ||
34 | - */ | ||
35 | -@Service | ||
36 | -public class KQJob { | ||
37 | - | ||
38 | - private Logger logger = LoggerFactory.getLogger(KQJob.class); | ||
39 | - | ||
40 | - @Autowired | ||
41 | - ScFeign scFeign; | ||
42 | - | ||
43 | - @Autowired | ||
44 | - SmsService smsService; | ||
45 | - | ||
46 | - @Autowired | ||
47 | - ManagerService managerService; | ||
48 | - | ||
49 | - private static String iotUrl = "http://60.190.202.57:8035"; | ||
50 | - | ||
51 | - private static String date; | ||
52 | - private static Map<String, String> map = new HashMap<>(); //学校 考勤推送map | ||
53 | - | ||
54 | - private static String alarmDate; | ||
55 | - private static Map<String, String> alarmMap = new HashMap<>(); //考勤告警推送map | ||
56 | - private static Map<String, BigDecimal> templateMap = new HashMap<>(); // 考勤比例 | ||
57 | - | ||
58 | - private static List<String> opexList; | ||
59 | - private static String integration; | ||
60 | - | ||
61 | - static { | ||
62 | - opexList = new ArrayList<>(); | ||
63 | - opexList.add("15857566147"); //王汉栋 | ||
64 | - opexList.add("13858485977"); //王楠彬 | ||
65 | - | ||
66 | - integration = "18767117554"; //林炜 | ||
67 | - } | ||
68 | - | ||
69 | - @Scheduled(cron = "0 0-59 * * * ? ") | ||
70 | - public void kaoQing() { | ||
71 | - String now = DateUtils.date2String(new Date(), DateUtils.format1); | ||
72 | - if (StringUtils.isBlank(date)) { | ||
73 | - initMap(); | ||
74 | - date = now; | ||
75 | - } | ||
76 | - if (!DateUtils.date2String(new Date(), DateUtils.format1).equals(date)) { | ||
77 | - initMap(); | ||
78 | - date = DateUtils.date2String(new Date(), DateUtils.format1); | ||
79 | - } | ||
80 | - //开始过滤数据 推送 | ||
81 | - List<String> keyList = new ArrayList<>(); | ||
82 | - for (Map.Entry<String, String> entity : map.entrySet()) { | ||
83 | - String endTime = entity.getValue().split("_")[1]; | ||
84 | - if (DateUtils.getDateDifference(new Date(), DateUtils.string2Date(now + " " + endTime + ":00", DateUtils.format2), "m") >= 2 | ||
85 | - && DateUtils.getDateDifference(new Date(), DateUtils.string2Date(now + " " + endTime + ":00", DateUtils.format2), "m") < 5) { | ||
86 | - String key = entity.getKey(); | ||
87 | - String[] messageArray = key.split("_"); | ||
88 | - if (messageArray[2].contains(PushTypeEnums.QIYEHAO.getType() + "")) { | ||
89 | - logger.info("企业号推送:" + messageArray[0] + "__" + messageArray[1]); | ||
90 | - weChatBatchPush(messageArray[0], Integer.valueOf(messageArray[1]), entity.getValue()); | ||
91 | - } | ||
92 | - if (messageArray[2].contains(PushTypeEnums.DING.getType() + "")) { | ||
93 | - logger.info(("盯盯推送:" + messageArray[0] + "__" + messageArray[1])); | ||
94 | - dingBatchPush(messageArray[0], Integer.valueOf(messageArray[1]), entity.getValue()); | ||
95 | - } | ||
96 | - keyList.add(key); | ||
97 | - } | ||
98 | - } | ||
99 | - for (String key : keyList) { | ||
100 | - map.remove(key); | ||
101 | - } | ||
102 | - } | ||
103 | - | ||
104 | - @Scheduled(cron = "0 0-59 * * * ? ") | ||
105 | - public void alarmKaoQing() { | ||
106 | - String now = DateUtils.date2String(new Date(), DateUtils.format1); | ||
107 | - if (StringUtils.isBlank(alarmDate)) { | ||
108 | - initAlarmMap(); | ||
109 | - alarmDate = now; | ||
110 | - } | ||
111 | - if (!DateUtils.date2String(new Date(), DateUtils.format1).equals(alarmDate)) { | ||
112 | - initAlarmMap(); | ||
113 | - alarmDate = DateUtils.date2String(new Date(), DateUtils.format1); | ||
114 | - } | ||
115 | - //开始过滤数据 推送 | ||
116 | - List<String> keyList = new ArrayList<>(); | ||
117 | - for (Map.Entry<String, String> entity : alarmMap.entrySet()) { | ||
118 | - String endTime = entity.getValue().split("_")[1]; | ||
119 | - if (DateUtils.getDateDifference(new Date(), DateUtils.string2Date(now + " " + endTime + ":00", DateUtils.format2), "m") >= 2 | ||
120 | - ) { | ||
121 | - String key = entity.getKey(); | ||
122 | - keyList.add(key); | ||
123 | - //alarm(entity); //告警 | ||
124 | - //insertIOT(entity); //iot | ||
125 | - } | ||
126 | - } | ||
127 | - for (String key : keyList) { | ||
128 | - map.remove(key); | ||
129 | - } | ||
130 | - } | ||
131 | - | ||
132 | - private void initAlarmMap() { | ||
133 | - alarmMap = new HashMap<>(); | ||
134 | - List<TemplateDto> list = scFeign.getAllTemplateAlarm(); | ||
135 | - logger.info(("------考勤告警模板------")); | ||
136 | - for (TemplateDto templateDto : list) { | ||
137 | - String config = templateDto.getConfig(); | ||
138 | - String[] array = config.split("<Template"); | ||
139 | - for (int i = 1; i < array.length; i++) { | ||
140 | - try { | ||
141 | - String msg = array[i]; | ||
142 | - String beginTime = msg.substring(msg.indexOf("BeginTime") + 11, msg.indexOf("BeginTime") + 16); | ||
143 | - String endTime = msg.substring(msg.indexOf("EndTime") + 9, msg.indexOf("EndTime") + 14); | ||
144 | - String templateId = msg.substring(msg.indexOf("TemplateID") + 12, msg.indexOf("TemplateID") + 22); | ||
145 | - String Week = msg.substring(msg.indexOf("Week") + 6, msg.indexOf("Week") + 19); | ||
146 | - String type = msg.substring(msg.indexOf("Type") + 6, msg.indexOf("Type") + 8); | ||
147 | - type = type.replace("\"", ""); | ||
148 | - int nowWeek = DateUtils.getWeek(); | ||
149 | - if (Week.contains(nowWeek + "") && nowWeek != 6 && nowWeek != 0) { //周末不告警 | ||
150 | - logger.info((templateId + "_" + templateDto.getSchoolId() + "------" + beginTime + "_" + endTime)); | ||
151 | - alarmMap.put(templateId + "_" + templateDto.getSchoolId() + "_" + templateDto.getTitle(), beginTime + "_" + endTime + "_" + type + "_" + templateDto.getId()); | ||
152 | - } | ||
153 | - } catch (Exception e) { | ||
154 | - e.printStackTrace(); | ||
155 | - } | ||
156 | - } | ||
157 | - } | ||
158 | - } | ||
159 | - | ||
160 | - //告警推送 | ||
161 | - private void alarm(Map.Entry<String, String> entry) { | ||
162 | - String templateId = entry.getKey().split("_")[0]; | ||
163 | - String schoolId = entry.getKey().split("_")[1]; | ||
164 | - String id = entry.getValue().split("_")[3]; | ||
165 | - String type = entry.getValue().split("_")[2]; | ||
166 | - | ||
167 | - if (DateUtils.getWeek() == 2 || DateUtils.getWeek() == 5) { | ||
168 | - //可以相差40% | ||
169 | - BigDecimal percent = getAlarmCensus(Integer.valueOf(id), templateId, Integer.valueOf(schoolId), Integer.valueOf(type)); | ||
170 | - if (templateMap.get(templateId) != null) { | ||
171 | - if (percent.subtract(templateMap.get(templateId)).compareTo(new BigDecimal(0.4)) > 0 | ||
172 | - || templateMap.get(templateId).subtract(percent).compareTo(new BigDecimal(0.4)) > 0) { | ||
173 | - alarmPush(Integer.valueOf(schoolId)); | ||
174 | - } | ||
175 | - } | ||
176 | - templateMap.put(templateId, percent); | ||
177 | - } else { | ||
178 | - //相差30% | ||
179 | - BigDecimal percent = getAlarmCensus(Integer.valueOf(id), templateId, Integer.valueOf(schoolId), Integer.valueOf(type)); | ||
180 | - if (templateMap.get(templateId) != null) { | ||
181 | - if (percent.subtract(templateMap.get(templateId)).compareTo(new BigDecimal(0.3)) > 0 | ||
182 | - || templateMap.get(templateId).subtract(percent).compareTo(new BigDecimal(0.3)) > 0) { | ||
183 | - alarmPush(Integer.valueOf(schoolId)); | ||
184 | - } | ||
185 | - } | ||
186 | - templateMap.put(templateId, percent); | ||
187 | - } | ||
188 | - } | ||
189 | - | ||
190 | - private void insertIOT(Map.Entry<String, String> entry) { | ||
191 | - String templateId = entry.getKey().split("_")[0]; | ||
192 | - String schoolId = entry.getKey().split("_")[1]; | ||
193 | - String title = entry.getKey().split("_")[2]; | ||
194 | - String id = entry.getValue().split("_")[3]; | ||
195 | - String type = entry.getValue().split("_")[2]; | ||
196 | - String beginTime = entry.getValue().split("_")[0]; | ||
197 | - String endTime = entry.getValue().split("_")[1]; | ||
198 | - | ||
199 | - List<Integer> list = getIOTCensus(Integer.valueOf(id), templateId, Integer.valueOf(schoolId), Integer.valueOf(type)); | ||
200 | - JSONObject object = new JSONObject(); | ||
201 | - object.put("strTime", beginTime); | ||
202 | - object.put("endTime", endTime); | ||
203 | - object.put("inTime", DateUtils.date2String(new Date(), DateUtils.format1)); | ||
204 | - object.put("noAttendanceCount", list.get(1)); | ||
205 | - object.put("attendanceCount", list.get(0)); | ||
206 | - object.put("leaveCount", list.get(2)); | ||
207 | - object.put("templateName", title); | ||
208 | - object.put("qianDaoIdId", id); | ||
209 | - object.put("schoolId", schoolId); | ||
210 | - object.put("templateId", templateId); | ||
211 | - HttpClientUtils.httpPostJson(iotUrl + "/api/Association/addIntelligenceAttendance", object.toJSONString()); | ||
212 | - } | ||
213 | - | ||
214 | - //初始化要推送的模板 | ||
215 | - private void initMap() { | ||
216 | - map = new HashMap<>(); | ||
217 | - List<TemplateDto> list = scFeign.getAllTemplate(); | ||
218 | - logger.info(("------需要推送的考勤模板------")); | ||
219 | - for (TemplateDto templateDto : list) { | ||
220 | - String config = templateDto.getConfig(); | ||
221 | - String[] array = config.split("<Template"); | ||
222 | - for (int i = 1; i < array.length; i++) { | ||
223 | - try { | ||
224 | - String msg = array[i]; | ||
225 | - String beginTime = msg.substring(msg.indexOf("BeginTime") + 11, msg.indexOf("BeginTime") + 16); | ||
226 | - String endTime = msg.substring(msg.indexOf("EndTime") + 9, msg.indexOf("EndTime") + 14); | ||
227 | - String templateId = msg.substring(msg.indexOf("TemplateID") + 12, msg.indexOf("TemplateID") + 22); | ||
228 | - String Week = msg.substring(msg.indexOf("Week") + 6, msg.indexOf("Week") + 19); | ||
229 | - String type = msg.substring(msg.indexOf("Type") + 6, msg.indexOf("Type") + 8); | ||
230 | - type = type.replace("\"", ""); | ||
231 | - int nowWeek = DateUtils.getWeek(); | ||
232 | - if (Week.contains(nowWeek + "")) { | ||
233 | - logger.info((templateId + "_" + templateDto.getSchoolId() + "_" + templateDto.getType() + "------" + beginTime + "_" + endTime)); | ||
234 | - map.put(templateId + "_" + templateDto.getSchoolId() + "_" + templateDto.getType(), beginTime + "_" + endTime + "_" + type + "_" + templateDto.getId()); | ||
235 | - } | ||
236 | - } catch (Exception e) { | ||
237 | - e.printStackTrace(); | ||
238 | - } | ||
239 | - } | ||
240 | - } | ||
241 | - } | ||
242 | - | ||
243 | - //盯盯批量推送 | ||
244 | - private void dingBatchPush(String templateId, int schoolId, String key) { | ||
245 | - String[] times = key.split("_"); | ||
246 | - AppDto appDto = scFeign.getApp(schoolId, 1); | ||
247 | - if (Integer.valueOf(times[2]) < 7) { | ||
248 | - //出入校 推班主任 | ||
249 | - List<KqTeacherDto> list = scFeign.getTeacherList(schoolId); | ||
250 | - for (KqTeacherDto teacher : list) { | ||
251 | - dingSchoolPush(templateId, teacher, key, appDto, 0); | ||
252 | - } | ||
253 | - } else { | ||
254 | - //出入寝 推班主任 | ||
255 | - List<KqTeacherDto> list = scFeign.getTeacherList(schoolId); | ||
256 | - for (KqTeacherDto teacher : list) { | ||
257 | - dingSchoolPush(templateId, teacher, key, appDto, 1); | ||
258 | - } | ||
259 | - //推宿管 | ||
260 | - List<KqTeacherDto> chamberList = scFeign.selectChamberTeacher(schoolId); | ||
261 | - for (KqTeacherDto teacher : chamberList) { | ||
262 | - dingChamberPush(templateId, teacher, key, appDto); | ||
263 | - } | ||
264 | - } | ||
265 | - } | ||
266 | - | ||
267 | - //企业号批量推送 | ||
268 | - private void weChatBatchPush(String templateId, int schoolId, String key) { | ||
269 | - String[] times = key.split("_"); | ||
270 | - AppDto appDto = scFeign.getApp(schoolId, 0); | ||
271 | - if (Integer.valueOf(times[2]) < 7) { | ||
272 | - //出入校 推班主任 | ||
273 | - List<KqTeacherDto> list = scFeign.getTeacherList(schoolId); | ||
274 | - for (KqTeacherDto teacher : list) { | ||
275 | - weChatSchoolPush(templateId, teacher, key, appDto, 0); | ||
276 | - } | ||
277 | - } else { | ||
278 | - //出入寝 推班主任 | ||
279 | - List<KqTeacherDto> list = scFeign.getTeacherList(schoolId); | ||
280 | - for (KqTeacherDto teacher : list) { | ||
281 | - weChatSchoolPush(templateId, teacher, key, appDto, 1); | ||
282 | - } | ||
283 | - //推宿管 | ||
284 | - List<KqTeacherDto> chamberList = scFeign.selectChamberTeacher(schoolId); | ||
285 | - for (KqTeacherDto teacher : chamberList) { | ||
286 | - weChatChamberPush(templateId, teacher, key, appDto); | ||
287 | - } | ||
288 | - } | ||
289 | - } | ||
290 | - | ||
291 | - //盯盯推送班主任 | ||
292 | - private void dingSchoolPush(String templateId, KqTeacherDto teacher, String key, AppDto appDto, int type) { | ||
293 | - String[] times = key.split("_"); | ||
294 | - String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | ||
295 | - String thirdOpenId = scFeign.getThirdId(teacher.getUserId(), 0); | ||
296 | - if (StringUtils.isNotBlank(thirdOpenId)) { | ||
297 | - List<CensusKqDto> censusKqDtos = getCensus(Integer.valueOf(times[3]), templateId, teacher.getSchoolId(), teacher.getUserId(), type); | ||
298 | - if (censusKqDtos != null && censusKqDtos.size() > 0) { | ||
299 | - String message = ""; | ||
300 | - for (CensusKqDto censusKqDto : censusKqDtos) { | ||
301 | - message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假" + censusKqDto.getLeaveCount() + "人;"; | ||
302 | - } | ||
303 | - DingSms dingSms = new DingSms(); | ||
304 | - dingSms.setName(teacher.getName()); | ||
305 | - dingSms.setTableName("DingSmsNew" + tableSuffix); | ||
306 | - dingSms.setMsg("报告类型:" + KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - " + | ||
307 | - "签到日期:" + DateUtils.date2String(new Date(), DateUtils.format1) + "(" + DateUtils.getWeekName() + ") \n - " + | ||
308 | - "签到时间:" + times[0] + "-" + times[1] + " \n - " + | ||
309 | - "整体数据:" + message); | ||
310 | - String wapUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + | ||
311 | - "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() + "&TemplateId=" + templateId + | ||
312 | - "&data=" + thirdOpenId + "&type=1&stype=4&mobile=" + teacher.getMobile() + "&pass=" + teacher.getPass() + | ||
313 | - "&face=&sourcetype=16&soutype=3×tamp=" + DateUtils.getDate() + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1); | ||
314 | - dingSms.setSchoolId(teacher.getSchoolId()); | ||
315 | - dingSms.setDingUserId(thirdOpenId); | ||
316 | - dingSms.setAgentId(appDto.getAgentId()); | ||
317 | - dingSms.setWapUrl(wapUrl); | ||
318 | - dingSms.setReceiveUserId(teacher.getUserId()); | ||
319 | - dingSms.setTdType(TypeEnums.kaoqing.getType()); | ||
320 | - this.insertDing(dingSms); | ||
321 | - logger.info("盯盯推送班主任—————" + templateId + "--------" + teacher.getName()); | ||
322 | - } | ||
323 | - } | ||
324 | - } | ||
325 | - | ||
326 | - //盯盯推送宿管 | ||
327 | - private void dingChamberPush(String templateId, KqTeacherDto teacher, String key, AppDto appDto) { | ||
328 | - String[] times = key.split("_"); | ||
329 | - String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | ||
330 | - String thirdOpenId = scFeign.getThirdId(teacher.getUserId(), 0); | ||
331 | - if (StringUtils.isNotBlank(thirdOpenId)) { | ||
332 | - List<CensusKqDto> censusKqDtos = getCensus(Integer.valueOf(times[3]), templateId, teacher.getSchoolId(), teacher.getUserId(), 1); | ||
333 | - if (censusKqDtos != null && censusKqDtos.size() > 0) { | ||
334 | - String message = ""; | ||
335 | - for (CensusKqDto censusKqDto : censusKqDtos) { | ||
336 | - message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假" + censusKqDto.getLeaveCount() + "人;"; | ||
337 | - } | ||
338 | - DingSms dingSms = new DingSms(); | ||
339 | - dingSms.setName(teacher.getName()); | ||
340 | - dingSms.setTableName("DingSmsNew" + tableSuffix); | ||
341 | - dingSms.setMsg("报告类型:" + KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - " + | ||
342 | - "签到日期:" + DateUtils.date2String(new Date(), DateUtils.format1) + "(" + DateUtils.getWeekName() + ") \n - " + | ||
343 | - "签到时间:" + times[0] + "-" + times[1] + " \n - " + | ||
344 | - "整体数据:" + message); | ||
345 | - String msgUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + | ||
346 | - "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() + "&TemplateId=" + templateId + | ||
347 | - "&pass=" + teacher.getPass() + "&type=4&soutype=3&time=" + DateUtils.date2String(new Date(), DateUtils.format1); | ||
348 | - dingSms.setSchoolId(teacher.getSchoolId()); | ||
349 | - dingSms.setDingUserId(thirdOpenId); | ||
350 | - dingSms.setAgentId(appDto.getAgentId()); | ||
351 | - dingSms.setWapUrl(msgUrl); | ||
352 | - dingSms.setReceiveUserId(teacher.getUserId()); | ||
353 | - dingSms.setTdType(TypeEnums.kaoqing.getType()); | ||
354 | - this.insertDing(dingSms); | ||
355 | - logger.info("盯盯推送宿管—————" + templateId + "--------" + teacher.getName()); | ||
356 | - } | ||
357 | - } | ||
358 | - } | ||
359 | - | ||
360 | - //企业号推送班主任 | ||
361 | - private void weChatSchoolPush(String templateId, KqTeacherDto teacher, String key, AppDto appDto, int type) { | ||
362 | - String[] times = key.split("_"); | ||
363 | - String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | ||
364 | - String thirdOpenId = scFeign.getThirdId(teacher.getUserId(), 1); | ||
365 | - if (StringUtils.isNotBlank(thirdOpenId)) { | ||
366 | - List<CensusKqDto> censusKqDtos = getCensus(Integer.valueOf(times[3]), templateId, teacher.getSchoolId(), teacher.getUserId(), type); | ||
367 | - if (censusKqDtos != null && censusKqDtos.size() > 0) { | ||
368 | - String message = ""; | ||
369 | - for (CensusKqDto censusKqDto : censusKqDtos) { | ||
370 | - message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假" + censusKqDto.getLeaveCount() + "人;"; | ||
371 | - } | ||
372 | - WeChatSms weChatSms = new WeChatSms(); | ||
373 | - weChatSms.setTableName("qyhSmsNew" + tableSuffix); | ||
374 | - weChatSms.setMsg("报告类型:" + KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - " + | ||
375 | - "签到日期:" + DateUtils.date2String(new Date(), DateUtils.format1) + "(" + DateUtils.getWeekName() + ") \n - " + | ||
376 | - "签到时间:" + times[0] + "-" + times[1] + " \n - " + | ||
377 | - "整体数据:" + message); | ||
378 | - weChatSms.setSchoolId(teacher.getSchoolId()); | ||
379 | - weChatSms.setName(teacher.getName()); | ||
380 | - weChatSms.setQiYeHaoUserId(thirdOpenId); | ||
381 | - weChatSms.setReceiveUserId(teacher.getUserId()); | ||
382 | - weChatSms.setAppId(appDto.getAgentId()); | ||
383 | - weChatSms.setSecret(appDto.getAgentSecret()); | ||
384 | - String msgUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + | ||
385 | - "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() + "&TemplateId=" + templateId + | ||
386 | - "&data=" + thirdOpenId + "&type=1&stype=3&mobile=" + teacher.getMobile() + "&pass=" + teacher.getPass() + | ||
387 | - "&face=" + teacher.getFace() + "&sourcetype=16&soutype=2×tamp=" + DateUtils.getDate() + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1) + "&"; | ||
388 | - weChatSms.setMsgUrl(msgUrl); | ||
389 | - weChatSms.setTdType(TypeEnums.kaoqing.getType()); | ||
390 | - this.insertQYH(weChatSms); | ||
391 | - logger.info("企业号推送班主任—————" + templateId + "--------" + teacher.getName()); | ||
392 | - } | ||
393 | - } | ||
394 | - } | ||
395 | - | ||
396 | - //企业号推送宿管 | ||
397 | - private void weChatChamberPush(String templateId, KqTeacherDto teacher, String key, AppDto appDto) { | ||
398 | - String[] times = key.split("_"); | ||
399 | - String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | ||
400 | - String thirdOpenId = scFeign.getThirdId(teacher.getUserId(), 1); | ||
401 | - if (StringUtils.isNotBlank(thirdOpenId)) { | ||
402 | - List<CensusKqDto> censusKqDtos = getCensus(Integer.valueOf(times[3]), templateId, teacher.getSchoolId(), teacher.getUserId(), 1); | ||
403 | - if (censusKqDtos != null && censusKqDtos.size() > 0) { | ||
404 | - String message = ""; | ||
405 | - for (CensusKqDto censusKqDto : censusKqDtos) { | ||
406 | - message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假" + censusKqDto.getLeaveCount() + "人;"; | ||
407 | - } | ||
408 | - WeChatSms weChatSms = new WeChatSms(); | ||
409 | - weChatSms.setTableName("qyhSmsNew" + tableSuffix); | ||
410 | - weChatSms.setMsg("报告类型:" + KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - " + | ||
411 | - "签到日期:" + DateUtils.date2String(new Date(), DateUtils.format1) + "(" + DateUtils.getWeekName() + ") \n - " + | ||
412 | - "签到时间:" + times[0] + "-" + times[1] + " \n - " + | ||
413 | - "整体数据:" + message); | ||
414 | - weChatSms.setSchoolId(teacher.getSchoolId()); | ||
415 | - weChatSms.setName(teacher.getName()); | ||
416 | - weChatSms.setQiYeHaoUserId(thirdOpenId); | ||
417 | - weChatSms.setReceiveUserId(teacher.getUserId()); | ||
418 | - weChatSms.setAppId(appDto.getAgentId()); | ||
419 | - weChatSms.setSecret(appDto.getAgentSecret()); | ||
420 | - String msgUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + | ||
421 | - "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() + "&TemplateId=" + templateId + | ||
422 | - "&pass=" + teacher.getPass() + "&type=4&soutype=2&time=" + DateUtils.date2String(new Date(), DateUtils.format1) + "&"; | ||
423 | - weChatSms.setMsgUrl(msgUrl); | ||
424 | - weChatSms.setTdType(TypeEnums.kaoqing.getType()); | ||
425 | - this.insertQYH(weChatSms); | ||
426 | - logger.info("企业号推送宿管—————" + templateId + "--------" + teacher.getName()); | ||
427 | - } | ||
428 | - } | ||
429 | - } | ||
430 | - | ||
431 | - //type 0 出入校 1 出入寝 | ||
432 | - private List<CensusKqDto> getCensus(int id, String templateId, int schoolId, String userId, int type) { | ||
433 | - List<CensusKqDto> list = new ArrayList<>(); | ||
434 | - String url = "http://campus.myjxt.com/api/EasyN/GeAttendDetailNew?schoolId=" + schoolId + | ||
435 | - "&id=" + id + "&templateID=" + templateId + "&type=" + type + "&userId=" + userId + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1); | ||
436 | - JSONObject jsonObject = HttpClientUtils.httpGet(url); | ||
437 | - try { | ||
438 | - JSONArray data = (JSONArray) jsonObject.get("data"); | ||
439 | - for (int i = 0; i < data.size(); i++) { | ||
440 | - CensusKqDto censusKqDto = new CensusKqDto(); | ||
441 | - JSONObject object = data.getJSONObject(i); | ||
442 | - censusKqDto.setLeaveCount((Integer) object.get("leaveCount")); | ||
443 | - censusKqDto.setNotAttendCount((Integer) object.get("noAttendCount")); | ||
444 | - censusKqDto.setTargetName((String) object.get("name")); | ||
445 | - list.add(censusKqDto); | ||
446 | - } | ||
447 | - } catch (Exception e) { | ||
448 | - | ||
449 | - } | ||
450 | - return list; | ||
451 | - } | ||
452 | - | ||
453 | - private BigDecimal getAlarmCensus(int id, String templateId, int schoolId, int type) { | ||
454 | - int allNumber = 0, attendNumber = 0; | ||
455 | - List<Integer> list = scFeign.selectClassBySchoolId(schoolId); | ||
456 | - for (Integer classId : list) { | ||
457 | - String url = "http://campus.myjxt.com/api/EasyN/GeAttendDetail?classId=" + classId + | ||
458 | - "&id=" + id + "&templateID=" + templateId + "&type=" + type + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1); | ||
459 | - JSONObject jsonObject = HttpClientUtils.httpGet(url); | ||
460 | - try { | ||
461 | - JSONObject data = (JSONObject) jsonObject.get("data"); | ||
462 | - attendNumber = attendNumber + (Integer) data.get("stuAttendCount"); | ||
463 | - allNumber = allNumber + (Integer) data.get("stuCount"); | ||
464 | - } catch (Exception e) { | ||
465 | - e.printStackTrace(); | ||
466 | - } | ||
467 | - } | ||
468 | - if (allNumber != 0) { | ||
469 | - BigDecimal pecrent = new BigDecimal(attendNumber).divide(new BigDecimal(allNumber), 10, BigDecimal.ROUND_HALF_DOWN); | ||
470 | - return pecrent; | ||
471 | - } else { | ||
472 | - return BigDecimal.ZERO; | ||
473 | - } | ||
474 | - | ||
475 | - } | ||
476 | - | ||
477 | - /** | ||
478 | - * @param id | ||
479 | - * @param templateId | ||
480 | - * @param schoolId | ||
481 | - * @param type | ||
482 | - * @return list(0) 出勤 list(1) 未出勤 List(2) 请假 | ||
483 | - */ | ||
484 | - private List<Integer> getIOTCensus(int id, String templateId, int schoolId, int type) { | ||
485 | - List<Integer> result = new ArrayList<>(); | ||
486 | - int attend = 0, unattend = 0, leave = 0; | ||
487 | - List<Integer> list = scFeign.selectClassBySchoolId(schoolId); | ||
488 | - for (Integer classId : list) { | ||
489 | - String url = "http://campus.myjxt.com/api/EasyN/GeAttendDetail?classId=" + classId + | ||
490 | - "&id=" + id + "&templateID=" + templateId + "&type=" + type + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1); | ||
491 | - JSONObject jsonObject = HttpClientUtils.httpGet(url); | ||
492 | - try { | ||
493 | - JSONObject data = (JSONObject) jsonObject.get("data"); | ||
494 | - attend = attend + (Integer) data.get("stuAttendCount"); | ||
495 | - unattend = unattend + (Integer) data.get("noAttendCount"); | ||
496 | - leave = leave + (Integer) data.get("leaveCount"); | ||
497 | - } catch (Exception e) { | ||
498 | - e.printStackTrace(); | ||
499 | - } | ||
500 | - } | ||
501 | - result.add(attend); | ||
502 | - result.add(unattend); | ||
503 | - result.add(leave); | ||
504 | - return result; | ||
505 | - } | ||
506 | - | ||
507 | - | ||
508 | - private void insertDing(DingSms dingSms) { | ||
509 | - try { | ||
510 | - smsService.insertDing(dingSms); | ||
511 | - } catch (Exception e) { | ||
512 | - logger.info(e.toString()); | ||
513 | - } | ||
514 | - } | ||
515 | - | ||
516 | - private void insertQYH(WeChatSms weChatSms) { | ||
517 | - try { | ||
518 | - smsService.insertWeChat(weChatSms); | ||
519 | - } catch (Exception e) { | ||
520 | - logger.info(e.toString()); | ||
521 | - } | ||
522 | - } | ||
523 | - | ||
524 | - private void alarmPush(int schoolId) { | ||
525 | - String msg = "【考勤异动】"; | ||
526 | - try { | ||
527 | - SchoolDto schoolDto = scFeign.selectSchoolBySchoolId(schoolId); | ||
528 | - msg += schoolDto.getSchoolName() + "考勤有异动,请关注!"; | ||
529 | - sendMessage(schoolDto.getSchoolId(), opexList.get(0), msg); | ||
530 | - sendMessage(schoolDto.getSchoolId(), opexList.get(1), msg); | ||
531 | - sendMessage(schoolDto.getSchoolId(), integration, msg); | ||
532 | - String managerPhone = managerService.selectManagerById(schoolDto.getManagerUserId()); | ||
533 | - if (StringUtils.isNotBlank(managerPhone)) { | ||
534 | - sendMessage(schoolDto.getSchoolId(), managerPhone, msg); | ||
535 | - } | ||
536 | - } catch (Exception e) { | ||
537 | - e.printStackTrace(); | ||
538 | - } | ||
539 | - | ||
540 | - } | ||
541 | - | ||
542 | - private void sendMessage(int schoolId, String mobile, String msg) { | ||
543 | - String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | ||
544 | - ShortMsg shortMsg = new ShortMsg(); | ||
545 | - shortMsg.setTableName("smsNew" + tableSuffix); | ||
546 | - shortMsg.setSchoolId(schoolId); | ||
547 | - shortMsg.setMobile(mobile); | ||
548 | - shortMsg.setMsg(msg); | ||
549 | - smsService.insertSMS(shortMsg); | ||
550 | - } | ||
551 | -} | 1 | +//package com.sincere.quartz.job; |
2 | +// | ||
3 | +//import com.alibaba.fastjson.JSONArray; | ||
4 | +//import com.alibaba.fastjson.JSONObject; | ||
5 | +//import com.sincere.common.dto.smartCampus.*; | ||
6 | +//import com.sincere.common.enums.PushTypeEnums; | ||
7 | +//import com.sincere.common.util.DateUtils; | ||
8 | +//import com.sincere.common.util.HttpClientUtils; | ||
9 | +//import com.sincere.quartz.enums.KqTypeEnums; | ||
10 | +//import com.sincere.quartz.enums.TypeEnums; | ||
11 | +//import com.sincere.quartz.feign.ScFeign; | ||
12 | +//import com.sincere.quartz.model.DingSms; | ||
13 | +//import com.sincere.quartz.model.ShortMsg; | ||
14 | +//import com.sincere.quartz.model.WeChatSms; | ||
15 | +//import com.sincere.quartz.service.ManagerService; | ||
16 | +//import com.sincere.quartz.service.SmsService; | ||
17 | +//import org.apache.commons.lang3.StringUtils; | ||
18 | +//import org.slf4j.Logger; | ||
19 | +//import org.slf4j.LoggerFactory; | ||
20 | +//import org.springframework.beans.factory.annotation.Autowired; | ||
21 | +//import org.springframework.scheduling.annotation.Scheduled; | ||
22 | +//import org.springframework.stereotype.Service; | ||
23 | +// | ||
24 | +//import java.math.BigDecimal; | ||
25 | +//import java.util.*; | ||
26 | +// | ||
27 | +///** | ||
28 | +// * 考勤任务推送调用 | ||
29 | +// * 主要推送盯盯以及企业号 | ||
30 | +// * @author chen | ||
31 | +// * @version 1.0 | ||
32 | +// * @date 2019/11/27 0027 17:05 | ||
33 | +// */ | ||
34 | +//@Service | ||
35 | +//public class KQJob { | ||
36 | +// | ||
37 | +// private Logger logger = LoggerFactory.getLogger(KQJob.class); | ||
38 | +// | ||
39 | +// @Autowired | ||
40 | +// ScFeign scFeign ; | ||
41 | +// | ||
42 | +// @Autowired | ||
43 | +// SmsService smsService; | ||
44 | +// | ||
45 | +// @Autowired | ||
46 | +// ManagerService managerService ; | ||
47 | +// | ||
48 | +// private static String iotUrl = "http://60.190.202.57:8035"; | ||
49 | +// | ||
50 | +// private static String date ; | ||
51 | +// private static Map<String , String> map = new HashMap<>(); //学校 考勤推送map | ||
52 | +// | ||
53 | +// private static String alarmDate ; | ||
54 | +// private static Map<String , String> alarmMap = new HashMap<>(); //考勤告警推送map | ||
55 | +// private static Map<String , BigDecimal> templateMap = new HashMap<>(); // 考勤比例 | ||
56 | +// | ||
57 | +// private static List<String> opexList ; | ||
58 | +// private static String integration ; | ||
59 | +// | ||
60 | +// static{ | ||
61 | +// opexList = new ArrayList<>(); | ||
62 | +// opexList.add("15857566147"); //王汉栋 | ||
63 | +// opexList.add("13858485977"); //王楠彬 | ||
64 | +// | ||
65 | +// integration = "18767117554" ; //林炜 | ||
66 | +// } | ||
67 | +// | ||
68 | +// @Scheduled(cron = "0 0-59 * * * ? ") | ||
69 | +// public void kaoQing() { | ||
70 | +// String now = DateUtils.date2String(new Date(),DateUtils.format1) ; | ||
71 | +// if(StringUtils.isBlank(date)){ | ||
72 | +// initMap(); | ||
73 | +// date = now ; | ||
74 | +// } | ||
75 | +// if(!DateUtils.date2String(new Date(),DateUtils.format1).equals(date)){ | ||
76 | +// initMap(); | ||
77 | +// date = DateUtils.date2String(new Date(),DateUtils.format1) ; | ||
78 | +// } | ||
79 | +// //开始过滤数据 推送 | ||
80 | +// List<String> keyList = new ArrayList<>(); | ||
81 | +// for(Map.Entry<String, String> entity : map.entrySet()){ | ||
82 | +// String endTime = entity.getValue().split("_")[1]; | ||
83 | +// if(DateUtils.getDateDifference(new Date(),DateUtils.string2Date(now+" "+endTime+":00",DateUtils.format2),"m")>=2 | ||
84 | +// && DateUtils.getDateDifference(new Date(),DateUtils.string2Date(now+" "+endTime+":00",DateUtils.format2),"m")<5){ | ||
85 | +// String key = entity.getKey(); | ||
86 | +// String[] messageArray = key.split("_"); | ||
87 | +// if(messageArray[2].contains(PushTypeEnums.QIYEHAO.getType()+"")){ | ||
88 | +// logger.info("企业号推送:" + messageArray[0] + "__" + messageArray[1]); | ||
89 | +// weChatBatchPush(messageArray[0],Integer.valueOf(messageArray[1]),entity.getValue()); | ||
90 | +// } | ||
91 | +// if(messageArray[2].contains(PushTypeEnums.DING.getType()+"")){ | ||
92 | +// logger.info(("盯盯推送:" + messageArray[0] + "__" + messageArray[1])); | ||
93 | +// dingBatchPush(messageArray[0],Integer.valueOf(messageArray[1]),entity.getValue()); | ||
94 | +// } | ||
95 | +// keyList.add(key); | ||
96 | +// } | ||
97 | +// } | ||
98 | +// for(String key : keyList){ | ||
99 | +// map.remove(key); | ||
100 | +// } | ||
101 | +// } | ||
102 | +// | ||
103 | +// @Scheduled(cron = "0 0-59 * * * ? ") | ||
104 | +// public void alarmKaoQing() { | ||
105 | +// String now = DateUtils.date2String(new Date(),DateUtils.format1) ; | ||
106 | +// if(StringUtils.isBlank(alarmDate)){ | ||
107 | +// initAlarmMap(); | ||
108 | +// alarmDate = now ; | ||
109 | +// } | ||
110 | +// if(!DateUtils.date2String(new Date(),DateUtils.format1).equals(alarmDate)){ | ||
111 | +// initAlarmMap(); | ||
112 | +// alarmDate = DateUtils.date2String(new Date(),DateUtils.format1) ; | ||
113 | +// } | ||
114 | +// //开始过滤数据 推送 | ||
115 | +// List<String> keyList = new ArrayList<>(); | ||
116 | +// for(Map.Entry<String, String> entity : alarmMap.entrySet()){ | ||
117 | +// String endTime = entity.getValue().split("_")[1]; | ||
118 | +// if(DateUtils.getDateDifference(new Date(),DateUtils.string2Date(now+" "+endTime+":00",DateUtils.format2),"m")>=2 | ||
119 | +// ){ | ||
120 | +// String key = entity.getKey(); | ||
121 | +// keyList.add(key); | ||
122 | +// //alarm(entity); //告警 | ||
123 | +// //insertIOT(entity); //iot | ||
124 | +// } | ||
125 | +// } | ||
126 | +// for(String key : keyList){ | ||
127 | +// map.remove(key); | ||
128 | +// } | ||
129 | +// } | ||
130 | +// | ||
131 | +// private void initAlarmMap(){ | ||
132 | +// alarmMap = new HashMap<>(); | ||
133 | +// List<TemplateDto> list = scFeign.getAllTemplateAlarm(); | ||
134 | +// logger.info(("------考勤告警模板------")); | ||
135 | +// for(TemplateDto templateDto : list){ | ||
136 | +// String config = templateDto.getConfig(); | ||
137 | +// String[] array = config.split("<Template"); | ||
138 | +// for(int i = 1 ; i<array.length ;i++){ | ||
139 | +// try{ | ||
140 | +// String msg = array[i]; | ||
141 | +// String beginTime = msg.substring(msg.indexOf("BeginTime")+11,msg.indexOf("BeginTime")+16); | ||
142 | +// String endTime = msg.substring(msg.indexOf("EndTime")+9,msg.indexOf("EndTime")+14); | ||
143 | +// String templateId = msg.substring(msg.indexOf("TemplateID")+12,msg.indexOf("TemplateID")+22); | ||
144 | +// String Week = msg.substring(msg.indexOf("Week")+6,msg.indexOf("Week")+19); | ||
145 | +// String type = msg.substring(msg.indexOf("Type")+6,msg.indexOf("Type")+8); | ||
146 | +// type = type.replace("\"",""); | ||
147 | +// int nowWeek = DateUtils.getWeek() ; | ||
148 | +// if(Week.contains(nowWeek+"") && nowWeek != 6 && nowWeek != 0 ){ //周末不告警 | ||
149 | +// logger.info((templateId+"_"+templateDto.getSchoolId()+"------"+beginTime+"_"+endTime)); | ||
150 | +// alarmMap.put(templateId+"_"+templateDto.getSchoolId()+"_"+templateDto.getTitle() , beginTime+"_"+endTime+"_"+type+"_"+templateDto.getId()); | ||
151 | +// } | ||
152 | +// }catch (Exception e){ | ||
153 | +// e.printStackTrace(); | ||
154 | +// } | ||
155 | +// } | ||
156 | +// } | ||
157 | +// } | ||
158 | +// | ||
159 | +// //告警推送 | ||
160 | +// private void alarm(Map.Entry<String,String> entry){ | ||
161 | +// String templateId = entry.getKey().split("_")[0] ; | ||
162 | +// String schoolId = entry.getKey().split("_")[1] ; | ||
163 | +// String id = entry.getValue().split("_")[3]; | ||
164 | +// String type = entry.getValue().split("_")[2] ; | ||
165 | +// | ||
166 | +// if(DateUtils.getWeek() == 2 || DateUtils.getWeek() == 5){ | ||
167 | +// //可以相差40% | ||
168 | +// BigDecimal percent = getAlarmCensus(Integer.valueOf(id),templateId,Integer.valueOf(schoolId),Integer.valueOf(type)); | ||
169 | +// if(templateMap.get(templateId) != null){ | ||
170 | +// if(percent.subtract(templateMap.get(templateId)).compareTo(new BigDecimal(0.4)) > 0 | ||
171 | +// || templateMap.get(templateId).subtract(percent).compareTo(new BigDecimal(0.4)) > 0) { | ||
172 | +// alarmPush(Integer.valueOf(schoolId)); | ||
173 | +// } | ||
174 | +// } | ||
175 | +// templateMap.put(templateId,percent); | ||
176 | +// }else { | ||
177 | +// //相差30% | ||
178 | +// BigDecimal percent = getAlarmCensus(Integer.valueOf(id),templateId,Integer.valueOf(schoolId),Integer.valueOf(type)); | ||
179 | +// if(templateMap.get(templateId) != null){ | ||
180 | +// if(percent.subtract(templateMap.get(templateId)).compareTo(new BigDecimal(0.3)) > 0 | ||
181 | +// || templateMap.get(templateId).subtract(percent).compareTo(new BigDecimal(0.3)) > 0) { | ||
182 | +// alarmPush(Integer.valueOf(schoolId)); | ||
183 | +// } | ||
184 | +// } | ||
185 | +// templateMap.put(templateId,percent); | ||
186 | +// } | ||
187 | +// } | ||
188 | +// | ||
189 | +// private void insertIOT(Map.Entry<String,String> entry){ | ||
190 | +// String templateId = entry.getKey().split("_")[0] ; | ||
191 | +// String schoolId = entry.getKey().split("_")[1] ; | ||
192 | +// String title = entry.getKey().split("_")[2] ; | ||
193 | +// String id = entry.getValue().split("_")[3]; | ||
194 | +// String type = entry.getValue().split("_")[2] ; | ||
195 | +// String beginTime = entry.getValue().split("_")[0] ; | ||
196 | +// String endTime = entry.getValue().split("_")[1] ; | ||
197 | +// | ||
198 | +// List<Integer> list = getIOTCensus(Integer.valueOf(id),templateId,Integer.valueOf(schoolId),Integer.valueOf(type)) ; | ||
199 | +// JSONObject object = new JSONObject(); | ||
200 | +// object.put("strTime",beginTime); | ||
201 | +// object.put("endTime",endTime); | ||
202 | +// object.put("inTime",DateUtils.date2String(new Date(),DateUtils.format1)); | ||
203 | +// object.put("noAttendanceCount",list.get(1)); | ||
204 | +// object.put("attendanceCount",list.get(0)); | ||
205 | +// object.put("leaveCount",list.get(2)); | ||
206 | +// object.put("templateName",title); | ||
207 | +// object.put("qianDaoIdId",id); | ||
208 | +// object.put("schoolId",schoolId); | ||
209 | +// object.put("templateId",templateId); | ||
210 | +// HttpClientUtils.httpPostJson(iotUrl+"/api/Association/addIntelligenceAttendance",object.toJSONString()); | ||
211 | +// } | ||
212 | +// | ||
213 | +// //初始化要推送的模板 | ||
214 | +// private void initMap(){ | ||
215 | +// map = new HashMap<>(); | ||
216 | +// List<TemplateDto> list = scFeign.getAllTemplate(); | ||
217 | +// logger.info(("------需要推送的考勤模板------")); | ||
218 | +// for(TemplateDto templateDto : list){ | ||
219 | +// String config = templateDto.getConfig(); | ||
220 | +// String[] array = config.split("<Template"); | ||
221 | +// for(int i = 1 ; i<array.length ;i++){ | ||
222 | +// try{ | ||
223 | +// String msg = array[i]; | ||
224 | +// String beginTime = msg.substring(msg.indexOf("BeginTime")+11,msg.indexOf("BeginTime")+16); | ||
225 | +// String endTime = msg.substring(msg.indexOf("EndTime")+9,msg.indexOf("EndTime")+14); | ||
226 | +// String templateId = msg.substring(msg.indexOf("TemplateID")+12,msg.indexOf("TemplateID")+22); | ||
227 | +// String Week = msg.substring(msg.indexOf("Week")+6,msg.indexOf("Week")+19); | ||
228 | +// String type = msg.substring(msg.indexOf("Type")+6,msg.indexOf("Type")+8); | ||
229 | +// type = type.replace("\"",""); | ||
230 | +// int nowWeek = DateUtils.getWeek() ; | ||
231 | +// if(Week.contains(nowWeek+"")){ | ||
232 | +// logger.info((templateId+"_"+templateDto.getSchoolId()+"_"+templateDto.getType()+"------"+beginTime+"_"+endTime)); | ||
233 | +// map.put(templateId+"_"+templateDto.getSchoolId()+"_"+templateDto.getType() , beginTime+"_"+endTime+"_"+type+"_"+templateDto.getId()); | ||
234 | +// } | ||
235 | +// }catch (Exception e){ | ||
236 | +// e.printStackTrace(); | ||
237 | +// } | ||
238 | +// } | ||
239 | +// } | ||
240 | +// } | ||
241 | +// | ||
242 | +// //盯盯批量推送 | ||
243 | +// private void dingBatchPush(String templateId , int schoolId , String key){ | ||
244 | +// String[] times = key.split("_"); | ||
245 | +// AppDto appDto = scFeign.getApp(schoolId,1); | ||
246 | +// if(Integer.valueOf(times[2]) < 7){ | ||
247 | +// //出入校 推班主任 | ||
248 | +// List<KqTeacherDto> list = scFeign.getTeacherList(schoolId); | ||
249 | +// for(KqTeacherDto teacher : list){ | ||
250 | +// dingSchoolPush(templateId,teacher,key,appDto,0); | ||
251 | +// } | ||
252 | +// }else { | ||
253 | +// //出入寝 推班主任 | ||
254 | +// List<KqTeacherDto> list = scFeign.getTeacherList(schoolId); | ||
255 | +// for(KqTeacherDto teacher : list){ | ||
256 | +// dingSchoolPush(templateId,teacher, key, appDto,1); | ||
257 | +// } | ||
258 | +// //推宿管 | ||
259 | +// List<KqTeacherDto> chamberList = scFeign.selectChamberTeacher(schoolId); | ||
260 | +// for(KqTeacherDto teacher : chamberList){ | ||
261 | +// dingChamberPush(templateId,teacher, key, appDto); | ||
262 | +// } | ||
263 | +// } | ||
264 | +// } | ||
265 | +// | ||
266 | +// //企业号批量推送 | ||
267 | +// private void weChatBatchPush(String templateId , int schoolId , String key){ | ||
268 | +// String[] times = key.split("_"); | ||
269 | +// AppDto appDto = scFeign.getApp(schoolId, 0); | ||
270 | +// if(Integer.valueOf(times[2]) < 7) { | ||
271 | +// //出入校 推班主任 | ||
272 | +// List<KqTeacherDto> list = scFeign.getTeacherList(schoolId); | ||
273 | +// for (KqTeacherDto teacher : list) { | ||
274 | +// weChatSchoolPush(templateId,teacher, key, appDto,0); | ||
275 | +// } | ||
276 | +// }else { | ||
277 | +// //出入寝 推班主任 | ||
278 | +// List<KqTeacherDto> list = scFeign.getTeacherList(schoolId); | ||
279 | +// for (KqTeacherDto teacher : list) { | ||
280 | +// weChatSchoolPush(templateId,teacher, key, appDto,1); | ||
281 | +// } | ||
282 | +// //推宿管 | ||
283 | +// List<KqTeacherDto> chamberList = scFeign.selectChamberTeacher(schoolId); | ||
284 | +// for(KqTeacherDto teacher : chamberList){ | ||
285 | +// weChatChamberPush(templateId,teacher, key, appDto); | ||
286 | +// } | ||
287 | +// } | ||
288 | +// } | ||
289 | +// | ||
290 | +// //盯盯推送班主任 | ||
291 | +// private void dingSchoolPush(String templateId ,KqTeacherDto teacher , String key , AppDto appDto , int type){ | ||
292 | +// String[] times = key.split("_"); | ||
293 | +// String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | ||
294 | +// String thirdOpenId = scFeign.getThirdId(teacher.getUserId(),0); | ||
295 | +// if(StringUtils.isNotBlank(thirdOpenId)){ | ||
296 | +// List<CensusKqDto> censusKqDtos = getCensus(Integer.valueOf(times[3]),templateId,teacher.getSchoolId(),teacher.getUserId(),type); | ||
297 | +// if(censusKqDtos != null &&censusKqDtos.size() > 0){ | ||
298 | +// String message = ""; | ||
299 | +// for(CensusKqDto censusKqDto : censusKqDtos){ | ||
300 | +// message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假"+censusKqDto.getLeaveCount()+"人;"; | ||
301 | +// } | ||
302 | +// DingSms dingSms = new DingSms(); | ||
303 | +// dingSms.setName(teacher.getName()); | ||
304 | +// dingSms.setTableName("DingSmsNew"+tableSuffix); | ||
305 | +// dingSms.setMsg("报告类型:"+KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - "+ | ||
306 | +// "签到日期:"+DateUtils.date2String(new Date(),DateUtils.format1)+ "("+DateUtils.getWeekName()+") \n - "+ | ||
307 | +// "签到时间:"+times[0]+"-"+ times[1] +" \n - "+ | ||
308 | +// "整体数据:" + message); | ||
309 | +// String wapUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + | ||
310 | +// "schoolid="+teacher.getSchoolId()+"&userId="+teacher.getUserId()+"&name="+teacher.getName()+ "&TemplateId=" + templateId+ | ||
311 | +// "&data="+thirdOpenId+"&type=1&stype=4&mobile="+teacher.getMobile()+"&pass="+teacher.getPass()+ | ||
312 | +// "&face=&sourcetype=16&soutype=3×tamp="+ DateUtils.getDate()+"&time="+DateUtils.date2String(new Date(),DateUtils.format1) ; | ||
313 | +// dingSms.setSchoolId(teacher.getSchoolId()); | ||
314 | +// dingSms.setDingUserId(thirdOpenId); | ||
315 | +// dingSms.setAgentId(appDto.getAgentId()); | ||
316 | +// dingSms.setWapUrl(wapUrl); | ||
317 | +// dingSms.setReceiveUserId(teacher.getUserId()); | ||
318 | +// dingSms.setTdType(TypeEnums.kaoqing.getType()); | ||
319 | +// this.insertDing(dingSms); | ||
320 | +// logger.info("盯盯推送班主任—————" + templateId + "--------" + teacher.getName()); | ||
321 | +// } | ||
322 | +// } | ||
323 | +// } | ||
324 | +// | ||
325 | +// //盯盯推送宿管 | ||
326 | +// private void dingChamberPush(String templateId, KqTeacherDto teacher , String key , AppDto appDto){ | ||
327 | +// String[] times = key.split("_"); | ||
328 | +// String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | ||
329 | +// String thirdOpenId = scFeign.getThirdId(teacher.getUserId(),0); | ||
330 | +// if(StringUtils.isNotBlank(thirdOpenId)){ | ||
331 | +// List<CensusKqDto> censusKqDtos = getCensus(Integer.valueOf(times[3]),templateId,teacher.getSchoolId(),teacher.getUserId(),1); | ||
332 | +// if(censusKqDtos != null &&censusKqDtos.size() > 0){ | ||
333 | +// String message = ""; | ||
334 | +// for(CensusKqDto censusKqDto : censusKqDtos){ | ||
335 | +// message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假"+censusKqDto.getLeaveCount()+"人;"; | ||
336 | +// } | ||
337 | +// DingSms dingSms = new DingSms(); | ||
338 | +// dingSms.setName(teacher.getName()); | ||
339 | +// dingSms.setTableName("DingSmsNew"+tableSuffix); | ||
340 | +// dingSms.setMsg("报告类型:"+KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - "+ | ||
341 | +// "签到日期:"+DateUtils.date2String(new Date(),DateUtils.format1)+ "("+DateUtils.getWeekName()+") \n - "+ | ||
342 | +// "签到时间:"+times[0]+"-"+ times[1] +" \n - "+ | ||
343 | +// "整体数据:" + message); | ||
344 | +// String msgUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + | ||
345 | +// "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() +"&TemplateId=" + templateId+ | ||
346 | +// "&pass=" + teacher.getPass() + "&type=4&soutype=3&time="+DateUtils.date2String(new Date(),DateUtils.format1); | ||
347 | +// dingSms.setSchoolId(teacher.getSchoolId()); | ||
348 | +// dingSms.setDingUserId(thirdOpenId); | ||
349 | +// dingSms.setAgentId(appDto.getAgentId()); | ||
350 | +// dingSms.setWapUrl(msgUrl); | ||
351 | +// dingSms.setReceiveUserId(teacher.getUserId()); | ||
352 | +// dingSms.setTdType(TypeEnums.kaoqing.getType()); | ||
353 | +// this.insertDing(dingSms); | ||
354 | +// logger.info("盯盯推送宿管—————" + templateId + "--------" + teacher.getName()); | ||
355 | +// } | ||
356 | +// } | ||
357 | +// } | ||
358 | +// | ||
359 | +// //企业号推送班主任 | ||
360 | +// private void weChatSchoolPush(String templateId, KqTeacherDto teacher , String key , AppDto appDto , int type){ | ||
361 | +// String[] times = key.split("_"); | ||
362 | +// String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | ||
363 | +// String thirdOpenId = scFeign.getThirdId(teacher.getUserId(),1); | ||
364 | +// if (StringUtils.isNotBlank(thirdOpenId)) { | ||
365 | +// List<CensusKqDto> censusKqDtos = getCensus(Integer.valueOf(times[3]),templateId,teacher.getSchoolId(),teacher.getUserId(),type); | ||
366 | +// if (censusKqDtos != null && censusKqDtos.size() > 0) { | ||
367 | +// String message = ""; | ||
368 | +// for (CensusKqDto censusKqDto : censusKqDtos) { | ||
369 | +// message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假"+censusKqDto.getLeaveCount()+"人;"; | ||
370 | +// } | ||
371 | +// WeChatSms weChatSms = new WeChatSms(); | ||
372 | +// weChatSms.setTableName("qyhSmsNew" + tableSuffix); | ||
373 | +// weChatSms.setMsg("报告类型:" + KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - " + | ||
374 | +// "签到日期:" + DateUtils.date2String(new Date(), DateUtils.format1) + "(" + DateUtils.getWeekName() + ") \n - " + | ||
375 | +// "签到时间:" + times[0] + "-" + times[1] + " \n - " + | ||
376 | +// "整体数据:" + message); | ||
377 | +// weChatSms.setSchoolId(teacher.getSchoolId()); | ||
378 | +// weChatSms.setName(teacher.getName()); | ||
379 | +// weChatSms.setQiYeHaoUserId(thirdOpenId); | ||
380 | +// weChatSms.setReceiveUserId(teacher.getUserId()); | ||
381 | +// weChatSms.setAppId(appDto.getAgentId()); | ||
382 | +// weChatSms.setSecret(appDto.getAgentSecret()); | ||
383 | +// String msgUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + | ||
384 | +// "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() +"&TemplateId=" + templateId+ | ||
385 | +// "&data=" + thirdOpenId + "&type=1&stype=3&mobile=" + teacher.getMobile() + "&pass=" + teacher.getPass() + | ||
386 | +// "&face=" + teacher.getFace() + "&sourcetype=16&soutype=2×tamp=" + DateUtils.getDate()+"&time="+DateUtils.date2String(new Date(),DateUtils.format1)+"&"; | ||
387 | +// weChatSms.setMsgUrl(msgUrl); | ||
388 | +// weChatSms.setTdType(TypeEnums.kaoqing.getType()); | ||
389 | +// this.insertQYH(weChatSms); | ||
390 | +// logger.info("企业号推送班主任—————" + templateId + "--------" + teacher.getName()); | ||
391 | +// } | ||
392 | +// } | ||
393 | +// } | ||
394 | +// | ||
395 | +// //企业号推送宿管 | ||
396 | +// private void weChatChamberPush(String templateId, KqTeacherDto teacher , String key , AppDto appDto){ | ||
397 | +// String[] times = key.split("_"); | ||
398 | +// String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | ||
399 | +// String thirdOpenId = scFeign.getThirdId(teacher.getUserId(),1); | ||
400 | +// if (StringUtils.isNotBlank(thirdOpenId)) { | ||
401 | +// List<CensusKqDto> censusKqDtos = getCensus(Integer.valueOf(times[3]),templateId,teacher.getSchoolId(),teacher.getUserId(),1); | ||
402 | +// if (censusKqDtos != null && censusKqDtos.size() > 0) { | ||
403 | +// String message = ""; | ||
404 | +// for (CensusKqDto censusKqDto : censusKqDtos) { | ||
405 | +// message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假"+censusKqDto.getLeaveCount()+"人;"; | ||
406 | +// } | ||
407 | +// WeChatSms weChatSms = new WeChatSms(); | ||
408 | +// weChatSms.setTableName("qyhSmsNew" + tableSuffix); | ||
409 | +// weChatSms.setMsg("报告类型:" + KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - " + | ||
410 | +// "签到日期:" + DateUtils.date2String(new Date(), DateUtils.format1) + "(" + DateUtils.getWeekName() + ") \n - " + | ||
411 | +// "签到时间:" + times[0] + "-" + times[1] + " \n - " + | ||
412 | +// "整体数据:" + message); | ||
413 | +// weChatSms.setSchoolId(teacher.getSchoolId()); | ||
414 | +// weChatSms.setName(teacher.getName()); | ||
415 | +// weChatSms.setQiYeHaoUserId(thirdOpenId); | ||
416 | +// weChatSms.setReceiveUserId(teacher.getUserId()); | ||
417 | +// weChatSms.setAppId(appDto.getAgentId()); | ||
418 | +// weChatSms.setSecret(appDto.getAgentSecret()); | ||
419 | +// String msgUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + | ||
420 | +// "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() +"&TemplateId=" + templateId+ | ||
421 | +// "&pass=" + teacher.getPass() + "&type=4&soutype=2&time="+DateUtils.date2String(new Date(),DateUtils.format1)+"&"; | ||
422 | +// weChatSms.setMsgUrl(msgUrl); | ||
423 | +// weChatSms.setTdType(TypeEnums.kaoqing.getType()); | ||
424 | +// this.insertQYH(weChatSms); | ||
425 | +// logger.info("企业号推送宿管—————" + templateId + "--------" + teacher.getName()); | ||
426 | +// } | ||
427 | +// } | ||
428 | +// } | ||
429 | +// | ||
430 | +// //type 0 出入校 1 出入寝 | ||
431 | +// private List<CensusKqDto> getCensus(int id , String templateId ,int schoolId , String userId ,int type){ | ||
432 | +// List<CensusKqDto> list = new ArrayList<>(); | ||
433 | +// String url = "http://campus.myjxt.com/api/EasyN/GeAttendDetailNew?schoolId="+schoolId+ | ||
434 | +// "&id="+id+"&templateID="+templateId+"&type="+type+"&userId="+userId+"&time=" + DateUtils.date2String(new Date(),DateUtils.format1); | ||
435 | +// JSONObject jsonObject = HttpClientUtils.httpGet(url); | ||
436 | +// try{ | ||
437 | +// JSONArray data = (JSONArray)jsonObject.get("data"); | ||
438 | +// for(int i = 0 ; i < data.size() ; i++){ | ||
439 | +// CensusKqDto censusKqDto = new CensusKqDto(); | ||
440 | +// JSONObject object = data.getJSONObject(i); | ||
441 | +// censusKqDto.setLeaveCount((Integer) object.get("leaveCount")); | ||
442 | +// censusKqDto.setNotAttendCount((Integer) object.get("noAttendCount")); | ||
443 | +// censusKqDto.setTargetName((String)object.get("name")); | ||
444 | +// list.add(censusKqDto); | ||
445 | +// } | ||
446 | +// }catch (Exception e){ | ||
447 | +// | ||
448 | +// } | ||
449 | +// return list ; | ||
450 | +// } | ||
451 | +// | ||
452 | +// private BigDecimal getAlarmCensus(int id , String templateId ,int schoolId , int type){ | ||
453 | +// int allNumber = 0 , attendNumber = 0 ; | ||
454 | +// List<Integer> list = scFeign.selectClassBySchoolId(schoolId); | ||
455 | +// for(Integer classId : list){ | ||
456 | +// String url = "http://campus.myjxt.com/api/EasyN/GeAttendDetail?classId="+classId+ | ||
457 | +// "&id="+id+"&templateID="+templateId+"&type="+type+"&time=" + DateUtils.date2String(new Date(),DateUtils.format1); | ||
458 | +// JSONObject jsonObject = HttpClientUtils.httpGet(url); | ||
459 | +// try{ | ||
460 | +// JSONObject data = (JSONObject) jsonObject.get("data"); | ||
461 | +// attendNumber = attendNumber + (Integer) data.get("stuAttendCount"); | ||
462 | +// allNumber = allNumber + (Integer) data.get("stuCount"); | ||
463 | +// }catch (Exception e){ | ||
464 | +// e.printStackTrace(); | ||
465 | +// } | ||
466 | +// } | ||
467 | +// if(allNumber != 0){ | ||
468 | +// BigDecimal pecrent = new BigDecimal(attendNumber).divide(new BigDecimal(allNumber),10, BigDecimal.ROUND_HALF_DOWN) ; | ||
469 | +// return pecrent ; | ||
470 | +// }else { | ||
471 | +// return BigDecimal.ZERO ; | ||
472 | +// } | ||
473 | +// | ||
474 | +// } | ||
475 | +// | ||
476 | +// /** | ||
477 | +// * | ||
478 | +// * @param id | ||
479 | +// * @param templateId | ||
480 | +// * @param schoolId | ||
481 | +// * @param type | ||
482 | +// * @return list(0) 出勤 list(1) 未出勤 List(2) 请假 | ||
483 | +// */ | ||
484 | +// private List<Integer> getIOTCensus(int id , String templateId ,int schoolId , int type){ | ||
485 | +// List<Integer> result = new ArrayList<>(); | ||
486 | +// int attend = 0 , unattend = 0 , leave = 0; | ||
487 | +// List<Integer> list = scFeign.selectClassBySchoolId(schoolId); | ||
488 | +// for(Integer classId : list){ | ||
489 | +// String url = "http://campus.myjxt.com/api/EasyN/GeAttendDetail?classId="+classId+ | ||
490 | +// "&id="+id+"&templateID="+templateId+"&type="+type+"&time=" + DateUtils.date2String(new Date(),DateUtils.format1); | ||
491 | +// JSONObject jsonObject = HttpClientUtils.httpGet(url); | ||
492 | +// try{ | ||
493 | +// JSONObject data = (JSONObject) jsonObject.get("data"); | ||
494 | +// attend = attend + (Integer) data.get("stuAttendCount"); | ||
495 | +// unattend = unattend + (Integer) data.get("noAttendCount"); | ||
496 | +// leave = leave + (Integer) data.get("leaveCount"); | ||
497 | +// }catch (Exception e){ | ||
498 | +// e.printStackTrace(); | ||
499 | +// } | ||
500 | +// } | ||
501 | +// result.add(attend); | ||
502 | +// result.add(unattend); | ||
503 | +// result.add(leave); | ||
504 | +// return result ; | ||
505 | +// } | ||
506 | +// | ||
507 | +// | ||
508 | +// private void insertDing(DingSms dingSms){ | ||
509 | +// try{ | ||
510 | +// smsService.insertDing(dingSms); | ||
511 | +// }catch (Exception e){ | ||
512 | +// logger.info(e.toString()); | ||
513 | +// } | ||
514 | +// } | ||
515 | +// | ||
516 | +// private void insertQYH(WeChatSms weChatSms){ | ||
517 | +// try{ | ||
518 | +// smsService.insertWeChat(weChatSms); | ||
519 | +// }catch (Exception e){ | ||
520 | +// logger.info(e.toString()); | ||
521 | +// } | ||
522 | +// } | ||
523 | +// | ||
524 | +// private void alarmPush(int schoolId){ | ||
525 | +// String msg = "【考勤异动】" ; | ||
526 | +// try{ | ||
527 | +// SchoolDto schoolDto = scFeign.selectSchoolBySchoolId(schoolId); | ||
528 | +// msg += schoolDto.getSchoolName() + "考勤有异动,请关注!" ; | ||
529 | +// sendMessage(schoolDto.getSchoolId(),opexList.get(0),msg); | ||
530 | +// sendMessage(schoolDto.getSchoolId(),opexList.get(1),msg); | ||
531 | +// sendMessage(schoolDto.getSchoolId(),integration,msg); | ||
532 | +// String managerPhone = managerService.selectManagerById(schoolDto.getManagerUserId()) ; | ||
533 | +// if(StringUtils.isNotBlank(managerPhone)){ | ||
534 | +// sendMessage(schoolDto.getSchoolId(),managerPhone,msg); | ||
535 | +// } | ||
536 | +// }catch (Exception e){ | ||
537 | +// e.printStackTrace(); | ||
538 | +// } | ||
539 | +// | ||
540 | +// } | ||
541 | +// | ||
542 | +// private void sendMessage(int schoolId , String mobile , String msg){ | ||
543 | +// String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | ||
544 | +// ShortMsg shortMsg = new ShortMsg(); | ||
545 | +// shortMsg.setTableName("smsNew"+tableSuffix); | ||
546 | +// shortMsg.setSchoolId(schoolId); | ||
547 | +// shortMsg.setMobile(mobile); | ||
548 | +// shortMsg.setMsg(msg); | ||
549 | +// smsService.insertSMS(shortMsg); | ||
550 | +// } | ||
551 | +//} |
cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java
1 | -package com.sincere.quartz.job; | ||
2 | - | ||
3 | -import com.sincere.quartz.third.yixueyun.YXYReadService; | ||
4 | -import com.sincere.quartz.third.yixueyun.YXYWriteService; | ||
5 | -import org.springframework.beans.factory.annotation.Autowired; | ||
6 | -import org.springframework.scheduling.annotation.Scheduled; | ||
7 | -import org.springframework.stereotype.Service; | ||
8 | - | ||
9 | -/** | ||
10 | - * @author chen | ||
11 | - * @version 1.0 | ||
12 | - * @date 2019/12/24 0024 10:54 | ||
13 | - */ | ||
14 | -@Service | ||
15 | -public class SyncJob { | ||
16 | - | ||
17 | - @Autowired | ||
18 | - YXYWriteService yxyWriteService; | ||
19 | - | ||
20 | - @Autowired | ||
21 | - YXYReadService yxyReadService; | ||
22 | - | ||
23 | - @Scheduled(cron = "30 1 22 * * ? ") | ||
24 | - public void Sync(){ | ||
25 | - //翼校通的同步 之后还有钉钉的同步等等 | ||
26 | - yxyReadService.sync(); | ||
27 | - yxyWriteService.sync(); | ||
28 | - } | ||
29 | -} | 1 | +//package com.sincere.quartz.job; |
2 | +// | ||
3 | +//import com.sincere.quartz.third.yixueyun.YXYReadService; | ||
4 | +//import com.sincere.quartz.third.yixueyun.YXYWriteService; | ||
5 | +//import org.springframework.beans.factory.annotation.Autowired; | ||
6 | +//import org.springframework.scheduling.annotation.Scheduled; | ||
7 | +//import org.springframework.stereotype.Service; | ||
8 | +// | ||
9 | +///** | ||
10 | +// * @author chen | ||
11 | +// * @version 1.0 | ||
12 | +// * @date 2019/12/24 0024 10:54 | ||
13 | +// */ | ||
14 | +//@Service | ||
15 | +//public class SyncJob { | ||
16 | +// | ||
17 | +// @Autowired | ||
18 | +// YXYWriteService yxyWriteService ; | ||
19 | +// | ||
20 | +// @Autowired | ||
21 | +// YXYReadService yxyReadService ; | ||
22 | +// | ||
23 | +// @Scheduled(cron = "30 1 22 * * ? ") | ||
24 | +// public void Sync(){ | ||
25 | +// //翼校通的同步 之后还有钉钉的同步等等 | ||
26 | +// yxyReadService.sync(); | ||
27 | +// yxyWriteService.sync(); | ||
28 | +// } | ||
29 | +//} |
cloud/quartz/src/main/java/com/sincere/quartz/mapper/YxyMapper.java
1 | package com.sincere.quartz.mapper; | 1 | package com.sincere.quartz.mapper; |
2 | 2 | ||
3 | +import com.sincere.quartz.dto.*; | ||
3 | import com.sincere.quartz.model.YxyAgency; | 4 | import com.sincere.quartz.model.YxyAgency; |
4 | import com.sincere.quartz.model.YxyStudent; | 5 | import com.sincere.quartz.model.YxyStudent; |
5 | import com.sincere.quartz.model.YxyTeacher; | 6 | import com.sincere.quartz.model.YxyTeacher; |
7 | +import org.apache.ibatis.annotations.Param; | ||
8 | + | ||
9 | +import java.util.List; | ||
6 | 10 | ||
7 | public interface YxyMapper { | 11 | public interface YxyMapper { |
8 | 12 | ||
13 | + List<TeacherView> getTeacherView(@Param("schoolId") int schoolId , @Param("name")String name); | ||
14 | + | ||
15 | + List<StudentView> getStudentView(@Param("classId") int classId , @Param("name") String name ); | ||
16 | + | ||
17 | + int getGradeId(@Param("schoolId")int schoolId , @Param("grade")String grade); | ||
18 | + | ||
19 | + int getClassId(@Param("schoolId")int schoolId , @Param("className")String className); | ||
20 | + | ||
21 | + String getDeptName(String deptId); | ||
22 | + | ||
23 | + String getSuperDeptName(String deptId); | ||
24 | + | ||
25 | + void addStudent(AddStudentDto addStudentDto); | ||
26 | + | ||
27 | + void editStudent(EditStudentDto editStudentDto); | ||
28 | + | ||
29 | + void addTeacher(AddTeacherDto addTeacherDto); | ||
30 | + | ||
31 | + void editTeacher(EditTeacherDto editTeacherDto); | ||
32 | + | ||
9 | int selectCount(String date); | 33 | int selectCount(String date); |
10 | 34 | ||
11 | int deleteWeekBefore(); | 35 | int deleteWeekBefore(); |
@@ -21,4 +45,8 @@ public interface YxyMapper { | @@ -21,4 +45,8 @@ public interface YxyMapper { | ||
21 | int insertTeacher(YxyTeacher teacher) ; | 45 | int insertTeacher(YxyTeacher teacher) ; |
22 | 46 | ||
23 | int insertStudent(YxyStudent student) ; | 47 | int insertStudent(YxyStudent student) ; |
48 | + | ||
49 | + int updateTeacherBySchool(@Param("deptId") String deptId); | ||
50 | + | ||
51 | + int updateStudentBySchool(@Param("classId") String classId); | ||
24 | } | 52 | } |
cloud/quartz/src/main/java/com/sincere/quartz/model/YxyStudent.java
@@ -2,13 +2,22 @@ package com.sincere.quartz.model; | @@ -2,13 +2,22 @@ package com.sincere.quartz.model; | ||
2 | 2 | ||
3 | public class YxyStudent { | 3 | public class YxyStudent { |
4 | 4 | ||
5 | - private String userId; | ||
6 | - private String classId; | ||
7 | - private String name; | ||
8 | - private String account; | ||
9 | - private String cardID; | 5 | + private String userId ; |
6 | + private String classId ; | ||
7 | + private String name ; | ||
8 | + private String account ; | ||
9 | + private String cardID ; | ||
10 | private String cardID2; | 10 | private String cardID2; |
11 | - private String cardID3; | 11 | + private String cardID3 ; |
12 | + private int type ; | ||
13 | + | ||
14 | + public int getType() { | ||
15 | + return type; | ||
16 | + } | ||
17 | + | ||
18 | + public void setType(int type) { | ||
19 | + this.type = type; | ||
20 | + } | ||
12 | 21 | ||
13 | public String getCardID() { | 22 | public String getCardID() { |
14 | return cardID; | 23 | return cardID; |
@@ -65,4 +74,18 @@ public class YxyStudent { | @@ -65,4 +74,18 @@ public class YxyStudent { | ||
65 | public void setAccount(String account) { | 74 | public void setAccount(String account) { |
66 | this.account = account; | 75 | this.account = account; |
67 | } | 76 | } |
77 | + | ||
78 | + @Override | ||
79 | + public String toString() { | ||
80 | + return "YxyStudent{" + | ||
81 | + "userId='" + userId + '\'' + | ||
82 | + ", classId='" + classId + '\'' + | ||
83 | + ", name='" + name + '\'' + | ||
84 | + ", account='" + account + '\'' + | ||
85 | + ", cardID='" + cardID + '\'' + | ||
86 | + ", cardID2='" + cardID2 + '\'' + | ||
87 | + ", cardID3='" + cardID3 + '\'' + | ||
88 | + ", type=" + type + | ||
89 | + '}'; | ||
90 | + } | ||
68 | } | 91 | } |
cloud/quartz/src/main/java/com/sincere/quartz/model/YxyTeacher.java
@@ -2,10 +2,19 @@ package com.sincere.quartz.model; | @@ -2,10 +2,19 @@ package com.sincere.quartz.model; | ||
2 | 2 | ||
3 | public class YxyTeacher { | 3 | public class YxyTeacher { |
4 | 4 | ||
5 | - private String userId; | ||
6 | - private String account; | ||
7 | - private String name; | ||
8 | - private String deptId; | 5 | + private String userId ; |
6 | + private String account ; | ||
7 | + private String name ; | ||
8 | + private String deptId ; | ||
9 | + private int type ; | ||
10 | + | ||
11 | + public int getType() { | ||
12 | + return type; | ||
13 | + } | ||
14 | + | ||
15 | + public void setType(int type) { | ||
16 | + this.type = type; | ||
17 | + } | ||
9 | 18 | ||
10 | public String getUserId() { | 19 | public String getUserId() { |
11 | return userId; | 20 | return userId; |
@@ -38,4 +47,15 @@ public class YxyTeacher { | @@ -38,4 +47,15 @@ public class YxyTeacher { | ||
38 | public void setDeptId(String deptId) { | 47 | public void setDeptId(String deptId) { |
39 | this.deptId = deptId; | 48 | this.deptId = deptId; |
40 | } | 49 | } |
50 | + | ||
51 | + @Override | ||
52 | + public String toString() { | ||
53 | + return "YxyTeacher{" + | ||
54 | + "userId='" + userId + '\'' + | ||
55 | + ", account='" + account + '\'' + | ||
56 | + ", name='" + name + '\'' + | ||
57 | + ", deptId='" + deptId + '\'' + | ||
58 | + ", type=" + type + | ||
59 | + '}'; | ||
60 | + } | ||
41 | } | 61 | } |
cloud/quartz/src/main/java/com/sincere/quartz/service/YxyService.java
1 | package com.sincere.quartz.service; | 1 | package com.sincere.quartz.service; |
2 | 2 | ||
3 | +import com.sincere.quartz.dto.*; | ||
3 | import com.sincere.quartz.model.YxyAgency; | 4 | import com.sincere.quartz.model.YxyAgency; |
4 | import com.sincere.quartz.model.YxyStudent; | 5 | import com.sincere.quartz.model.YxyStudent; |
5 | import com.sincere.quartz.model.YxyTeacher; | 6 | import com.sincere.quartz.model.YxyTeacher; |
7 | +import org.apache.ibatis.annotations.Param; | ||
8 | + | ||
9 | +import java.util.List; | ||
6 | 10 | ||
7 | public interface YxyService { | 11 | public interface YxyService { |
8 | 12 | ||
13 | + List<TeacherView> getTeacherView( int schoolId , String name); | ||
14 | + | ||
15 | + List<StudentView> getStudentView(int classId ,String name ); | ||
16 | + | ||
17 | + int getGradeId(int schoolId , String grade); | ||
18 | + | ||
19 | + int getClassId(int schoolId , String className); | ||
20 | + | ||
21 | + void addStudent(AddStudentDto addStudentDto); | ||
22 | + | ||
23 | + void editStudent(EditStudentDto editStudentDto); | ||
24 | + | ||
25 | + void addTeacher(AddTeacherDto addTeacherDto); | ||
26 | + | ||
27 | + void editTeacher(EditTeacherDto editTeacherDto); | ||
28 | + | ||
29 | + String getDeptName(String deptId); | ||
30 | + | ||
31 | + String getSuperDeptName(String deptId); | ||
32 | + | ||
9 | int selectCount(String date); | 33 | int selectCount(String date); |
10 | 34 | ||
11 | int deleteWeekBefore(); | 35 | int deleteWeekBefore(); |
@@ -21,4 +45,8 @@ public interface YxyService { | @@ -21,4 +45,8 @@ public interface YxyService { | ||
21 | int insertTeacher(YxyTeacher teacher) ; | 45 | int insertTeacher(YxyTeacher teacher) ; |
22 | 46 | ||
23 | int insertStudent(YxyStudent student) ; | 47 | int insertStudent(YxyStudent student) ; |
48 | + | ||
49 | + int updateTeacherBySchool(String deptId); | ||
50 | + | ||
51 | + int updateStudentBySchool(String classId); | ||
24 | } | 52 | } |
cloud/quartz/src/main/java/com/sincere/quartz/service/impl/YxyServiceImpl.java
@@ -2,6 +2,7 @@ package com.sincere.quartz.service.impl; | @@ -2,6 +2,7 @@ package com.sincere.quartz.service.impl; | ||
2 | 2 | ||
3 | import com.sincere.quartz.datasource.DataSourceType; | 3 | import com.sincere.quartz.datasource.DataSourceType; |
4 | import com.sincere.quartz.datasource.MyDataSource; | 4 | import com.sincere.quartz.datasource.MyDataSource; |
5 | +import com.sincere.quartz.dto.*; | ||
5 | import com.sincere.quartz.mapper.YxyMapper; | 6 | import com.sincere.quartz.mapper.YxyMapper; |
6 | import com.sincere.quartz.model.YxyAgency; | 7 | import com.sincere.quartz.model.YxyAgency; |
7 | import com.sincere.quartz.model.YxyStudent; | 8 | import com.sincere.quartz.model.YxyStudent; |
@@ -10,6 +11,8 @@ import com.sincere.quartz.service.YxyService; | @@ -10,6 +11,8 @@ import com.sincere.quartz.service.YxyService; | ||
10 | import org.springframework.beans.factory.annotation.Autowired; | 11 | import org.springframework.beans.factory.annotation.Autowired; |
11 | import org.springframework.stereotype.Service; | 12 | import org.springframework.stereotype.Service; |
12 | 13 | ||
14 | +import java.util.List; | ||
15 | + | ||
13 | @Service | 16 | @Service |
14 | public class YxyServiceImpl implements YxyService { | 17 | public class YxyServiceImpl implements YxyService { |
15 | 18 | ||
@@ -17,6 +20,66 @@ public class YxyServiceImpl implements YxyService { | @@ -17,6 +20,66 @@ public class YxyServiceImpl implements YxyService { | ||
17 | YxyMapper yxyMapper; | 20 | YxyMapper yxyMapper; |
18 | 21 | ||
19 | @Override | 22 | @Override |
23 | + @MyDataSource(DataSourceType.Update) | ||
24 | + public List<TeacherView> getTeacherView(int schoolId, String name) { | ||
25 | + return yxyMapper.getTeacherView(schoolId,name); | ||
26 | + } | ||
27 | + | ||
28 | + @Override | ||
29 | + @MyDataSource(DataSourceType.Update) | ||
30 | + public List<StudentView> getStudentView(int classId, String name) { | ||
31 | + return yxyMapper.getStudentView(classId,name); | ||
32 | + } | ||
33 | + | ||
34 | + @Override | ||
35 | + @MyDataSource(DataSourceType.Update) | ||
36 | + public int getGradeId(int schoolId, String grade) { | ||
37 | + return yxyMapper.getGradeId(schoolId,grade); | ||
38 | + } | ||
39 | + | ||
40 | + @Override | ||
41 | + @MyDataSource(DataSourceType.Update) | ||
42 | + public int getClassId(int schoolId, String className) { | ||
43 | + return yxyMapper.getClassId(schoolId,className); | ||
44 | + } | ||
45 | + | ||
46 | + @Override | ||
47 | + @MyDataSource(DataSourceType.Update) | ||
48 | + public void addStudent(AddStudentDto addStudentDto) { | ||
49 | + yxyMapper.addStudent(addStudentDto); | ||
50 | + } | ||
51 | + | ||
52 | + @Override | ||
53 | + @MyDataSource(DataSourceType.Update) | ||
54 | + public void editStudent(EditStudentDto editStudentDto) { | ||
55 | + yxyMapper.editStudent(editStudentDto); | ||
56 | + } | ||
57 | + | ||
58 | + @Override | ||
59 | + @MyDataSource(DataSourceType.Update) | ||
60 | + public void addTeacher(AddTeacherDto addTeacherDto) { | ||
61 | + yxyMapper.addTeacher(addTeacherDto); | ||
62 | + } | ||
63 | + | ||
64 | + @Override | ||
65 | + @MyDataSource(DataSourceType.Update) | ||
66 | + public void editTeacher(EditTeacherDto editTeacherDto) { | ||
67 | + yxyMapper.editTeacher(editTeacherDto); | ||
68 | + } | ||
69 | + | ||
70 | + @Override | ||
71 | + @MyDataSource(DataSourceType.Yxy) | ||
72 | + public String getDeptName(String deptId) { | ||
73 | + return yxyMapper.getDeptName(deptId); | ||
74 | + } | ||
75 | + | ||
76 | + @Override | ||
77 | + @MyDataSource(DataSourceType.Yxy) | ||
78 | + public String getSuperDeptName(String deptId) { | ||
79 | + return yxyMapper.getSuperDeptName(deptId); | ||
80 | + } | ||
81 | + | ||
82 | + @Override | ||
20 | @MyDataSource(DataSourceType.Yxy) | 83 | @MyDataSource(DataSourceType.Yxy) |
21 | public int selectCount(String date) { | 84 | public int selectCount(String date) { |
22 | return yxyMapper.selectCount(date); | 85 | return yxyMapper.selectCount(date); |
@@ -63,4 +126,16 @@ public class YxyServiceImpl implements YxyService { | @@ -63,4 +126,16 @@ public class YxyServiceImpl implements YxyService { | ||
63 | public int insertStudent(YxyStudent student) { | 126 | public int insertStudent(YxyStudent student) { |
64 | return yxyMapper.insertStudent(student); | 127 | return yxyMapper.insertStudent(student); |
65 | } | 128 | } |
129 | + | ||
130 | + @Override | ||
131 | + @MyDataSource(DataSourceType.Yxy) | ||
132 | + public int updateTeacherBySchool(String deptId) { | ||
133 | + return yxyMapper.updateTeacherBySchool(deptId); | ||
134 | + } | ||
135 | + | ||
136 | + @Override | ||
137 | + @MyDataSource(DataSourceType.Yxy) | ||
138 | + public int updateStudentBySchool(String classId) { | ||
139 | + return yxyMapper.updateStudentBySchool(classId); | ||
140 | + } | ||
66 | } | 141 | } |
cloud/quartz/src/main/java/com/sincere/quartz/third/qiyehao/QYHUtils.java
1 | -package com.sincere.quartz.third.qiyehao; | ||
2 | - | ||
3 | -import com.alibaba.fastjson.JSONObject; | ||
4 | -import com.sincere.common.util.HttpClientUtils; | ||
5 | - | ||
6 | -/** | ||
7 | - * @author chen | ||
8 | - * @version 1.0 | ||
9 | - * @date 2019/12/11 0011 15:28 | ||
10 | - */ | ||
11 | -public class QYHUtils { | ||
12 | - | ||
13 | - public static void main(String[] args) { | ||
14 | - getToken("wx51b3acc9a06f0bb0", "pb5P1feSHnWYYLPAfN4QBMk-nPFaF4RGW5Lq1ceyfhk"); | ||
15 | - } | ||
16 | - | ||
17 | - public static String getToken(String id, String secret) { | ||
18 | - String url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + id + "&corpsecret=" + secret; | ||
19 | - JSONObject json = HttpClientUtils.httpGet(url); | ||
20 | - return json.get("access_token").toString(); | ||
21 | - } | ||
22 | - | ||
23 | - public static void getDept(String accessToken) { | ||
24 | - String url = "https://qyapi.weixin.qq.com/cgi-bin/department/list?access_token=" + accessToken; | ||
25 | - JSONObject json = HttpClientUtils.httpGet(url); | ||
26 | - } | ||
27 | - | ||
28 | - public static void getUser(String accessToken) { | ||
29 | - String url = "https://qyapi.weixin.qq.com/cgi-bin/user/list?access_token=" + accessToken + "&department_id=" + 1 + "&fetch_child=1&status=0"; | ||
30 | - JSONObject json = HttpClientUtils.httpGet(url); | ||
31 | - } | ||
32 | -} | 1 | +//package com.sincere.quartz.third.qiyehao; |
2 | +// | ||
3 | +//import com.alibaba.fastjson.JSONObject; | ||
4 | +//import com.sincere.common.util.HttpClientUtils; | ||
5 | +// | ||
6 | +///** | ||
7 | +// * @author chen | ||
8 | +// * @version 1.0 | ||
9 | +// * @date 2019/12/11 0011 15:28 | ||
10 | +// */ | ||
11 | +//public class QYHUtils { | ||
12 | +// | ||
13 | +// public static void main(String[] args) { | ||
14 | +// getToken("wx51b3acc9a06f0bb0", "pb5P1feSHnWYYLPAfN4QBMk-nPFaF4RGW5Lq1ceyfhk"); | ||
15 | +// } | ||
16 | +// | ||
17 | +// public static String getToken(String id, String secret) { | ||
18 | +// String url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + id + "&corpsecret=" + secret; | ||
19 | +// JSONObject json = HttpClientUtils.httpGet(url); | ||
20 | +// return json.get("access_token").toString(); | ||
21 | +// } | ||
22 | +// | ||
23 | +// public static void getDept(String accessToken) { | ||
24 | +// String url = "https://qyapi.weixin.qq.com/cgi-bin/department/list?access_token=" + accessToken; | ||
25 | +// JSONObject json = HttpClientUtils.httpGet(url); | ||
26 | +// } | ||
27 | +// | ||
28 | +// public static void getUser(String accessToken) { | ||
29 | +// String url = "https://qyapi.weixin.qq.com/cgi-bin/user/list?access_token=" + accessToken + "&department_id=" + 1 + "&fetch_child=1&status=0"; | ||
30 | +// JSONObject json = HttpClientUtils.httpGet(url); | ||
31 | +// } | ||
32 | +//} |
cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYAddReadService.java
0 → 100644
@@ -0,0 +1,413 @@ | @@ -0,0 +1,413 @@ | ||
1 | +package com.sincere.quartz.third.yixueyun; | ||
2 | + | ||
3 | +import com.alibaba.fastjson.JSONArray; | ||
4 | +import com.alibaba.fastjson.JSONObject; | ||
5 | +import com.sincere.common.dto.smartCampus.SyncSchoolDto; | ||
6 | +import com.sincere.common.util.DateUtils; | ||
7 | +import com.sincere.common.util.HttpClientUtils; | ||
8 | +import com.sincere.common.util.Xml2JsonUtils; | ||
9 | +import com.sincere.quartz.dto.*; | ||
10 | +import com.sincere.quartz.feign.ScFeign; | ||
11 | +import com.sincere.quartz.model.YxyAgency; | ||
12 | +import com.sincere.quartz.model.YxyStudent; | ||
13 | +import com.sincere.quartz.model.YxyTeacher; | ||
14 | +import com.sincere.quartz.service.YxyService; | ||
15 | +import com.sincere.quartz.utils.ThreadUtils; | ||
16 | +import org.apache.commons.lang3.StringUtils; | ||
17 | +import org.slf4j.Logger; | ||
18 | +import org.slf4j.LoggerFactory; | ||
19 | +import org.springframework.beans.factory.annotation.Autowired; | ||
20 | +import org.springframework.stereotype.Service; | ||
21 | + | ||
22 | +import java.math.BigInteger; | ||
23 | +import java.security.MessageDigest; | ||
24 | +import java.util.ArrayList; | ||
25 | +import java.util.Date; | ||
26 | +import java.util.List; | ||
27 | +import java.util.concurrent.ExecutorService; | ||
28 | + | ||
29 | +@Service | ||
30 | +public class YXYAddReadService { | ||
31 | + | ||
32 | + private static String SI = "SZ" ; | ||
33 | + private static int SI_CODE = 12345678 ; | ||
34 | + | ||
35 | + private static String nameSpace = "http://service.pubinfo.com.cn" ; | ||
36 | + | ||
37 | + private static String getAllTeacher = "http://122.229.30.149:8282/DataSynService/GetTeacherInfo"; | ||
38 | + private static String getAllTeacher_method = "getTeacherInfo" ; | ||
39 | + private static String getAddTeacher = "http://122.229.30.149:8282/DataSynService/GetIncrementTeacherInfo" ; | ||
40 | + private static String getAddTeacher_method = "getIncrementTeacherInfo" ; | ||
41 | + | ||
42 | + private static String getAllStudent = "http://122.229.30.149:8282/DataSynService/GetStudentInfo" ; | ||
43 | + private static String getALlStudent_method = "getStudentInfo"; | ||
44 | + private static String getAddStudent = "http://122.229.30.149:8282/DataSynService/GetIncrementStudentInfo" ; | ||
45 | + private static String getAddStudent_method = "getIncrementStudentInfo" ; | ||
46 | + | ||
47 | + @Autowired | ||
48 | + ScFeign scFeign ; | ||
49 | + | ||
50 | + @Autowired | ||
51 | + YxyService yxyService ; | ||
52 | + | ||
53 | + private Logger logger = LoggerFactory.getLogger(YXYAddReadService.class); | ||
54 | + | ||
55 | + public void sync(){ | ||
56 | + logger.info("翼学云增量同步服务开始"); | ||
57 | + List<SyncSchoolDto> schoolList = scFeign.selectSyncSchool(); | ||
58 | + for(SyncSchoolDto syncSchoolDto : schoolList){ | ||
59 | + if(syncSchoolDto.getSchoolId() == 32){ | ||
60 | + logger.info(syncSchoolDto.getSchoolName()+"开始同步"); | ||
61 | + syncSchool(syncSchoolDto.getYxtId(),syncSchoolDto.getSchoolId()); | ||
62 | + } | ||
63 | + } | ||
64 | + } | ||
65 | + | ||
66 | + public void syncSchool(String yxtId , int hxyId){ | ||
67 | + List<YxyStudent> studentList = new ArrayList<>(); //syncStudent(yxtId); | ||
68 | + List<YxyTeacher> teacherList = syncTeacher(yxtId); | ||
69 | + logger.info("学生同步"); | ||
70 | + for(YxyStudent student : studentList){ | ||
71 | + logger.info(student.toString()); | ||
72 | + if(student.getType() == 1){ | ||
73 | + //新增 | ||
74 | + try{ | ||
75 | + String className = yxyService.getDeptName(student.getClassId()); | ||
76 | + String gradeName = yxyService.getSuperDeptName(student.getClassId()); | ||
77 | + int gradeId = yxyService.getGradeId(hxyId,gradeName); | ||
78 | + int classId = yxyService.getClassId(hxyId,className); | ||
79 | + if(gradeId != 0 && classId != 0){ | ||
80 | + AddStudentDto addStudentDto = new AddStudentDto(); | ||
81 | + addStudentDto.setAppId(0); | ||
82 | + addStudentDto.setUserId(""); | ||
83 | + addStudentDto.setSchoolId(hxyId); | ||
84 | + addStudentDto.setXml(initAddStudentXML(student.getName(),classId,gradeId,student.getAccount(),student.getUserId())); | ||
85 | + yxyService.addStudent(addStudentDto); | ||
86 | + logger.info("操作结果:"+addStudentDto.getErr()); | ||
87 | + } | ||
88 | + }catch (Exception e){ | ||
89 | + logger.info("操作结果失败:"+e.toString()); | ||
90 | + } | ||
91 | + } | ||
92 | + if(student.getType() == 2){ | ||
93 | + //修改 | ||
94 | + try{ | ||
95 | + String className = yxyService.getDeptName(student.getClassId()); | ||
96 | + String gradeName = yxyService.getSuperDeptName(student.getClassId()); | ||
97 | + int gradeId = yxyService.getGradeId(hxyId,gradeName); | ||
98 | + int classId = yxyService.getClassId(hxyId,className); | ||
99 | + if(gradeId != 0 && classId != 0){ | ||
100 | + EditStudentDto editStudentDto = new EditStudentDto(); | ||
101 | + editStudentDto.setAppId(0); | ||
102 | + editStudentDto.setUserId(""); | ||
103 | + editStudentDto.setParentId(0); | ||
104 | + editStudentDto.setParentUserId(""); | ||
105 | + List<StudentView> list = yxyService.getStudentView(classId,student.getName()); | ||
106 | + if(list != null && list.size() == 1){ | ||
107 | + editStudentDto.setStudentId(list.get(0).getStudentId()); | ||
108 | + editStudentDto.setStudentUserId(list.get(0).getUserId()); | ||
109 | + editStudentDto.setXml(initEditStudentXML(student.getName(),classId,gradeId,student.getUserId())); | ||
110 | + yxyService.editStudent(editStudentDto); | ||
111 | + logger.info("操作结果:"+editStudentDto.getErr()); | ||
112 | + }else { | ||
113 | + throw new Exception("同一个班级同一姓名返回数据两条"); | ||
114 | + } | ||
115 | + | ||
116 | + } | ||
117 | + }catch (Exception e){ | ||
118 | + logger.info("操作结果失败:"+e.toString()); | ||
119 | + } | ||
120 | + } | ||
121 | + if(student.getType() == 3){ | ||
122 | + //删除 暂不操作 | ||
123 | + } | ||
124 | + } | ||
125 | + logger.info("教师同步"); | ||
126 | + for(YxyTeacher teacher : teacherList){ | ||
127 | + logger.info(teacher.toString()); | ||
128 | + if(teacher.getType() == 0){ | ||
129 | + //新增 | ||
130 | + try{ | ||
131 | + AddTeacherDto addTeacherDto = new AddTeacherDto(); | ||
132 | + addTeacherDto.setAppId(0); | ||
133 | + addTeacherDto.setUserId(""); | ||
134 | + addTeacherDto.setSchoolId(hxyId); | ||
135 | + addTeacherDto.setXml(initAddTeacherXML(teacher.getName(),teacher.getAccount())); | ||
136 | + yxyService.addTeacher(addTeacherDto); | ||
137 | + logger.info("操作结果:"+addTeacherDto.getErr()); | ||
138 | + }catch (Exception e){ | ||
139 | + logger.info("操作结果失败:"+e.toString()); | ||
140 | + } | ||
141 | + } | ||
142 | + if(teacher.getType() == 2){ | ||
143 | + //修改 | ||
144 | + try{ | ||
145 | + EditTeacherDto editTeacherDto = new EditTeacherDto(); | ||
146 | + editTeacherDto.setAppId(0); | ||
147 | + editTeacherDto.setUserId(""); | ||
148 | + List<TeacherView> list = yxyService.getTeacherView(hxyId,teacher.getName()); | ||
149 | + if(list != null && list.size() == 1){ | ||
150 | + editTeacherDto.setXml(initEditTeacherXML(teacher.getName(),teacher.getAccount(),hxyId,list.get(0).getTeacherId())); | ||
151 | + yxyService.editTeacher(editTeacherDto); | ||
152 | + logger.info("操作结果:"+editTeacherDto.getErr()); | ||
153 | + }else { | ||
154 | + throw new Exception("同一个班级同一姓名返回数据两条"); | ||
155 | + } | ||
156 | + | ||
157 | + }catch (Exception e){ | ||
158 | + logger.info("操作结果失败:"+e.toString()); | ||
159 | + } | ||
160 | + } | ||
161 | + if(teacher.getType() == 3){ | ||
162 | + //删除 暂不操作 | ||
163 | + } | ||
164 | + } | ||
165 | + } | ||
166 | + | ||
167 | + private String initAddStudentXML(String name , int classId , int gradeId , String phone , String userId){ | ||
168 | + String xml = "<region>" + | ||
169 | + "<row>" + | ||
170 | + "<name>"+name+"</name>" + | ||
171 | + "<studentcode>"+userId+"</studentcode>" + | ||
172 | + "<schoolyear></schoolyear>" + | ||
173 | + "<student_num></student_num>" + | ||
174 | + "<eduid></eduid>" + | ||
175 | + "<nstudentcode></nstudentcode>" + | ||
176 | + "<examid></examid>" + | ||
177 | + "<period></period>" + | ||
178 | + "<student_type></student_type>" + | ||
179 | + "<studytype></studytype>" + | ||
180 | + "<gender></gender>" + | ||
181 | + "<class_id>"+classId+"</class_id>" + | ||
182 | + "<gradeid>"+gradeId+"</gradeid>" + | ||
183 | + "<parent_name></parent_name>" + | ||
184 | + "<mobile>"+phone+"</mobile>" + | ||
185 | + "<parent_gender></parent_gender>" + | ||
186 | + "<relation_type></relation_type>" + | ||
187 | + "<isguardian></isguardian>" + | ||
188 | + "<islive></islive>" + | ||
189 | + "<native></native>" + | ||
190 | + "<ParentMobile></ParentMobile>" + | ||
191 | + "<RelationType></RelationType>" + | ||
192 | + "<ReceivePhone></ReceivePhone>" + | ||
193 | + "<smobile></smobile>" + | ||
194 | + "</row>" + | ||
195 | + "</region>" ; | ||
196 | + return xml ; | ||
197 | + } | ||
198 | + | ||
199 | + private String initEditStudentXML(String name , int classId , int gradeId , String userId){ | ||
200 | + String xml = "<region>" + | ||
201 | + "<row>" + | ||
202 | + "<name>"+name+"</name>" + | ||
203 | + "<studentcode>"+userId+"</studentcode>" + | ||
204 | + "<schoolyear></schoolyear>" + | ||
205 | + "<student_num></student_num>" + | ||
206 | + "<eduid></eduid>" + | ||
207 | + "<nstudentcode></nstudentcode>" + | ||
208 | + "<examid></examid>" + | ||
209 | + "<period></period>" + | ||
210 | + "<student_type></student_type>" + | ||
211 | + "<studytype></studytype>" + | ||
212 | + "<gender></gender>" + | ||
213 | + "<class_id>"+classId+"</class_id>" + | ||
214 | + "<gradeid>"+gradeId+"</gradeid>" + | ||
215 | + "<parent_name></parent_name>" + | ||
216 | + "<mobile></mobile>" + | ||
217 | + "<parent_gender></parent_gender>" + | ||
218 | + "<relation_type></relation_type>" + | ||
219 | + "<isguardian></isguardian>" + | ||
220 | + "<islive></islive>" + | ||
221 | + "<native></native>" + | ||
222 | + "</row>" + | ||
223 | + "</region>" ; | ||
224 | + return xml ; | ||
225 | + } | ||
226 | + | ||
227 | + private String initAddTeacherXML(String name, String phone){ | ||
228 | + String xml = "<region>" + | ||
229 | + "<row>" + | ||
230 | + "<name>"+name+"</name>" + | ||
231 | + "<id_card></id_card>" + | ||
232 | + "<pass></pass>" + | ||
233 | + "<face></face>" + | ||
234 | + "<sex></sex>" + | ||
235 | + "<birthday></birthday>" + | ||
236 | + "<address></address>" + | ||
237 | + "<email></email>" + | ||
238 | + "<mobile>"+phone+"</mobile>" + | ||
239 | + "<num></num>" + | ||
240 | + "<native></native>" + | ||
241 | + "<nation></nation> " + | ||
242 | + "<polityface></polityface>" + | ||
243 | + "<lengthyear></lengthyear>" + | ||
244 | + "<nationality></nationality>" + | ||
245 | + "</row>" + | ||
246 | + "</region>"; | ||
247 | + return xml ; | ||
248 | + } | ||
249 | + | ||
250 | + private String initEditTeacherXML(String name , String phone , int schoolId , int teacherId){ | ||
251 | + String xml = "<region>" + | ||
252 | + "<school_id>"+schoolId+"</school_id>" + | ||
253 | + "<user_id></user_id>" + | ||
254 | + "<name>"+name+"</name>" + | ||
255 | + "<id_card></id_card>" + | ||
256 | + "<pass></pass>" + | ||
257 | + "<face></face>" + | ||
258 | + "<sex></sex>" + | ||
259 | + "<birthday></birthday>" + | ||
260 | + "<address></address>" + | ||
261 | + "<email></email>" + | ||
262 | + "<mobile>"+phone+"</mobile>" + | ||
263 | + "<teacher_id>"+teacherId+"</teacher_id>" + | ||
264 | + "<num></num>" + | ||
265 | + "<native></native>" + | ||
266 | + "<nation></nation> " + | ||
267 | + "<polityface></polityface>" + | ||
268 | + "<lengthyear></lengthyear>" + | ||
269 | + "<nationality></nationality>" + | ||
270 | + "</region>"; | ||
271 | + return xml ; | ||
272 | + } | ||
273 | + | ||
274 | + private List<YxyStudent> syncStudent(String schoolId){ | ||
275 | + List<YxyStudent> students = new ArrayList<>(); | ||
276 | + try{ | ||
277 | + List list = new ArrayList(); | ||
278 | + list.add(SI); | ||
279 | + list.add(getPassword(SI_CODE)); | ||
280 | + list.add(schoolId); | ||
281 | + String wsdl =getAddStudent ; | ||
282 | + String ns = nameSpace; | ||
283 | + String method = getAddStudent_method; | ||
284 | + JSONArray jsonArray = getMessage(wsdl, ns, method, list); | ||
285 | + if(jsonArray != null){ | ||
286 | + for(int i = 0 ; i < jsonArray.size() ; i++){ | ||
287 | + JSONObject object = (JSONObject) jsonArray.get(i) ; | ||
288 | + YxyStudent student = new YxyStudent(); | ||
289 | + try{ | ||
290 | + student.setClassId(object.get("classID").toString()); | ||
291 | + student.setAccount(object.get("account").toString()); | ||
292 | + student.setName(object.get("name").toString()); | ||
293 | + student.setUserId(object.get("userID").toString()); | ||
294 | + student.setType(Integer.valueOf(object.get("type").toString())); | ||
295 | + }catch (Exception e){ | ||
296 | + } | ||
297 | + try{ | ||
298 | + student.setCardID(object.get("cardID").toString()); | ||
299 | + }catch (Exception e){ | ||
300 | + } | ||
301 | + try{ | ||
302 | + student.setCardID2(object.get("cardID2").toString()); | ||
303 | + }catch (Exception e){ | ||
304 | + } | ||
305 | + try{ | ||
306 | + student.setCardID3(object.get("cardID3").toString()); | ||
307 | + }catch (Exception e){ | ||
308 | + } | ||
309 | + students.add(student); | ||
310 | + } | ||
311 | + } | ||
312 | + }catch (Exception e){ | ||
313 | + logger.info(e.toString()); | ||
314 | + logger.info("学校ID为:"+schoolId + "学生数据没返回"); | ||
315 | + } | ||
316 | + return students; | ||
317 | + } | ||
318 | + | ||
319 | + private List<YxyTeacher> syncTeacher(String schoolId){ | ||
320 | + List<YxyTeacher> teachers = new ArrayList<>(); | ||
321 | + try{ | ||
322 | + List list = new ArrayList(); | ||
323 | + list.add(SI); | ||
324 | + list.add(getPassword(SI_CODE)); | ||
325 | + list.add(schoolId); | ||
326 | + String wsdl =getAddTeacher ; | ||
327 | + String ns = nameSpace; | ||
328 | + String method = getAddTeacher_method; | ||
329 | + JSONArray jsonArray = getMessage(wsdl, ns, method, list); | ||
330 | + if(jsonArray != null){ | ||
331 | + for(int i = 0 ; i < jsonArray.size() ; i++){ | ||
332 | + JSONObject object = (JSONObject) jsonArray.get(i) ; | ||
333 | + YxyTeacher teacher = new YxyTeacher(); | ||
334 | + try { | ||
335 | + teacher.setDeptId(object.get("classID").toString()); | ||
336 | + teacher.setAccount(object.get("account").toString()); | ||
337 | + teacher.setName(object.get("name").toString()); | ||
338 | + teacher.setUserId(object.get("userID").toString()); | ||
339 | + teacher.setType(Integer.valueOf(object.get("type").toString())); | ||
340 | + | ||
341 | + }catch (Exception e){ | ||
342 | + } | ||
343 | + teachers.add(teacher); | ||
344 | + } | ||
345 | + } | ||
346 | + }catch (Exception e){ | ||
347 | + logger.info(e.toString()); | ||
348 | + logger.info("学校ID为:"+schoolId + "老师数据没返回"); | ||
349 | + } | ||
350 | + return teachers; | ||
351 | + } | ||
352 | + | ||
353 | + private JSONArray getMessage(String wsdl, String ns, String method, List<String> list){ | ||
354 | + try { | ||
355 | + String resultXml = HttpClientUtils.invoiceWebService(wsdl,ns,method,list); | ||
356 | + if (StringUtils.isNotBlank(resultXml)) { | ||
357 | + resultXml = resultXml.replaceAll("<", "<"); | ||
358 | + resultXml = resultXml.replaceAll(">", ">"); | ||
359 | + int begin = resultXml.indexOf("<JXT"); | ||
360 | + int end = resultXml.indexOf("</JXT"); | ||
361 | + String str = resultXml.substring(begin, end + 6); | ||
362 | + JSONObject json = Xml2JsonUtils.xml2Json(str); | ||
363 | + if(str.split("resultInfo").length <= 3){ | ||
364 | + if (json != null) { | ||
365 | + JSONObject user = (JSONObject) json.get("resultInfo"); | ||
366 | + JSONArray jsonArray = new JSONArray(); | ||
367 | + jsonArray.add(user); | ||
368 | + return jsonArray; | ||
369 | + } | ||
370 | + }else { | ||
371 | + if (json != null) { | ||
372 | + return (JSONArray) json.get("resultInfo"); | ||
373 | + } | ||
374 | + } | ||
375 | + } | ||
376 | + }catch (Exception e){ | ||
377 | + logger.info("获取信息报错"+e.getMessage()); | ||
378 | + } | ||
379 | + return null ; | ||
380 | + } | ||
381 | + | ||
382 | + private String getPassword(int si){ | ||
383 | + int date = Integer.valueOf(DateUtils.date2String(new Date(),DateUtils.format5)); | ||
384 | + String pwd = String.valueOf(si&date) ; | ||
385 | + while (pwd.length() < 6){ | ||
386 | + pwd = "0" + pwd ; | ||
387 | + } | ||
388 | + pwd = pwd.substring(pwd.length() - 6); | ||
389 | + return EncodeByMD5(pwd); | ||
390 | + } | ||
391 | + | ||
392 | + private String EncodeByMD5(String str) { | ||
393 | + try { | ||
394 | + // 生成一个MD5加密计算摘要 | ||
395 | + MessageDigest md = MessageDigest.getInstance("MD5"); | ||
396 | + // 计算md5函数 | ||
397 | + md.update(str.getBytes("UTF-8")); | ||
398 | + // digest()最后确定返回md5 hash值,返回值为8为字符串。因为md5 hash值是16位的hex值,实际上就是8位的字符 | ||
399 | + // BigInteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的hash值 | ||
400 | + String md5 = new BigInteger(1, md.digest()).toString(16); | ||
401 | + //BigInteger会把0省略掉,需补全至32位 | ||
402 | + return fillMD5(md5); | ||
403 | + } catch (Exception e) { | ||
404 | + throw new RuntimeException("MD5加密错误:" + e.getMessage(), e); | ||
405 | + } | ||
406 | + } | ||
407 | + | ||
408 | + private String fillMD5(String md5){ | ||
409 | + //如果不够32位则回调自身补零,最后返回32位长度的签名 | ||
410 | + return md5.length()==32?md5:fillMD5("0"+md5); | ||
411 | + } | ||
412 | + | ||
413 | +} | ||
0 | \ No newline at end of file | 414 | \ No newline at end of file |
cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYWriteService.java
@@ -71,7 +71,7 @@ public class YXYWriteService { | @@ -71,7 +71,7 @@ public class YXYWriteService { | ||
71 | } | 71 | } |
72 | } | 72 | } |
73 | 73 | ||
74 | - private void syncUser(SyncSchoolDto school, List<SyncUserDto> userList) { | 74 | + public void syncUser(SyncSchoolDto school, List<SyncUserDto> userList) { |
75 | List<SyncUserDto> addStudentList = new ArrayList<>(); | 75 | List<SyncUserDto> addStudentList = new ArrayList<>(); |
76 | List<SyncUserDto> updateStudentList = new ArrayList<>(); | 76 | List<SyncUserDto> updateStudentList = new ArrayList<>(); |
77 | List<SyncUserDto> deleteStudentList = new ArrayList<>(); | 77 | List<SyncUserDto> deleteStudentList = new ArrayList<>(); |
cloud/quartz/src/main/resources/mapper/YxyMapper.xml
@@ -2,6 +2,78 @@ | @@ -2,6 +2,78 @@ | ||
2 | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > | 2 | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > |
3 | <mapper namespace="com.sincere.quartz.mapper.YxyMapper"> | 3 | <mapper namespace="com.sincere.quartz.mapper.YxyMapper"> |
4 | 4 | ||
5 | + <select id="getTeacherView" resultType="com.sincere.quartz.dto.TeacherView"> | ||
6 | + select teacher_id as teacherId , user_id as userId , name | ||
7 | + from SZ_V_School_Teacher where school_id = #{schoolId} and name = #{name} | ||
8 | + </select> | ||
9 | + | ||
10 | + <select id="getStudentView" resultType="com.sincere.quartz.dto.StudentView"> | ||
11 | + select student_id as studentId , user_id as userId , name | ||
12 | + from SZ_V_School_Student | ||
13 | + where class_id = #{classId} and name = #{name} | ||
14 | + </select> | ||
15 | + | ||
16 | + <select id="getGradeId" resultType="java.lang.Integer"> | ||
17 | + select id from SZ_Grade where status=1 and schoolid=#{schoolId} and grade = #{grade} | ||
18 | + </select> | ||
19 | + | ||
20 | + <select id="getClassId" resultType="java.lang.Integer"> | ||
21 | + select class_id from SZ_Class where is_finish=0 and state=1 and school_id = #{schoolId} and class_name = #{className} | ||
22 | + </select> | ||
23 | + | ||
24 | + <select id="getDeptName" parameterType="java.lang.String" resultType="java.lang.String"> | ||
25 | + select deptName from Agency where deptID = #{deptId} | ||
26 | + </select> | ||
27 | + | ||
28 | + <select id="getSuperDeptName" parameterType="java.lang.String" resultType="java.lang.String"> | ||
29 | + select deptName from Agency where deptID = | ||
30 | + (select superDeptID from Agency where deptID = #{deptId}) | ||
31 | + </select> | ||
32 | + | ||
33 | + <resultMap id="AddStudentMap" type="com.sincere.quartz.dto.AddStudentDto"> | ||
34 | + <result column="Err" property="err" jdbcType="VARCHAR" /> | ||
35 | + </resultMap> | ||
36 | + <insert id="addStudent" parameterType="com.sincere.quartz.dto.AddStudentDto" statementType="CALLABLE"> | ||
37 | + {call Student_Add( | ||
38 | + #{appId,mode=IN} , #{userId,mode=IN} , #{schoolId,mode=IN}, #{xml,mode=IN}, | ||
39 | + #{Err,mode=OUT,jdbcType=VARCHAR,resultMap=AddStudentMap} | ||
40 | + )} | ||
41 | + </insert> | ||
42 | + | ||
43 | + <resultMap id="EditStudentMap" type="com.sincere.quartz.dto.EditStudentDto"> | ||
44 | + <result column="Err" property="err" jdbcType="VARCHAR" /> | ||
45 | + </resultMap> | ||
46 | + <insert id="editStudent" parameterType="com.sincere.quartz.dto.EditStudentDto" statementType="CALLABLE"> | ||
47 | + {call Student_Edit( | ||
48 | + #{appId,mode=IN} , #{userId,mode=IN} , #{studentUserId,mode=IN},#{parentUserId,mode=IN}, | ||
49 | + #{studentId,mode=IN},#{parentId,mode=IN},#{xml,mode=IN}, | ||
50 | + #{Err,mode=OUT,jdbcType=VARCHAR,resultMap=EditStudentMap} | ||
51 | + )} | ||
52 | + </insert> | ||
53 | + | ||
54 | + <resultMap id="AddTeacherMap" type="com.sincere.quartz.dto.AddTeacherDto"> | ||
55 | + <result column="Err" property="err" jdbcType="VARCHAR" /> | ||
56 | + <result column="YongHuId" property="YongHuId" jdbcType="VARCHAR" /> | ||
57 | + <result column="LaoShiId" property="LaoShiId" jdbcType="VARCHAR" /> | ||
58 | + </resultMap> | ||
59 | + <insert id="addTeacher" parameterType="com.sincere.quartz.dto.AddTeacherDto" statementType="CALLABLE"> | ||
60 | + {call Teachers_Add( | ||
61 | + #{appId,mode=IN} , #{userId,mode=IN} , #{schoolId,mode=IN}, #{xml,mode=IN}, | ||
62 | + #{Err,mode=OUT,jdbcType=VARCHAR,resultMap=AddTeacherMap}, | ||
63 | + #{YongHuId,mode=OUT,jdbcType=VARCHAR,resultMap=AddTeacherMap}, | ||
64 | + #{LaoShiId,mode=OUT,jdbcType=VARCHAR,resultMap=AddTeacherMap} | ||
65 | + )} | ||
66 | + </insert> | ||
67 | + | ||
68 | + <resultMap id="EditTeacherMap" type="com.sincere.quartz.dto.EditTeacherDto"> | ||
69 | + <result column="Err" property="err" jdbcType="VARCHAR" /> | ||
70 | + </resultMap> | ||
71 | + <insert id="editTeacher" parameterType="com.sincere.quartz.dto.EditTeacherDto" statementType="CALLABLE"> | ||
72 | + {call Teacher_Edit( | ||
73 | + #{appId,mode=IN} , #{userId,mode=IN} , #{xml,mode=IN}, | ||
74 | + #{Err,mode=OUT,jdbcType=VARCHAR,resultMap=EditTeacherMap} | ||
75 | + )} | ||
76 | + </insert> | ||
5 | 77 | ||
6 | <delete id="deleteWeekBefore" > | 78 | <delete id="deleteWeekBefore" > |
7 | delete Agency where DATEDIFF(d,intime,GETDATE())>7; | 79 | delete Agency where DATEDIFF(d,intime,GETDATE())>7; |
@@ -17,10 +89,18 @@ | @@ -17,10 +89,18 @@ | ||
17 | update Teacher set state = 0 where DATEDIFF(n , intime, getdate()) > 240 | 89 | update Teacher set state = 0 where DATEDIFF(n , intime, getdate()) > 240 |
18 | </update> | 90 | </update> |
19 | 91 | ||
92 | + <update id="updateTeacherBySchool" > | ||
93 | + update Teacher set state = 0 where deptID like '%${deptId}%' | ||
94 | + </update> | ||
95 | + | ||
20 | <update id="updateStudent"> | 96 | <update id="updateStudent"> |
21 | update Student set state = 0 where DATEDIFF(n , intime, getdate()) > 240 | 97 | update Student set state = 0 where DATEDIFF(n , intime, getdate()) > 240 |
22 | </update> | 98 | </update> |
23 | 99 | ||
100 | + <update id="updateStudentBySchool"> | ||
101 | + update Student set state = 0 where classID like '%${classId}%' | ||
102 | + </update> | ||
103 | + | ||
24 | <select id="selectCount" parameterType="java.lang.String" resultType="java.lang.Integer"> | 104 | <select id="selectCount" parameterType="java.lang.String" resultType="java.lang.Integer"> |
25 | select count(0) from Student where intime > #{date} | 105 | select count(0) from Student where intime > #{date} |
26 | </select> | 106 | </select> |
cloud/weigeng/src/main/java/com/sincere/weigeng/Swagger2.java
@@ -1,39 +0,0 @@ | @@ -1,39 +0,0 @@ | ||
1 | -package com.sincere.weigeng; | ||
2 | - | ||
3 | -import io.swagger.annotations.ApiOperation; | ||
4 | -import org.springframework.context.annotation.Bean; | ||
5 | -import org.springframework.context.annotation.Configuration; | ||
6 | -import springfox.documentation.builders.ApiInfoBuilder; | ||
7 | -import springfox.documentation.builders.PathSelectors; | ||
8 | -import springfox.documentation.builders.RequestHandlerSelectors; | ||
9 | -import springfox.documentation.service.ApiInfo; | ||
10 | -import springfox.documentation.spi.DocumentationType; | ||
11 | -import springfox.documentation.spring.web.plugins.Docket; | ||
12 | -import springfox.documentation.swagger2.annotations.EnableSwagger2; | ||
13 | - | ||
14 | -@EnableSwagger2 | ||
15 | -@Configuration //让Spring来加载该类配置 | ||
16 | -public class Swagger2 { | ||
17 | - | ||
18 | - @Bean | ||
19 | - public Docket createRestApi() { | ||
20 | - return new Docket(DocumentationType.SWAGGER_2) | ||
21 | - .apiInfo(apiInfo()) | ||
22 | - .enableUrlTemplating(true) | ||
23 | - .select() | ||
24 | - // 扫描所有有注解的api,用这种方式更灵活 | ||
25 | - .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) | ||
26 | - .paths(PathSelectors.any()) | ||
27 | - .build(); | ||
28 | - | ||
29 | - } | ||
30 | - | ||
31 | - private ApiInfo apiInfo() { | ||
32 | - return new ApiInfoBuilder() | ||
33 | - .title("Spring Boot中使用Swagger2构建RESTful APIs") | ||
34 | - .description("接口文档") | ||
35 | - .termsOfServiceUrl("") | ||
36 | - .version("1.0") | ||
37 | - .build(); | ||
38 | - } | ||
39 | -} |