Commit 021910193baa5c3e124a220235a347a97e2d40e4

Authored by 陈杰
1 parent 46eaf1b0
Exists in master

考勤推送修改,绑定关注逻辑

Showing 35 changed files with 1010 additions and 546 deletions   Show diff stats
cloud/common/src/main/java/com/sincere/common/dto/smartCampus/AppDto.java
@@ -8,6 +8,8 @@ package com.sincere.common.dto.smartCampus; @@ -8,6 +8,8 @@ package com.sincere.common.dto.smartCampus;
8 public class AppDto { 8 public class AppDto {
9 private String agentId ; 9 private String agentId ;
10 private String agentSecret ; 10 private String agentSecret ;
  11 + private String qyhId ;
  12 + private String agentKey ;
11 13
12 public String getAgentId() { 14 public String getAgentId() {
13 return agentId; 15 return agentId;
@@ -24,4 +26,20 @@ public class AppDto { @@ -24,4 +26,20 @@ public class AppDto {
24 public void setAgentSecret(String agentSecret) { 26 public void setAgentSecret(String agentSecret) {
25 this.agentSecret = agentSecret; 27 this.agentSecret = agentSecret;
26 } 28 }
  29 +
  30 + public String getQyhId() {
  31 + return qyhId;
  32 + }
  33 +
  34 + public void setQyhId(String qyhId) {
  35 + this.qyhId = qyhId;
  36 + }
  37 +
  38 + public String getAgentKey() {
  39 + return agentKey;
  40 + }
  41 +
  42 + public void setAgentKey(String agentKey) {
  43 + this.agentKey = agentKey;
  44 + }
27 } 45 }
cloud/common/src/main/java/com/sincere/common/dto/smartCampus/BindPushDto.java 0 → 100644
@@ -0,0 +1,73 @@ @@ -0,0 +1,73 @@
  1 +package com.sincere.common.dto.smartCampus;
  2 +
  3 +/**
  4 + * @author chen
  5 + * @version 1.0
  6 + * @date 2019/12/11 0011 16:56
  7 + */
  8 +public class BindPushDto {
  9 +
  10 + private int schoolId ;
  11 + private int type ; // 0是企业号,1是钉钉
  12 + private String beginDate ;
  13 + private String endDate ;
  14 + private int intervalDays ;
  15 + private String pushTime ;
  16 + private String msg ;
  17 +
  18 + public int getSchoolId() {
  19 + return schoolId;
  20 + }
  21 +
  22 + public void setSchoolId(int schoolId) {
  23 + this.schoolId = schoolId;
  24 + }
  25 +
  26 + public int getType() {
  27 + return type;
  28 + }
  29 +
  30 + public void setType(int type) {
  31 + this.type = type;
  32 + }
  33 +
  34 + public String getBeginDate() {
  35 + return beginDate;
  36 + }
  37 +
  38 + public void setBeginDate(String beginDate) {
  39 + this.beginDate = beginDate;
  40 + }
  41 +
  42 + public String getEndDate() {
  43 + return endDate;
  44 + }
  45 +
  46 + public void setEndDate(String endDate) {
  47 + this.endDate = endDate;
  48 + }
  49 +
  50 + public int getIntervalDays() {
  51 + return intervalDays;
  52 + }
  53 +
  54 + public void setIntervalDays(int intervalDays) {
  55 + this.intervalDays = intervalDays;
  56 + }
  57 +
  58 + public String getPushTime() {
  59 + return pushTime;
  60 + }
  61 +
  62 + public void setPushTime(String pushTime) {
  63 + this.pushTime = pushTime;
  64 + }
  65 +
  66 + public String getMsg() {
  67 + return msg;
  68 + }
  69 +
  70 + public void setMsg(String msg) {
  71 + this.msg = msg;
  72 + }
  73 +}
cloud/common/src/main/java/com/sincere/common/dto/smartCampus/CensusKqDto.java
@@ -6,49 +6,31 @@ package com.sincere.common.dto.smartCampus; @@ -6,49 +6,31 @@ package com.sincere.common.dto.smartCampus;
6 * @date 2019/11/29 0029 14:27 6 * @date 2019/11/29 0029 14:27
7 */ 7 */
8 public class CensusKqDto { 8 public class CensusKqDto {
9 - private int classId ;  
10 - private String className ;  
11 - private int allT ;  
12 - private int kqT ;  
13 - private int qjT ; 9 + private String targetName ;
  10 + private int leaveCount ;
  11 + private int notAttendCount ;
14 12
15 - public int getClassId() {  
16 - return classId; 13 + public String getTargetName() {
  14 + return targetName;
17 } 15 }
18 16
19 - public void setClassId(int classId) {  
20 - this.classId = classId; 17 + public void setTargetName(String targetName) {
  18 + this.targetName = targetName;
21 } 19 }
22 20
23 - public String getClassName() {  
24 - return className; 21 + public int getLeaveCount() {
  22 + return leaveCount;
25 } 23 }
26 24
27 - public void setClassName(String className) {  
28 - this.className = className; 25 + public void setLeaveCount(int leaveCount) {
  26 + this.leaveCount = leaveCount;
29 } 27 }
30 28
31 - public int getAllT() {  
32 - return allT; 29 + public int getNotAttendCount() {
  30 + return notAttendCount;
33 } 31 }
34 32
35 - public void setAllT(int allT) {  
36 - this.allT = allT;  
37 - }  
38 -  
39 - public int getKqT() {  
40 - return kqT;  
41 - }  
42 -  
43 - public void setKqT(int kqT) {  
44 - this.kqT = kqT;  
45 - }  
46 -  
47 - public int getQjT() {  
48 - return qjT;  
49 - }  
50 -  
51 - public void setQjT(int qjT) {  
52 - this.qjT = qjT; 33 + public void setNotAttendCount(int notAttendCount) {
  34 + this.notAttendCount = notAttendCount;
53 } 35 }
54 } 36 }
cloud/common/src/main/java/com/sincere/common/dto/smartCampus/KqTeacherDto.java
@@ -11,11 +11,13 @@ public class KqTeacherDto { @@ -11,11 +11,13 @@ public class KqTeacherDto {
11 private String name ; 11 private String name ;
12 private String mobile ; 12 private String mobile ;
13 private String pass ; 13 private String pass ;
14 - private String DingUserId ;  
15 - private String weChatUserId ;  
16 private String openId ; 14 private String openId ;
17 private String face ; 15 private String face ;
18 16
  17 + private int classId ;
  18 + private int roomId ;
  19 + private String targetName ;
  20 +
19 public String getUserId() { 21 public String getUserId() {
20 return userId; 22 return userId;
21 } 23 }
@@ -56,22 +58,6 @@ public class KqTeacherDto { @@ -56,22 +58,6 @@ public class KqTeacherDto {
56 this.pass = pass; 58 this.pass = pass;
57 } 59 }
58 60
59 - public String getDingUserId() {  
60 - return DingUserId;  
61 - }  
62 -  
63 - public void setDingUserId(String dingUserId) {  
64 - DingUserId = dingUserId;  
65 - }  
66 -  
67 - public String getWeChatUserId() {  
68 - return weChatUserId;  
69 - }  
70 -  
71 - public void setWeChatUserId(String weChatUserId) {  
72 - this.weChatUserId = weChatUserId;  
73 - }  
74 -  
75 public String getOpenId() { 61 public String getOpenId() {
76 return openId; 62 return openId;
77 } 63 }
@@ -87,4 +73,28 @@ public class KqTeacherDto { @@ -87,4 +73,28 @@ public class KqTeacherDto {
87 public void setFace(String face) { 73 public void setFace(String face) {
88 this.face = face; 74 this.face = face;
89 } 75 }
  76 +
  77 + public int getClassId() {
  78 + return classId;
  79 + }
  80 +
  81 + public void setClassId(int classId) {
  82 + this.classId = classId;
  83 + }
  84 +
  85 + public int getRoomId() {
  86 + return roomId;
  87 + }
  88 +
  89 + public void setRoomId(int roomId) {
  90 + this.roomId = roomId;
  91 + }
  92 +
  93 + public String getTargetName() {
  94 + return targetName;
  95 + }
  96 +
  97 + public void setTargetName(String targetName) {
  98 + this.targetName = targetName;
  99 + }
90 } 100 }
cloud/common/src/main/java/com/sincere/common/dto/smartCampus/ParentDto.java 0 → 100644
@@ -0,0 +1,37 @@ @@ -0,0 +1,37 @@
  1 +package com.sincere.common.dto.smartCampus;
  2 +
  3 +/**
  4 + * @author chen
  5 + * @version 1.0
  6 + * @date 2019/12/10 0010 11:14
  7 + */
  8 +public class ParentDto {
  9 +
  10 + private int schoolId ;
  11 + private int parentId ;
  12 + private String mobile ;
  13 +
  14 + public int getSchoolId() {
  15 + return schoolId;
  16 + }
  17 +
  18 + public void setSchoolId(int schoolId) {
  19 + this.schoolId = schoolId;
  20 + }
  21 +
  22 + public int getParentId() {
  23 + return parentId;
  24 + }
  25 +
  26 + public void setParentId(int parentId) {
  27 + this.parentId = parentId;
  28 + }
  29 +
  30 + public String getMobile() {
  31 + return mobile;
  32 + }
  33 +
  34 + public void setMobile(String mobile) {
  35 + this.mobile = mobile;
  36 + }
  37 +}
cloud/common/src/main/java/com/sincere/common/dto/smartCampus/TemplateDto.java
@@ -9,10 +9,19 @@ import java.io.Serializable; @@ -9,10 +9,19 @@ import java.io.Serializable;
9 */ 9 */
10 public class TemplateDto implements Serializable { 10 public class TemplateDto implements Serializable {
11 11
  12 + private int id ;
12 private String config ; 13 private String config ;
13 private int schoolId ; 14 private int schoolId ;
14 private String type ; 15 private String type ;
15 16
  17 + public int getId() {
  18 + return id;
  19 + }
  20 +
  21 + public void setId(int id) {
  22 + this.id = id;
  23 + }
  24 +
16 public String getConfig() { 25 public String getConfig() {
17 return config; 26 return config;
18 } 27 }
cloud/common/src/main/java/com/sincere/common/enums/PushTypeEnums.java 0 → 100644
@@ -0,0 +1,40 @@ @@ -0,0 +1,40 @@
  1 +package com.sincere.common.enums;
  2 +
  3 +/**
  4 + * @author chen
  5 + * @version 1.0
  6 + * @date 2019/12/10 0010 11:30
  7 + */
  8 +public enum PushTypeEnums {
  9 +
  10 + WEB(0,"站内消息"),
  11 + APP(1,"APP消息"),
  12 + MESSAGE(2,"短消息"),
  13 + WECHAT(3,"微信公众号"),
  14 + DING(4,"盯盯消息"),
  15 + QIYEHAO(5,"企业号消息");
  16 +
  17 + private int type ;
  18 + private String name ;
  19 +
  20 + PushTypeEnums(int type, String name) {
  21 + this.type = type;
  22 + this.name = name;
  23 + }
  24 +
  25 + public int getType() {
  26 + return type;
  27 + }
  28 +
  29 + public void setType(int type) {
  30 + this.type = type;
  31 + }
  32 +
  33 + public String getName() {
  34 + return name;
  35 + }
  36 +
  37 + public void setName(String name) {
  38 + this.name = name;
  39 + }
  40 +}
cloud/common/src/main/java/com/sincere/common/util/DateUtils.java
@@ -18,6 +18,10 @@ public class DateUtils { @@ -18,6 +18,10 @@ public class DateUtils {
18 18
19 public static String format2 = "yyyy-MM-dd HH:mm:ss"; 19 public static String format2 = "yyyy-MM-dd HH:mm:ss";
20 20
  21 + public static String format3 = "yyyyMMddHHmm" ;
  22 +
  23 + public static String format4 = "HH:mm" ;
  24 +
21 public static long getDate(){ 25 public static long getDate(){
22 return System.currentTimeMillis(); 26 return System.currentTimeMillis();
23 } 27 }
cloud/common/src/main/java/com/sincere/common/util/HttpClientUtils.java
1 package com.sincere.common.util; 1 package com.sincere.common.util;
2 2
  3 +import com.alibaba.fastjson.JSONArray;
3 import com.alibaba.fastjson.JSONObject; 4 import com.alibaba.fastjson.JSONObject;
4 import org.apache.http.HttpEntity; 5 import org.apache.http.HttpEntity;
5 import org.apache.http.HttpStatus; 6 import org.apache.http.HttpStatus;
@@ -17,6 +18,7 @@ import java.io.IOException; @@ -17,6 +18,7 @@ import java.io.IOException;
17 import java.io.InputStream; 18 import java.io.InputStream;
18 import java.net.HttpURLConnection; 19 import java.net.HttpURLConnection;
19 import java.net.URL; 20 import java.net.URL;
  21 +import java.util.Date;
20 22
21 /** 23 /**
22 * HttpClient4.3工具类 24 * HttpClient4.3工具类
@@ -28,14 +30,20 @@ public class HttpClientUtils { @@ -28,14 +30,20 @@ public class HttpClientUtils {
28 30
29 private static RequestConfig requestConfig = null; 31 private static RequestConfig requestConfig = null;
30 32
31 - static  
32 - { 33 + static {
33 // 设置请求和传输超时时间 34 // 设置请求和传输超时时间
34 requestConfig = RequestConfig.custom().setSocketTimeout(2000).setConnectTimeout(2000).build(); 35 requestConfig = RequestConfig.custom().setSocketTimeout(2000).setConnectTimeout(2000).build();
35 } 36 }
36 37
37 public static void main(String[] args){ 38 public static void main(String[] args){
38 - JSONObject teacherList = HttpClientUtils.httpGet("http://60.190.202.57:1000/api/EasyN/GetSchoolSubject?SchoolId=1"); 39 +// JSONObject object = HttpClientUtils.httpGet("http://60.190.202.57:1000/api/EasyN/GeAttendDetailNew?Id=158&TemplateId=0IZBD9624P&Type=0&time=2019-12-12&UserId=P113111&SchoolId=16");
  40 +// JSONArray data = (JSONArray)object.get("data");
  41 + String msg = "[{\"stuCount\":393,\"stuAttendCount\":341,\"noAttendCount\":52,\"sNoAttendCount\":52,\"leaveCount\":0,\"state\":\"已结束\",\"id\":310,\"templateId\":\"OCQQMV0ZXM\",\"color\":3}]";
  42 + JSONArray data = JSONArray.parseArray(msg);
  43 + for(int i = 0 ; i < data.size() ; i++){
  44 + JSONObject object = data.getJSONObject(i);
  45 + System.out.println(object.get("stuCount"));
  46 + }
39 System.out.println("1"); 47 System.out.println("1");
40 } 48 }
41 49
@@ -45,7 +53,7 @@ public class HttpClientUtils { @@ -45,7 +53,7 @@ public class HttpClientUtils {
45 * @param jsonParam 参数 53 * @param jsonParam 参数
46 * @return 54 * @return
47 */ 55 */
48 - public static JSONObject httpPost(String url, JSONObject jsonParam) { 56 + public static JSONObject httpPostJson(String url, String jsonParam) {
49 // post请求返回结果 57 // post请求返回结果
50 CloseableHttpClient httpClient = HttpClients.createDefault(); 58 CloseableHttpClient httpClient = HttpClients.createDefault();
51 JSONObject jsonResult = null; 59 JSONObject jsonResult = null;
@@ -55,7 +63,7 @@ public class HttpClientUtils { @@ -55,7 +63,7 @@ public class HttpClientUtils {
55 try { 63 try {
56 if (null != jsonParam) { 64 if (null != jsonParam) {
57 // 解决中文乱码问题 65 // 解决中文乱码问题
58 - StringEntity entity = new StringEntity(jsonParam.toString(), "utf-8"); 66 + StringEntity entity = new StringEntity(jsonParam, "utf-8");
59 entity.setContentEncoding("UTF-8"); 67 entity.setContentEncoding("UTF-8");
60 entity.setContentType("application/json"); 68 entity.setContentType("application/json");
61 httpPost.setEntity(entity); 69 httpPost.setEntity(entity);
cloud/quartz/lib/taobao-sdk-java-auto_1479188381469-20191205.jar 0 → 100644
No preview for this file type
cloud/quartz/pom.xml
@@ -13,6 +13,13 @@ @@ -13,6 +13,13 @@
13 13
14 <dependencies> 14 <dependencies>
15 <dependency> 15 <dependency>
  16 + <groupId>taobao-sdk-java-auto</groupId>
  17 + <artifactId>ding</artifactId>
  18 + <scope>system</scope>
  19 + <version>1</version>
  20 + <systemPath>${project.basedir}/lib/taobao-sdk-java-auto_1479188381469-20191205.jar</systemPath>
  21 + </dependency>
  22 + <dependency>
16 <groupId>com.sincere</groupId> 23 <groupId>com.sincere</groupId>
17 <artifactId>common</artifactId> 24 <artifactId>common</artifactId>
18 <version>1.0.0</version> 25 <version>1.0.0</version>
cloud/quartz/src/main/java/com/sincere/quartz/feign/ScFeign.java
@@ -7,7 +7,9 @@ import org.springframework.web.bind.annotation.RequestMapping; @@ -7,7 +7,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
7 import org.springframework.web.bind.annotation.RequestMethod; 7 import org.springframework.web.bind.annotation.RequestMethod;
8 import org.springframework.web.bind.annotation.RequestParam; 8 import org.springframework.web.bind.annotation.RequestParam;
9 9
  10 +import java.util.HashMap;
10 import java.util.List; 11 import java.util.List;
  12 +import java.util.Map;
11 13
12 /** 14 /**
13 * @author chen 15 * @author chen
@@ -17,6 +19,7 @@ import java.util.List; @@ -17,6 +19,7 @@ import java.util.List;
17 @FeignClient("smartCampusSearch") 19 @FeignClient("smartCampusSearch")
18 public interface ScFeign { 20 public interface ScFeign {
19 21
  22 + //考勤推送
20 @RequestMapping(value = "/sm/kq/getAllTemplate",method = RequestMethod.GET) 23 @RequestMapping(value = "/sm/kq/getAllTemplate",method = RequestMethod.GET)
21 List<TemplateDto> getAllTemplate(); 24 List<TemplateDto> getAllTemplate();
22 25
@@ -29,9 +32,17 @@ public interface ScFeign { @@ -29,9 +32,17 @@ public interface ScFeign {
29 @RequestMapping(value = "/sm/kq/getApp",method = RequestMethod.GET) 32 @RequestMapping(value = "/sm/kq/getApp",method = RequestMethod.GET)
30 AppDto getApp(@RequestParam("schoolId")int schoolId , @RequestParam("type") int type); 33 AppDto getApp(@RequestParam("schoolId")int schoolId , @RequestParam("type") int type);
31 34
32 - @RequestMapping(value = "/sm/kq/getCensusKq",method = RequestMethod.POST)  
33 - List<CensusKqDto> getCensusKq(@RequestBody KqDto kqDto); 35 + @RequestMapping(value = "/sm/kq/getThirdId",method = RequestMethod.GET)
  36 + String getThirdId(@RequestParam("userId")String userId , @RequestParam("type") int type);
34 37
35 - @RequestMapping(value = "/sm/kq/selectCensusChamberKq",method = RequestMethod.POST)  
36 - List<CensusKqDto> selectCensusChamberKq(@RequestBody KqDto kqDto); 38 +
  39 + //关注绑定推送
  40 + @RequestMapping(value = "/sm/rp/selectBindPushSchool",method = RequestMethod.GET)
  41 + List<BindPushDto> selectBindPushSchool();
  42 +
  43 + @RequestMapping(value = "/sm/rp/selectNotFollow",method = RequestMethod.GET)
  44 + List<ParentDto> selectNotFollow(@RequestParam("schoolId") int schoolId);
  45 +
  46 + @RequestMapping(value = "/sm/rp/selectNotBind",method = RequestMethod.GET)
  47 + List<ParentDto> selectNotBind(@RequestParam("schoolId") int schoolId , @RequestParam("type") int type);
37 } 48 }
cloud/quartz/src/main/java/com/sincere/quartz/job/BindPushJob.java 0 → 100644
@@ -0,0 +1,91 @@ @@ -0,0 +1,91 @@
  1 +package com.sincere.quartz.job;
  2 +
  3 +import com.sincere.common.dto.smartCampus.BindPushDto;
  4 +import com.sincere.common.dto.smartCampus.ParentDto;
  5 +import com.sincere.common.enums.PushTypeEnums;
  6 +import com.sincere.common.util.DateUtils;
  7 +import com.sincere.quartz.feign.ScFeign;
  8 +import org.apache.commons.lang3.StringUtils;
  9 +import org.springframework.beans.factory.annotation.Autowired;
  10 +import org.springframework.scheduling.annotation.Scheduled;
  11 +import org.springframework.stereotype.Service;
  12 +
  13 +import java.util.*;
  14 +
  15 +/**
  16 + * 用户注册激活提醒
  17 + * @author chen
  18 + * @version 1.0
  19 + * @date 2019/12/10 0010 8:31
  20 + */
  21 +@Service
  22 +public class BindPushJob {
  23 +
  24 + @Autowired
  25 + ScFeign scFeign;
  26 +
  27 + private static String date ;
  28 + private static List<BindPushDto> schoolList = new ArrayList<>();
  29 + private static Map<Integer , String> intervalDaysMap = new HashMap<>();
  30 +
  31 + @Scheduled(cron = "0 0-59 * * * ? ")
  32 + public void bindPush(){
  33 + Date nowDate = new Date();
  34 + String now = DateUtils.date2String(nowDate,DateUtils.format1) ;
  35 + if(StringUtils.isBlank(date) || !date.equals(now)){
  36 + initMap(now);
  37 + }
  38 + for(BindPushDto school : schoolList){
  39 + int i =DateUtils.string2Date(school.getBeginDate(),DateUtils.format1).compareTo(nowDate) ;
  40 + int j = DateUtils.string2Date(school.getEndDate(),DateUtils.format1).compareTo(nowDate) ;
  41 + if(DateUtils.string2Date(school.getBeginDate(),DateUtils.format1).compareTo(nowDate) <= 0
  42 + && DateUtils.string2Date(school.getEndDate(),DateUtils.format1).compareTo(nowDate) >= 0){
  43 + String lastDate = intervalDaysMap.get(school.getSchoolId());
  44 + if(StringUtils.isBlank(lastDate)){
  45 + //下发推送
  46 + bindPush(school,nowDate);
  47 + }else {
  48 + int day = DateUtils.getDateDifference(nowDate,DateUtils.string2Date(lastDate,DateUtils.format1),"day") ;
  49 + if(day == school.getIntervalDays() + 1) {
  50 + //下发推送
  51 + bindPush(school,nowDate);
  52 + }
  53 + }
  54 + }
  55 + }
  56 + }
  57 +
  58 + private void bindPush(BindPushDto bindPushDto , Date nowDate){
  59 + if(bindPushDto.getPushTime().equals(DateUtils.date2String(nowDate,DateUtils.format4))){
  60 + List<ParentDto> unFollowList = scFeign.selectNotFollow(bindPushDto.getSchoolId());
  61 +
  62 + List<ParentDto> unBindList =scFeign.selectNotBind(bindPushDto.getSchoolId(),getThirdType(bindPushDto.getType()));
  63 +
  64 + intervalDaysMap.put(bindPushDto.getSchoolId(),DateUtils.date2String(nowDate,DateUtils.format1));
  65 + }
  66 + }
  67 +
  68 + private void initMap(String now){
  69 + date = now ;
  70 + //schoolList = scFeign.selectBindPushSchool();
  71 + BindPushDto bindPushDto = new BindPushDto();
  72 + bindPushDto.setSchoolId(16);
  73 + bindPushDto.setBeginDate("2019-12-04");
  74 + bindPushDto.setEndDate("2019-12-30");
  75 + bindPushDto.setIntervalDays(1);
  76 + bindPushDto.setPushTime("11:04");
  77 + bindPushDto.setType(0);
  78 + bindPushDto.setMsg("");
  79 + schoolList = new ArrayList<>();
  80 + schoolList.add(bindPushDto);
  81 + }
  82 +
  83 + private int getThirdType(int type){
  84 + if(type == 0){
  85 + return PushTypeEnums.DING.getType() ;
  86 + }else {
  87 + return PushTypeEnums.QIYEHAO.getType() ;
  88 + }
  89 + }
  90 +
  91 +}
cloud/quartz/src/main/java/com/sincere/quartz/job/KQJob.java
1 package com.sincere.quartz.job; 1 package com.sincere.quartz.job;
2 2
  3 +import com.alibaba.fastjson.JSONArray;
  4 +import com.alibaba.fastjson.JSONObject;
3 import com.sincere.common.dto.smartCampus.*; 5 import com.sincere.common.dto.smartCampus.*;
  6 +import com.sincere.common.enums.PushTypeEnums;
4 import com.sincere.common.util.DateUtils; 7 import com.sincere.common.util.DateUtils;
  8 +import com.sincere.common.util.HttpClientUtils;
5 import com.sincere.quartz.enums.KqTypeEnums; 9 import com.sincere.quartz.enums.KqTypeEnums;
6 import com.sincere.quartz.enums.TypeEnums; 10 import com.sincere.quartz.enums.TypeEnums;
7 import com.sincere.quartz.feign.ScFeign; 11 import com.sincere.quartz.feign.ScFeign;
@@ -38,7 +42,7 @@ public class KQJob { @@ -38,7 +42,7 @@ public class KQJob {
38 private static String date ; 42 private static String date ;
39 private static Map<String , String> map = new HashMap<>(); 43 private static Map<String , String> map = new HashMap<>();
40 44
41 - @Scheduled(cron = "* 0/1 * * * ?") 45 + @Scheduled(cron = "0 0-59 * * * ? ")
42 public void kaoQing() { 46 public void kaoQing() {
43 String now = DateUtils.date2String(new Date(),DateUtils.format1) ; 47 String now = DateUtils.date2String(new Date(),DateUtils.format1) ;
44 if(StringUtils.isBlank(date)){ 48 if(StringUtils.isBlank(date)){
@@ -54,14 +58,14 @@ public class KQJob { @@ -54,14 +58,14 @@ public class KQJob {
54 for(Map.Entry<String, String> entity : map.entrySet()){ 58 for(Map.Entry<String, String> entity : map.entrySet()){
55 String endTime = entity.getValue().split("_")[1]; 59 String endTime = entity.getValue().split("_")[1];
56 if(DateUtils.getDateDifference(new Date(),DateUtils.string2Date(now+" "+endTime+":00",DateUtils.format2),"m")>=2 60 if(DateUtils.getDateDifference(new Date(),DateUtils.string2Date(now+" "+endTime+":00",DateUtils.format2),"m")>=2
57 - && DateUtils.getDateDifference(new Date(),DateUtils.string2Date(now+" "+endTime+":00",DateUtils.format2),"m") < 5){ 61 + ){
58 String key = entity.getKey(); 62 String key = entity.getKey();
59 String[] messageArray = key.split("_"); 63 String[] messageArray = key.split("_");
60 - if(messageArray[2].contains("5")){ 64 + if(messageArray[2].contains(PushTypeEnums.QIYEHAO.getType()+"")){
61 logger.info("企业号推送:" + messageArray[0] + "__" + messageArray[1]); 65 logger.info("企业号推送:" + messageArray[0] + "__" + messageArray[1]);
62 - weChatBatchPush(messageArray[0],Integer.valueOf(messageArray[1]),entity.getValue()); 66 + //weChatBatchPush(messageArray[0],Integer.valueOf(messageArray[1]),entity.getValue());
63 } 67 }
64 - if(messageArray[2].contains("4")){ 68 + if(messageArray[2].contains(PushTypeEnums.DING.getType()+"")){
65 logger.info(("盯盯推送:" + messageArray[0] + "__" + messageArray[1])); 69 logger.info(("盯盯推送:" + messageArray[0] + "__" + messageArray[1]));
66 dingBatchPush(messageArray[0],Integer.valueOf(messageArray[1]),entity.getValue()); 70 dingBatchPush(messageArray[0],Integer.valueOf(messageArray[1]),entity.getValue());
67 } 71 }
@@ -73,6 +77,7 @@ public class KQJob { @@ -73,6 +77,7 @@ public class KQJob {
73 } 77 }
74 } 78 }
75 79
  80 + //初始化要推送的模板
76 private void initMap(){ 81 private void initMap(){
77 map = new HashMap<>(); 82 map = new HashMap<>();
78 List<TemplateDto> list = scFeign.getAllTemplate(); 83 List<TemplateDto> list = scFeign.getAllTemplate();
@@ -92,7 +97,7 @@ public class KQJob { @@ -92,7 +97,7 @@ public class KQJob {
92 int nowWeek = DateUtils.getWeek() ; 97 int nowWeek = DateUtils.getWeek() ;
93 if(Week.contains(nowWeek+"")){ 98 if(Week.contains(nowWeek+"")){
94 logger.info((templateId+"_"+templateDto.getSchoolId()+"_"+templateDto.getType()+"------"+beginTime+"_"+endTime)); 99 logger.info((templateId+"_"+templateDto.getSchoolId()+"_"+templateDto.getType()+"------"+beginTime+"_"+endTime));
95 - map.put(templateId+"_"+templateDto.getSchoolId()+"_"+templateDto.getType() , beginTime+"_"+endTime+"_"+type); 100 + map.put(templateId+"_"+templateDto.getSchoolId()+"_"+templateDto.getType() , beginTime+"_"+endTime+"_"+type+"_"+templateDto.getId());
96 } 101 }
97 }catch (Exception e){ 102 }catch (Exception e){
98 e.printStackTrace(); 103 e.printStackTrace();
@@ -101,6 +106,7 @@ public class KQJob { @@ -101,6 +106,7 @@ public class KQJob {
101 } 106 }
102 } 107 }
103 108
  109 + //盯盯批量推送
104 private void dingBatchPush(String templateId , int schoolId , String key){ 110 private void dingBatchPush(String templateId , int schoolId , String key){
105 String[] times = key.split("_"); 111 String[] times = key.split("_");
106 AppDto appDto = scFeign.getApp(schoolId,1); 112 AppDto appDto = scFeign.getApp(schoolId,1);
@@ -116,17 +122,18 @@ public class KQJob { @@ -116,17 +122,18 @@ public class KQJob {
116 List<KqTeacherDto> list = scFeign.getTeacherList(schoolId); 122 List<KqTeacherDto> list = scFeign.getTeacherList(schoolId);
117 for(KqTeacherDto teacher : list){ 123 for(KqTeacherDto teacher : list){
118 logger.info("盯盯推送班主任—————" + templateId + "--------" + teacher.getName()); 124 logger.info("盯盯推送班主任—————" + templateId + "--------" + teacher.getName());
119 - dingSchoolPush(templateId,teacher, key, appDto); 125 + //dingSchoolPush(templateId,teacher, key, appDto);
120 } 126 }
121 //推宿管 127 //推宿管
122 List<KqTeacherDto> chamberList = scFeign.selectChamberTeacher(schoolId); 128 List<KqTeacherDto> chamberList = scFeign.selectChamberTeacher(schoolId);
123 for(KqTeacherDto teacher : chamberList){ 129 for(KqTeacherDto teacher : chamberList){
124 logger.info("盯盯推送宿管—————" + templateId + "--------" + teacher.getName()); 130 logger.info("盯盯推送宿管—————" + templateId + "--------" + teacher.getName());
125 - dingChamberPush(templateId,teacher, key, appDto); 131 + //dingChamberPush(templateId,teacher, key, appDto);
126 } 132 }
127 } 133 }
128 } 134 }
129 135
  136 + //企业号批量推送
130 private void weChatBatchPush(String templateId , int schoolId , String key){ 137 private void weChatBatchPush(String templateId , int schoolId , String key){
131 String[] times = key.split("_"); 138 String[] times = key.split("_");
132 AppDto appDto = scFeign.getApp(schoolId, 0); 139 AppDto appDto = scFeign.getApp(schoolId, 0);
@@ -153,22 +160,17 @@ public class KQJob { @@ -153,22 +160,17 @@ public class KQJob {
153 } 160 }
154 } 161 }
155 162
  163 + //盯盯推送班主任
156 private void dingSchoolPush(String templateId ,KqTeacherDto teacher , String key , AppDto appDto){ 164 private void dingSchoolPush(String templateId ,KqTeacherDto teacher , String key , AppDto appDto){
157 String[] times = key.split("_"); 165 String[] times = key.split("_");
158 String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); 166 String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format);
159 - if(StringUtils.isNotBlank(teacher.getDingUserId())){  
160 - KqDto dto = new KqDto();  
161 - dto.setEndTime(times[1]);  
162 - dto.setTemplateId(templateId);  
163 - dto.setType(times[2]);  
164 - dto.setUserId(teacher.getUserId());  
165 - List<CensusKqDto> censusKqDtos = scFeign.getCensusKq(dto); 167 + String thirdOpenId = scFeign.getThirdId(teacher.getUserId(),0);
  168 + if(StringUtils.isNotBlank(thirdOpenId)){
  169 + List<CensusKqDto> censusKqDtos = getCensus(Integer.valueOf(times[3]),templateId,teacher.getSchoolId(),teacher.getUserId(),1);
166 if(censusKqDtos != null &&censusKqDtos.size() > 0){ 170 if(censusKqDtos != null &&censusKqDtos.size() > 0){
167 String message = ""; 171 String message = "";
168 for(CensusKqDto censusKqDto : censusKqDtos){ 172 for(CensusKqDto censusKqDto : censusKqDtos){
169 - int number = censusKqDto.getAllT() - censusKqDto.getKqT()-censusKqDto.getQjT() ;  
170 - number = number < 0?0:number ;  
171 - message += "[" + censusKqDto.getClassName() + "]未考勤" + number + "人,请假"+censusKqDto.getQjT()+"人;"; 173 + message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假"+censusKqDto.getLeaveCount()+"人;";
172 } 174 }
173 DingSms dingSms = new DingSms(); 175 DingSms dingSms = new DingSms();
174 dingSms.setName(teacher.getName()); 176 dingSms.setName(teacher.getName());
@@ -179,36 +181,30 @@ public class KQJob { @@ -179,36 +181,30 @@ public class KQJob {
179 "整体数据:" + message); 181 "整体数据:" + message);
180 String wapUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + 182 String wapUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" +
181 "schoolid="+teacher.getSchoolId()+"&userId="+teacher.getUserId()+"&name="+teacher.getName()+ "&TemplateId=" + templateId+ 183 "schoolid="+teacher.getSchoolId()+"&userId="+teacher.getUserId()+"&name="+teacher.getName()+ "&TemplateId=" + templateId+
182 - "&data="+teacher.getDingUserId()+"&type=1&stype=4&mobile="+teacher.getMobile()+"&pass="+teacher.getPass()+ 184 + "&data="+thirdOpenId+"&type=1&stype=4&mobile="+teacher.getMobile()+"&pass="+teacher.getPass()+
183 "&face=&sourcetype=16&soutype=3&timestamp="+ DateUtils.getDate()+"&time="+DateUtils.date2String(new Date(),DateUtils.format1) ; 185 "&face=&sourcetype=16&soutype=3&timestamp="+ DateUtils.getDate()+"&time="+DateUtils.date2String(new Date(),DateUtils.format1) ;
184 dingSms.setSchoolId(teacher.getSchoolId()); 186 dingSms.setSchoolId(teacher.getSchoolId());
185 - dingSms.setDingUserId(teacher.getDingUserId()); 187 + dingSms.setDingUserId(thirdOpenId);
186 dingSms.setAgentId(appDto.getAgentId()); 188 dingSms.setAgentId(appDto.getAgentId());
187 dingSms.setWapUrl(wapUrl); 189 dingSms.setWapUrl(wapUrl);
188 dingSms.setReceiveUserId(teacher.getUserId()); 190 dingSms.setReceiveUserId(teacher.getUserId());
189 dingSms.setTdType(TypeEnums.kaoqing.getType()); 191 dingSms.setTdType(TypeEnums.kaoqing.getType());
190 - smsMapper.insertDing(dingSms); 192 + this.insertDing(dingSms);
191 } 193 }
192 } 194 }
193 } 195 }
194 196
  197 + //盯盯推送宿管
195 private void dingChamberPush(String templateId, KqTeacherDto teacher , String key , AppDto appDto){ 198 private void dingChamberPush(String templateId, KqTeacherDto teacher , String key , AppDto appDto){
196 String[] times = key.split("_"); 199 String[] times = key.split("_");
197 String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); 200 String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format);
198 - if(StringUtils.isNotBlank(teacher.getDingUserId())){  
199 - List<CensusKqDto> censusKqDtos ;  
200 - KqDto dto = new KqDto();  
201 - dto.setEndTime(times[1]);  
202 - dto.setTemplateId(templateId);  
203 - dto.setType(times[2]);  
204 - dto.setUserId(teacher.getUserId());  
205 - censusKqDtos = scFeign.selectCensusChamberKq(dto); 201 + String thirdOpenId = scFeign.getThirdId(teacher.getUserId(),0);
  202 + if(StringUtils.isNotBlank(thirdOpenId)){
  203 + List<CensusKqDto> censusKqDtos = getCensus(Integer.valueOf(times[3]),templateId,teacher.getSchoolId(),teacher.getUserId(),1);
206 if(censusKqDtos != null &&censusKqDtos.size() > 0){ 204 if(censusKqDtos != null &&censusKqDtos.size() > 0){
207 String message = ""; 205 String message = "";
208 for(CensusKqDto censusKqDto : censusKqDtos){ 206 for(CensusKqDto censusKqDto : censusKqDtos){
209 - int number = censusKqDto.getAllT() - censusKqDto.getKqT()-censusKqDto.getQjT() ;  
210 - number = number < 0?0:number ;  
211 - message += "[" + censusKqDto.getClassName() + "]未考勤" + number + "人,请假"+censusKqDto.getQjT()+"人;"; 207 + message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假"+censusKqDto.getLeaveCount()+"人;";
212 } 208 }
213 DingSms dingSms = new DingSms(); 209 DingSms dingSms = new DingSms();
214 dingSms.setName(teacher.getName()); 210 dingSms.setName(teacher.getName());
@@ -221,32 +217,27 @@ public class KQJob { @@ -221,32 +217,27 @@ public class KQJob {
221 "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() +"&TemplateId=" + templateId+ 217 "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() +"&TemplateId=" + templateId+
222 "&pass=" + teacher.getPass() + "&type=4&soutype=3&time="+DateUtils.date2String(new Date(),DateUtils.format1); 218 "&pass=" + teacher.getPass() + "&type=4&soutype=3&time="+DateUtils.date2String(new Date(),DateUtils.format1);
223 dingSms.setSchoolId(teacher.getSchoolId()); 219 dingSms.setSchoolId(teacher.getSchoolId());
224 - dingSms.setDingUserId(teacher.getDingUserId()); 220 + dingSms.setDingUserId(thirdOpenId);
225 dingSms.setAgentId(appDto.getAgentId()); 221 dingSms.setAgentId(appDto.getAgentId());
226 dingSms.setWapUrl(msgUrl); 222 dingSms.setWapUrl(msgUrl);
227 dingSms.setReceiveUserId(teacher.getUserId()); 223 dingSms.setReceiveUserId(teacher.getUserId());
228 dingSms.setTdType(TypeEnums.kaoqing.getType()); 224 dingSms.setTdType(TypeEnums.kaoqing.getType());
229 - smsMapper.insertDing(dingSms); 225 + this.insertDing(dingSms);
230 } 226 }
231 } 227 }
232 } 228 }
233 229
  230 + //企业号推送班主任
234 private void weChatSchoolPush(String templateId, KqTeacherDto teacher , String key , AppDto appDto){ 231 private void weChatSchoolPush(String templateId, KqTeacherDto teacher , String key , AppDto appDto){
235 String[] times = key.split("_"); 232 String[] times = key.split("_");
236 String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); 233 String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format);
237 - if (StringUtils.isNotBlank(teacher.getOpenId())) {  
238 - KqDto dto = new KqDto();  
239 - dto.setEndTime(times[1]);  
240 - dto.setTemplateId(templateId);  
241 - dto.setType(times[2]);  
242 - dto.setUserId(teacher.getUserId());  
243 - List<CensusKqDto> censusKqDtos = scFeign.getCensusKq(dto); 234 + String thirdOpenId = scFeign.getThirdId(teacher.getUserId(),1);
  235 + if (StringUtils.isNotBlank(thirdOpenId)) {
  236 + List<CensusKqDto> censusKqDtos = getCensus(Integer.valueOf(times[3]),templateId,teacher.getSchoolId(),teacher.getUserId(),1);
244 if (censusKqDtos != null && censusKqDtos.size() > 0) { 237 if (censusKqDtos != null && censusKqDtos.size() > 0) {
245 String message = ""; 238 String message = "";
246 for (CensusKqDto censusKqDto : censusKqDtos) { 239 for (CensusKqDto censusKqDto : censusKqDtos) {
247 - int number = censusKqDto.getAllT() - censusKqDto.getKqT()-censusKqDto.getQjT() ;  
248 - number = number < 0?0:number ;  
249 - message += "[" + censusKqDto.getClassName() + "]未考勤" + number + "人,请假"+censusKqDto.getQjT()+"人;"; 240 + message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假"+censusKqDto.getLeaveCount()+"人;";
250 } 241 }
251 WeChatSms weChatSms = new WeChatSms(); 242 WeChatSms weChatSms = new WeChatSms();
252 weChatSms.setTableName("qyhSmsNew" + tableSuffix); 243 weChatSms.setTableName("qyhSmsNew" + tableSuffix);
@@ -256,38 +247,32 @@ public class KQJob { @@ -256,38 +247,32 @@ public class KQJob {
256 "整体数据:" + message); 247 "整体数据:" + message);
257 weChatSms.setSchoolId(teacher.getSchoolId()); 248 weChatSms.setSchoolId(teacher.getSchoolId());
258 weChatSms.setName(teacher.getName()); 249 weChatSms.setName(teacher.getName());
259 - weChatSms.setQiYeHaoUserId(teacher.getWeChatUserId()); 250 + weChatSms.setQiYeHaoUserId(thirdOpenId);
260 weChatSms.setReceiveUserId(teacher.getUserId()); 251 weChatSms.setReceiveUserId(teacher.getUserId());
261 weChatSms.setAppId(appDto.getAgentId()); 252 weChatSms.setAppId(appDto.getAgentId());
262 weChatSms.setSecret(appDto.getAgentSecret()); 253 weChatSms.setSecret(appDto.getAgentSecret());
263 String msgUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + 254 String msgUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" +
264 "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() +"&TemplateId=" + templateId+ 255 "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() +"&TemplateId=" + templateId+
265 - "&data=" + teacher.getWeChatUserId() + "&type=1&stype=3&mobile=" + teacher.getMobile() + "&pass=" + teacher.getPass() + 256 + "&data=" + thirdOpenId + "&type=1&stype=3&mobile=" + teacher.getMobile() + "&pass=" + teacher.getPass() +
266 "&face=" + teacher.getFace() + "&sourcetype=16&soutype=2&timestamp=" + DateUtils.getDate()+"&time="+DateUtils.date2String(new Date(),DateUtils.format1)+"&"; 257 "&face=" + teacher.getFace() + "&sourcetype=16&soutype=2&timestamp=" + DateUtils.getDate()+"&time="+DateUtils.date2String(new Date(),DateUtils.format1)+"&";
267 weChatSms.setMsgUrl(msgUrl); 258 weChatSms.setMsgUrl(msgUrl);
268 weChatSms.setTdType(TypeEnums.kaoqing.getType()); 259 weChatSms.setTdType(TypeEnums.kaoqing.getType());
269 - smsMapper.insertWeChat(weChatSms); 260 + this.insertQYH(weChatSms);
270 } 261 }
271 } 262 }
272 } 263 }
273 264
  265 + //企业号推送宿管
274 private void weChatChamberPush(String templateId, KqTeacherDto teacher , String key , AppDto appDto){ 266 private void weChatChamberPush(String templateId, KqTeacherDto teacher , String key , AppDto appDto){
275 String[] times = key.split("_"); 267 String[] times = key.split("_");
276 String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); 268 String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format);
277 - if (StringUtils.isNotBlank(teacher.getOpenId())) {  
278 - List<CensusKqDto> censusKqDtos ;  
279 - KqDto dto = new KqDto();  
280 - dto.setEndTime(times[1]);  
281 - dto.setTemplateId(templateId);  
282 - dto.setType(times[2]);  
283 - dto.setUserId(teacher.getUserId());  
284 - censusKqDtos = scFeign.selectCensusChamberKq(dto); 269 + String thirdOpenId = scFeign.getThirdId(teacher.getUserId(),1);
  270 + if (StringUtils.isNotBlank(thirdOpenId)) {
  271 + List<CensusKqDto> censusKqDtos = getCensus(Integer.valueOf(times[3]),templateId,teacher.getSchoolId(),teacher.getUserId(),1);
285 if (censusKqDtos != null && censusKqDtos.size() > 0) { 272 if (censusKqDtos != null && censusKqDtos.size() > 0) {
286 String message = ""; 273 String message = "";
287 for (CensusKqDto censusKqDto : censusKqDtos) { 274 for (CensusKqDto censusKqDto : censusKqDtos) {
288 - int number = censusKqDto.getAllT() - censusKqDto.getKqT()-censusKqDto.getQjT() ;  
289 - number = number < 0?0:number ;  
290 - message += "[" + censusKqDto.getClassName() + "]未考勤" + number + "人,请假"+censusKqDto.getQjT()+"人;"; 275 + message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假"+censusKqDto.getLeaveCount()+"人;";
291 } 276 }
292 WeChatSms weChatSms = new WeChatSms(); 277 WeChatSms weChatSms = new WeChatSms();
293 weChatSms.setTableName("qyhSmsNew" + tableSuffix); 278 weChatSms.setTableName("qyhSmsNew" + tableSuffix);
@@ -297,7 +282,7 @@ public class KQJob { @@ -297,7 +282,7 @@ public class KQJob {
297 "整体数据:" + message); 282 "整体数据:" + message);
298 weChatSms.setSchoolId(teacher.getSchoolId()); 283 weChatSms.setSchoolId(teacher.getSchoolId());
299 weChatSms.setName(teacher.getName()); 284 weChatSms.setName(teacher.getName());
300 - weChatSms.setQiYeHaoUserId(teacher.getWeChatUserId()); 285 + weChatSms.setQiYeHaoUserId(thirdOpenId);
301 weChatSms.setReceiveUserId(teacher.getUserId()); 286 weChatSms.setReceiveUserId(teacher.getUserId());
302 weChatSms.setAppId(appDto.getAgentId()); 287 weChatSms.setAppId(appDto.getAgentId());
303 weChatSms.setSecret(appDto.getAgentSecret()); 288 weChatSms.setSecret(appDto.getAgentSecret());
@@ -306,8 +291,46 @@ public class KQJob { @@ -306,8 +291,46 @@ public class KQJob {
306 "&pass=" + teacher.getPass() + "&type=4&soutype=2&time="+DateUtils.date2String(new Date(),DateUtils.format1)+"&"; 291 "&pass=" + teacher.getPass() + "&type=4&soutype=2&time="+DateUtils.date2String(new Date(),DateUtils.format1)+"&";
307 weChatSms.setMsgUrl(msgUrl); 292 weChatSms.setMsgUrl(msgUrl);
308 weChatSms.setTdType(TypeEnums.kaoqing.getType()); 293 weChatSms.setTdType(TypeEnums.kaoqing.getType());
309 - smsMapper.insertWeChat(weChatSms); 294 + this.insertQYH(weChatSms);
310 } 295 }
311 } 296 }
312 } 297 }
  298 +
  299 + //type 0 出入校 1 出入寝
  300 + private List<CensusKqDto> getCensus(int id , String templateId ,int schoolId , String userId ,int type){
  301 + List<CensusKqDto> list = new ArrayList<>();
  302 + CensusKqDto censusKqDto = new CensusKqDto();
  303 + String url = "http://campus.myjxt.com/api/EasyN/GeAttendDetailNew?schoolId="+schoolId+
  304 + "&id="+id+"&templateID="+templateId+"&type="+type+"&userId="+userId+"&time=" + DateUtils.date2String(new Date(),DateUtils.format1);
  305 + JSONObject jsonObject = HttpClientUtils.httpGet(url);
  306 + try{
  307 + JSONArray data = (JSONArray)jsonObject.get("data");
  308 + for(int i = 0 ; i < data.size() ; i++){
  309 + JSONObject object = data.getJSONObject(i);
  310 + censusKqDto.setLeaveCount((Integer) object.get("leaveCount"));
  311 + censusKqDto.setNotAttendCount((Integer) object.get("noAttendCount"));
  312 + censusKqDto.setTargetName((String)object.get("name"));
  313 + }
  314 + list.add(censusKqDto);
  315 + }catch (Exception e){
  316 +
  317 + }
  318 + return list ;
  319 + }
  320 +
  321 + private void insertDing(DingSms dingSms){
  322 + try{
  323 + smsMapper.insertDing(dingSms);
  324 + }catch (Exception e){
  325 + logger.info(e.toString());
  326 + }
  327 + }
  328 +
  329 + private void insertQYH(WeChatSms weChatSms){
  330 + try{
  331 + smsMapper.insertWeChat(weChatSms);
  332 + }catch (Exception e){
  333 + logger.info(e.toString());
  334 + }
  335 + }
313 } 336 }
cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/KqController.java
@@ -27,6 +27,7 @@ public class KqController { @@ -27,6 +27,7 @@ public class KqController {
27 List<TemplateDto> templateDtos = new ArrayList<>(); 27 List<TemplateDto> templateDtos = new ArrayList<>();
28 for(KqTemplate kqTemplate : list){ 28 for(KqTemplate kqTemplate : list){
29 TemplateDto templateDto = new TemplateDto(); 29 TemplateDto templateDto = new TemplateDto();
  30 + templateDto.setId(kqTemplate.getId());
30 templateDto.setConfig(kqTemplate.getConfig()); 31 templateDto.setConfig(kqTemplate.getConfig());
31 templateDto.setSchoolId(kqTemplate.getSchoolId()); 32 templateDto.setSchoolId(kqTemplate.getSchoolId());
32 templateDto.setType(kqTemplate.getType()); 33 templateDto.setType(kqTemplate.getType());
@@ -54,13 +55,11 @@ public class KqController { @@ -54,13 +55,11 @@ public class KqController {
54 return kqService.selectApp(map); 55 return kqService.selectApp(map);
55 } 56 }
56 57
57 - @RequestMapping(value = "getCensusKq",method = RequestMethod.POST)  
58 - public List<CensusKqDto> getCensusKq(@RequestBody KqDto kqDto){  
59 - return kqService.selectCensusKq(kqDto);  
60 - }  
61 -  
62 - @RequestMapping(value = "selectCensusChamberKq",method = RequestMethod.POST)  
63 - public List<CensusKqDto> selectCensusChamberKq(@RequestBody KqDto kqDto){  
64 - return kqService.selectCensusChamberKq(kqDto); 58 + @RequestMapping(value = "getThirdId",method = RequestMethod.GET)
  59 + public String getThirdId(@RequestParam("userId")String userId , @RequestParam("type") int type){
  60 + Map<String ,String> map = new HashMap<>();
  61 + map.put("userId",userId);
  62 + map.put("type",type+"");
  63 + return kqService.selectThirdId(map);
65 } 64 }
66 } 65 }
cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/RegisterPushController.java 0 → 100644
@@ -0,0 +1,50 @@ @@ -0,0 +1,50 @@
  1 +package com.sincere.smartSearch.controller;
  2 +
  3 +import com.sincere.common.dto.smartCampus.BindPushDto;
  4 +import com.sincere.common.dto.smartCampus.ParentDto;
  5 +import com.sincere.smartSearch.service.RegisterPushService;
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.web.bind.annotation.RequestMapping;
  8 +import org.springframework.web.bind.annotation.RequestMethod;
  9 +import org.springframework.web.bind.annotation.RequestParam;
  10 +import org.springframework.web.bind.annotation.RestController;
  11 +
  12 +import java.util.HashMap;
  13 +import java.util.List;
  14 +import java.util.Map;
  15 +
  16 +/**
  17 + * @author chen
  18 + * @version 1.0
  19 + * @date 2019/12/10 0010 11:20
  20 + */
  21 +@RestController
  22 +@RequestMapping("/sm/rp")
  23 +public class RegisterPushController {
  24 +
  25 + @Autowired
  26 + RegisterPushService registerPushService ;
  27 +
  28 + @RequestMapping(value = "selectBindPushSchool",method = RequestMethod.GET)
  29 + List<BindPushDto> selectBindPushSchool(){
  30 + return registerPushService.selectBindPushSchool();
  31 + }
  32 +
  33 + @RequestMapping(value = "selectNotFollow",method = RequestMethod.GET)
  34 + List<ParentDto> selectNotFollow(@RequestParam("schoolId") int schoolId){
  35 + return registerPushService.selectNotFollow(schoolId);
  36 + }
  37 +
  38 + @RequestMapping(value = "selectFollow",method = RequestMethod.GET)
  39 + List<ParentDto> selectFollow(@RequestParam("schoolId") int schoolId){
  40 + return registerPushService.selectFollow(schoolId);
  41 + }
  42 +
  43 + @RequestMapping(value = "selectNotBind",method = RequestMethod.GET)
  44 + List<ParentDto> selectNotBind(@RequestParam("schoolId") int schoolId , @RequestParam("type") int type){
  45 + Map<String , Integer> map = new HashMap<>();
  46 + map.put("schoolId",schoolId);
  47 + map.put("type",type);
  48 + return registerPushService.selectNotBind(map);
  49 + }
  50 +}
cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/KqTemplateMapper.java
@@ -24,25 +24,6 @@ public interface KqTemplateMapper { @@ -24,25 +24,6 @@ public interface KqTemplateMapper {
24 24
25 AppDto selectApp(Map<String,Integer> map); 25 AppDto selectApp(Map<String,Integer> map);
26 26
27 - List<CensusKqDto> selectCensusKq(Map<String ,String> map); 27 + String selectThirdId(Map<String,String> map);
28 28
29 - List<KqChamber> selectChamberName(String userId);  
30 -  
31 - int selectChamberAllKq(Map<String,String> map);  
32 -  
33 - int selectChamberTrueKq(Map<String,String> map);  
34 -  
35 - int selectClassDealDateCHUQIN(Map<String,String> map);  
36 -  
37 - int selectClassDealDateQINGJIA(Map<String,String> map);  
38 -  
39 - int selectClassLeave(Map<String,String> map);  
40 -  
41 - int selectChamberDealDateCHUQIN(Map<String,String> map);  
42 -  
43 - int selectChamberDealDateQINGJIA(Map<String,String> map);  
44 -  
45 - int selectChamberLeave(Map<String,String> map);  
46 -  
47 - int selectClassChamberNumber(int classId);  
48 } 29 }
cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/RegisterPushMapper.java 0 → 100644
@@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
  1 +package com.sincere.smartSearch.mapper;
  2 +
  3 +import com.sincere.common.dto.smartCampus.BindPushDto;
  4 +import com.sincere.common.dto.smartCampus.ParentDto;
  5 +
  6 +import java.util.List;
  7 +import java.util.Map;
  8 +
  9 +/**
  10 + * @author chen
  11 + * @version 1.0
  12 + * @date 2019/12/10 0010 10:26
  13 + */
  14 +public interface RegisterPushMapper {
  15 +
  16 + List<BindPushDto> selectBindPushSchool();
  17 +
  18 + List<ParentDto> selectNotFollow(int schoolId) ;
  19 +
  20 + List<ParentDto> selectFollow(int schoolId) ;
  21 +
  22 + List<ParentDto> selectNotBind(Map<String , Integer> map);
  23 +}
cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/model/KqTemplate.java
@@ -7,10 +7,19 @@ package com.sincere.smartSearch.model; @@ -7,10 +7,19 @@ package com.sincere.smartSearch.model;
7 */ 7 */
8 public class KqTemplate { 8 public class KqTemplate {
9 9
  10 + private int id ;
10 private String config ; 11 private String config ;
11 private int schoolId ; 12 private int schoolId ;
12 private String type ; 13 private String type ;
13 14
  15 + public int getId() {
  16 + return id;
  17 + }
  18 +
  19 + public void setId(int id) {
  20 + this.id = id;
  21 + }
  22 +
14 public String getConfig() { 23 public String getConfig() {
15 return config; 24 return config;
16 } 25 }
cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/KqService.java
@@ -24,7 +24,5 @@ public interface KqService { @@ -24,7 +24,5 @@ public interface KqService {
24 24
25 AppDto selectApp(Map<String,Integer> map); 25 AppDto selectApp(Map<String,Integer> map);
26 26
27 - List<CensusKqDto> selectCensusKq(KqDto kqDto);  
28 -  
29 - List<CensusKqDto> selectCensusChamberKq(KqDto kqDto); 27 + String selectThirdId(Map<String,String> map);
30 } 28 }
cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/RegisterPushService.java 0 → 100644
@@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
  1 +package com.sincere.smartSearch.service;
  2 +
  3 +import com.sincere.common.dto.smartCampus.BindPushDto;
  4 +import com.sincere.common.dto.smartCampus.ParentDto;
  5 +
  6 +import java.util.List;
  7 +import java.util.Map;
  8 +
  9 +/**
  10 + * @author chen
  11 + * @version 1.0
  12 + * @date 2019/12/10 0010 11:17
  13 + */
  14 +public interface RegisterPushService {
  15 +
  16 + List<BindPushDto> selectBindPushSchool();
  17 +
  18 + List<ParentDto> selectNotFollow(int schoolId) ;
  19 +
  20 + List<ParentDto> selectFollow(int schoolId) ;
  21 +
  22 + List<ParentDto> selectNotBind(Map<String , Integer> map);
  23 +}
cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/KqServiceImpl.java
@@ -46,62 +46,7 @@ public class KqServiceImpl implements KqService { @@ -46,62 +46,7 @@ public class KqServiceImpl implements KqService {
46 } 46 }
47 47
48 @Override 48 @Override
49 - public List<CensusKqDto> selectCensusKq(KqDto kqDto) {  
50 - String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format);  
51 - Map<String,String> map = new HashMap<>();  
52 - map.put("userId",kqDto.getUserId());  
53 - map.put("tableName","SZ_AttendanceRecords"+tableSuffix);  
54 - map.put("type",kqDto.getType());  
55 - List<CensusKqDto> list = kqTemplateMapper.selectCensusKq(map);  
56 - for(CensusKqDto censusKqDto : list){  
57 - if(Integer.valueOf(kqDto.getType()) >= 7){  
58 - //出入寝  
59 - int classNumber = kqTemplateMapper.selectClassChamberNumber(censusKqDto.getClassId());  
60 - censusKqDto.setAllT(classNumber);  
61 - }  
62 - Map<String,String> sqlMap = new HashMap<>();  
63 - sqlMap.put("templateId",kqDto.getTemplateId());  
64 - sqlMap.put("classId",censusKqDto.getClassId()+"");  
65 - int chuqin = kqTemplateMapper.selectClassDealDateCHUQIN(sqlMap);  
66 - int qingjia = kqTemplateMapper.selectClassDealDateQINGJIA(sqlMap);  
67 - String date = DateUtils.date2String(new Date(),DateUtils.format1);  
68 - sqlMap.put("endTime",date+" " + kqDto.getEndTime() +":00");  
69 - qingjia = qingjia + kqTemplateMapper.selectClassLeave(sqlMap);  
70 - censusKqDto.setKqT(censusKqDto.getKqT()+chuqin);  
71 - censusKqDto.setQjT(qingjia);  
72 - }  
73 - return list ;  
74 - }  
75 -  
76 - @Override  
77 - public List<CensusKqDto> selectCensusChamberKq(KqDto kqDto) {  
78 - String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format);  
79 - Map<String,String> map = new HashMap<>();  
80 - map.put("userId",kqDto.getUserId());  
81 - map.put("tableName","SZ_AttendanceRecords"+tableSuffix);  
82 - map.put("type",kqDto.getType());  
83 - List<CensusKqDto> list = new ArrayList<>();  
84 - List<KqChamber> chambers = kqTemplateMapper.selectChamberName(map.get("userId"));  
85 - for(KqChamber chamber :chambers){  
86 - CensusKqDto censusKqDto = new CensusKqDto();  
87 - map.put("id",chamber.getId()+"");  
88 - int allKq = kqTemplateMapper.selectChamberAllKq(map);  
89 - int trueKq = kqTemplateMapper.selectChamberTrueKq(map);  
90 - censusKqDto.setClassName(chamber.getName());  
91 - censusKqDto.setAllT(allKq);  
92 - Map<String,String> sqlMap = new HashMap<>();  
93 - sqlMap.put("templateId",kqDto.getTemplateId());  
94 - sqlMap.put("userId",kqDto.getUserId());  
95 - sqlMap.put("id",chamber.getId()+"");  
96 - int chuqin = kqTemplateMapper.selectChamberDealDateCHUQIN(sqlMap);  
97 - int qingjia = kqTemplateMapper.selectChamberDealDateQINGJIA(sqlMap);  
98 - String date = DateUtils.date2String(new Date(),DateUtils.format1);  
99 - sqlMap.put("endTime",date+" " + kqDto.getEndTime() +":00");  
100 - qingjia = qingjia + kqTemplateMapper.selectChamberLeave(sqlMap);  
101 - censusKqDto.setKqT(trueKq+chuqin);  
102 - censusKqDto.setKqT(qingjia);  
103 - list.add(censusKqDto);  
104 - }  
105 - return list; 49 + public String selectThirdId(Map<String, String> map) {
  50 + return kqTemplateMapper.selectThirdId(map);
106 } 51 }
107 } 52 }
cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/RegisterPushServiceImpl.java 0 → 100644
@@ -0,0 +1,43 @@ @@ -0,0 +1,43 @@
  1 +package com.sincere.smartSearch.service.impl;
  2 +
  3 +import com.sincere.common.dto.smartCampus.BindPushDto;
  4 +import com.sincere.common.dto.smartCampus.ParentDto;
  5 +import com.sincere.smartSearch.mapper.RegisterPushMapper;
  6 +import com.sincere.smartSearch.service.RegisterPushService;
  7 +import org.springframework.beans.factory.annotation.Autowired;
  8 +import org.springframework.stereotype.Service;
  9 +
  10 +import java.util.List;
  11 +import java.util.Map;
  12 +
  13 +/**
  14 + * @author chen
  15 + * @version 1.0
  16 + * @date 2019/12/10 0010 11:18
  17 + */
  18 +@Service
  19 +public class RegisterPushServiceImpl implements RegisterPushService {
  20 +
  21 + @Autowired
  22 + RegisterPushMapper registerPushMapper ;
  23 +
  24 + @Override
  25 + public List<BindPushDto> selectBindPushSchool() {
  26 + return registerPushMapper.selectBindPushSchool();
  27 + }
  28 +
  29 + @Override
  30 + public List<ParentDto> selectNotFollow(int schoolId) {
  31 + return registerPushMapper.selectNotFollow(schoolId);
  32 + }
  33 +
  34 + @Override
  35 + public List<ParentDto> selectFollow(int schoolId) {
  36 + return registerPushMapper.selectFollow(schoolId);
  37 + }
  38 +
  39 + @Override
  40 + public List<ParentDto> selectNotBind(Map<String, Integer> map) {
  41 + return registerPushMapper.selectNotBind(map);
  42 + }
  43 +}
cloud/search_smartCampus/src/main/resources/mapper/KqTemplateMapper.xml
@@ -3,13 +3,14 @@ @@ -3,13 +3,14 @@
3 <mapper namespace="com.sincere.smartSearch.mapper.KqTemplateMapper"> 3 <mapper namespace="com.sincere.smartSearch.mapper.KqTemplateMapper">
4 4
5 <resultMap id="TemplateMap" type="com.sincere.smartSearch.model.KqTemplate"> 5 <resultMap id="TemplateMap" type="com.sincere.smartSearch.model.KqTemplate">
  6 + <result column="Id" property="id"/>
6 <result column="config" property="config"/> 7 <result column="config" property="config"/>
7 <result column="SchoolId" property="schoolId"/> 8 <result column="SchoolId" property="schoolId"/>
8 <result column="type" property="type"/> 9 <result column="type" property="type"/>
9 </resultMap> 10 </resultMap>
10 11
11 <select id="selectKqTemplate" resultMap="TemplateMap"> 12 <select id="selectKqTemplate" resultMap="TemplateMap">
12 - select XA_KqTemplate.config , XA_KqTemplate.SchoolId ,SZ_School.MsgTypes as type from XA_KqTemplate 13 + select XA_KqTemplate.Id , XA_KqTemplate.config , XA_KqTemplate.SchoolId ,SZ_School.MsgTypes as type from XA_KqTemplate
13 join SZ_School on XA_KqTemplate.SchoolId = SZ_School.school_id 14 join SZ_School on XA_KqTemplate.SchoolId = SZ_School.school_id
14 where XA_KqTemplate.State = 1 and XA_KqTemplate.TType = 1 15 where XA_KqTemplate.State = 1 and XA_KqTemplate.TType = 1
15 and (SZ_School.MsgTypes like '%4%' or SZ_School.MsgTypes like '%5%') 16 and (SZ_School.MsgTypes like '%4%' or SZ_School.MsgTypes like '%5%')
@@ -22,13 +23,11 @@ @@ -22,13 +23,11 @@
22 <result column="name" property="name"/> 23 <result column="name" property="name"/>
23 <result column="mobile" property="mobile"/> 24 <result column="mobile" property="mobile"/>
24 <result column="pass" property="pass"/> 25 <result column="pass" property="pass"/>
25 - <result column="DingUserId" property="dingUserId"/>  
26 - <result column="QiYeHaoUserId" property="weChatUserId"/>  
27 <result column="OpenId" property="openId"/> 26 <result column="OpenId" property="openId"/>
28 <result column="face" property="face"/> 27 <result column="face" property="face"/>
29 </resultMap> 28 </resultMap>
30 <select id="selectSchoolTeacher" parameterType="java.lang.Integer" resultMap="TeacherMap"> 29 <select id="selectSchoolTeacher" parameterType="java.lang.Integer" resultMap="TeacherMap">
31 - select distinct a.user_id,a.school_id,a.name,a.mobile,a.face,a.pass, a.OpenId,a.QiYeHaoUserId,a.DingUserId 30 + select distinct a.user_id,a.school_id,a.name,a.mobile,a.face,a.pass, a.OpenId
32 from SZ_V_School_Teacher a 31 from SZ_V_School_Teacher a
33 inner join SZ_Class b on a.class_id=b.class_id and b.state=1 and b.is_finish=0 32 inner join SZ_Class b on a.class_id=b.class_id and b.state=1 and b.is_finish=0
34 join SZ_UserRole on a.user_id = SZ_UserRole.user_id 33 join SZ_UserRole on a.user_id = SZ_UserRole.user_id
@@ -37,7 +36,7 @@ @@ -37,7 +36,7 @@
37 </select> 36 </select>
38 37
39 <select id="selectChamberTeacher" parameterType="java.lang.Integer" resultMap="TeacherMap"> 38 <select id="selectChamberTeacher" parameterType="java.lang.Integer" resultMap="TeacherMap">
40 - select distinct a.user_id,a.school_id,a.name,a.mobile,a.face,a.pass, a.OpenId,a.QiYeHaoUserId,a.DingUserId 39 + select distinct a.user_id,a.school_id,a.name,a.mobile,a.face,a.pass, a.OpenId
41 from SS_Room join SS_RoomManager on SS_Room.Id = SS_RoomManager.RoomId 40 from SS_Room join SS_RoomManager on SS_Room.Id = SS_RoomManager.RoomId
42 join SZ_V_School_Teacher a on a.user_id = SS_RoomManager.ManagerId 41 join SZ_V_School_Teacher a on a.user_id = SS_RoomManager.ManagerId
43 where SS_Room.SchoolId = #{schoolId} and SS_Room.Status = 1 42 where SS_Room.SchoolId = #{schoolId} and SS_Room.Status = 1
@@ -52,116 +51,8 @@ @@ -52,116 +51,8 @@
52 and ApplyName = '智能校卫' 51 and ApplyName = '智能校卫'
53 </select> 52 </select>
54 53
55 - <select id="selectClassChamberNumber" parameterType="java.lang.Integer" resultType="java.lang.Integer">  
56 - select count(0) from SZ_V_School_Student where class_id=#{classId} and student_type=2  
57 - </select>  
58 -  
59 - <resultMap id="KqMap" type="com.sincere.common.dto.smartCampus.CensusKqDto">  
60 - <result column="class_id" property="classId"/>  
61 - <result column="class_name" property="className"/>  
62 - <result column="allT" property="allT"/>  
63 - <result column="kqT" property="kqT"/>  
64 - </resultMap>  
65 - <select id="selectCensusKq" parameterType="java.util.Map" resultMap="KqMap">  
66 - select distinct b.class_id , b.class_name,  
67 - (select count(distinct user_id) from SZ_V_School_Student x where c.class_id=x.class_id) as allT,  
68 - (select count(distinct customerid) from dblan27.xiaoanhxy.dbo.${tableName} y  
69 - where convert(varchar(10),y.intime,120)=convert(varchar(10),getdate(),120) and y.class_id=c.class_id and y.card_type=#{type}) as kqT  
70 - from sz_userrole c  
71 - inner join SZ_Class b on c.class_id=b.class_id and b.state=1 and b.is_finish=0  
72 - inner join SZ_V_School_Teacher a on a.user_id=c.user_id and c.usertype=0  
73 - where a.role_state=1 and a.user_id=#{userId}  
74 - </select>  
75 -  
76 - <select id="selectClassDealDateCHUQIN" parameterType="java.util.Map" resultType="java.lang.Integer">  
77 - select count(0) from EQ_DealData join SZ_V_School_Student on EQ_DealData.UserId = SZ_V_School_Student.user_id  
78 - where EQ_DealData.DealState ='出勤'  
79 - and EQ_DealData.TemplateId = #{templateId} and DealDate = CONVERT ( VARCHAR ( 10 ), getdate(), 120 )  
80 - and SZ_V_School_Student.class_id = #{classId}  
81 - </select>  
82 54
83 - <select id="selectClassDealDateQINGJIA" parameterType="java.util.Map" resultType="java.lang.Integer">  
84 - select count(0) from EQ_DealData join SZ_V_School_Student on EQ_DealData.UserId = SZ_V_School_Student.user_id  
85 - where EQ_DealData.DealState = '请假'  
86 - and EQ_DealData.TemplateId = #{templateId} and DealDate = CONVERT ( VARCHAR ( 10 ), getdate(), 120 )  
87 - and SZ_V_School_Student.class_id = #{classId}  
88 - </select>  
89 -  
90 - <select id="selectClassLeave" parameterType="java.util.Map" resultType="java.lang.Integer">  
91 - select COUNT ( DISTINCT HS_LeaveExamine.StudentId ) from HS_LeaveExamine join SZ_V_School_Student on HS_LeaveExamine.StudentId = SZ_V_School_Student.student_id  
92 - where HS_LeaveExamine.State in (2,7,8,9,10,11) and HS_LeaveExamine.ReturnTime &gt; #{endTime} and HS_LeaveExamine.LeaveTime &lt; #{endTime}  
93 - and SZ_V_School_Student.class_id = #{classId}  
94 - </select>  
95 -  
96 - <resultMap id="ChamberMap" type="com.sincere.smartSearch.model.KqChamber">  
97 - <result column="Id" property="id"/>  
98 - <result column="name" property="name"/>  
99 - </resultMap>  
100 - <select id="selectChamberName" parameterType="java.lang.String" resultMap="ChamberMap">  
101 - select SS_Room.Id , SS_Room.name as name from SS_RoomManager join SS_Room on SS_Room.Id = SS_RoomManager.RoomId  
102 - where SS_RoomManager.ManagerId = #{userId} 55 + <select id="selectThirdId" parameterType="java.util.Map" resultType="java.lang.String">
  56 + select DQuserId from EM_QyDingUser where HxyUserId = #{userId} and State = 1 and QyType = #{type}
103 </select> 57 </select>
104 -  
105 - <select id="selectChamberAllKq" parameterType="java.util.Map" resultType="java.lang.Integer">  
106 - select count(0) as allT from SS_Room join SS_RoomNumber on SS_Room.Id = SS_RoomNumber.Pid  
107 - where SS_Room.Pid in (  
108 - select SS_Room.ID from SS_RoomManager join SS_Room on SS_Room.Id = SS_RoomManager.RoomId  
109 - where SS_RoomManager.ManagerId = #{userId} and SS_Room.Id = ${id}  
110 - ) and SS_RoomNumber.StudentId != 0  
111 - </select>  
112 -  
113 - <select id="selectChamberTrueKq" parameterType="java.util.Map" resultType="java.lang.Integer">  
114 - SELECT COUNT ( DISTINCT customerid ) AS kqT FROM dblan27.xiaoanhxy.dbo.${tableName} y  
115 - WHERE CONVERT ( VARCHAR ( 10 ), y.intime, 120 ) = CONVERT ( VARCHAR ( 10 ), getdate(), 120 )  
116 - AND y.card_type= #{type}  
117 - AND y.customerId IN (  
118 - SELECT SS_RoomNumber.StudentId AS customerId  
119 - FROM SS_RoomNumber JOIN SS_Room ON SS_Room.Id = SS_RoomNumber.Pid  
120 - WHERE SS_Room.Pid IN (  
121 - SELECT SS_Room.ID FROM SS_RoomManager JOIN SS_Room ON SS_Room.Id = SS_RoomManager.RoomId  
122 - WHERE SS_RoomManager.ManagerId = #{userId} and SS_Room.Id = ${id}  
123 - )  
124 - AND SS_RoomNumber.StudentId != 0  
125 - )  
126 - </select>  
127 -  
128 - <select id="selectChamberDealDateCHUQIN" parameterType="java.util.Map" resultType="java.lang.Integer">  
129 - select count(0) from EQ_DealData join SZ_V_School_Student on EQ_DealData.UserId = SZ_V_School_Student.user_id  
130 - where EQ_DealData.DealState ='出勤'  
131 - and EQ_DealData.TemplateId = #{templateId} and DealDate = CONVERT ( VARCHAR ( 10 ), getdate(), 120 )  
132 - and SZ_V_School_Student.student_id in (  
133 - select SS_RoomNumber.StudentId from SS_Room join SS_RoomNumber on SS_Room.Id = SS_RoomNumber.Pid  
134 - where SS_Room.Pid in (  
135 - select SS_Room.ID from SS_RoomManager join SS_Room on SS_Room.Id = SS_RoomManager.RoomId  
136 - where SS_RoomManager.ManagerId = #{userId} and SS_Room.Id = ${id}  
137 - ) and SS_RoomNumber.StudentId != 0  
138 - )  
139 - </select>  
140 -  
141 - <select id="selectChamberDealDateQINGJIA" parameterType="java.util.Map" resultType="java.lang.Integer">  
142 - select count(0) from EQ_DealData join SZ_V_School_Student on EQ_DealData.UserId = SZ_V_School_Student.user_id  
143 - where EQ_DealData.DealState ='请假'  
144 - and EQ_DealData.TemplateId = #{templateId} and DealDate = CONVERT ( VARCHAR ( 10 ), getdate(), 120 )  
145 - and SZ_V_School_Student.student_id in (  
146 - select SS_RoomNumber.StudentId from SS_Room join SS_RoomNumber on SS_Room.Id = SS_RoomNumber.Pid  
147 - where SS_Room.Pid in (  
148 - select SS_Room.ID from SS_RoomManager join SS_Room on SS_Room.Id = SS_RoomManager.RoomId  
149 - where SS_RoomManager.ManagerId = #{userId} and SS_Room.Id = ${id}  
150 - ) and SS_RoomNumber.StudentId != 0  
151 - )  
152 - </select>  
153 -  
154 - <select id="selectChamberLeave" parameterType="java.util.Map" resultType="java.lang.Integer">  
155 - select COUNT ( DISTINCT HS_LeaveExamine.StudentId ) from HS_LeaveExamine join SZ_V_School_Student on HS_LeaveExamine.StudentId = SZ_V_School_Student.student_id  
156 - where HS_LeaveExamine.State in (2,7,8,9,10,11) and HS_LeaveExamine.ReturnTime &gt; #{endTime} and HS_LeaveExamine.LeaveTime &lt; #{endTime}  
157 - and SZ_V_School_Student.student_id in (  
158 - select SS_RoomNumber.StudentId from SS_Room join SS_RoomNumber on SS_Room.Id = SS_RoomNumber.Pid  
159 - where SS_Room.Pid in (  
160 - select SS_Room.ID from SS_RoomManager join SS_Room on SS_Room.Id = SS_RoomManager.RoomId  
161 - where SS_RoomManager.ManagerId = #{userId} and SS_Room.Id = ${id}  
162 - ) and SS_RoomNumber.StudentId != 0  
163 - )  
164 - </select>  
165 -  
166 -  
167 </mapper> 58 </mapper>
cloud/search_smartCampus/src/main/resources/mapper/RegisterPushMapper.xml 0 → 100644
@@ -0,0 +1,61 @@ @@ -0,0 +1,61 @@
  1 +<?xml version="1.0" encoding="UTF-8" ?>
  2 +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
  3 +<mapper namespace="com.sincere.smartSearch.mapper.RegisterPushMapper" >
  4 +
  5 + <resultMap id="BindPushDto" type="com.sincere.common.dto.smartCampus.BindPushDto" >
  6 + <result column="SchoolId" property="schoolId" />
  7 + <result column="type" property="type" />
  8 + <result column="BeginDate" property="beginDate" />
  9 + <result column="EndDate" property="endDate" />
  10 + <result column="IntervalDays" property="intervalDays" />
  11 + <result column="PushTime" property="pushTime" />
  12 + <result column="Msg" property="msg" />
  13 + </resultMap>
  14 +
  15 + <select id="selectBindPushSchool" resultType="java.lang.Integer" resultMap="BindPushDto">
  16 + select SchoolId , type , BeginDate , EndDate , IntervalDays. PushTime , Msg from EM_QYHID where isPush = 1
  17 + </select>
  18 +
  19 +
  20 + <resultMap id="ParentMap" type="com.sincere.common.dto.smartCampus.ParentDto">
  21 + <result column="parent_id" property="parentId"/>
  22 + <result column="school_id" property="schoolId"/>
  23 + <result column="mobile" property="mobile"/>
  24 + </resultMap>
  25 +
  26 + <select id="selectNotFollow" parameterType="java.lang.Integer" resultMap="ParentMap">
  27 + SELECT SZ_V_School_Parent.parent_id , SZ_V_School_Parent.school_id , SZ_V_School_Parent.mobile FROM SZ_V_School_Parent WHERE not EXISTS
  28 + (SELECT NULL
  29 + FROM SZ_V_School_Student
  30 + WHERE SZ_V_School_Parent.class_id = SZ_V_School_Student.class_id
  31 + AND SZ_V_School_Parent.parent_mobile = SZ_V_School_Student.ParentMobile
  32 + )
  33 + and school_id = #{schoolId}
  34 + </select>
  35 +
  36 + <select id="selectFollow" parameterType="java.lang.Integer" resultMap="ParentMap">
  37 + SELECT SZ_V_School_Parent.parent_id , SZ_V_School_Parent.school_id , SZ_V_School_Parent.mobile FROM SZ_V_School_Parent WHERE EXISTS
  38 + (SELECT NULL
  39 + FROM SZ_V_School_Student
  40 + WHERE SZ_V_School_Parent.class_id = SZ_V_School_Student.class_id
  41 + AND SZ_V_School_Parent.parent_mobile = SZ_V_School_Student.ParentMobile
  42 + )
  43 + and school_id = #{schoolId}
  44 + </select>
  45 +
  46 + <select id="selectNotBind" parameterType="java.util.Map" resultMap="ParentMap">
  47 + SELECT SZ_V_School_Parent.parent_id , SZ_V_School_Parent.school_id , SZ_V_School_Parent.mobile FROM SZ_V_School_Parent WHERE EXISTS
  48 + (SELECT NULL
  49 + FROM SZ_V_School_Student
  50 + WHERE SZ_V_School_Parent.class_id = SZ_V_School_Student.class_id
  51 + AND SZ_V_School_Parent.parent_mobile = SZ_V_School_Student.ParentMobile
  52 + )
  53 + and school_id = #{schoolId}
  54 + <if test="type == 4">
  55 + and ( DingUserId is null or DingUserId = '' )
  56 + </if>
  57 + <if test="type == 5">
  58 + and ( QiYeHaoUserId is null or QiYeHaoUserId = '' )
  59 + </if>
  60 + </select>
  61 +</mapper>
0 \ No newline at end of file 62 \ No newline at end of file
cloud/weigeng/pom.xml
@@ -20,16 +20,16 @@ @@ -20,16 +20,16 @@
20 20
21 <dependencies> 21 <dependencies>
22 <dependency> 22 <dependency>
  23 + <groupId>io.netty</groupId>
  24 + <artifactId>netty-all</artifactId>
  25 + <version>4.1.33.Final</version>
  26 + </dependency>
  27 + <dependency>
23 <groupId>com.sincere</groupId> 28 <groupId>com.sincere</groupId>
24 <artifactId>common</artifactId> 29 <artifactId>common</artifactId>
25 <version>1.0.0</version> 30 <version>1.0.0</version>
26 </dependency> 31 </dependency>
27 <dependency> 32 <dependency>
28 - <groupId>org.apache.mina</groupId>  
29 - <artifactId>mina-core</artifactId>  
30 - <version>2.1.3</version>  
31 - </dependency>  
32 - <dependency>  
33 <groupId>org.apache.poi</groupId> 33 <groupId>org.apache.poi</groupId>
34 <artifactId>poi</artifactId> 34 <artifactId>poi</artifactId>
35 <version>4.1.0</version> 35 <version>4.1.0</version>
cloud/weigeng/src/main/java/com/sincere/weigeng/Watch1200.java 0 → 100644
@@ -0,0 +1,61 @@ @@ -0,0 +1,61 @@
  1 +package com.sincere.weigeng;
  2 +
  3 +import com.sincere.weigeng.feign.SmFeign;
  4 +import com.sincere.weigeng.feign.XaFeign;
  5 +import com.sincere.weigeng.utils.WatchServer;
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.boot.ApplicationArguments;
  8 +import org.springframework.boot.ApplicationRunner;
  9 +import org.springframework.stereotype.Component;
  10 +
  11 +/**
  12 + * @author chen
  13 + * @version 1.0
  14 + * @date 2019/12/3 0003 11:42
  15 + */
  16 +@Component
  17 +public class Watch1200 extends WatchServer implements ApplicationRunner {
  18 +
  19 + @Autowired
  20 + SmFeign smFeign ;
  21 +
  22 + @Autowired
  23 + XaFeign xaFeign;
  24 +
  25 + @Override
  26 + public void run(ApplicationArguments args) throws Exception {
  27 + watchPort(1200);
  28 + Listen1200 listen1200 = new Listen1200(this);
  29 + listen1200.start();
  30 + }
  31 +
  32 + class Listen1200 extends Thread{
  33 +
  34 + private Watch1200 watch1200 ;
  35 +
  36 + public Watch1200 getWatch1200() {
  37 + return watch1200;
  38 + }
  39 +
  40 + public void setWatch1200(Watch1200 watch1200) {
  41 + this.watch1200 = watch1200;
  42 + }
  43 +
  44 +
  45 + public Listen1200(Watch1200 watch1200) {
  46 + this.watch1200 = watch1200;
  47 + }
  48 +
  49 + @Override
  50 + public synchronized void start() {
  51 + super.start();
  52 + }
  53 +
  54 + @Override
  55 + public void run() {
  56 + super.run();
  57 + this.watch1200.listen(smFeign,xaFeign);
  58 + }
  59 + }
  60 +
  61 +}
cloud/weigeng/src/main/java/com/sincere/weigeng/Watch1300.java 0 → 100644
@@ -0,0 +1,61 @@ @@ -0,0 +1,61 @@
  1 +package com.sincere.weigeng;
  2 +
  3 +import com.sincere.weigeng.feign.SmFeign;
  4 +import com.sincere.weigeng.feign.XaFeign;
  5 +import com.sincere.weigeng.utils.WatchServer;
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.boot.ApplicationArguments;
  8 +import org.springframework.boot.ApplicationRunner;
  9 +import org.springframework.stereotype.Component;
  10 +
  11 +/**
  12 + * @author chen
  13 + * @version 1.0
  14 + * @date 2019/12/3 0003 11:42
  15 + */
  16 +@Component
  17 +public class Watch1300 extends WatchServer implements ApplicationRunner {
  18 +
  19 + @Autowired
  20 + SmFeign smFeign ;
  21 +
  22 + @Autowired
  23 + XaFeign xaFeign;
  24 +
  25 + @Override
  26 + public void run(ApplicationArguments args) throws Exception {
  27 + watchPort(1300);
  28 + Listen1300 listen1300 = new Listen1300(this);
  29 + listen1300.start();
  30 + }
  31 +
  32 + class Listen1300 extends Thread{
  33 +
  34 + private Watch1300 watch1300 ;
  35 +
  36 + public Watch1300 getWatch1300() {
  37 + return watch1300;
  38 + }
  39 +
  40 + public void setWatch1300(Watch1300 watch1300) {
  41 + this.watch1300 = watch1300;
  42 + }
  43 +
  44 +
  45 + public Listen1300(Watch1300 watch1300) {
  46 + this.watch1300 = watch1300;
  47 + }
  48 +
  49 + @Override
  50 + public synchronized void start() {
  51 + super.start();
  52 + }
  53 +
  54 + @Override
  55 + public void run() {
  56 + super.run();
  57 + this.watch1300.listen(smFeign,xaFeign);
  58 + }
  59 + }
  60 +
  61 +}
cloud/weigeng/src/main/java/com/sincere/weigeng/WeigengApplication.java
1 package com.sincere.weigeng; 1 package com.sincere.weigeng;
2 2
3 -import com.sincere.weigeng.utils.WatchServer;  
4 import org.springframework.boot.SpringApplication; 3 import org.springframework.boot.SpringApplication;
5 import org.springframework.boot.autoconfigure.SpringBootApplication; 4 import org.springframework.boot.autoconfigure.SpringBootApplication;
6 import org.springframework.cloud.netflix.eureka.EnableEurekaClient; 5 import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@@ -11,12 +10,8 @@ import org.springframework.cloud.openfeign.EnableFeignClients; @@ -11,12 +10,8 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
11 @SpringBootApplication 10 @SpringBootApplication
12 public class WeigengApplication { 11 public class WeigengApplication {
13 12
14 - private static String ip = "172.16.3.175";  
15 - private static int port = 1200;  
16 -  
17 public static void main(String[] args) { 13 public static void main(String[] args) {
18 SpringApplication.run(WeigengApplication.class, args); 14 SpringApplication.run(WeigengApplication.class, args);
19 - //WatchServer.WatchingServerRunning(ip,port);  
20 } 15 }
21 16
22 } 17 }
cloud/weigeng/src/main/java/com/sincere/weigeng/controller/WgController.java
@@ -7,12 +7,16 @@ import com.sincere.common.dto.smartCampus.UserDto; @@ -7,12 +7,16 @@ import com.sincere.common.dto.smartCampus.UserDto;
7 import com.sincere.common.dto.xiaoan.SendFailDto; 7 import com.sincere.common.dto.xiaoan.SendFailDto;
8 import com.sincere.common.dto.xiaoan.SendMessageDto; 8 import com.sincere.common.dto.xiaoan.SendMessageDto;
9 import com.sincere.common.dto.xiaoan.SendSuccessDto; 9 import com.sincere.common.dto.xiaoan.SendSuccessDto;
  10 +import com.sincere.weigeng.Watch1200;
  11 +import com.sincere.weigeng.Watch1300;
10 import com.sincere.weigeng.feign.SmFeign; 12 import com.sincere.weigeng.feign.SmFeign;
11 import com.sincere.weigeng.feign.XaFeign; 13 import com.sincere.weigeng.feign.XaFeign;
12 import com.sincere.weigeng.logs.LogName; 14 import com.sincere.weigeng.logs.LogName;
13 import com.sincere.weigeng.logs.LoggerUtils; 15 import com.sincere.weigeng.logs.LoggerUtils;
14 import com.sincere.weigeng.utils.WatchServer; 16 import com.sincere.weigeng.utils.WatchServer;
15 import com.sincere.weigeng.vo.*; 17 import com.sincere.weigeng.vo.*;
  18 +import io.netty.channel.ChannelHandlerContext;
  19 +import io.netty.channel.socket.DatagramPacket;
16 import io.swagger.annotations.Api; 20 import io.swagger.annotations.Api;
17 import io.swagger.annotations.ApiOperation; 21 import io.swagger.annotations.ApiOperation;
18 import org.slf4j.Logger; 22 import org.slf4j.Logger;
@@ -42,39 +46,76 @@ public class WgController { @@ -42,39 +46,76 @@ public class WgController {
42 @Autowired 46 @Autowired
43 XaFeign xaFeign; 47 XaFeign xaFeign;
44 48
45 - private static String ip = "172.16.3.175";  
46 - private static int port = 1200; 49 + @Autowired
  50 + Watch1200 watch1200 ;
  51 +
  52 + @Autowired
  53 + Watch1300 watch1300 ;
47 54
48 - @RequestMapping(value = "watching" , method = RequestMethod.GET)  
49 - public void watching(){  
50 - WatchServer.WatchingServerRunning(ip,port,smFeign,xaFeign); 55 + public ChannelHandlerContext getContext(long sno){
  56 + ChannelHandlerContext context1200 = watch1200.getContext(sno) ;
  57 + ChannelHandlerContext context1300 = watch1300.getContext(sno) ;
  58 + if(context1200 == null){
  59 + return context1300;
  60 + }else {
  61 + return context1200 ;
  62 + }
  63 + }
  64 +
  65 + public DatagramPacket getPacket(long sno){
  66 + DatagramPacket packet1200 = watch1200.getPacket(sno);
  67 + DatagramPacket packet1300 = watch1300.getPacket(sno);
  68 + if(packet1200 == null){
  69 + return packet1300 ;
  70 + }else {
  71 + return packet1200 ;
  72 + }
  73 + }
  74 +
  75 + @RequestMapping(value = "openDoor1" , method = RequestMethod.GET)
  76 + public void openDoor1(){
  77 + OpenDoorVo openDoorVo = new OpenDoorVo();
  78 + openDoorVo.setId(1);
  79 + openDoorVo.setSn(253163272);
  80 + openDoorVo.setType(1);
  81 + openDoorVo.setDoorNo(1);
  82 + this.openDoor(openDoorVo);
  83 + }
  84 +
  85 + @RequestMapping(value = "openDoor2" , method = RequestMethod.GET)
  86 + public void openDoor2(){
  87 + OpenDoorVo openDoorVo = new OpenDoorVo();
  88 + openDoorVo.setId(1);
  89 + openDoorVo.setSn(253160793);
  90 + openDoorVo.setType(1);
  91 + openDoorVo.setDoorNo(1);
  92 + this.openDoor(openDoorVo);
51 } 93 }
52 94
53 @RequestMapping(value = "setTime" , method = RequestMethod.GET) 95 @RequestMapping(value = "setTime" , method = RequestMethod.GET)
54 public void setTime(long sn){ 96 public void setTime(long sn){
55 - WatchServer.setTime(xaFeign,sn,"48"); 97 + WatchServer.setTime(xaFeign,getContext(sn),getPacket(sn),sn,"48");
56 } 98 }
57 99
58 @ApiOperation("远程开门") 100 @ApiOperation("远程开门")
59 @RequestMapping(value = "openDoor" , method = RequestMethod.POST) 101 @RequestMapping(value = "openDoor" , method = RequestMethod.POST)
60 public boolean openDoor(@RequestBody OpenDoorVo openDoorVo) { 102 public boolean openDoor(@RequestBody OpenDoorVo openDoorVo) {
61 String functionId = smFeign.selectOutOrderId(openDoorVo.getType(),openDoorVo.getId()); 103 String functionId = smFeign.selectOutOrderId(openDoorVo.getType(),openDoorVo.getId());
62 - long messageId = WatchServer.openDoor(xaFeign,openDoorVo.getSn(),functionId,openDoorVo.getDoorNo(),null); 104 + long messageId = WatchServer.openDoor(xaFeign,getContext(openDoorVo.getSn()),getPacket(openDoorVo.getSn()),openDoorVo.getSn(),functionId,openDoorVo.getDoorNo(),null);
63 SendMessageDto message = getResult(messageId); 105 SendMessageDto message = getResult(messageId);
64 if(message.getCorrect() == 1){ 106 if(message.getCorrect() == 1){
65 - Log_orderSuccess.info("web端远程开门成功!"); 107 + Log_orderSuccess.info("web端远程开门成功!") ;
66 }else { 108 }else {
67 - Log_orderFail.info("远程开门失败"); 109 + Log_orderFail.info("远程开门失败") ;
68 } 110 }
69 return message.getCorrect() == 1 ; 111 return message.getCorrect() == 1 ;
70 } 112 }
71 113
72 -  
73 @ApiOperation("设置考勤时段") 114 @ApiOperation("设置考勤时段")
74 @RequestMapping(value = "setAttendanceTime" , method = RequestMethod.POST) 115 @RequestMapping(value = "setAttendanceTime" , method = RequestMethod.POST)
75 public boolean setAttendanceTime(@RequestBody AttendanceTimeVo attendanceTimeVo){ 116 public boolean setAttendanceTime(@RequestBody AttendanceTimeVo attendanceTimeVo){
76 String functionId = smFeign.selectOutOrderId(attendanceTimeVo.getType(),attendanceTimeVo.getId()); 117 String functionId = smFeign.selectOutOrderId(attendanceTimeVo.getType(),attendanceTimeVo.getId());
77 - List<Long> result = WatchServer.SetAttendanceTime(xaFeign,attendanceTimeVo.getSn(),functionId,attendanceTimeVo.getShiduan(), 118 + List<Long> result = WatchServer.SetAttendanceTime(xaFeign,getContext(attendanceTimeVo.getSn()),getPacket(attendanceTimeVo.getSn()),attendanceTimeVo.getSn(),functionId,attendanceTimeVo.getShiduan(),
78 attendanceTimeVo.getStart(),attendanceTimeVo.getEnd(),attendanceTimeVo.getIsMonday(),attendanceTimeVo.getIsTuesday(), 119 attendanceTimeVo.getStart(),attendanceTimeVo.getEnd(),attendanceTimeVo.getIsMonday(),attendanceTimeVo.getIsTuesday(),
79 attendanceTimeVo.getIsWednesday(),attendanceTimeVo.getIsThursday(),attendanceTimeVo.getIsFriday(), 120 attendanceTimeVo.getIsWednesday(),attendanceTimeVo.getIsThursday(),attendanceTimeVo.getIsFriday(),
80 attendanceTimeVo.getIsSaturday(),attendanceTimeVo.getIsWeekend(),attendanceTimeVo.getShiqu()); 121 attendanceTimeVo.getIsSaturday(),attendanceTimeVo.getIsWeekend(),attendanceTimeVo.getShiqu());
@@ -91,13 +132,12 @@ public class WgController { @@ -91,13 +132,12 @@ public class WgController {
91 return isSuccess; 132 return isSuccess;
92 } 133 }
93 134
94 -  
95 @ApiOperation("单个卡号的权限添加或修改") 135 @ApiOperation("单个卡号的权限添加或修改")
96 @RequestMapping(value = "setSignalCardInfo" , method = RequestMethod.POST) 136 @RequestMapping(value = "setSignalCardInfo" , method = RequestMethod.POST)
97 public boolean setSignalCardInfo(@RequestBody SignalCardInfoVo signalCardInfoVo){ 137 public boolean setSignalCardInfo(@RequestBody SignalCardInfoVo signalCardInfoVo){
98 String functionId = smFeign.selectOutOrderId(signalCardInfoVo.getType(),signalCardInfoVo.getId()); 138 String functionId = smFeign.selectOutOrderId(signalCardInfoVo.getType(),signalCardInfoVo.getId());
99 String cardNo = initCardNo(signalCardInfoVo.getCardNo()); 139 String cardNo = initCardNo(signalCardInfoVo.getCardNo());
100 - long messageId = WatchServer.SetSignalCardInfo(xaFeign,signalCardInfoVo.getSn(),functionId,cardNo, 140 + long messageId = WatchServer.SetSignalCardInfo(xaFeign,getContext(signalCardInfoVo.getSn()),getPacket(signalCardInfoVo.getSn()),signalCardInfoVo.getSn(),functionId,cardNo,
101 signalCardInfoVo.getShiduan(),signalCardInfoVo.getStartTime(),signalCardInfoVo.getEndTime()); 141 signalCardInfoVo.getShiduan(),signalCardInfoVo.getStartTime(),signalCardInfoVo.getEndTime());
102 SendMessageDto message = getResult(messageId); 142 SendMessageDto message = getResult(messageId);
103 UserDto user = smFeign.selectUserByCardNum(cardNo); 143 UserDto user = smFeign.selectUserByCardNum(cardNo);
@@ -136,7 +176,7 @@ public class WgController { @@ -136,7 +176,7 @@ public class WgController {
136 public boolean clearSinglePower(@RequestBody CardInfo cardInfo){ 176 public boolean clearSinglePower(@RequestBody CardInfo cardInfo){
137 String functionId = smFeign.selectOutOrderId(cardInfo.getType(),cardInfo.getId()); 177 String functionId = smFeign.selectOutOrderId(cardInfo.getType(),cardInfo.getId());
138 String cardNo = initCardNo(cardInfo.getCardNo()); 178 String cardNo = initCardNo(cardInfo.getCardNo());
139 - long messageId = WatchServer.clearSinglePower(xaFeign,cardInfo.getSn(),functionId,cardNo); 179 + long messageId = WatchServer.clearSinglePower(xaFeign,getContext(cardInfo.getSn()),getPacket(cardInfo.getSn()),cardInfo.getSn(),functionId,cardNo);
140 SendMessageDto message = getResult(messageId); 180 SendMessageDto message = getResult(messageId);
141 if(message.getCorrect() == 1){ 181 if(message.getCorrect() == 1){
142 Log_orderSuccess.info("卡号"+cardNo+"清除权限成功"); 182 Log_orderSuccess.info("卡号"+cardNo+"清除权限成功");
@@ -154,7 +194,7 @@ public class WgController { @@ -154,7 +194,7 @@ public class WgController {
154 @RequestMapping(value = "clearAllPower" , method = RequestMethod.POST) 194 @RequestMapping(value = "clearAllPower" , method = RequestMethod.POST)
155 public boolean clearAllPower(@RequestBody CleanShiDuanVo cleanShiDuanVo){ 195 public boolean clearAllPower(@RequestBody CleanShiDuanVo cleanShiDuanVo){
156 String functionId = smFeign.selectOutOrderId(cleanShiDuanVo.getType(),cleanShiDuanVo.getId()); 196 String functionId = smFeign.selectOutOrderId(cleanShiDuanVo.getType(),cleanShiDuanVo.getId());
157 - long messageId = WatchServer.clearAllPower(xaFeign,cleanShiDuanVo.getSn(),functionId); 197 + long messageId = WatchServer.clearAllPower(xaFeign,getContext(cleanShiDuanVo.getSn()),getPacket(cleanShiDuanVo.getSn()),cleanShiDuanVo.getSn(),functionId);
158 SendMessageDto message = getResult(messageId); 198 SendMessageDto message = getResult(messageId);
159 if(message.getCorrect() == 1){ 199 if(message.getCorrect() == 1){
160 Log_orderSuccess.info("设备"+cleanShiDuanVo.getSn()+"清除权限成功"); 200 Log_orderSuccess.info("设备"+cleanShiDuanVo.getSn()+"清除权限成功");
@@ -172,7 +212,7 @@ public class WgController { @@ -172,7 +212,7 @@ public class WgController {
172 @RequestMapping(value = "clearShiDuan" , method = RequestMethod.POST) 212 @RequestMapping(value = "clearShiDuan" , method = RequestMethod.POST)
173 public boolean clearShiDuan(@RequestBody CleanShiDuanVo cleanShiDuanVo){ 213 public boolean clearShiDuan(@RequestBody CleanShiDuanVo cleanShiDuanVo){
174 String functionId = smFeign.selectOutOrderId(cleanShiDuanVo.getType(),cleanShiDuanVo.getId()); 214 String functionId = smFeign.selectOutOrderId(cleanShiDuanVo.getType(),cleanShiDuanVo.getId());
175 - long messageId = WatchServer.clearShiDuan(xaFeign,cleanShiDuanVo.getSn(),functionId); 215 + long messageId = WatchServer.clearShiDuan(xaFeign,getContext(cleanShiDuanVo.getSn()),getPacket(cleanShiDuanVo.getSn()),cleanShiDuanVo.getSn(),functionId);
176 SendMessageDto sendMessage = getResult(messageId); 216 SendMessageDto sendMessage = getResult(messageId);
177 if(sendMessage.getCorrect() == 1){ 217 if(sendMessage.getCorrect() == 1){
178 Log_orderSuccess.info("设备"+cleanShiDuanVo.getSn()+"时段清除成功"); 218 Log_orderSuccess.info("设备"+cleanShiDuanVo.getSn()+"时段清除成功");
@@ -187,7 +227,7 @@ public class WgController { @@ -187,7 +227,7 @@ public class WgController {
187 public boolean searchPower(@RequestBody CardInfo cardInfo){ 227 public boolean searchPower(@RequestBody CardInfo cardInfo){
188 String functionId = smFeign.selectOutOrderId(cardInfo.getType(),cardInfo.getId()); 228 String functionId = smFeign.selectOutOrderId(cardInfo.getType(),cardInfo.getId());
189 String cardNo = initCardNo(cardInfo.getCardNo()); 229 String cardNo = initCardNo(cardInfo.getCardNo());
190 - long messageId = WatchServer.searchPower(xaFeign,cardInfo.getSn(),functionId,cardNo); 230 + long messageId = WatchServer.searchPower(xaFeign,getContext(cardInfo.getSn()),getPacket(cardInfo.getSn()),cardInfo.getSn(),functionId,cardNo);
191 SendMessageDto sendMessage = getResult(messageId); 231 SendMessageDto sendMessage = getResult(messageId);
192 if(sendMessage.getCorrect() == 1){ 232 if(sendMessage.getCorrect() == 1){
193 Log_orderSuccess.info("设备"+cardInfo.getSn()+"卡号"+cardNo+"查询权限成功"); 233 Log_orderSuccess.info("设备"+cardInfo.getSn()+"卡号"+cardNo+"查询权限成功");
cloud/weigeng/src/main/java/com/sincere/weigeng/utils/UdpServerHandler.java 0 → 100644
@@ -0,0 +1,68 @@ @@ -0,0 +1,68 @@
  1 +package com.sincere.weigeng.utils;
  2 +
  3 +import com.sincere.common.util.DateUtils;
  4 +import com.sincere.weigeng.logs.LogName;
  5 +import com.sincere.weigeng.logs.LoggerUtils;
  6 +import io.netty.buffer.ByteBuf;
  7 +import io.netty.channel.ChannelHandlerContext;
  8 +import io.netty.channel.SimpleChannelInboundHandler;
  9 +import io.netty.channel.socket.DatagramPacket;
  10 +import io.netty.util.ReferenceCountUtil;
  11 +import org.slf4j.Logger;
  12 +
  13 +import java.util.Date;
  14 +import java.util.Map;
  15 +import java.util.Queue;
  16 +
  17 +/**
  18 + * @author chen
  19 + * @version 1.0
  20 + * @date 2019/11/21 0021 9:18
  21 + */
  22 +public class UdpServerHandler extends SimpleChannelInboundHandler<DatagramPacket> {
  23 +
  24 + private static Logger Log_error = LoggerUtils.Logger(LogName.error);
  25 + private static Logger Log_heartBeat = LoggerUtils.Logger(LogName.heartBeat);
  26 +
  27 + private String dateTime = "" ;
  28 + private int i = 0 ;
  29 +
  30 + private Queue<byte[]> queue;
  31 + private Map<Long , ChannelHandlerContext> channelMap ;
  32 + private Map<Long , DatagramPacket> packetMap ;
  33 +
  34 + public UdpServerHandler(Queue<byte[]> queue , Map<Long , ChannelHandlerContext> channelMap , Map<Long , DatagramPacket> packetMap) {
  35 + super();
  36 + this.queue = queue;
  37 + this.channelMap = channelMap;
  38 + this.packetMap = packetMap ;
  39 + }
  40 +
  41 +
  42 + @Override
  43 + protected void channelRead0(ChannelHandlerContext ctx, DatagramPacket packet){
  44 + try{
  45 + i++ ;
  46 + String time = DateUtils.date2String(new Date() , DateUtils.format3);
  47 + if(!dateTime.equals(time)){
  48 + Log_heartBeat.info("------------------------"+packet.recipient().getPort()+"访问次数" + i);
  49 + dateTime = time ;
  50 + i = 1 ;
  51 + }
  52 + ByteBuf buf = packet.copy().content();
  53 + byte[] validBytes = new byte[buf.readableBytes()];
  54 + buf.readBytes(validBytes);
  55 + if (validBytes.length == WgUdpCommShort.WGPacketSize) {
  56 + synchronized (queue) {
  57 + long sn = WgUdpCommShort.getLongByByte(validBytes, 4, 4);
  58 + channelMap.put(sn,ctx);
  59 + packetMap.put(sn,packet);
  60 + queue.offer(validBytes);
  61 + }
  62 + }
  63 + ReferenceCountUtil.release(buf);
  64 + }catch (Exception e){
  65 + Log_error.info(e.toString());
  66 + }
  67 + }
  68 +}
cloud/weigeng/src/main/java/com/sincere/weigeng/utils/WatchServer.java
1 package com.sincere.weigeng.utils; 1 package com.sincere.weigeng.utils;
2 2
3 -  
4 import com.sincere.common.dto.smartCampus.UserDto; 3 import com.sincere.common.dto.smartCampus.UserDto;
5 import com.sincere.common.dto.xiaoan.CheckInDto; 4 import com.sincere.common.dto.xiaoan.CheckInDto;
6 import com.sincere.common.dto.xiaoan.CheckOutDto; 5 import com.sincere.common.dto.xiaoan.CheckOutDto;
@@ -11,14 +10,16 @@ import com.sincere.weigeng.feign.SmFeign; @@ -11,14 +10,16 @@ import com.sincere.weigeng.feign.SmFeign;
11 import com.sincere.weigeng.feign.XaFeign; 10 import com.sincere.weigeng.feign.XaFeign;
12 import com.sincere.weigeng.logs.LogName; 11 import com.sincere.weigeng.logs.LogName;
13 import com.sincere.weigeng.logs.LoggerUtils; 12 import com.sincere.weigeng.logs.LoggerUtils;
  13 +import io.netty.bootstrap.Bootstrap;
  14 +import io.netty.channel.ChannelHandlerContext;
  15 +import io.netty.channel.ChannelOption;
  16 +import io.netty.channel.EventLoopGroup;
  17 +import io.netty.channel.nio.NioEventLoopGroup;
  18 +import io.netty.channel.socket.DatagramPacket;
  19 +import io.netty.channel.socket.nio.NioDatagramChannel;
14 import org.apache.commons.lang3.StringUtils; 20 import org.apache.commons.lang3.StringUtils;
15 -import org.apache.mina.core.session.IoSession;  
16 -import org.apache.mina.transport.socket.DatagramSessionConfig;  
17 -import org.apache.mina.transport.socket.nio.NioDatagramAcceptor;  
18 import org.slf4j.Logger; 21 import org.slf4j.Logger;
19 22
20 -import java.io.IOException;  
21 -import java.net.InetSocketAddress;  
22 import java.util.*; 23 import java.util.*;
23 import java.util.concurrent.ConcurrentHashMap; 24 import java.util.concurrent.ConcurrentHashMap;
24 25
@@ -29,39 +30,36 @@ import java.util.concurrent.ConcurrentHashMap; @@ -29,39 +30,36 @@ import java.util.concurrent.ConcurrentHashMap;
29 */ 30 */
30 public class WatchServer { 31 public class WatchServer {
31 32
32 - private static final Logger Log_orderSuccess = LoggerUtils.Logger(LogName.orderSuccess);  
33 - private static final Logger Log_orderFail = LoggerUtils.Logger(LogName.orderFail);  
34 - private static final Logger Log_kaoInfo = LoggerUtils.Logger(LogName.kaoInfo);  
35 - private static final Logger Log_heartBeat = LoggerUtils.Logger(LogName.heartBeat);  
36 - private static final Logger Log_error = LoggerUtils.Logger(LogName.error);  
37 -  
38 - private static List<Long> snoList = new ArrayList<>();  
39 - private static List<Long> indexList = new ArrayList<>();  
40 - private static WatchingShortHandler watchingShortHandler ;  
41 - private static Queue<byte[]> queue = new LinkedList<>();  
42 - private static Map<Long , IoSession> sessionMap = new ConcurrentHashMap<>();  
43 -  
44 - // 进入服务器监控状态  
45 - public static int WatchingServerRunning(String watchServerIP,int watchServerPort,  
46 - SmFeign smFeign ,XaFeign xaFeign) {  
47 - watchingShortHandler = new WatchingShortHandler(queue,sessionMap);  
48 - // 创建UDP数据包NIO  
49 - NioDatagramAcceptor acceptor = new NioDatagramAcceptor();  
50 - // NIO设置底层IOHandler  
51 - acceptor.setHandler(watchingShortHandler);  
52 -  
53 - // 设置是否重用地址? 也就是每个发过来的udp信息都是一个地址?  
54 - DatagramSessionConfig dcfg = acceptor.getSessionConfig();  
55 - dcfg.setReuseAddress(false);  
56 - // 绑定端口地址 33 + private static Logger Log_error = LoggerUtils.Logger(LogName.error);
  34 + private static Logger Log_orderSuccess = LoggerUtils.Logger(LogName.orderSuccess);
  35 + private static Logger Log_orderFail = LoggerUtils.Logger(LogName.orderFail);
  36 + private static Logger Log_kaoInfo = LoggerUtils.Logger(LogName.kaoInfo);
  37 + private static Logger Log_heartBeat = LoggerUtils.Logger(LogName.heartBeat);
  38 +
  39 + private List<Long> snoList = new ArrayList<>();
  40 + private List<Long> indexList = new ArrayList<>();
  41 + private Queue<byte[]> queue = new LinkedList<>();
  42 + private Map<Long , ChannelHandlerContext> channelMap = new ConcurrentHashMap<>() ;
  43 + private Map<Long , DatagramPacket> packetMap = new ConcurrentHashMap<>();
  44 +
  45 + public void watchPort(int port){
57 try { 46 try {
58 - acceptor.bind(new InetSocketAddress(watchServerIP, watchServerPort));  
59 - } catch (IOException e) { 47 + Bootstrap b = new Bootstrap();
  48 + EventLoopGroup group = new NioEventLoopGroup();
  49 + b.group(group)
  50 + .channel(NioDatagramChannel.class)
  51 + .option(ChannelOption.SO_BROADCAST, true)
  52 + .handler(new UdpServerHandler(queue,channelMap,packetMap));
  53 +
  54 + b.bind(port).sync().channel();
  55 + } catch (InterruptedException e) {
60 Log_orderSuccess.info("绑定接收服务器失败...."); 56 Log_orderSuccess.info("绑定接收服务器失败....");
61 e.printStackTrace(); 57 e.printStackTrace();
62 - return 0;  
63 } 58 }
64 - Log_orderSuccess.info("绑定接收服务器成功...."); 59 + Log_orderSuccess.info("绑定接收服务器成功....:"+port);
  60 + }
  61 +
  62 + public void listen(SmFeign smFeign, XaFeign xaFeign){
65 long recordIndex = 0; 63 long recordIndex = 0;
66 while(true) { 64 while(true) {
67 if (!queue.isEmpty()) { 65 if (!queue.isEmpty()) {
@@ -69,30 +67,34 @@ public class WatchServer { @@ -69,30 +67,34 @@ public class WatchServer {
69 synchronized (queue) { 67 synchronized (queue) {
70 recvBuff= queue.poll(); 68 recvBuff= queue.poll();
71 } 69 }
72 - if (recvBuff[1]== 0x20) {  
73 - long sn = WgUdpCommShort.getLongByByte(recvBuff, 4, 4);  
74 - smFeign.updateLinkTime(sn+"");  
75 - Log_heartBeat.info("设备"+sn);  
76 - boolean isExist = true ;  
77 - long recordIndexGet = WgUdpCommShort.getLongByByte(recvBuff, 8, 4);  
78 - if(snoList.indexOf(sn) >= 0){  
79 - int number = snoList.indexOf(sn);  
80 - recordIndex = indexList.get(number);  
81 - indexList.set(number,recordIndexGet);  
82 - }else {  
83 - snoList.add(sn);  
84 - recordIndex = 0 ;  
85 - indexList.add(recordIndexGet);  
86 - System.out.println("设备"+sn+"上线");  
87 - isExist = false ;  
88 - }  
89 - if(isExist){  
90 - if (recordIndex < recordIndexGet || (recordIndexGet - recordIndex) < -5) {  
91 - watching(recvBuff,smFeign,xaFeign); 70 + try {
  71 + if (recvBuff[1]== 0x20) {
  72 + long sn = WgUdpCommShort.getLongByByte(recvBuff, 4, 4);
  73 + smFeign.updateLinkTime(sn+"");
  74 + Log_heartBeat.info("设备"+sn);
  75 + boolean isExist = true ;
  76 + long recordIndexGet = WgUdpCommShort.getLongByByte(recvBuff, 8, 4);
  77 + if(snoList.indexOf(sn) >= 0){
  78 + int number = snoList.indexOf(sn);
  79 + recordIndex = indexList.get(number);
  80 + indexList.set(number,recordIndexGet);
  81 + }else {
  82 + snoList.add(sn);
  83 + recordIndex = 0 ;
  84 + indexList.add(recordIndexGet);
  85 + System.out.println("设备"+sn+"上线");
  86 + isExist = false ;
  87 + }
  88 + if(isExist){
  89 + if (recordIndex < recordIndexGet || (recordIndexGet - recordIndex) < -5) {
  90 + watching(recvBuff,xaFeign,smFeign);
  91 + }
92 } 92 }
  93 + }else {
  94 + push(recvBuff,xaFeign);
93 } 95 }
94 - }else {  
95 - push(recvBuff,xaFeign); 96 + }catch (Exception e){
  97 +
96 } 98 }
97 } else { 99 } else {
98 long times = 100; 100 long times = 100;
@@ -105,7 +107,7 @@ public class WatchServer { @@ -105,7 +107,7 @@ public class WatchServer {
105 } 107 }
106 } 108 }
107 109
108 - private static void watching(byte[] recv,SmFeign smFeign ,XaFeign xaFeign){ 110 + private void watching(byte[] recv , XaFeign xaFeign , SmFeign smFeign){
109 long res = 0; 111 long res = 0;
110 //8-11 记录的索引号 112 //8-11 记录的索引号
111 //(=0表示没有记录) 4 0x00000000 113 //(=0表示没有记录) 4 0x00000000
@@ -177,7 +179,7 @@ public class WatchServer { @@ -177,7 +179,7 @@ public class WatchServer {
177 if (StringUtils.isNotBlank(studentNum)) { 179 if (StringUtils.isNotBlank(studentNum)) {
178 int outOf = recordDoorNO == 1 ? 1 : 0; 180 int outOf = recordDoorNO == 1 ? 1 : 0;
179 //远程开门 181 //远程开门
180 - openDoor(xaFeign,sno,"64",recordDoorNO,cardNo); 182 + WatchServer.openDoor(xaFeign,channelMap.get(sno),packetMap.get(sno),sno,"64",recordDoorNO,cardNo);
181 Log_orderSuccess.info("请假开门成功"+cardNo); 183 Log_orderSuccess.info("请假开门成功"+cardNo);
182 } else { 184 } else {
183 //没有请假不做任何处理,则是刷卡异常,入库 185 //没有请假不做任何处理,则是刷卡异常,入库
@@ -196,7 +198,7 @@ public class WatchServer { @@ -196,7 +198,7 @@ public class WatchServer {
196 } 198 }
197 } 199 }
198 200
199 - private static void push(byte[] recv,XaFeign xaFeign){ 201 + private void push(byte[] recv , XaFeign xaFeign){
200 long index = WgUdpCommShort.getXidOfCommand(recv); 202 long index = WgUdpCommShort.getXidOfCommand(recv);
201 long sno = WgUdpCommShort.getLongByByte(recv, 4, 4); 203 long sno = WgUdpCommShort.getLongByByte(recv, 4, 4);
202 String functionId = WGUtils.byte2Hex(recv[1]); 204 String functionId = WGUtils.byte2Hex(recv[1]);
@@ -216,8 +218,17 @@ public class WatchServer { @@ -216,8 +218,17 @@ public class WatchServer {
216 } 218 }
217 } 219 }
218 220
  221 + public ChannelHandlerContext getContext(long sno){
  222 + return channelMap.get(sno) ;
  223 + }
  224 +
  225 + public DatagramPacket getPacket(long sno){
  226 + return packetMap.get(sno);
  227 + }
  228 +
219 //远程开门 229 //远程开门
220 - public static long openDoor(XaFeign xaFeign,long sno , String outsideOrderId,int doorNo , String cardNo){ 230 + public static long openDoor(XaFeign xaFeign , ChannelHandlerContext context , DatagramPacket packet ,
  231 + long sno , String outsideOrderId, int doorNo , String cardNo){
221 WgUdpCommShort pkt = new WgUdpCommShort(); 232 WgUdpCommShort pkt = new WgUdpCommShort();
222 pkt.iDevSn = sno; 233 pkt.iDevSn = sno;
223 try{ 234 try{
@@ -234,7 +245,7 @@ public class WatchServer { @@ -234,7 +245,7 @@ public class WatchServer {
234 byte[] bytes = pkt.toByte(); 245 byte[] bytes = pkt.toByte();
235 long index = WgUdpCommShort.getXidOfCommand(bytes); 246 long index = WgUdpCommShort.getXidOfCommand(bytes);
236 long result = insert(xaFeign,sno+"",outsideOrderId,cardNo,index,bytes); 247 long result = insert(xaFeign,sno+"",outsideOrderId,cardNo,index,bytes);
237 - pkt.run(watchingShortHandler.getSessionMap().get(sno),bytes); 248 + pkt.run(context,packet,bytes);
238 return result ; 249 return result ;
239 }catch (Exception e){ 250 }catch (Exception e){
240 Log_error.error(e.toString()); 251 Log_error.error(e.toString());
@@ -243,7 +254,7 @@ public class WatchServer { @@ -243,7 +254,7 @@ public class WatchServer {
243 } 254 }
244 255
245 //重置控制板时间 256 //重置控制板时间
246 - public static long setTime(XaFeign xaFeign,long sno , String outsideOrderId){ 257 + public static long setTime(XaFeign xaFeign , ChannelHandlerContext context , DatagramPacket packet , long sno , String outsideOrderId){
247 WgUdpCommShort pkt = new WgUdpCommShort(); 258 WgUdpCommShort pkt = new WgUdpCommShort();
248 pkt.iDevSn = sno; 259 pkt.iDevSn = sno;
249 try{ 260 try{
@@ -253,14 +264,14 @@ public class WatchServer { @@ -253,14 +264,14 @@ public class WatchServer {
253 pkt.data[0] = WGUtils.toHex(String.valueOf(cal.get(Calendar.YEAR)).substring(0,2)); 264 pkt.data[0] = WGUtils.toHex(String.valueOf(cal.get(Calendar.YEAR)).substring(0,2));
254 pkt.data[1] = WGUtils.toHex(String.valueOf(cal.get(Calendar.YEAR)).substring(2,4)); 265 pkt.data[1] = WGUtils.toHex(String.valueOf(cal.get(Calendar.YEAR)).substring(2,4));
255 pkt.data[2] = WGUtils.toHex(String.valueOf(cal.get(Calendar.MONTH)+1)); 266 pkt.data[2] = WGUtils.toHex(String.valueOf(cal.get(Calendar.MONTH)+1));
256 - pkt.data[3] = WGUtils.toHex(String.valueOf(cal.get(Calendar.DATE))); 267 + pkt.data[3] = WGUtils.toHex(String.valueOf(cal.get(Calendar.DATE)-1));
257 pkt.data[4] =WGUtils.toHex(String.valueOf(cal.get(Calendar.HOUR_OF_DAY))); 268 pkt.data[4] =WGUtils.toHex(String.valueOf(cal.get(Calendar.HOUR_OF_DAY)));
258 pkt.data[5] =WGUtils.toHex(String.valueOf(cal.get(Calendar.MINUTE))); 269 pkt.data[5] =WGUtils.toHex(String.valueOf(cal.get(Calendar.MINUTE)));
259 pkt.data[6] = WGUtils.toHex(String.valueOf(cal.get(Calendar.SECOND))); 270 pkt.data[6] = WGUtils.toHex(String.valueOf(cal.get(Calendar.SECOND)));
260 byte[] bytes = pkt.toByte(); 271 byte[] bytes = pkt.toByte();
261 long index = WgUdpCommShort.getXidOfCommand(bytes); 272 long index = WgUdpCommShort.getXidOfCommand(bytes);
262 long result = insert(xaFeign,sno+"",outsideOrderId,null,index,bytes); 273 long result = insert(xaFeign,sno+"",outsideOrderId,null,index,bytes);
263 - pkt.run(watchingShortHandler.getSessionMap().get(sno),bytes); 274 + pkt.run(context,packet,bytes);
264 return result ; 275 return result ;
265 }catch (Exception e){ 276 }catch (Exception e){
266 Log_error.error(e.toString()); 277 Log_error.error(e.toString());
@@ -269,11 +280,10 @@ public class WatchServer { @@ -269,11 +280,10 @@ public class WatchServer {
269 } 280 }
270 281
271 282
272 -  
273 //设置考勤时段 283 //设置考勤时段
274 - public static List<Long> SetAttendanceTime(XaFeign xaFeign,long sno ,String outsideOrderId, int shiduan , Date begin ,Date end ,  
275 - int isMonDay ,int isTuesDay , int isWednesDay ,int isThursDay , int isFriday ,  
276 - int isSaturDay , int isWeekend , String shiqu){ 284 + public static List<Long> SetAttendanceTime(XaFeign xaFeign , ChannelHandlerContext context , DatagramPacket packet , long sno ,String outsideOrderId, int shiduan , Date begin ,Date end ,
  285 + int isMonDay ,int isTuesDay , int isWednesDay ,int isThursDay , int isFriday ,
  286 + int isSaturDay , int isWeekend , String shiqu){
277 List<Long> resultList = new ArrayList<>(); 287 List<Long> resultList = new ArrayList<>();
278 WgUdpCommShort pkt = new WgUdpCommShort(); 288 WgUdpCommShort pkt = new WgUdpCommShort();
279 pkt.iDevSn = sno; 289 pkt.iDevSn = sno;
@@ -341,7 +351,7 @@ public class WatchServer { @@ -341,7 +351,7 @@ public class WatchServer {
341 byte[] bytes = pkt.toByte(); 351 byte[] bytes = pkt.toByte();
342 long index = WgUdpCommShort.getXidOfCommand(bytes); 352 long index = WgUdpCommShort.getXidOfCommand(bytes);
343 long result = insert(xaFeign,sno+"",outsideOrderId,null,index,bytes); 353 long result = insert(xaFeign,sno+"",outsideOrderId,null,index,bytes);
344 - pkt.run(watchingShortHandler.getSessionMap().get(sno),bytes); 354 + pkt.run(context,packet,bytes);
345 resultList.add(result); 355 resultList.add(result);
346 } 356 }
347 return resultList ; 357 return resultList ;
@@ -351,9 +361,8 @@ public class WatchServer { @@ -351,9 +361,8 @@ public class WatchServer {
351 return resultList; 361 return resultList;
352 } 362 }
353 363
354 -  
355 //设置权限 364 //设置权限
356 - public static long SetSignalCardInfo(XaFeign xaFeign,long sno , String outsideOrderId, String cardNo , int shiduan , Date begin , Date end){ 365 + public static long SetSignalCardInfo(XaFeign xaFeign , ChannelHandlerContext context , DatagramPacket packet , long sno , String outsideOrderId, String cardNo , int shiduan , Date begin , Date end){
357 WgUdpCommShort pkt = new WgUdpCommShort(); 366 WgUdpCommShort pkt = new WgUdpCommShort();
358 pkt.iDevSn = sno; 367 pkt.iDevSn = sno;
359 try{ 368 try{
@@ -390,7 +399,7 @@ public class WatchServer { @@ -390,7 +399,7 @@ public class WatchServer {
390 byte[] bytes = pkt.toByte(); 399 byte[] bytes = pkt.toByte();
391 long index = WgUdpCommShort.getXidOfCommand(bytes); 400 long index = WgUdpCommShort.getXidOfCommand(bytes);
392 long result = insert(xaFeign,sno+"",outsideOrderId,cardNo,index,bytes); 401 long result = insert(xaFeign,sno+"",outsideOrderId,cardNo,index,bytes);
393 - pkt.run(watchingShortHandler.getSessionMap().get(sno),bytes); 402 + pkt.run(context,packet,bytes);
394 return result ; 403 return result ;
395 }catch (Exception e){ 404 }catch (Exception e){
396 Log_error.error(e.toString()); 405 Log_error.error(e.toString());
@@ -399,7 +408,7 @@ public class WatchServer { @@ -399,7 +408,7 @@ public class WatchServer {
399 } 408 }
400 409
401 //删除单张卡权限 410 //删除单张卡权限
402 - public static long clearSinglePower(XaFeign xaFeign,long sno ,String outsideOrderId, String cardNo){ 411 + public static long clearSinglePower(XaFeign xaFeign , ChannelHandlerContext context , DatagramPacket packet , long sno ,String outsideOrderId, String cardNo){
403 WgUdpCommShort pkt = new WgUdpCommShort(); 412 WgUdpCommShort pkt = new WgUdpCommShort();
404 pkt.iDevSn = sno; 413 pkt.iDevSn = sno;
405 try{ 414 try{
@@ -413,7 +422,7 @@ public class WatchServer { @@ -413,7 +422,7 @@ public class WatchServer {
413 byte[] bytes = pkt.toByte(); 422 byte[] bytes = pkt.toByte();
414 long index = WgUdpCommShort.getXidOfCommand(bytes); 423 long index = WgUdpCommShort.getXidOfCommand(bytes);
415 long result = insert(xaFeign,sno+"",outsideOrderId,cardNo,index,bytes); 424 long result = insert(xaFeign,sno+"",outsideOrderId,cardNo,index,bytes);
416 - pkt.run(watchingShortHandler.getSessionMap().get(sno),bytes); 425 + pkt.run(context,packet,bytes);
417 return result ; 426 return result ;
418 }catch (Exception e){ 427 }catch (Exception e){
419 Log_error.error(e.toString()); 428 Log_error.error(e.toString());
@@ -422,7 +431,7 @@ public class WatchServer { @@ -422,7 +431,7 @@ public class WatchServer {
422 } 431 }
423 432
424 //删除全部权限 433 //删除全部权限
425 - public static long clearAllPower(XaFeign xaFeign,long sno ,String outsideOrderId){ 434 + public static long clearAllPower(XaFeign xaFeign , ChannelHandlerContext context , DatagramPacket packet , long sno ,String outsideOrderId){
426 WgUdpCommShort pkt = new WgUdpCommShort(); 435 WgUdpCommShort pkt = new WgUdpCommShort();
427 pkt.iDevSn = sno; 436 pkt.iDevSn = sno;
428 try{ 437 try{
@@ -436,7 +445,7 @@ public class WatchServer { @@ -436,7 +445,7 @@ public class WatchServer {
436 byte[] bytes = pkt.toByte(); 445 byte[] bytes = pkt.toByte();
437 long index = WgUdpCommShort.getXidOfCommand(bytes); 446 long index = WgUdpCommShort.getXidOfCommand(bytes);
438 long result = insert(xaFeign,sno+"",outsideOrderId,null,index,bytes); 447 long result = insert(xaFeign,sno+"",outsideOrderId,null,index,bytes);
439 - pkt.run(watchingShortHandler.getSessionMap().get(sno),bytes); 448 + pkt.run(context,packet,bytes);
440 return result ; 449 return result ;
441 }catch (Exception e){ 450 }catch (Exception e){
442 Log_error.error(e.toString()); 451 Log_error.error(e.toString());
@@ -445,7 +454,7 @@ public class WatchServer { @@ -445,7 +454,7 @@ public class WatchServer {
445 } 454 }
446 455
447 //查询卡权限 456 //查询卡权限
448 - public static long searchPower(XaFeign xaFeign,long sno ,String outsideOrderId, String cardNo){ 457 + public static long searchPower(XaFeign xaFeign , ChannelHandlerContext context , DatagramPacket packet , long sno ,String outsideOrderId, String cardNo){
449 WgUdpCommShort pkt = new WgUdpCommShort(); 458 WgUdpCommShort pkt = new WgUdpCommShort();
450 pkt.iDevSn = sno; 459 pkt.iDevSn = sno;
451 try{ 460 try{
@@ -459,7 +468,7 @@ public class WatchServer { @@ -459,7 +468,7 @@ public class WatchServer {
459 byte[] bytes = pkt.toByte(); 468 byte[] bytes = pkt.toByte();
460 long index = WgUdpCommShort.getXidOfCommand(bytes); 469 long index = WgUdpCommShort.getXidOfCommand(bytes);
461 long result = insert(xaFeign,sno+"",outsideOrderId,cardNo,index,bytes); 470 long result = insert(xaFeign,sno+"",outsideOrderId,cardNo,index,bytes);
462 - pkt.run(watchingShortHandler.getSessionMap().get(sno),bytes); 471 + pkt.run(context,packet,bytes);
463 return result ; 472 return result ;
464 }catch (Exception e){ 473 }catch (Exception e){
465 Log_error.error(e.toString()); 474 Log_error.error(e.toString());
@@ -468,7 +477,7 @@ public class WatchServer { @@ -468,7 +477,7 @@ public class WatchServer {
468 } 477 }
469 478
470 //删除时段 479 //删除时段
471 - public static long clearShiDuan(XaFeign xaFeign,long sno , String outsideOrderId){ 480 + public static long clearShiDuan(XaFeign xaFeign , ChannelHandlerContext context , DatagramPacket packet , long sno , String outsideOrderId){
472 WgUdpCommShort pkt = new WgUdpCommShort(); 481 WgUdpCommShort pkt = new WgUdpCommShort();
473 pkt.iDevSn = sno; 482 pkt.iDevSn = sno;
474 try{ 483 try{
@@ -482,7 +491,7 @@ public class WatchServer { @@ -482,7 +491,7 @@ public class WatchServer {
482 byte[] bytes = pkt.toByte(); 491 byte[] bytes = pkt.toByte();
483 long index = WgUdpCommShort.getXidOfCommand(bytes); 492 long index = WgUdpCommShort.getXidOfCommand(bytes);
484 long result = insert(xaFeign,sno+"",outsideOrderId,null,index,bytes); 493 long result = insert(xaFeign,sno+"",outsideOrderId,null,index,bytes);
485 - pkt.run(watchingShortHandler.getSessionMap().get(sno),bytes); 494 + pkt.run(context,packet,bytes);
486 return result ; 495 return result ;
487 }catch (Exception e){ 496 }catch (Exception e){
488 Log_error.error(e.toString()); 497 Log_error.error(e.toString());
@@ -490,7 +499,7 @@ public class WatchServer { @@ -490,7 +499,7 @@ public class WatchServer {
490 return 0l; 499 return 0l;
491 } 500 }
492 501
493 - private static long insert(XaFeign xaFeign ,String sn ,String functionId , String cardNo , long index , byte[] recv){ 502 + private static long insert(XaFeign xaFeign , String sn ,String functionId , String cardNo , long index , byte[] recv){
494 503
495 StringBuffer send = new StringBuffer(); 504 StringBuffer send = new StringBuffer();
496 for(byte b : recv){ 505 for(byte b : recv){
cloud/weigeng/src/main/java/com/sincere/weigeng/utils/WatchingShortHandler.java
@@ -1,90 +0,0 @@ @@ -1,90 +0,0 @@
1 -package com.sincere.weigeng.utils;  
2 -  
3 -import org.apache.mina.core.buffer.IoBuffer;  
4 -import org.apache.mina.core.service.IoHandlerAdapter;  
5 -import org.apache.mina.core.session.IdleStatus;  
6 -import org.apache.mina.core.session.IoSession;  
7 -  
8 -import java.util.Map;  
9 -import java.util.Queue;  
10 -  
11 -  
12 -/**  
13 - * Class the extends IoHandlerAdapter in order to properly handle  
14 - * connections and the data the connections send  
15 - *  
16 - * @author <a href="http://mina.apache.org" mce_href="http://mina.apache.org">Apache MINA Project</a>  
17 - */  
18 -public class WatchingShortHandler extends IoHandlerAdapter {  
19 -  
20 - private Queue<byte[]> queue;  
21 - private Map<Long , IoSession> sessionMap ;  
22 - public WatchingShortHandler(Queue<byte[]> queue , Map<Long , IoSession> sessionMap) {  
23 - super();  
24 - this.queue = queue;  
25 - this.sessionMap = sessionMap;  
26 - }  
27 -  
28 - /**  
29 - * 异常来关闭session  
30 - */  
31 - @Override  
32 - public void exceptionCaught(IoSession session, Throwable cause)  
33 - throws Exception {  
34 - cause.printStackTrace();  
35 - session.close(true);  
36 - }  
37 -  
38 - /**  
39 - * 服务器端收到一个消息  
40 - */  
41 - @Override  
42 - public void messageReceived(IoSession session, Object message) throws Exception {  
43 - IoBuffer io = (IoBuffer) message;  
44 - if (io.hasRemaining()) {  
45 - byte[] validBytes = new byte[io.remaining()];  
46 - io.get(validBytes,0,io.remaining());  
47 - if (validBytes.length == WgUdpCommShort.WGPacketSize) {  
48 - synchronized (queue) {  
49 - long sn = WgUdpCommShort.getLongByByte(validBytes, 4, 4);  
50 - sessionMap.put(sn,session);  
51 - queue.offer(validBytes);  
52 - }  
53 - } else {  
54 - }  
55 - }  
56 - }  
57 -  
58 - @Override  
59 - public void sessionClosed(IoSession session) throws Exception {  
60 - }  
61 -  
62 - @Override  
63 - public void sessionCreated(IoSession session) throws Exception {  
64 - }  
65 -  
66 - @Override  
67 - public void sessionIdle(IoSession session, IdleStatus status)  
68 - throws Exception {  
69 - }  
70 -  
71 - @Override  
72 - public void sessionOpened(IoSession session) throws Exception {  
73 - }  
74 -  
75 - public Queue<byte[]> getQueue() {  
76 - return queue;  
77 - }  
78 -  
79 - public void setQueue(Queue<byte[]> queue) {  
80 - this.queue = queue;  
81 - }  
82 -  
83 - public Map<Long, IoSession> getSessionMap() {  
84 - return sessionMap;  
85 - }  
86 -  
87 - public void setSessionMap(Map<Long, IoSession> sessionMap) {  
88 - this.sessionMap = sessionMap;  
89 - }  
90 -}  
cloud/weigeng/src/main/java/com/sincere/weigeng/utils/WgUdpCommShort.java
1 package com.sincere.weigeng.utils; 1 package com.sincere.weigeng.utils;
2 2
3 -import org.apache.mina.core.buffer.IoBuffer;  
4 -import org.apache.mina.core.session.IoSession; 3 +import io.netty.buffer.Unpooled;
  4 +import io.netty.channel.ChannelHandlerContext;
  5 +import io.netty.channel.socket.DatagramPacket;
5 6
6 public class WgUdpCommShort { //短报文协议 7 public class WgUdpCommShort { //短报文协议
7 8
@@ -99,22 +100,9 @@ public class WgUdpCommShort { //短报文协议 @@ -99,22 +100,9 @@ public class WgUdpCommShort { //短报文协议
99 return buff; 100 return buff;
100 } 101 }
101 102
102 - public void run(IoSession ioSession , byte[] command){  
103 - byte[] bytCommand = command;  
104 - IoBuffer b;  
105 - Boolean bSent =false;  
106 - //ioSession = connFuture.getSession();  
107 - if (ioSession !=null)  
108 - {  
109 - if (ioSession.isConnected())  
110 - {  
111 - b = IoBuffer.allocate(bytCommand.length);  
112 - b.put(bytCommand);  
113 - b.flip();  
114 - ioSession.write(b);  
115 - bSent = true;  
116 - }  
117 - }  
118 - } 103 + public void run(ChannelHandlerContext ctx, DatagramPacket packet , byte[] command ){
  104 + DatagramPacket data = new DatagramPacket(Unpooled.copiedBuffer(command), packet.sender());
  105 + ctx.writeAndFlush(data);//向客户端发送消息
  106 + }
119 107
120 } 108 }
cloud/weigeng/src/main/resources/application.yaml
@@ -4,17 +4,13 @@ server: @@ -4,17 +4,13 @@ server:
4 spring: 4 spring:
5 application: 5 application:
6 name: weigeng-server 6 name: weigeng-server
7 - profiles:  
8 - active: dev  
9 -  
10 7
11 eureka: 8 eureka:
12 - instance: 9 + instance:2
13 hostname: localhost 10 hostname: localhost
14 lease-expiration-duration-in-seconds: 60 11 lease-expiration-duration-in-seconds: 60
15 lease-renewal-interval-in-seconds: 10 12 lease-renewal-interval-in-seconds: 10
16 client: 13 client:
17 service-url: 14 service-url:
18 - # defaultZone: http://localhost:8761/eureka/  
19 defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/ 15 defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/
20 16