Commit d80bdd42836c41f360ed518e508a618e81067060

Authored by 陶汉栋
2 parents acd712a6 70c1b5df
Exists in master

Merge remote-tracking branch 'origin/master'

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