From 2675577c2053f785189834d785bfd381349d2a79 Mon Sep 17 00:00:00 2001 From: 陈杰 <504987307@qq.com> Date: Fri, 7 Aug 2020 15:52:24 +0800 Subject: [PATCH] 翼学云 增量接口 --- cloud/quartz/pom.xml | 5 +++++ cloud/quartz/src/main/java/com/sincere/quartz/QuartzApplication.java | 2 +- cloud/quartz/src/main/java/com/sincere/quartz/Swagger2.java | 39 +++++++++++++++++++++++++++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/controller/YxyController.java | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceConfig.java | 80 ++++++++++++++++++++++++++++++++++++++++++++------------------------------------ cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceType.java | 28 +++++++++++++++------------- cloud/quartz/src/main/java/com/sincere/quartz/dto/AddStudentDto.java | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/dto/AddTeacherDto.java | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/dto/BaseDto.java | 43 +++++++++++++++++++++++++++++++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/dto/EditStudentDto.java | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/dto/EditTeacherDto.java | 41 +++++++++++++++++++++++++++++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/dto/StudentView.java | 32 ++++++++++++++++++++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/dto/TeacherView.java | 32 ++++++++++++++++++++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/job/AddYxyJob.java | 18 ++++++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/job/BindPushJob.java | 209 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------------------------------------------- cloud/quartz/src/main/java/com/sincere/quartz/job/KQJob.java | 1102 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java | 58 +++++++++++++++++++++++++++++----------------------------- cloud/quartz/src/main/java/com/sincere/quartz/mapper/YxyMapper.java | 28 ++++++++++++++++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/model/YxyStudent.java | 35 +++++++++++++++++++++++++++++------ cloud/quartz/src/main/java/com/sincere/quartz/model/YxyTeacher.java | 28 ++++++++++++++++++++++++---- cloud/quartz/src/main/java/com/sincere/quartz/service/YxyService.java | 28 ++++++++++++++++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/service/impl/YxyServiceImpl.java | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/third/qiyehao/QYHUtils.java | 64 ++++++++++++++++++++++++++++++++-------------------------------- cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYAddReadService.java | 413 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYWriteService.java | 2 +- cloud/quartz/src/main/resources/mapper/YxyMapper.xml | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/weigeng/src/main/java/com/sincere/weigeng/Swagger2.java | 39 --------------------------------------- 27 files changed, 1935 insertions(+), 817 deletions(-) create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/Swagger2.java create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/controller/YxyController.java create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/dto/AddStudentDto.java create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/dto/AddTeacherDto.java create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/dto/BaseDto.java create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/dto/EditStudentDto.java create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/dto/EditTeacherDto.java create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/dto/StudentView.java create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/dto/TeacherView.java create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/job/AddYxyJob.java create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYAddReadService.java delete mode 100644 cloud/weigeng/src/main/java/com/sincere/weigeng/Swagger2.java diff --git a/cloud/quartz/pom.xml b/cloud/quartz/pom.xml index 26725d6..a456193 100644 --- a/cloud/quartz/pom.xml +++ b/cloud/quartz/pom.xml @@ -30,6 +30,11 @@ org.springframework.boot + spring-boot-starter-web + 2.2.5.RELEASE + + + org.springframework.boot spring-boot-starter-test test diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/QuartzApplication.java b/cloud/quartz/src/main/java/com/sincere/quartz/QuartzApplication.java index bb541d6..9fd58a7 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/QuartzApplication.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/QuartzApplication.java @@ -15,12 +15,12 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; * @version 1.0 * @date 2019/11/27 0027 14:24 */ +@EnableEurekaClient @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) @EnableTransactionManagement(order = 2) //设置事务执行顺序(需要在切换数据源之后,否则只走主库) @EnableCaching @EnableScheduling @EnableFeignClients(basePackages = "com.sincere.quartz.feign") -@EnableEurekaClient @MapperScan("com.sincere.quartz.mapper") public class QuartzApplication { diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/Swagger2.java b/cloud/quartz/src/main/java/com/sincere/quartz/Swagger2.java new file mode 100644 index 0000000..f67e708 --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/Swagger2.java @@ -0,0 +1,39 @@ +package com.sincere.quartz; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.ParameterBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +@EnableSwagger2 +@Configuration //让Spring来加载该类配置 +public class Swagger2 { + + @Bean + public Docket createRestApi() { + return new Docket(DocumentationType.SWAGGER_2) + .apiInfo(apiInfo()) + .enableUrlTemplating(false) + .select() + // 扫描所有有注解的api,用这种方式更灵活 + .apis(RequestHandlerSelectors.basePackage("com.sincere.quartz.controller")) + .paths(PathSelectors.any()) + .build(); + + } + + private ApiInfo apiInfo() { + return new ApiInfoBuilder() + .title("Spring Boot中使用Swagger2构建RESTful APIs") + .description("接口文档") + .termsOfServiceUrl("") + .version("1.0") + .build(); + } +} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/controller/YxyController.java b/cloud/quartz/src/main/java/com/sincere/quartz/controller/YxyController.java new file mode 100644 index 0000000..3607463 --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/controller/YxyController.java @@ -0,0 +1,74 @@ +package com.sincere.quartz.controller; + +import com.sincere.common.dto.smartCampus.SyncSchoolDto; +import com.sincere.common.dto.smartCampus.SyncUserDto; +import com.sincere.quartz.dto.BaseDto; +import com.sincere.quartz.feign.ScFeign; +import com.sincere.quartz.service.YxyService; +import com.sincere.quartz.third.yixueyun.YXYAddReadService; +import com.sincere.quartz.third.yixueyun.YXYReadService; +import com.sincere.quartz.third.yixueyun.YXYWriteService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequestMapping("/sync") +@Api(value = "同步") +public class YxyController { + + @Autowired + YXYReadService readService ; + + @Autowired + YXYWriteService writeService ; + + @Autowired + ScFeign scFeign; + + @Autowired + YXYAddReadService addReadService ; + + @Autowired + YxyService yxyService ; + + @ApiOperation(value = "test") + @RequestMapping(value = "test",method = RequestMethod.GET) + public void test(){ + addReadService.sync(); + } + + @ApiOperation(value = "syncTeacher") + @RequestMapping(value = "syncTeacher",method = RequestMethod.GET) + public BaseDto syncTeacher(String schoolId){ + yxyService.updateTeacherBySchool(schoolId); + readService.syncTeacher(schoolId); + return new BaseDto() ; + } + + @ApiOperation(value = "syncStudent") + @RequestMapping(value = "syncStudent",method = RequestMethod.GET) + public BaseDto syncStudent(String schoolId){ + yxyService.updateStudentBySchool(schoolId); + readService.syncStudent(schoolId); + return new BaseDto() ; + } + + @ApiOperation(value = "syncWrite") + @RequestMapping(value = "syncWrite",method = RequestMethod.GET) + public BaseDto syncWrite(int hxyId){ + List schoolList = scFeign.selectSyncSchool(); + for (SyncSchoolDto school : schoolList) { + if(school.getSchoolId() == hxyId){ + List userList = scFeign.selectUser(school.getSchoolId()); + writeService.syncUser(school, userList); + } + } + return new BaseDto(); + } +} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceConfig.java b/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceConfig.java index be8a995..1e2bb9b 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceConfig.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceConfig.java @@ -12,45 +12,53 @@ import java.util.Map; /** * 数据源配置 + * */ @Configuration public class DataSourceConfig { - @Bean(name = "master") - @ConfigurationProperties(prefix = "datasource.master") - public DataSource dataSource1() { - return DataSourceBuilder.create().build(); - } - - @Bean(name = "slave") - @ConfigurationProperties(prefix = "datasource.slave") - public DataSource dataSource2() { - return DataSourceBuilder.create().build(); - } - - @Bean(name = "yxy") - @ConfigurationProperties(prefix = "datasource.yxy") - public DataSource dataSource3() { - return DataSourceBuilder.create().build(); - } - - - @Bean(name = "dynamicDataSource") - @Primary //优先使用,多数据源 - public DataSource dataSource() { - DynamicDataSource dynamicDataSource = new DynamicDataSource(); - DataSource master = dataSource1(); - DataSource slave = dataSource2(); - DataSource yxy = dataSource3(); - //设置默认数据源 - dynamicDataSource.setDefaultTargetDataSource(master); - //配置多数据源 - Map map = new HashMap<>(); - map.put(DataSourceType.Master.getName(), master); //key需要跟ThreadLocal中的值对应 - map.put(DataSourceType.Slave.getName(), slave); - map.put(DataSourceType.Yxy.getName(), yxy); - dynamicDataSource.setTargetDataSources(map); - return dynamicDataSource; - } + @Bean(name = "master") + @ConfigurationProperties(prefix = "datasource.master") + public DataSource dataSource1() { + return DataSourceBuilder.create().build(); + } + @Bean(name = "slave") + @ConfigurationProperties(prefix = "datasource.slave") + public DataSource dataSource2() { + return DataSourceBuilder.create().build(); + } + + @Bean(name = "yxy") + @ConfigurationProperties(prefix = "datasource.yxy") + public DataSource dataSource3() { + return DataSourceBuilder.create().build(); + } + + @Bean(name = "update") + @ConfigurationProperties(prefix = "datasource.update") + public DataSource dataSource4() { + return DataSourceBuilder.create().build(); + } + + @Bean(name="dynamicDataSource") + @Primary //优先使用,多数据源 + public DataSource dataSource() { + DynamicDataSource dynamicDataSource = new DynamicDataSource(); + DataSource master = dataSource1(); + DataSource slave = dataSource2(); + DataSource yxy = dataSource3(); + DataSource update = dataSource4(); + //设置默认数据源 + dynamicDataSource.setDefaultTargetDataSource(master); + //配置多数据源 + Map map = new HashMap<>(); + map.put(DataSourceType.Master.getName(), master); //key需要跟ThreadLocal中的值对应 + map.put(DataSourceType.Slave.getName(), slave); + map.put(DataSourceType.Yxy.getName(), yxy); + map.put(DataSourceType.Update.getName(), update); + dynamicDataSource.setTargetDataSources(map); + return dynamicDataSource; + } + } diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceType.java b/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceType.java index 4e415fa..2a35374 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceType.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceType.java @@ -2,24 +2,26 @@ package com.sincere.quartz.datasource; public enum DataSourceType { - Master("master"), + Master("master"), - Slave("slave"), + Slave("slave"), - Yxy("yxy"); + Yxy("yxy"), + Update("update"); - private String name; - private DataSourceType(String name) { - this.name = name; - } + private String name; - public String getName() { - return name; - } + private DataSourceType(String name) { + this.name = name; + } - public void setName(String name) { - this.name = name; - } + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } } diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/dto/AddStudentDto.java b/cloud/quartz/src/main/java/com/sincere/quartz/dto/AddStudentDto.java new file mode 100644 index 0000000..dfcfc1d --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/dto/AddStudentDto.java @@ -0,0 +1,51 @@ +package com.sincere.quartz.dto; + +public class AddStudentDto { + + private int appId ; + private String userId ; + private int schoolId ; + private String xml ; + private String Err; + + public String getErr() { + return Err; + } + + public void setErr(String err) { + Err = err; + } + + public int getAppId() { + return appId; + } + + public void setAppId(int appId) { + this.appId = appId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public int getSchoolId() { + return schoolId; + } + + public void setSchoolId(int schoolId) { + this.schoolId = schoolId; + } + + public String getXml() { + return xml; + } + + public void setXml(String xml) { + this.xml = xml; + } + +} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/dto/AddTeacherDto.java b/cloud/quartz/src/main/java/com/sincere/quartz/dto/AddTeacherDto.java new file mode 100644 index 0000000..b0032c3 --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/dto/AddTeacherDto.java @@ -0,0 +1,69 @@ +package com.sincere.quartz.dto; + +public class AddTeacherDto { + + private int appId ; + private String userId ; + private int schoolId ; + private String xml ; + + private String Err; + private String YongHuId; + private String LaoShiId ; + + public String getErr() { + return Err; + } + + public void setErr(String err) { + Err = err; + } + + public String getYongHuId() { + return YongHuId; + } + + public void setYongHuId(String yongHuId) { + YongHuId = yongHuId; + } + + public String getLaoShiId() { + return LaoShiId; + } + + public void setLaoShiId(String laoShiId) { + LaoShiId = laoShiId; + } + + public int getAppId() { + return appId; + } + + public void setAppId(int appId) { + this.appId = appId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public int getSchoolId() { + return schoolId; + } + + public void setSchoolId(int schoolId) { + this.schoolId = schoolId; + } + + public String getXml() { + return xml; + } + + public void setXml(String xml) { + this.xml = xml; + } +} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/dto/BaseDto.java b/cloud/quartz/src/main/java/com/sincere/quartz/dto/BaseDto.java new file mode 100644 index 0000000..a36ad5b --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/dto/BaseDto.java @@ -0,0 +1,43 @@ +package com.sincere.quartz.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +@ApiModel +public class BaseDto { + + @ApiModelProperty(value = "接口成功与否") + private boolean success ; + @ApiModelProperty(value = "错误信息") + private String message ; + @ApiModelProperty(value = "数据") + private T data ; + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } + + public BaseDto() { + this.success = true ; + } +} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/dto/EditStudentDto.java b/cloud/quartz/src/main/java/com/sincere/quartz/dto/EditStudentDto.java new file mode 100644 index 0000000..1833759 --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/dto/EditStudentDto.java @@ -0,0 +1,77 @@ +package com.sincere.quartz.dto; + +public class EditStudentDto { + + private int appId ; + private String userId ; + private String studentUserId ; + private String parentUserId ; + private int studentId ; + private int parentId ; + private String xml ; + private String Err; + + public String getErr() { + return Err; + } + + public void setErr(String err) { + Err = err; + } + + public int getAppId() { + return appId; + } + + public void setAppId(int appId) { + this.appId = appId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getStudentUserId() { + return studentUserId; + } + + public void setStudentUserId(String studentUserId) { + this.studentUserId = studentUserId; + } + + public String getParentUserId() { + return parentUserId; + } + + public void setParentUserId(String parentUserId) { + this.parentUserId = parentUserId; + } + + public int getStudentId() { + return studentId; + } + + public void setStudentId(int studentId) { + this.studentId = studentId; + } + + public int getParentId() { + return parentId; + } + + public void setParentId(int parentId) { + this.parentId = parentId; + } + + public String getXml() { + return xml; + } + + public void setXml(String xml) { + this.xml = xml; + } +} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/dto/EditTeacherDto.java b/cloud/quartz/src/main/java/com/sincere/quartz/dto/EditTeacherDto.java new file mode 100644 index 0000000..8e1d8cd --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/dto/EditTeacherDto.java @@ -0,0 +1,41 @@ +package com.sincere.quartz.dto; + +public class EditTeacherDto { + + private int appId ; + private String userId ; + private String xml ; + private String Err; + + public String getErr() { + return Err; + } + + public void setErr(String err) { + Err = err; + } + + public int getAppId() { + return appId; + } + + public void setAppId(int appId) { + this.appId = appId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getXml() { + return xml; + } + + public void setXml(String xml) { + this.xml = xml; + } +} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/dto/StudentView.java b/cloud/quartz/src/main/java/com/sincere/quartz/dto/StudentView.java new file mode 100644 index 0000000..36a6d28 --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/dto/StudentView.java @@ -0,0 +1,32 @@ +package com.sincere.quartz.dto; + +public class StudentView { + + private int studentId ; + private String userId ; + private String name ; + + public int getStudentId() { + return studentId; + } + + public void setStudentId(int studentId) { + this.studentId = studentId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/dto/TeacherView.java b/cloud/quartz/src/main/java/com/sincere/quartz/dto/TeacherView.java new file mode 100644 index 0000000..34c6827 --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/dto/TeacherView.java @@ -0,0 +1,32 @@ +package com.sincere.quartz.dto; + +public class TeacherView { + + private int teacherId ; + private String userId ; + private String name ; + + public int getTeacherId() { + return teacherId; + } + + public void setTeacherId(int teacherId) { + this.teacherId = teacherId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/job/AddYxyJob.java b/cloud/quartz/src/main/java/com/sincere/quartz/job/AddYxyJob.java new file mode 100644 index 0000000..73d559c --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/job/AddYxyJob.java @@ -0,0 +1,18 @@ +//package com.sincere.quartz.job; +// +//import com.sincere.quartz.third.yixueyun.YXYAddReadService; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.scheduling.annotation.Scheduled; +//import org.springframework.stereotype.Service; +// +//@Service +//public class AddYxyJob { +// +// @Autowired +// YXYAddReadService yxyAddReadService ; +// +// @Scheduled(cron = "30 * * * * ? ") +// public void Sync(){ +// yxyAddReadService.sync(); +// } +//} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/job/BindPushJob.java b/cloud/quartz/src/main/java/com/sincere/quartz/job/BindPushJob.java index 42ccc66..22a25ec 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/job/BindPushJob.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/job/BindPushJob.java @@ -1,105 +1,104 @@ -package com.sincere.quartz.job; - -import com.sincere.common.dto.smartCampus.BindPushDto; -import com.sincere.common.dto.smartCampus.ParentDto; -import com.sincere.common.enums.PushTypeEnums; -import com.sincere.common.util.DateUtils; -import com.sincere.quartz.feign.ScFeign; -import com.sincere.quartz.model.ShortMsg; -import com.sincere.quartz.service.SmsService; -import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Service; - -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * 用户注册激活提醒 - * - * @author chen - * @version 1.0 - * @date 2019/12/10 0010 8:31 - */ -@Service -public class BindPushJob { - - private Logger logger = LoggerFactory.getLogger(BindPushJob.class); - - - @Autowired - ScFeign scFeign; - - @Autowired - SmsService smsService; - - private static Map intervalDaysMap = new HashMap<>(); //redis 持久化 替换 可避免重启导致间隔的错误 - - @Scheduled(cron = "0 0-59 * * * ? ") - public void bindPush() { - Date nowDate = new Date(); - List schoolList = scFeign.selectBindPushSchool(); - for (BindPushDto school : schoolList) { - if (school.getBeginDate().compareTo(nowDate) <= 0 && school.getEndDate().compareTo(nowDate) >= 0) { - String lastDate = intervalDaysMap.get(school.getSchoolId() + "_" + school.getType()); - if (StringUtils.isBlank(lastDate)) { - //下发推送 - bindPush(school, nowDate); - } else { - int day = DateUtils.getDateDifference(nowDate, DateUtils.string2Date(lastDate, DateUtils.format1), "day"); - if (day == school.getIntervalDays() + 1) { - //下发推送 - bindPush(school, nowDate); - } - } - } - } - } - - private void bindPush(BindPushDto bindPushDto, Date nowDate) { - if (bindPushDto.getPushTime().equals(DateUtils.date2String(nowDate, DateUtils.format4))) { - intervalDaysMap.put(bindPushDto.getSchoolId() + "_" + bindPushDto.getType(), DateUtils.date2String(nowDate, DateUtils.format1)); - //未关注 - List unFollowList = scFeign.selectNotFollow(bindPushDto.getSchoolId()); - logger.info(bindPushDto.getSchoolName() + "未关注人数" + unFollowList.size()); - for (ParentDto parentDto : unFollowList) { - sendMessage(parentDto, bindPushDto.getMsg()); - } - //未绑定 - List unBindList = scFeign.selectNotBind(bindPushDto.getSchoolId(), getThirdType(bindPushDto.getType())); - logger.info(bindPushDto.getSchoolName() + "未绑定人数" + unBindList.size()); - for (ParentDto parentDto : unBindList) { - sendMessage(parentDto, bindPushDto.getMsg()); - } - } - } - - private void sendMessage(ParentDto parentDto, String message) { - //手机号为空 - if (StringUtils.isNotBlank(parentDto.getMobile())) { - String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); - ShortMsg shortMsg = new ShortMsg(); - shortMsg.setTableName("smsNew" + tableSuffix); - shortMsg.setSchoolId(parentDto.getSchoolId()); - shortMsg.setMobile(parentDto.getMobile()); - shortMsg.setMsg(message); - smsService.insertSMS(shortMsg); - logger.info("----学校Id---" + parentDto.getSchoolId() + "----手机号----" + parentDto.getMobile() + "---" + message); - } - } - - // 0是企业号,1是钉钉 - private int getThirdType(int type) { - if (type == 0) { - return PushTypeEnums.QIYEHAO.getType(); - } else { - return PushTypeEnums.DING.getType(); - } - } - -} +//package com.sincere.quartz.job; +// +//import com.sincere.common.dto.smartCampus.BindPushDto; +//import com.sincere.common.dto.smartCampus.ParentDto; +//import com.sincere.common.enums.PushTypeEnums; +//import com.sincere.common.util.DateUtils; +//import com.sincere.quartz.feign.ScFeign; +//import com.sincere.quartz.model.ShortMsg; +//import com.sincere.quartz.service.SmsService; +//import org.apache.commons.lang3.StringUtils; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.scheduling.annotation.Scheduled; +//import org.springframework.stereotype.Service; +// +//import java.util.Date; +//import java.util.HashMap; +//import java.util.List; +//import java.util.Map; +// +///** +// * 用户注册激活提醒 +// * @author chen +// * @version 1.0 +// * @date 2019/12/10 0010 8:31 +// */ +//@Service +//public class BindPushJob { +// +// private Logger logger = LoggerFactory.getLogger(BindPushJob.class); +// +// +// @Autowired +// ScFeign scFeign; +// +// @Autowired +// SmsService smsService; +// +// private static Map intervalDaysMap = new HashMap<>(); //redis 持久化 替换 可避免重启导致间隔的错误 +// +// @Scheduled(cron = "0 0-59 * * * ? ") +// public void bindPush(){ +// Date nowDate = new Date(); +// List schoolList = scFeign.selectBindPushSchool(); +// for(BindPushDto school : schoolList){ +// if(school.getBeginDate().compareTo(nowDate) <= 0 && school.getEndDate().compareTo(nowDate) >= 0){ +// String lastDate = intervalDaysMap.get(school.getSchoolId()+"_"+school.getType()); +// if(StringUtils.isBlank(lastDate)){ +// //下发推送 +// bindPush(school,nowDate); +// }else { +// int day = DateUtils.getDateDifference(nowDate,DateUtils.string2Date(lastDate,DateUtils.format1),"day") ; +// if(day == school.getIntervalDays() + 1) { +// //下发推送 +// bindPush(school,nowDate); +// } +// } +// } +// } +// } +// +// private void bindPush(BindPushDto bindPushDto , Date nowDate){ +// if(bindPushDto.getPushTime().equals(DateUtils.date2String(nowDate,DateUtils.format4))){ +// intervalDaysMap.put(bindPushDto.getSchoolId()+"_"+bindPushDto.getType(),DateUtils.date2String(nowDate,DateUtils.format1)); +// //未关注 +// List unFollowList = scFeign.selectNotFollow(bindPushDto.getSchoolId()); +// logger.info(bindPushDto.getSchoolName()+"未关注人数"+unFollowList.size()); +// for(ParentDto parentDto : unFollowList){ +// sendMessage(parentDto,bindPushDto.getMsg()); +// } +// //未绑定 +// List unBindList =scFeign.selectNotBind(bindPushDto.getSchoolId(),getThirdType(bindPushDto.getType())); +// logger.info(bindPushDto.getSchoolName()+"未绑定人数"+unBindList.size()); +// for(ParentDto parentDto : unBindList){ +// sendMessage(parentDto,bindPushDto.getMsg()); +// } +// } +// } +// +// private void sendMessage(ParentDto parentDto , String message){ +// //手机号为空 +// if(StringUtils.isNotBlank(parentDto.getMobile())){ +// String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); +// ShortMsg shortMsg = new ShortMsg(); +// shortMsg.setTableName("smsNew"+tableSuffix); +// shortMsg.setSchoolId(parentDto.getSchoolId()); +// shortMsg.setMobile(parentDto.getMobile()); +// shortMsg.setMsg(message); +// smsService.insertSMS(shortMsg); +// logger.info("----学校Id---"+parentDto.getSchoolId() + "----手机号----"+parentDto.getMobile()+"---"+message); +// } +// } +// +// // 0是企业号,1是钉钉 +// private int getThirdType(int type){ +// if(type == 0){ +// return PushTypeEnums.QIYEHAO.getType() ; +// }else { +// return PushTypeEnums.DING.getType() ; +// } +// } +// +//} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/job/KQJob.java b/cloud/quartz/src/main/java/com/sincere/quartz/job/KQJob.java index 3feefa1..cae4643 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/job/KQJob.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/job/KQJob.java @@ -1,551 +1,551 @@ -package com.sincere.quartz.job; - -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.sincere.common.dto.smartCampus.*; -import com.sincere.common.enums.PushTypeEnums; -import com.sincere.common.util.DateUtils; -import com.sincere.common.util.HttpClientUtils; -import com.sincere.quartz.enums.KqTypeEnums; -import com.sincere.quartz.enums.TypeEnums; -import com.sincere.quartz.feign.ScFeign; -import com.sincere.quartz.model.DingSms; -import com.sincere.quartz.model.ShortMsg; -import com.sincere.quartz.model.WeChatSms; -import com.sincere.quartz.service.ManagerService; -import com.sincere.quartz.service.SmsService; -import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Service; - -import java.math.BigDecimal; -import java.util.*; - -/** - * 考勤任务推送调用 - * 主要推送盯盯以及企业号 - * - * @author chen - * @version 1.0 - * @date 2019/11/27 0027 17:05 - */ -@Service -public class KQJob { - - private Logger logger = LoggerFactory.getLogger(KQJob.class); - - @Autowired - ScFeign scFeign; - - @Autowired - SmsService smsService; - - @Autowired - ManagerService managerService; - - private static String iotUrl = "http://60.190.202.57:8035"; - - private static String date; - private static Map map = new HashMap<>(); //学校 考勤推送map - - private static String alarmDate; - private static Map alarmMap = new HashMap<>(); //考勤告警推送map - private static Map templateMap = new HashMap<>(); // 考勤比例 - - private static List opexList; - private static String integration; - - static { - opexList = new ArrayList<>(); - opexList.add("15857566147"); //王汉栋 - opexList.add("13858485977"); //王楠彬 - - integration = "18767117554"; //林炜 - } - - @Scheduled(cron = "0 0-59 * * * ? ") - public void kaoQing() { - String now = DateUtils.date2String(new Date(), DateUtils.format1); - if (StringUtils.isBlank(date)) { - initMap(); - date = now; - } - if (!DateUtils.date2String(new Date(), DateUtils.format1).equals(date)) { - initMap(); - date = DateUtils.date2String(new Date(), DateUtils.format1); - } - //开始过滤数据 推送 - List keyList = new ArrayList<>(); - for (Map.Entry entity : map.entrySet()) { - String endTime = entity.getValue().split("_")[1]; - if (DateUtils.getDateDifference(new Date(), DateUtils.string2Date(now + " " + endTime + ":00", DateUtils.format2), "m") >= 2 - && DateUtils.getDateDifference(new Date(), DateUtils.string2Date(now + " " + endTime + ":00", DateUtils.format2), "m") < 5) { - String key = entity.getKey(); - String[] messageArray = key.split("_"); - if (messageArray[2].contains(PushTypeEnums.QIYEHAO.getType() + "")) { - logger.info("企业号推送:" + messageArray[0] + "__" + messageArray[1]); - weChatBatchPush(messageArray[0], Integer.valueOf(messageArray[1]), entity.getValue()); - } - if (messageArray[2].contains(PushTypeEnums.DING.getType() + "")) { - logger.info(("盯盯推送:" + messageArray[0] + "__" + messageArray[1])); - dingBatchPush(messageArray[0], Integer.valueOf(messageArray[1]), entity.getValue()); - } - keyList.add(key); - } - } - for (String key : keyList) { - map.remove(key); - } - } - - @Scheduled(cron = "0 0-59 * * * ? ") - public void alarmKaoQing() { - String now = DateUtils.date2String(new Date(), DateUtils.format1); - if (StringUtils.isBlank(alarmDate)) { - initAlarmMap(); - alarmDate = now; - } - if (!DateUtils.date2String(new Date(), DateUtils.format1).equals(alarmDate)) { - initAlarmMap(); - alarmDate = DateUtils.date2String(new Date(), DateUtils.format1); - } - //开始过滤数据 推送 - List keyList = new ArrayList<>(); - for (Map.Entry entity : alarmMap.entrySet()) { - String endTime = entity.getValue().split("_")[1]; - if (DateUtils.getDateDifference(new Date(), DateUtils.string2Date(now + " " + endTime + ":00", DateUtils.format2), "m") >= 2 - ) { - String key = entity.getKey(); - keyList.add(key); - //alarm(entity); //告警 - //insertIOT(entity); //iot - } - } - for (String key : keyList) { - map.remove(key); - } - } - - private void initAlarmMap() { - alarmMap = new HashMap<>(); - List list = scFeign.getAllTemplateAlarm(); - logger.info(("------考勤告警模板------")); - for (TemplateDto templateDto : list) { - String config = templateDto.getConfig(); - String[] array = config.split(" entry) { - String templateId = entry.getKey().split("_")[0]; - String schoolId = entry.getKey().split("_")[1]; - String id = entry.getValue().split("_")[3]; - String type = entry.getValue().split("_")[2]; - - if (DateUtils.getWeek() == 2 || DateUtils.getWeek() == 5) { - //可以相差40% - BigDecimal percent = getAlarmCensus(Integer.valueOf(id), templateId, Integer.valueOf(schoolId), Integer.valueOf(type)); - if (templateMap.get(templateId) != null) { - if (percent.subtract(templateMap.get(templateId)).compareTo(new BigDecimal(0.4)) > 0 - || templateMap.get(templateId).subtract(percent).compareTo(new BigDecimal(0.4)) > 0) { - alarmPush(Integer.valueOf(schoolId)); - } - } - templateMap.put(templateId, percent); - } else { - //相差30% - BigDecimal percent = getAlarmCensus(Integer.valueOf(id), templateId, Integer.valueOf(schoolId), Integer.valueOf(type)); - if (templateMap.get(templateId) != null) { - if (percent.subtract(templateMap.get(templateId)).compareTo(new BigDecimal(0.3)) > 0 - || templateMap.get(templateId).subtract(percent).compareTo(new BigDecimal(0.3)) > 0) { - alarmPush(Integer.valueOf(schoolId)); - } - } - templateMap.put(templateId, percent); - } - } - - private void insertIOT(Map.Entry entry) { - String templateId = entry.getKey().split("_")[0]; - String schoolId = entry.getKey().split("_")[1]; - String title = entry.getKey().split("_")[2]; - String id = entry.getValue().split("_")[3]; - String type = entry.getValue().split("_")[2]; - String beginTime = entry.getValue().split("_")[0]; - String endTime = entry.getValue().split("_")[1]; - - List list = getIOTCensus(Integer.valueOf(id), templateId, Integer.valueOf(schoolId), Integer.valueOf(type)); - JSONObject object = new JSONObject(); - object.put("strTime", beginTime); - object.put("endTime", endTime); - object.put("inTime", DateUtils.date2String(new Date(), DateUtils.format1)); - object.put("noAttendanceCount", list.get(1)); - object.put("attendanceCount", list.get(0)); - object.put("leaveCount", list.get(2)); - object.put("templateName", title); - object.put("qianDaoIdId", id); - object.put("schoolId", schoolId); - object.put("templateId", templateId); - HttpClientUtils.httpPostJson(iotUrl + "/api/Association/addIntelligenceAttendance", object.toJSONString()); - } - - //初始化要推送的模板 - private void initMap() { - map = new HashMap<>(); - List list = scFeign.getAllTemplate(); - logger.info(("------需要推送的考勤模板------")); - for (TemplateDto templateDto : list) { - String config = templateDto.getConfig(); - String[] array = config.split(" list = scFeign.getTeacherList(schoolId); - for (KqTeacherDto teacher : list) { - dingSchoolPush(templateId, teacher, key, appDto, 0); - } - } else { - //出入寝 推班主任 - List list = scFeign.getTeacherList(schoolId); - for (KqTeacherDto teacher : list) { - dingSchoolPush(templateId, teacher, key, appDto, 1); - } - //推宿管 - List chamberList = scFeign.selectChamberTeacher(schoolId); - for (KqTeacherDto teacher : chamberList) { - dingChamberPush(templateId, teacher, key, appDto); - } - } - } - - //企业号批量推送 - private void weChatBatchPush(String templateId, int schoolId, String key) { - String[] times = key.split("_"); - AppDto appDto = scFeign.getApp(schoolId, 0); - if (Integer.valueOf(times[2]) < 7) { - //出入校 推班主任 - List list = scFeign.getTeacherList(schoolId); - for (KqTeacherDto teacher : list) { - weChatSchoolPush(templateId, teacher, key, appDto, 0); - } - } else { - //出入寝 推班主任 - List list = scFeign.getTeacherList(schoolId); - for (KqTeacherDto teacher : list) { - weChatSchoolPush(templateId, teacher, key, appDto, 1); - } - //推宿管 - List chamberList = scFeign.selectChamberTeacher(schoolId); - for (KqTeacherDto teacher : chamberList) { - weChatChamberPush(templateId, teacher, key, appDto); - } - } - } - - //盯盯推送班主任 - private void dingSchoolPush(String templateId, KqTeacherDto teacher, String key, AppDto appDto, int type) { - String[] times = key.split("_"); - String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); - String thirdOpenId = scFeign.getThirdId(teacher.getUserId(), 0); - if (StringUtils.isNotBlank(thirdOpenId)) { - List censusKqDtos = getCensus(Integer.valueOf(times[3]), templateId, teacher.getSchoolId(), teacher.getUserId(), type); - if (censusKqDtos != null && censusKqDtos.size() > 0) { - String message = ""; - for (CensusKqDto censusKqDto : censusKqDtos) { - message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假" + censusKqDto.getLeaveCount() + "人;"; - } - DingSms dingSms = new DingSms(); - dingSms.setName(teacher.getName()); - dingSms.setTableName("DingSmsNew" + tableSuffix); - dingSms.setMsg("报告类型:" + KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - " + - "签到日期:" + DateUtils.date2String(new Date(), DateUtils.format1) + "(" + DateUtils.getWeekName() + ") \n - " + - "签到时间:" + times[0] + "-" + times[1] + " \n - " + - "整体数据:" + message); - String wapUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + - "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() + "&TemplateId=" + templateId + - "&data=" + thirdOpenId + "&type=1&stype=4&mobile=" + teacher.getMobile() + "&pass=" + teacher.getPass() + - "&face=&sourcetype=16&soutype=3×tamp=" + DateUtils.getDate() + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1); - dingSms.setSchoolId(teacher.getSchoolId()); - dingSms.setDingUserId(thirdOpenId); - dingSms.setAgentId(appDto.getAgentId()); - dingSms.setWapUrl(wapUrl); - dingSms.setReceiveUserId(teacher.getUserId()); - dingSms.setTdType(TypeEnums.kaoqing.getType()); - this.insertDing(dingSms); - logger.info("盯盯推送班主任—————" + templateId + "--------" + teacher.getName()); - } - } - } - - //盯盯推送宿管 - private void dingChamberPush(String templateId, KqTeacherDto teacher, String key, AppDto appDto) { - String[] times = key.split("_"); - String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); - String thirdOpenId = scFeign.getThirdId(teacher.getUserId(), 0); - if (StringUtils.isNotBlank(thirdOpenId)) { - List censusKqDtos = getCensus(Integer.valueOf(times[3]), templateId, teacher.getSchoolId(), teacher.getUserId(), 1); - if (censusKqDtos != null && censusKqDtos.size() > 0) { - String message = ""; - for (CensusKqDto censusKqDto : censusKqDtos) { - message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假" + censusKqDto.getLeaveCount() + "人;"; - } - DingSms dingSms = new DingSms(); - dingSms.setName(teacher.getName()); - dingSms.setTableName("DingSmsNew" + tableSuffix); - dingSms.setMsg("报告类型:" + KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - " + - "签到日期:" + DateUtils.date2String(new Date(), DateUtils.format1) + "(" + DateUtils.getWeekName() + ") \n - " + - "签到时间:" + times[0] + "-" + times[1] + " \n - " + - "整体数据:" + message); - String msgUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + - "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() + "&TemplateId=" + templateId + - "&pass=" + teacher.getPass() + "&type=4&soutype=3&time=" + DateUtils.date2String(new Date(), DateUtils.format1); - dingSms.setSchoolId(teacher.getSchoolId()); - dingSms.setDingUserId(thirdOpenId); - dingSms.setAgentId(appDto.getAgentId()); - dingSms.setWapUrl(msgUrl); - dingSms.setReceiveUserId(teacher.getUserId()); - dingSms.setTdType(TypeEnums.kaoqing.getType()); - this.insertDing(dingSms); - logger.info("盯盯推送宿管—————" + templateId + "--------" + teacher.getName()); - } - } - } - - //企业号推送班主任 - private void weChatSchoolPush(String templateId, KqTeacherDto teacher, String key, AppDto appDto, int type) { - String[] times = key.split("_"); - String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); - String thirdOpenId = scFeign.getThirdId(teacher.getUserId(), 1); - if (StringUtils.isNotBlank(thirdOpenId)) { - List censusKqDtos = getCensus(Integer.valueOf(times[3]), templateId, teacher.getSchoolId(), teacher.getUserId(), type); - if (censusKqDtos != null && censusKqDtos.size() > 0) { - String message = ""; - for (CensusKqDto censusKqDto : censusKqDtos) { - message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假" + censusKqDto.getLeaveCount() + "人;"; - } - WeChatSms weChatSms = new WeChatSms(); - weChatSms.setTableName("qyhSmsNew" + tableSuffix); - weChatSms.setMsg("报告类型:" + KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - " + - "签到日期:" + DateUtils.date2String(new Date(), DateUtils.format1) + "(" + DateUtils.getWeekName() + ") \n - " + - "签到时间:" + times[0] + "-" + times[1] + " \n - " + - "整体数据:" + message); - weChatSms.setSchoolId(teacher.getSchoolId()); - weChatSms.setName(teacher.getName()); - weChatSms.setQiYeHaoUserId(thirdOpenId); - weChatSms.setReceiveUserId(teacher.getUserId()); - weChatSms.setAppId(appDto.getAgentId()); - weChatSms.setSecret(appDto.getAgentSecret()); - String msgUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + - "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() + "&TemplateId=" + templateId + - "&data=" + thirdOpenId + "&type=1&stype=3&mobile=" + teacher.getMobile() + "&pass=" + teacher.getPass() + - "&face=" + teacher.getFace() + "&sourcetype=16&soutype=2×tamp=" + DateUtils.getDate() + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1) + "&"; - weChatSms.setMsgUrl(msgUrl); - weChatSms.setTdType(TypeEnums.kaoqing.getType()); - this.insertQYH(weChatSms); - logger.info("企业号推送班主任—————" + templateId + "--------" + teacher.getName()); - } - } - } - - //企业号推送宿管 - private void weChatChamberPush(String templateId, KqTeacherDto teacher, String key, AppDto appDto) { - String[] times = key.split("_"); - String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); - String thirdOpenId = scFeign.getThirdId(teacher.getUserId(), 1); - if (StringUtils.isNotBlank(thirdOpenId)) { - List censusKqDtos = getCensus(Integer.valueOf(times[3]), templateId, teacher.getSchoolId(), teacher.getUserId(), 1); - if (censusKqDtos != null && censusKqDtos.size() > 0) { - String message = ""; - for (CensusKqDto censusKqDto : censusKqDtos) { - message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假" + censusKqDto.getLeaveCount() + "人;"; - } - WeChatSms weChatSms = new WeChatSms(); - weChatSms.setTableName("qyhSmsNew" + tableSuffix); - weChatSms.setMsg("报告类型:" + KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - " + - "签到日期:" + DateUtils.date2String(new Date(), DateUtils.format1) + "(" + DateUtils.getWeekName() + ") \n - " + - "签到时间:" + times[0] + "-" + times[1] + " \n - " + - "整体数据:" + message); - weChatSms.setSchoolId(teacher.getSchoolId()); - weChatSms.setName(teacher.getName()); - weChatSms.setQiYeHaoUserId(thirdOpenId); - weChatSms.setReceiveUserId(teacher.getUserId()); - weChatSms.setAppId(appDto.getAgentId()); - weChatSms.setSecret(appDto.getAgentSecret()); - String msgUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + - "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() + "&TemplateId=" + templateId + - "&pass=" + teacher.getPass() + "&type=4&soutype=2&time=" + DateUtils.date2String(new Date(), DateUtils.format1) + "&"; - weChatSms.setMsgUrl(msgUrl); - weChatSms.setTdType(TypeEnums.kaoqing.getType()); - this.insertQYH(weChatSms); - logger.info("企业号推送宿管—————" + templateId + "--------" + teacher.getName()); - } - } - } - - //type 0 出入校 1 出入寝 - private List getCensus(int id, String templateId, int schoolId, String userId, int type) { - List list = new ArrayList<>(); - String url = "http://campus.myjxt.com/api/EasyN/GeAttendDetailNew?schoolId=" + schoolId + - "&id=" + id + "&templateID=" + templateId + "&type=" + type + "&userId=" + userId + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1); - JSONObject jsonObject = HttpClientUtils.httpGet(url); - try { - JSONArray data = (JSONArray) jsonObject.get("data"); - for (int i = 0; i < data.size(); i++) { - CensusKqDto censusKqDto = new CensusKqDto(); - JSONObject object = data.getJSONObject(i); - censusKqDto.setLeaveCount((Integer) object.get("leaveCount")); - censusKqDto.setNotAttendCount((Integer) object.get("noAttendCount")); - censusKqDto.setTargetName((String) object.get("name")); - list.add(censusKqDto); - } - } catch (Exception e) { - - } - return list; - } - - private BigDecimal getAlarmCensus(int id, String templateId, int schoolId, int type) { - int allNumber = 0, attendNumber = 0; - List list = scFeign.selectClassBySchoolId(schoolId); - for (Integer classId : list) { - String url = "http://campus.myjxt.com/api/EasyN/GeAttendDetail?classId=" + classId + - "&id=" + id + "&templateID=" + templateId + "&type=" + type + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1); - JSONObject jsonObject = HttpClientUtils.httpGet(url); - try { - JSONObject data = (JSONObject) jsonObject.get("data"); - attendNumber = attendNumber + (Integer) data.get("stuAttendCount"); - allNumber = allNumber + (Integer) data.get("stuCount"); - } catch (Exception e) { - e.printStackTrace(); - } - } - if (allNumber != 0) { - BigDecimal pecrent = new BigDecimal(attendNumber).divide(new BigDecimal(allNumber), 10, BigDecimal.ROUND_HALF_DOWN); - return pecrent; - } else { - return BigDecimal.ZERO; - } - - } - - /** - * @param id - * @param templateId - * @param schoolId - * @param type - * @return list(0) 出勤 list(1) 未出勤 List(2) 请假 - */ - private List getIOTCensus(int id, String templateId, int schoolId, int type) { - List result = new ArrayList<>(); - int attend = 0, unattend = 0, leave = 0; - List list = scFeign.selectClassBySchoolId(schoolId); - for (Integer classId : list) { - String url = "http://campus.myjxt.com/api/EasyN/GeAttendDetail?classId=" + classId + - "&id=" + id + "&templateID=" + templateId + "&type=" + type + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1); - JSONObject jsonObject = HttpClientUtils.httpGet(url); - try { - JSONObject data = (JSONObject) jsonObject.get("data"); - attend = attend + (Integer) data.get("stuAttendCount"); - unattend = unattend + (Integer) data.get("noAttendCount"); - leave = leave + (Integer) data.get("leaveCount"); - } catch (Exception e) { - e.printStackTrace(); - } - } - result.add(attend); - result.add(unattend); - result.add(leave); - return result; - } - - - private void insertDing(DingSms dingSms) { - try { - smsService.insertDing(dingSms); - } catch (Exception e) { - logger.info(e.toString()); - } - } - - private void insertQYH(WeChatSms weChatSms) { - try { - smsService.insertWeChat(weChatSms); - } catch (Exception e) { - logger.info(e.toString()); - } - } - - private void alarmPush(int schoolId) { - String msg = "【考勤异动】"; - try { - SchoolDto schoolDto = scFeign.selectSchoolBySchoolId(schoolId); - msg += schoolDto.getSchoolName() + "考勤有异动,请关注!"; - sendMessage(schoolDto.getSchoolId(), opexList.get(0), msg); - sendMessage(schoolDto.getSchoolId(), opexList.get(1), msg); - sendMessage(schoolDto.getSchoolId(), integration, msg); - String managerPhone = managerService.selectManagerById(schoolDto.getManagerUserId()); - if (StringUtils.isNotBlank(managerPhone)) { - sendMessage(schoolDto.getSchoolId(), managerPhone, msg); - } - } catch (Exception e) { - e.printStackTrace(); - } - - } - - private void sendMessage(int schoolId, String mobile, String msg) { - String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); - ShortMsg shortMsg = new ShortMsg(); - shortMsg.setTableName("smsNew" + tableSuffix); - shortMsg.setSchoolId(schoolId); - shortMsg.setMobile(mobile); - shortMsg.setMsg(msg); - smsService.insertSMS(shortMsg); - } -} +//package com.sincere.quartz.job; +// +//import com.alibaba.fastjson.JSONArray; +//import com.alibaba.fastjson.JSONObject; +//import com.sincere.common.dto.smartCampus.*; +//import com.sincere.common.enums.PushTypeEnums; +//import com.sincere.common.util.DateUtils; +//import com.sincere.common.util.HttpClientUtils; +//import com.sincere.quartz.enums.KqTypeEnums; +//import com.sincere.quartz.enums.TypeEnums; +//import com.sincere.quartz.feign.ScFeign; +//import com.sincere.quartz.model.DingSms; +//import com.sincere.quartz.model.ShortMsg; +//import com.sincere.quartz.model.WeChatSms; +//import com.sincere.quartz.service.ManagerService; +//import com.sincere.quartz.service.SmsService; +//import org.apache.commons.lang3.StringUtils; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.scheduling.annotation.Scheduled; +//import org.springframework.stereotype.Service; +// +//import java.math.BigDecimal; +//import java.util.*; +// +///** +// * 考勤任务推送调用 +// * 主要推送盯盯以及企业号 +// * @author chen +// * @version 1.0 +// * @date 2019/11/27 0027 17:05 +// */ +//@Service +//public class KQJob { +// +// private Logger logger = LoggerFactory.getLogger(KQJob.class); +// +// @Autowired +// ScFeign scFeign ; +// +// @Autowired +// SmsService smsService; +// +// @Autowired +// ManagerService managerService ; +// +// private static String iotUrl = "http://60.190.202.57:8035"; +// +// private static String date ; +// private static Map map = new HashMap<>(); //学校 考勤推送map +// +// private static String alarmDate ; +// private static Map alarmMap = new HashMap<>(); //考勤告警推送map +// private static Map templateMap = new HashMap<>(); // 考勤比例 +// +// private static List opexList ; +// private static String integration ; +// +// static{ +// opexList = new ArrayList<>(); +// opexList.add("15857566147"); //王汉栋 +// opexList.add("13858485977"); //王楠彬 +// +// integration = "18767117554" ; //林炜 +// } +// +// @Scheduled(cron = "0 0-59 * * * ? ") +// public void kaoQing() { +// String now = DateUtils.date2String(new Date(),DateUtils.format1) ; +// if(StringUtils.isBlank(date)){ +// initMap(); +// date = now ; +// } +// if(!DateUtils.date2String(new Date(),DateUtils.format1).equals(date)){ +// initMap(); +// date = DateUtils.date2String(new Date(),DateUtils.format1) ; +// } +// //开始过滤数据 推送 +// List keyList = new ArrayList<>(); +// for(Map.Entry entity : map.entrySet()){ +// String endTime = entity.getValue().split("_")[1]; +// if(DateUtils.getDateDifference(new Date(),DateUtils.string2Date(now+" "+endTime+":00",DateUtils.format2),"m")>=2 +// && DateUtils.getDateDifference(new Date(),DateUtils.string2Date(now+" "+endTime+":00",DateUtils.format2),"m")<5){ +// String key = entity.getKey(); +// String[] messageArray = key.split("_"); +// if(messageArray[2].contains(PushTypeEnums.QIYEHAO.getType()+"")){ +// logger.info("企业号推送:" + messageArray[0] + "__" + messageArray[1]); +// weChatBatchPush(messageArray[0],Integer.valueOf(messageArray[1]),entity.getValue()); +// } +// if(messageArray[2].contains(PushTypeEnums.DING.getType()+"")){ +// logger.info(("盯盯推送:" + messageArray[0] + "__" + messageArray[1])); +// dingBatchPush(messageArray[0],Integer.valueOf(messageArray[1]),entity.getValue()); +// } +// keyList.add(key); +// } +// } +// for(String key : keyList){ +// map.remove(key); +// } +// } +// +// @Scheduled(cron = "0 0-59 * * * ? ") +// public void alarmKaoQing() { +// String now = DateUtils.date2String(new Date(),DateUtils.format1) ; +// if(StringUtils.isBlank(alarmDate)){ +// initAlarmMap(); +// alarmDate = now ; +// } +// if(!DateUtils.date2String(new Date(),DateUtils.format1).equals(alarmDate)){ +// initAlarmMap(); +// alarmDate = DateUtils.date2String(new Date(),DateUtils.format1) ; +// } +// //开始过滤数据 推送 +// List keyList = new ArrayList<>(); +// for(Map.Entry entity : alarmMap.entrySet()){ +// String endTime = entity.getValue().split("_")[1]; +// if(DateUtils.getDateDifference(new Date(),DateUtils.string2Date(now+" "+endTime+":00",DateUtils.format2),"m")>=2 +// ){ +// String key = entity.getKey(); +// keyList.add(key); +// //alarm(entity); //告警 +// //insertIOT(entity); //iot +// } +// } +// for(String key : keyList){ +// map.remove(key); +// } +// } +// +// private void initAlarmMap(){ +// alarmMap = new HashMap<>(); +// List list = scFeign.getAllTemplateAlarm(); +// logger.info(("------考勤告警模板------")); +// for(TemplateDto templateDto : list){ +// String config = templateDto.getConfig(); +// String[] array = config.split(" entry){ +// String templateId = entry.getKey().split("_")[0] ; +// String schoolId = entry.getKey().split("_")[1] ; +// String id = entry.getValue().split("_")[3]; +// String type = entry.getValue().split("_")[2] ; +// +// if(DateUtils.getWeek() == 2 || DateUtils.getWeek() == 5){ +// //可以相差40% +// BigDecimal percent = getAlarmCensus(Integer.valueOf(id),templateId,Integer.valueOf(schoolId),Integer.valueOf(type)); +// if(templateMap.get(templateId) != null){ +// if(percent.subtract(templateMap.get(templateId)).compareTo(new BigDecimal(0.4)) > 0 +// || templateMap.get(templateId).subtract(percent).compareTo(new BigDecimal(0.4)) > 0) { +// alarmPush(Integer.valueOf(schoolId)); +// } +// } +// templateMap.put(templateId,percent); +// }else { +// //相差30% +// BigDecimal percent = getAlarmCensus(Integer.valueOf(id),templateId,Integer.valueOf(schoolId),Integer.valueOf(type)); +// if(templateMap.get(templateId) != null){ +// if(percent.subtract(templateMap.get(templateId)).compareTo(new BigDecimal(0.3)) > 0 +// || templateMap.get(templateId).subtract(percent).compareTo(new BigDecimal(0.3)) > 0) { +// alarmPush(Integer.valueOf(schoolId)); +// } +// } +// templateMap.put(templateId,percent); +// } +// } +// +// private void insertIOT(Map.Entry entry){ +// String templateId = entry.getKey().split("_")[0] ; +// String schoolId = entry.getKey().split("_")[1] ; +// String title = entry.getKey().split("_")[2] ; +// String id = entry.getValue().split("_")[3]; +// String type = entry.getValue().split("_")[2] ; +// String beginTime = entry.getValue().split("_")[0] ; +// String endTime = entry.getValue().split("_")[1] ; +// +// List list = getIOTCensus(Integer.valueOf(id),templateId,Integer.valueOf(schoolId),Integer.valueOf(type)) ; +// JSONObject object = new JSONObject(); +// object.put("strTime",beginTime); +// object.put("endTime",endTime); +// object.put("inTime",DateUtils.date2String(new Date(),DateUtils.format1)); +// object.put("noAttendanceCount",list.get(1)); +// object.put("attendanceCount",list.get(0)); +// object.put("leaveCount",list.get(2)); +// object.put("templateName",title); +// object.put("qianDaoIdId",id); +// object.put("schoolId",schoolId); +// object.put("templateId",templateId); +// HttpClientUtils.httpPostJson(iotUrl+"/api/Association/addIntelligenceAttendance",object.toJSONString()); +// } +// +// //初始化要推送的模板 +// private void initMap(){ +// map = new HashMap<>(); +// List list = scFeign.getAllTemplate(); +// logger.info(("------需要推送的考勤模板------")); +// for(TemplateDto templateDto : list){ +// String config = templateDto.getConfig(); +// String[] array = config.split(" list = scFeign.getTeacherList(schoolId); +// for(KqTeacherDto teacher : list){ +// dingSchoolPush(templateId,teacher,key,appDto,0); +// } +// }else { +// //出入寝 推班主任 +// List list = scFeign.getTeacherList(schoolId); +// for(KqTeacherDto teacher : list){ +// dingSchoolPush(templateId,teacher, key, appDto,1); +// } +// //推宿管 +// List chamberList = scFeign.selectChamberTeacher(schoolId); +// for(KqTeacherDto teacher : chamberList){ +// dingChamberPush(templateId,teacher, key, appDto); +// } +// } +// } +// +// //企业号批量推送 +// private void weChatBatchPush(String templateId , int schoolId , String key){ +// String[] times = key.split("_"); +// AppDto appDto = scFeign.getApp(schoolId, 0); +// if(Integer.valueOf(times[2]) < 7) { +// //出入校 推班主任 +// List list = scFeign.getTeacherList(schoolId); +// for (KqTeacherDto teacher : list) { +// weChatSchoolPush(templateId,teacher, key, appDto,0); +// } +// }else { +// //出入寝 推班主任 +// List list = scFeign.getTeacherList(schoolId); +// for (KqTeacherDto teacher : list) { +// weChatSchoolPush(templateId,teacher, key, appDto,1); +// } +// //推宿管 +// List chamberList = scFeign.selectChamberTeacher(schoolId); +// for(KqTeacherDto teacher : chamberList){ +// weChatChamberPush(templateId,teacher, key, appDto); +// } +// } +// } +// +// //盯盯推送班主任 +// private void dingSchoolPush(String templateId ,KqTeacherDto teacher , String key , AppDto appDto , int type){ +// String[] times = key.split("_"); +// String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); +// String thirdOpenId = scFeign.getThirdId(teacher.getUserId(),0); +// if(StringUtils.isNotBlank(thirdOpenId)){ +// List censusKqDtos = getCensus(Integer.valueOf(times[3]),templateId,teacher.getSchoolId(),teacher.getUserId(),type); +// if(censusKqDtos != null &&censusKqDtos.size() > 0){ +// String message = ""; +// for(CensusKqDto censusKqDto : censusKqDtos){ +// message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假"+censusKqDto.getLeaveCount()+"人;"; +// } +// DingSms dingSms = new DingSms(); +// dingSms.setName(teacher.getName()); +// dingSms.setTableName("DingSmsNew"+tableSuffix); +// dingSms.setMsg("报告类型:"+KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - "+ +// "签到日期:"+DateUtils.date2String(new Date(),DateUtils.format1)+ "("+DateUtils.getWeekName()+") \n - "+ +// "签到时间:"+times[0]+"-"+ times[1] +" \n - "+ +// "整体数据:" + message); +// String wapUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + +// "schoolid="+teacher.getSchoolId()+"&userId="+teacher.getUserId()+"&name="+teacher.getName()+ "&TemplateId=" + templateId+ +// "&data="+thirdOpenId+"&type=1&stype=4&mobile="+teacher.getMobile()+"&pass="+teacher.getPass()+ +// "&face=&sourcetype=16&soutype=3×tamp="+ DateUtils.getDate()+"&time="+DateUtils.date2String(new Date(),DateUtils.format1) ; +// dingSms.setSchoolId(teacher.getSchoolId()); +// dingSms.setDingUserId(thirdOpenId); +// dingSms.setAgentId(appDto.getAgentId()); +// dingSms.setWapUrl(wapUrl); +// dingSms.setReceiveUserId(teacher.getUserId()); +// dingSms.setTdType(TypeEnums.kaoqing.getType()); +// this.insertDing(dingSms); +// logger.info("盯盯推送班主任—————" + templateId + "--------" + teacher.getName()); +// } +// } +// } +// +// //盯盯推送宿管 +// private void dingChamberPush(String templateId, KqTeacherDto teacher , String key , AppDto appDto){ +// String[] times = key.split("_"); +// String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); +// String thirdOpenId = scFeign.getThirdId(teacher.getUserId(),0); +// if(StringUtils.isNotBlank(thirdOpenId)){ +// List censusKqDtos = getCensus(Integer.valueOf(times[3]),templateId,teacher.getSchoolId(),teacher.getUserId(),1); +// if(censusKqDtos != null &&censusKqDtos.size() > 0){ +// String message = ""; +// for(CensusKqDto censusKqDto : censusKqDtos){ +// message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假"+censusKqDto.getLeaveCount()+"人;"; +// } +// DingSms dingSms = new DingSms(); +// dingSms.setName(teacher.getName()); +// dingSms.setTableName("DingSmsNew"+tableSuffix); +// dingSms.setMsg("报告类型:"+KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - "+ +// "签到日期:"+DateUtils.date2String(new Date(),DateUtils.format1)+ "("+DateUtils.getWeekName()+") \n - "+ +// "签到时间:"+times[0]+"-"+ times[1] +" \n - "+ +// "整体数据:" + message); +// String msgUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + +// "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() +"&TemplateId=" + templateId+ +// "&pass=" + teacher.getPass() + "&type=4&soutype=3&time="+DateUtils.date2String(new Date(),DateUtils.format1); +// dingSms.setSchoolId(teacher.getSchoolId()); +// dingSms.setDingUserId(thirdOpenId); +// dingSms.setAgentId(appDto.getAgentId()); +// dingSms.setWapUrl(msgUrl); +// dingSms.setReceiveUserId(teacher.getUserId()); +// dingSms.setTdType(TypeEnums.kaoqing.getType()); +// this.insertDing(dingSms); +// logger.info("盯盯推送宿管—————" + templateId + "--------" + teacher.getName()); +// } +// } +// } +// +// //企业号推送班主任 +// private void weChatSchoolPush(String templateId, KqTeacherDto teacher , String key , AppDto appDto , int type){ +// String[] times = key.split("_"); +// String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); +// String thirdOpenId = scFeign.getThirdId(teacher.getUserId(),1); +// if (StringUtils.isNotBlank(thirdOpenId)) { +// List censusKqDtos = getCensus(Integer.valueOf(times[3]),templateId,teacher.getSchoolId(),teacher.getUserId(),type); +// if (censusKqDtos != null && censusKqDtos.size() > 0) { +// String message = ""; +// for (CensusKqDto censusKqDto : censusKqDtos) { +// message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假"+censusKqDto.getLeaveCount()+"人;"; +// } +// WeChatSms weChatSms = new WeChatSms(); +// weChatSms.setTableName("qyhSmsNew" + tableSuffix); +// weChatSms.setMsg("报告类型:" + KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - " + +// "签到日期:" + DateUtils.date2String(new Date(), DateUtils.format1) + "(" + DateUtils.getWeekName() + ") \n - " + +// "签到时间:" + times[0] + "-" + times[1] + " \n - " + +// "整体数据:" + message); +// weChatSms.setSchoolId(teacher.getSchoolId()); +// weChatSms.setName(teacher.getName()); +// weChatSms.setQiYeHaoUserId(thirdOpenId); +// weChatSms.setReceiveUserId(teacher.getUserId()); +// weChatSms.setAppId(appDto.getAgentId()); +// weChatSms.setSecret(appDto.getAgentSecret()); +// String msgUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + +// "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() +"&TemplateId=" + templateId+ +// "&data=" + thirdOpenId + "&type=1&stype=3&mobile=" + teacher.getMobile() + "&pass=" + teacher.getPass() + +// "&face=" + teacher.getFace() + "&sourcetype=16&soutype=2×tamp=" + DateUtils.getDate()+"&time="+DateUtils.date2String(new Date(),DateUtils.format1)+"&"; +// weChatSms.setMsgUrl(msgUrl); +// weChatSms.setTdType(TypeEnums.kaoqing.getType()); +// this.insertQYH(weChatSms); +// logger.info("企业号推送班主任—————" + templateId + "--------" + teacher.getName()); +// } +// } +// } +// +// //企业号推送宿管 +// private void weChatChamberPush(String templateId, KqTeacherDto teacher , String key , AppDto appDto){ +// String[] times = key.split("_"); +// String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); +// String thirdOpenId = scFeign.getThirdId(teacher.getUserId(),1); +// if (StringUtils.isNotBlank(thirdOpenId)) { +// List censusKqDtos = getCensus(Integer.valueOf(times[3]),templateId,teacher.getSchoolId(),teacher.getUserId(),1); +// if (censusKqDtos != null && censusKqDtos.size() > 0) { +// String message = ""; +// for (CensusKqDto censusKqDto : censusKqDtos) { +// message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假"+censusKqDto.getLeaveCount()+"人;"; +// } +// WeChatSms weChatSms = new WeChatSms(); +// weChatSms.setTableName("qyhSmsNew" + tableSuffix); +// weChatSms.setMsg("报告类型:" + KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - " + +// "签到日期:" + DateUtils.date2String(new Date(), DateUtils.format1) + "(" + DateUtils.getWeekName() + ") \n - " + +// "签到时间:" + times[0] + "-" + times[1] + " \n - " + +// "整体数据:" + message); +// weChatSms.setSchoolId(teacher.getSchoolId()); +// weChatSms.setName(teacher.getName()); +// weChatSms.setQiYeHaoUserId(thirdOpenId); +// weChatSms.setReceiveUserId(teacher.getUserId()); +// weChatSms.setAppId(appDto.getAgentId()); +// weChatSms.setSecret(appDto.getAgentSecret()); +// String msgUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + +// "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() +"&TemplateId=" + templateId+ +// "&pass=" + teacher.getPass() + "&type=4&soutype=2&time="+DateUtils.date2String(new Date(),DateUtils.format1)+"&"; +// weChatSms.setMsgUrl(msgUrl); +// weChatSms.setTdType(TypeEnums.kaoqing.getType()); +// this.insertQYH(weChatSms); +// logger.info("企业号推送宿管—————" + templateId + "--------" + teacher.getName()); +// } +// } +// } +// +// //type 0 出入校 1 出入寝 +// private List getCensus(int id , String templateId ,int schoolId , String userId ,int type){ +// List list = new ArrayList<>(); +// String url = "http://campus.myjxt.com/api/EasyN/GeAttendDetailNew?schoolId="+schoolId+ +// "&id="+id+"&templateID="+templateId+"&type="+type+"&userId="+userId+"&time=" + DateUtils.date2String(new Date(),DateUtils.format1); +// JSONObject jsonObject = HttpClientUtils.httpGet(url); +// try{ +// JSONArray data = (JSONArray)jsonObject.get("data"); +// for(int i = 0 ; i < data.size() ; i++){ +// CensusKqDto censusKqDto = new CensusKqDto(); +// JSONObject object = data.getJSONObject(i); +// censusKqDto.setLeaveCount((Integer) object.get("leaveCount")); +// censusKqDto.setNotAttendCount((Integer) object.get("noAttendCount")); +// censusKqDto.setTargetName((String)object.get("name")); +// list.add(censusKqDto); +// } +// }catch (Exception e){ +// +// } +// return list ; +// } +// +// private BigDecimal getAlarmCensus(int id , String templateId ,int schoolId , int type){ +// int allNumber = 0 , attendNumber = 0 ; +// List list = scFeign.selectClassBySchoolId(schoolId); +// for(Integer classId : list){ +// String url = "http://campus.myjxt.com/api/EasyN/GeAttendDetail?classId="+classId+ +// "&id="+id+"&templateID="+templateId+"&type="+type+"&time=" + DateUtils.date2String(new Date(),DateUtils.format1); +// JSONObject jsonObject = HttpClientUtils.httpGet(url); +// try{ +// JSONObject data = (JSONObject) jsonObject.get("data"); +// attendNumber = attendNumber + (Integer) data.get("stuAttendCount"); +// allNumber = allNumber + (Integer) data.get("stuCount"); +// }catch (Exception e){ +// e.printStackTrace(); +// } +// } +// if(allNumber != 0){ +// BigDecimal pecrent = new BigDecimal(attendNumber).divide(new BigDecimal(allNumber),10, BigDecimal.ROUND_HALF_DOWN) ; +// return pecrent ; +// }else { +// return BigDecimal.ZERO ; +// } +// +// } +// +// /** +// * +// * @param id +// * @param templateId +// * @param schoolId +// * @param type +// * @return list(0) 出勤 list(1) 未出勤 List(2) 请假 +// */ +// private List getIOTCensus(int id , String templateId ,int schoolId , int type){ +// List result = new ArrayList<>(); +// int attend = 0 , unattend = 0 , leave = 0; +// List list = scFeign.selectClassBySchoolId(schoolId); +// for(Integer classId : list){ +// String url = "http://campus.myjxt.com/api/EasyN/GeAttendDetail?classId="+classId+ +// "&id="+id+"&templateID="+templateId+"&type="+type+"&time=" + DateUtils.date2String(new Date(),DateUtils.format1); +// JSONObject jsonObject = HttpClientUtils.httpGet(url); +// try{ +// JSONObject data = (JSONObject) jsonObject.get("data"); +// attend = attend + (Integer) data.get("stuAttendCount"); +// unattend = unattend + (Integer) data.get("noAttendCount"); +// leave = leave + (Integer) data.get("leaveCount"); +// }catch (Exception e){ +// e.printStackTrace(); +// } +// } +// result.add(attend); +// result.add(unattend); +// result.add(leave); +// return result ; +// } +// +// +// private void insertDing(DingSms dingSms){ +// try{ +// smsService.insertDing(dingSms); +// }catch (Exception e){ +// logger.info(e.toString()); +// } +// } +// +// private void insertQYH(WeChatSms weChatSms){ +// try{ +// smsService.insertWeChat(weChatSms); +// }catch (Exception e){ +// logger.info(e.toString()); +// } +// } +// +// private void alarmPush(int schoolId){ +// String msg = "【考勤异动】" ; +// try{ +// SchoolDto schoolDto = scFeign.selectSchoolBySchoolId(schoolId); +// msg += schoolDto.getSchoolName() + "考勤有异动,请关注!" ; +// sendMessage(schoolDto.getSchoolId(),opexList.get(0),msg); +// sendMessage(schoolDto.getSchoolId(),opexList.get(1),msg); +// sendMessage(schoolDto.getSchoolId(),integration,msg); +// String managerPhone = managerService.selectManagerById(schoolDto.getManagerUserId()) ; +// if(StringUtils.isNotBlank(managerPhone)){ +// sendMessage(schoolDto.getSchoolId(),managerPhone,msg); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// } +// +// } +// +// private void sendMessage(int schoolId , String mobile , String msg){ +// String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); +// ShortMsg shortMsg = new ShortMsg(); +// shortMsg.setTableName("smsNew"+tableSuffix); +// shortMsg.setSchoolId(schoolId); +// shortMsg.setMobile(mobile); +// shortMsg.setMsg(msg); +// smsService.insertSMS(shortMsg); +// } +//} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java b/cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java index 7a8d75a..48520d5 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java @@ -1,29 +1,29 @@ -package com.sincere.quartz.job; - -import com.sincere.quartz.third.yixueyun.YXYReadService; -import com.sincere.quartz.third.yixueyun.YXYWriteService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Service; - -/** - * @author chen - * @version 1.0 - * @date 2019/12/24 0024 10:54 - */ -@Service -public class SyncJob { - - @Autowired - YXYWriteService yxyWriteService; - - @Autowired - YXYReadService yxyReadService; - - @Scheduled(cron = "30 1 22 * * ? ") - public void Sync(){ - //翼校通的同步 之后还有钉钉的同步等等 - yxyReadService.sync(); - yxyWriteService.sync(); - } -} +//package com.sincere.quartz.job; +// +//import com.sincere.quartz.third.yixueyun.YXYReadService; +//import com.sincere.quartz.third.yixueyun.YXYWriteService; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.scheduling.annotation.Scheduled; +//import org.springframework.stereotype.Service; +// +///** +// * @author chen +// * @version 1.0 +// * @date 2019/12/24 0024 10:54 +// */ +//@Service +//public class SyncJob { +// +// @Autowired +// YXYWriteService yxyWriteService ; +// +// @Autowired +// YXYReadService yxyReadService ; +// +// @Scheduled(cron = "30 1 22 * * ? ") +// public void Sync(){ +// //翼校通的同步 之后还有钉钉的同步等等 +// yxyReadService.sync(); +// yxyWriteService.sync(); +// } +//} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/mapper/YxyMapper.java b/cloud/quartz/src/main/java/com/sincere/quartz/mapper/YxyMapper.java index 31bb171..41ed226 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/mapper/YxyMapper.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/mapper/YxyMapper.java @@ -1,11 +1,35 @@ package com.sincere.quartz.mapper; +import com.sincere.quartz.dto.*; import com.sincere.quartz.model.YxyAgency; import com.sincere.quartz.model.YxyStudent; import com.sincere.quartz.model.YxyTeacher; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface YxyMapper { + List getTeacherView(@Param("schoolId") int schoolId , @Param("name")String name); + + List getStudentView(@Param("classId") int classId , @Param("name") String name ); + + int getGradeId(@Param("schoolId")int schoolId , @Param("grade")String grade); + + int getClassId(@Param("schoolId")int schoolId , @Param("className")String className); + + String getDeptName(String deptId); + + String getSuperDeptName(String deptId); + + void addStudent(AddStudentDto addStudentDto); + + void editStudent(EditStudentDto editStudentDto); + + void addTeacher(AddTeacherDto addTeacherDto); + + void editTeacher(EditTeacherDto editTeacherDto); + int selectCount(String date); int deleteWeekBefore(); @@ -21,4 +45,8 @@ public interface YxyMapper { int insertTeacher(YxyTeacher teacher) ; int insertStudent(YxyStudent student) ; + + int updateTeacherBySchool(@Param("deptId") String deptId); + + int updateStudentBySchool(@Param("classId") String classId); } diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/model/YxyStudent.java b/cloud/quartz/src/main/java/com/sincere/quartz/model/YxyStudent.java index 575eb04..45660de 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/model/YxyStudent.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/model/YxyStudent.java @@ -2,13 +2,22 @@ package com.sincere.quartz.model; public class YxyStudent { - private String userId; - private String classId; - private String name; - private String account; - private String cardID; + private String userId ; + private String classId ; + private String name ; + private String account ; + private String cardID ; private String cardID2; - private String cardID3; + private String cardID3 ; + private int type ; + + public int getType() { + return type; + } + + public void setType(int type) { + this.type = type; + } public String getCardID() { return cardID; @@ -65,4 +74,18 @@ public class YxyStudent { public void setAccount(String account) { this.account = account; } + + @Override + public String toString() { + return "YxyStudent{" + + "userId='" + userId + '\'' + + ", classId='" + classId + '\'' + + ", name='" + name + '\'' + + ", account='" + account + '\'' + + ", cardID='" + cardID + '\'' + + ", cardID2='" + cardID2 + '\'' + + ", cardID3='" + cardID3 + '\'' + + ", type=" + type + + '}'; + } } diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/model/YxyTeacher.java b/cloud/quartz/src/main/java/com/sincere/quartz/model/YxyTeacher.java index e76b2df..4f26d8b 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/model/YxyTeacher.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/model/YxyTeacher.java @@ -2,10 +2,19 @@ package com.sincere.quartz.model; public class YxyTeacher { - private String userId; - private String account; - private String name; - private String deptId; + private String userId ; + private String account ; + private String name ; + private String deptId ; + private int type ; + + public int getType() { + return type; + } + + public void setType(int type) { + this.type = type; + } public String getUserId() { return userId; @@ -38,4 +47,15 @@ public class YxyTeacher { public void setDeptId(String deptId) { this.deptId = deptId; } + + @Override + public String toString() { + return "YxyTeacher{" + + "userId='" + userId + '\'' + + ", account='" + account + '\'' + + ", name='" + name + '\'' + + ", deptId='" + deptId + '\'' + + ", type=" + type + + '}'; + } } diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/service/YxyService.java b/cloud/quartz/src/main/java/com/sincere/quartz/service/YxyService.java index 5c7a9fd..87722b0 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/service/YxyService.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/service/YxyService.java @@ -1,11 +1,35 @@ package com.sincere.quartz.service; +import com.sincere.quartz.dto.*; import com.sincere.quartz.model.YxyAgency; import com.sincere.quartz.model.YxyStudent; import com.sincere.quartz.model.YxyTeacher; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface YxyService { + List getTeacherView( int schoolId , String name); + + List getStudentView(int classId ,String name ); + + int getGradeId(int schoolId , String grade); + + int getClassId(int schoolId , String className); + + void addStudent(AddStudentDto addStudentDto); + + void editStudent(EditStudentDto editStudentDto); + + void addTeacher(AddTeacherDto addTeacherDto); + + void editTeacher(EditTeacherDto editTeacherDto); + + String getDeptName(String deptId); + + String getSuperDeptName(String deptId); + int selectCount(String date); int deleteWeekBefore(); @@ -21,4 +45,8 @@ public interface YxyService { int insertTeacher(YxyTeacher teacher) ; int insertStudent(YxyStudent student) ; + + int updateTeacherBySchool(String deptId); + + int updateStudentBySchool(String classId); } diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/service/impl/YxyServiceImpl.java b/cloud/quartz/src/main/java/com/sincere/quartz/service/impl/YxyServiceImpl.java index 7da09d6..46c147d 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/service/impl/YxyServiceImpl.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/service/impl/YxyServiceImpl.java @@ -2,6 +2,7 @@ package com.sincere.quartz.service.impl; import com.sincere.quartz.datasource.DataSourceType; import com.sincere.quartz.datasource.MyDataSource; +import com.sincere.quartz.dto.*; import com.sincere.quartz.mapper.YxyMapper; import com.sincere.quartz.model.YxyAgency; import com.sincere.quartz.model.YxyStudent; @@ -10,6 +11,8 @@ import com.sincere.quartz.service.YxyService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; + @Service public class YxyServiceImpl implements YxyService { @@ -17,6 +20,66 @@ public class YxyServiceImpl implements YxyService { YxyMapper yxyMapper; @Override + @MyDataSource(DataSourceType.Update) + public List getTeacherView(int schoolId, String name) { + return yxyMapper.getTeacherView(schoolId,name); + } + + @Override + @MyDataSource(DataSourceType.Update) + public List getStudentView(int classId, String name) { + return yxyMapper.getStudentView(classId,name); + } + + @Override + @MyDataSource(DataSourceType.Update) + public int getGradeId(int schoolId, String grade) { + return yxyMapper.getGradeId(schoolId,grade); + } + + @Override + @MyDataSource(DataSourceType.Update) + public int getClassId(int schoolId, String className) { + return yxyMapper.getClassId(schoolId,className); + } + + @Override + @MyDataSource(DataSourceType.Update) + public void addStudent(AddStudentDto addStudentDto) { + yxyMapper.addStudent(addStudentDto); + } + + @Override + @MyDataSource(DataSourceType.Update) + public void editStudent(EditStudentDto editStudentDto) { + yxyMapper.editStudent(editStudentDto); + } + + @Override + @MyDataSource(DataSourceType.Update) + public void addTeacher(AddTeacherDto addTeacherDto) { + yxyMapper.addTeacher(addTeacherDto); + } + + @Override + @MyDataSource(DataSourceType.Update) + public void editTeacher(EditTeacherDto editTeacherDto) { + yxyMapper.editTeacher(editTeacherDto); + } + + @Override + @MyDataSource(DataSourceType.Yxy) + public String getDeptName(String deptId) { + return yxyMapper.getDeptName(deptId); + } + + @Override + @MyDataSource(DataSourceType.Yxy) + public String getSuperDeptName(String deptId) { + return yxyMapper.getSuperDeptName(deptId); + } + + @Override @MyDataSource(DataSourceType.Yxy) public int selectCount(String date) { return yxyMapper.selectCount(date); @@ -63,4 +126,16 @@ public class YxyServiceImpl implements YxyService { public int insertStudent(YxyStudent student) { return yxyMapper.insertStudent(student); } + + @Override + @MyDataSource(DataSourceType.Yxy) + public int updateTeacherBySchool(String deptId) { + return yxyMapper.updateTeacherBySchool(deptId); + } + + @Override + @MyDataSource(DataSourceType.Yxy) + public int updateStudentBySchool(String classId) { + return yxyMapper.updateStudentBySchool(classId); + } } diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/third/qiyehao/QYHUtils.java b/cloud/quartz/src/main/java/com/sincere/quartz/third/qiyehao/QYHUtils.java index 7d50a16..caf620e 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/third/qiyehao/QYHUtils.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/third/qiyehao/QYHUtils.java @@ -1,32 +1,32 @@ -package com.sincere.quartz.third.qiyehao; - -import com.alibaba.fastjson.JSONObject; -import com.sincere.common.util.HttpClientUtils; - -/** - * @author chen - * @version 1.0 - * @date 2019/12/11 0011 15:28 - */ -public class QYHUtils { - - public static void main(String[] args) { - getToken("wx51b3acc9a06f0bb0", "pb5P1feSHnWYYLPAfN4QBMk-nPFaF4RGW5Lq1ceyfhk"); - } - - public static String getToken(String id, String secret) { - String url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + id + "&corpsecret=" + secret; - JSONObject json = HttpClientUtils.httpGet(url); - return json.get("access_token").toString(); - } - - public static void getDept(String accessToken) { - String url = "https://qyapi.weixin.qq.com/cgi-bin/department/list?access_token=" + accessToken; - JSONObject json = HttpClientUtils.httpGet(url); - } - - public static void getUser(String accessToken) { - String url = "https://qyapi.weixin.qq.com/cgi-bin/user/list?access_token=" + accessToken + "&department_id=" + 1 + "&fetch_child=1&status=0"; - JSONObject json = HttpClientUtils.httpGet(url); - } -} +//package com.sincere.quartz.third.qiyehao; +// +//import com.alibaba.fastjson.JSONObject; +//import com.sincere.common.util.HttpClientUtils; +// +///** +// * @author chen +// * @version 1.0 +// * @date 2019/12/11 0011 15:28 +// */ +//public class QYHUtils { +// +// public static void main(String[] args) { +// getToken("wx51b3acc9a06f0bb0", "pb5P1feSHnWYYLPAfN4QBMk-nPFaF4RGW5Lq1ceyfhk"); +// } +// +// public static String getToken(String id, String secret) { +// String url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + id + "&corpsecret=" + secret; +// JSONObject json = HttpClientUtils.httpGet(url); +// return json.get("access_token").toString(); +// } +// +// public static void getDept(String accessToken) { +// String url = "https://qyapi.weixin.qq.com/cgi-bin/department/list?access_token=" + accessToken; +// JSONObject json = HttpClientUtils.httpGet(url); +// } +// +// public static void getUser(String accessToken) { +// String url = "https://qyapi.weixin.qq.com/cgi-bin/user/list?access_token=" + accessToken + "&department_id=" + 1 + "&fetch_child=1&status=0"; +// JSONObject json = HttpClientUtils.httpGet(url); +// } +//} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYAddReadService.java b/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYAddReadService.java new file mode 100644 index 0000000..3f93edb --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYAddReadService.java @@ -0,0 +1,413 @@ +package com.sincere.quartz.third.yixueyun; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.sincere.common.dto.smartCampus.SyncSchoolDto; +import com.sincere.common.util.DateUtils; +import com.sincere.common.util.HttpClientUtils; +import com.sincere.common.util.Xml2JsonUtils; +import com.sincere.quartz.dto.*; +import com.sincere.quartz.feign.ScFeign; +import com.sincere.quartz.model.YxyAgency; +import com.sincere.quartz.model.YxyStudent; +import com.sincere.quartz.model.YxyTeacher; +import com.sincere.quartz.service.YxyService; +import com.sincere.quartz.utils.ThreadUtils; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigInteger; +import java.security.MessageDigest; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.concurrent.ExecutorService; + +@Service +public class YXYAddReadService { + + private static String SI = "SZ" ; + private static int SI_CODE = 12345678 ; + + private static String nameSpace = "http://service.pubinfo.com.cn" ; + + private static String getAllTeacher = "http://122.229.30.149:8282/DataSynService/GetTeacherInfo"; + private static String getAllTeacher_method = "getTeacherInfo" ; + private static String getAddTeacher = "http://122.229.30.149:8282/DataSynService/GetIncrementTeacherInfo" ; + private static String getAddTeacher_method = "getIncrementTeacherInfo" ; + + private static String getAllStudent = "http://122.229.30.149:8282/DataSynService/GetStudentInfo" ; + private static String getALlStudent_method = "getStudentInfo"; + private static String getAddStudent = "http://122.229.30.149:8282/DataSynService/GetIncrementStudentInfo" ; + private static String getAddStudent_method = "getIncrementStudentInfo" ; + + @Autowired + ScFeign scFeign ; + + @Autowired + YxyService yxyService ; + + private Logger logger = LoggerFactory.getLogger(YXYAddReadService.class); + + public void sync(){ + logger.info("翼学云增量同步服务开始"); + List schoolList = scFeign.selectSyncSchool(); + for(SyncSchoolDto syncSchoolDto : schoolList){ + if(syncSchoolDto.getSchoolId() == 32){ + logger.info(syncSchoolDto.getSchoolName()+"开始同步"); + syncSchool(syncSchoolDto.getYxtId(),syncSchoolDto.getSchoolId()); + } + } + } + + public void syncSchool(String yxtId , int hxyId){ + List studentList = new ArrayList<>(); //syncStudent(yxtId); + List teacherList = syncTeacher(yxtId); + logger.info("学生同步"); + for(YxyStudent student : studentList){ + logger.info(student.toString()); + if(student.getType() == 1){ + //新增 + try{ + String className = yxyService.getDeptName(student.getClassId()); + String gradeName = yxyService.getSuperDeptName(student.getClassId()); + int gradeId = yxyService.getGradeId(hxyId,gradeName); + int classId = yxyService.getClassId(hxyId,className); + if(gradeId != 0 && classId != 0){ + AddStudentDto addStudentDto = new AddStudentDto(); + addStudentDto.setAppId(0); + addStudentDto.setUserId(""); + addStudentDto.setSchoolId(hxyId); + addStudentDto.setXml(initAddStudentXML(student.getName(),classId,gradeId,student.getAccount(),student.getUserId())); + yxyService.addStudent(addStudentDto); + logger.info("操作结果:"+addStudentDto.getErr()); + } + }catch (Exception e){ + logger.info("操作结果失败:"+e.toString()); + } + } + if(student.getType() == 2){ + //修改 + try{ + String className = yxyService.getDeptName(student.getClassId()); + String gradeName = yxyService.getSuperDeptName(student.getClassId()); + int gradeId = yxyService.getGradeId(hxyId,gradeName); + int classId = yxyService.getClassId(hxyId,className); + if(gradeId != 0 && classId != 0){ + EditStudentDto editStudentDto = new EditStudentDto(); + editStudentDto.setAppId(0); + editStudentDto.setUserId(""); + editStudentDto.setParentId(0); + editStudentDto.setParentUserId(""); + List list = yxyService.getStudentView(classId,student.getName()); + if(list != null && list.size() == 1){ + editStudentDto.setStudentId(list.get(0).getStudentId()); + editStudentDto.setStudentUserId(list.get(0).getUserId()); + editStudentDto.setXml(initEditStudentXML(student.getName(),classId,gradeId,student.getUserId())); + yxyService.editStudent(editStudentDto); + logger.info("操作结果:"+editStudentDto.getErr()); + }else { + throw new Exception("同一个班级同一姓名返回数据两条"); + } + + } + }catch (Exception e){ + logger.info("操作结果失败:"+e.toString()); + } + } + if(student.getType() == 3){ + //删除 暂不操作 + } + } + logger.info("教师同步"); + for(YxyTeacher teacher : teacherList){ + logger.info(teacher.toString()); + if(teacher.getType() == 0){ + //新增 + try{ + AddTeacherDto addTeacherDto = new AddTeacherDto(); + addTeacherDto.setAppId(0); + addTeacherDto.setUserId(""); + addTeacherDto.setSchoolId(hxyId); + addTeacherDto.setXml(initAddTeacherXML(teacher.getName(),teacher.getAccount())); + yxyService.addTeacher(addTeacherDto); + logger.info("操作结果:"+addTeacherDto.getErr()); + }catch (Exception e){ + logger.info("操作结果失败:"+e.toString()); + } + } + if(teacher.getType() == 2){ + //修改 + try{ + EditTeacherDto editTeacherDto = new EditTeacherDto(); + editTeacherDto.setAppId(0); + editTeacherDto.setUserId(""); + List list = yxyService.getTeacherView(hxyId,teacher.getName()); + if(list != null && list.size() == 1){ + editTeacherDto.setXml(initEditTeacherXML(teacher.getName(),teacher.getAccount(),hxyId,list.get(0).getTeacherId())); + yxyService.editTeacher(editTeacherDto); + logger.info("操作结果:"+editTeacherDto.getErr()); + }else { + throw new Exception("同一个班级同一姓名返回数据两条"); + } + + }catch (Exception e){ + logger.info("操作结果失败:"+e.toString()); + } + } + if(teacher.getType() == 3){ + //删除 暂不操作 + } + } + } + + private String initAddStudentXML(String name , int classId , int gradeId , String phone , String userId){ + String xml = "" + + "" + + ""+name+"" + + ""+userId+"" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + ""+classId+"" + + ""+gradeId+"" + + "" + + ""+phone+"" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" ; + return xml ; + } + + private String initEditStudentXML(String name , int classId , int gradeId , String userId){ + String xml = "" + + "" + + ""+name+"" + + ""+userId+"" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + ""+classId+"" + + ""+gradeId+"" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" ; + return xml ; + } + + private String initAddTeacherXML(String name, String phone){ + String xml = "" + + "" + + ""+name+"" + + "" + + "" + + "" + + "" + + "" + + "
" + + "" + + ""+phone+"" + + "" + + "" + + " " + + "" + + "" + + "" + + "
" + + "
"; + return xml ; + } + + private String initEditTeacherXML(String name , String phone , int schoolId , int teacherId){ + String xml = "" + + ""+schoolId+"" + + "" + + ""+name+"" + + "" + + "" + + "" + + "" + + "" + + "
" + + "" + + ""+phone+"" + + ""+teacherId+"" + + "" + + "" + + " " + + "" + + "" + + "" + + "
"; + return xml ; + } + + private List syncStudent(String schoolId){ + List students = new ArrayList<>(); + try{ + List list = new ArrayList(); + list.add(SI); + list.add(getPassword(SI_CODE)); + list.add(schoolId); + String wsdl =getAddStudent ; + String ns = nameSpace; + String method = getAddStudent_method; + JSONArray jsonArray = getMessage(wsdl, ns, method, list); + if(jsonArray != null){ + for(int i = 0 ; i < jsonArray.size() ; i++){ + JSONObject object = (JSONObject) jsonArray.get(i) ; + YxyStudent student = new YxyStudent(); + try{ + student.setClassId(object.get("classID").toString()); + student.setAccount(object.get("account").toString()); + student.setName(object.get("name").toString()); + student.setUserId(object.get("userID").toString()); + student.setType(Integer.valueOf(object.get("type").toString())); + }catch (Exception e){ + } + try{ + student.setCardID(object.get("cardID").toString()); + }catch (Exception e){ + } + try{ + student.setCardID2(object.get("cardID2").toString()); + }catch (Exception e){ + } + try{ + student.setCardID3(object.get("cardID3").toString()); + }catch (Exception e){ + } + students.add(student); + } + } + }catch (Exception e){ + logger.info(e.toString()); + logger.info("学校ID为:"+schoolId + "学生数据没返回"); + } + return students; + } + + private List syncTeacher(String schoolId){ + List teachers = new ArrayList<>(); + try{ + List list = new ArrayList(); + list.add(SI); + list.add(getPassword(SI_CODE)); + list.add(schoolId); + String wsdl =getAddTeacher ; + String ns = nameSpace; + String method = getAddTeacher_method; + JSONArray jsonArray = getMessage(wsdl, ns, method, list); + if(jsonArray != null){ + for(int i = 0 ; i < jsonArray.size() ; i++){ + JSONObject object = (JSONObject) jsonArray.get(i) ; + YxyTeacher teacher = new YxyTeacher(); + try { + teacher.setDeptId(object.get("classID").toString()); + teacher.setAccount(object.get("account").toString()); + teacher.setName(object.get("name").toString()); + teacher.setUserId(object.get("userID").toString()); + teacher.setType(Integer.valueOf(object.get("type").toString())); + + }catch (Exception e){ + } + teachers.add(teacher); + } + } + }catch (Exception e){ + logger.info(e.toString()); + logger.info("学校ID为:"+schoolId + "老师数据没返回"); + } + return teachers; + } + + private JSONArray getMessage(String wsdl, String ns, String method, List list){ + try { + String resultXml = HttpClientUtils.invoiceWebService(wsdl,ns,method,list); + if (StringUtils.isNotBlank(resultXml)) { + resultXml = resultXml.replaceAll("<", "<"); + resultXml = resultXml.replaceAll(">", ">"); + int begin = resultXml.indexOf(" userList) { + public void syncUser(SyncSchoolDto school, List userList) { List addStudentList = new ArrayList<>(); List updateStudentList = new ArrayList<>(); List deleteStudentList = new ArrayList<>(); diff --git a/cloud/quartz/src/main/resources/mapper/YxyMapper.xml b/cloud/quartz/src/main/resources/mapper/YxyMapper.xml index 9953dd3..4dcffbf 100644 --- a/cloud/quartz/src/main/resources/mapper/YxyMapper.xml +++ b/cloud/quartz/src/main/resources/mapper/YxyMapper.xml @@ -2,6 +2,78 @@ + + + + + + + + + + + + + + + + + {call Student_Add( + #{appId,mode=IN} , #{userId,mode=IN} , #{schoolId,mode=IN}, #{xml,mode=IN}, + #{Err,mode=OUT,jdbcType=VARCHAR,resultMap=AddStudentMap} + )} + + + + + + + {call Student_Edit( + #{appId,mode=IN} , #{userId,mode=IN} , #{studentUserId,mode=IN},#{parentUserId,mode=IN}, + #{studentId,mode=IN},#{parentId,mode=IN},#{xml,mode=IN}, + #{Err,mode=OUT,jdbcType=VARCHAR,resultMap=EditStudentMap} + )} + + + + + + + + + {call Teachers_Add( + #{appId,mode=IN} , #{userId,mode=IN} , #{schoolId,mode=IN}, #{xml,mode=IN}, + #{Err,mode=OUT,jdbcType=VARCHAR,resultMap=AddTeacherMap}, + #{YongHuId,mode=OUT,jdbcType=VARCHAR,resultMap=AddTeacherMap}, + #{LaoShiId,mode=OUT,jdbcType=VARCHAR,resultMap=AddTeacherMap} + )} + + + + + + + {call Teacher_Edit( + #{appId,mode=IN} , #{userId,mode=IN} , #{xml,mode=IN}, + #{Err,mode=OUT,jdbcType=VARCHAR,resultMap=EditTeacherMap} + )} + delete Agency where DATEDIFF(d,intime,GETDATE())>7; @@ -17,10 +89,18 @@ update Teacher set state = 0 where DATEDIFF(n , intime, getdate()) > 240 + + update Teacher set state = 0 where deptID like '%${deptId}%' + + update Student set state = 0 where DATEDIFF(n , intime, getdate()) > 240 + + update Student set state = 0 where classID like '%${classId}%' + + diff --git a/cloud/weigeng/src/main/java/com/sincere/weigeng/Swagger2.java b/cloud/weigeng/src/main/java/com/sincere/weigeng/Swagger2.java deleted file mode 100644 index 95686c2..0000000 --- a/cloud/weigeng/src/main/java/com/sincere/weigeng/Swagger2.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.sincere.weigeng; - -import io.swagger.annotations.ApiOperation; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import springfox.documentation.builders.ApiInfoBuilder; -import springfox.documentation.builders.PathSelectors; -import springfox.documentation.builders.RequestHandlerSelectors; -import springfox.documentation.service.ApiInfo; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spring.web.plugins.Docket; -import springfox.documentation.swagger2.annotations.EnableSwagger2; - -@EnableSwagger2 -@Configuration //让Spring来加载该类配置 -public class Swagger2 { - - @Bean - public Docket createRestApi() { - return new Docket(DocumentationType.SWAGGER_2) - .apiInfo(apiInfo()) - .enableUrlTemplating(true) - .select() - // 扫描所有有注解的api,用这种方式更灵活 - .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) - .paths(PathSelectors.any()) - .build(); - - } - - private ApiInfo apiInfo() { - return new ApiInfoBuilder() - .title("Spring Boot中使用Swagger2构建RESTful APIs") - .description("接口文档") - .termsOfServiceUrl("") - .version("1.0") - .build(); - } -} -- libgit2 0.21.0