Commit 021910193baa5c3e124a220235a347a97e2d40e4
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); |
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×tamp="+ DateUtils.getDate()+"&time="+DateUtils.date2String(new Date(),DateUtils.format1) ; | 185 | "&face=&sourcetype=16&soutype=3×tamp="+ 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×tamp=" + DateUtils.getDate()+"&time="+DateUtils.date2String(new Date(),DateUtils.format1)+"&"; | 257 | "&face=" + teacher.getFace() + "&sourcetype=16&soutype=2×tamp=" + 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 > #{endTime} and HS_LeaveExamine.LeaveTime < #{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 > #{endTime} and HS_LeaveExamine.LeaveTime < #{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 |