Commit 375d859f4fe170bb497f12983469b26eb72a694d
Exists in
master
1、大华人脸抓拍完成
2、指纹机修复历史记录上传问题
Showing
27 changed files
with
507 additions
and
392 deletions
Show diff stats
cloud/common/src/main/java/com/sincere/common/dto/smartCampus/CensusKqDto.java
0 → 100644
... | ... | @@ -0,0 +1,36 @@ |
1 | +package com.sincere.common.dto.smartCampus; | |
2 | + | |
3 | +/** | |
4 | + * @author chen | |
5 | + * @version 1.0 | |
6 | + * @date 2019/11/29 0029 14:27 | |
7 | + */ | |
8 | +public class CensusKqDto { | |
9 | + private String className ; | |
10 | + private int allT ; | |
11 | + private int kqT ; | |
12 | + | |
13 | + public String getClassName() { | |
14 | + return className; | |
15 | + } | |
16 | + | |
17 | + public void setClassName(String className) { | |
18 | + this.className = className; | |
19 | + } | |
20 | + | |
21 | + public int getAllT() { | |
22 | + return allT; | |
23 | + } | |
24 | + | |
25 | + public void setAllT(int allT) { | |
26 | + this.allT = allT; | |
27 | + } | |
28 | + | |
29 | + public int getKqT() { | |
30 | + return kqT; | |
31 | + } | |
32 | + | |
33 | + public void setKqT(int kqT) { | |
34 | + this.kqT = kqT; | |
35 | + } | |
36 | +} | ... | ... |
cloud/common/src/main/java/com/sincere/common/dto/smartCampus/KqTeacherDto.java
... | ... | @@ -13,7 +13,7 @@ public class KqTeacherDto { |
13 | 13 | private String pass ; |
14 | 14 | private String DingUserId ; |
15 | 15 | private String weChatUserId ; |
16 | - private String xSTOpenId ; | |
16 | + private String openId ; | |
17 | 17 | private String face ; |
18 | 18 | |
19 | 19 | public String getUserId() { |
... | ... | @@ -72,12 +72,12 @@ public class KqTeacherDto { |
72 | 72 | this.weChatUserId = weChatUserId; |
73 | 73 | } |
74 | 74 | |
75 | - public String getxSTOpenId() { | |
76 | - return xSTOpenId; | |
75 | + public String getOpenId() { | |
76 | + return openId; | |
77 | 77 | } |
78 | 78 | |
79 | - public void setxSTOpenId(String xSTOpenId) { | |
80 | - this.xSTOpenId = xSTOpenId; | |
79 | + public void setOpenId(String openId) { | |
80 | + this.openId = openId; | |
81 | 81 | } |
82 | 82 | |
83 | 83 | public String getFace() { | ... | ... |
cloud/common/src/main/java/com/sincere/common/util/DateUtils.java
... | ... | @@ -72,4 +72,33 @@ public class DateUtils { |
72 | 72 | int weekday = c.get(Calendar.DAY_OF_WEEK); |
73 | 73 | return weekday-1 ; |
74 | 74 | } |
75 | + | |
76 | + public static String getWeekName(){ | |
77 | + Date today = new Date(); | |
78 | + Calendar c = Calendar.getInstance(); | |
79 | + c.setTime(today); | |
80 | + int weekday = c.get(Calendar.DAY_OF_WEEK); | |
81 | + if(weekday == 1){ | |
82 | + return "周日"; | |
83 | + } | |
84 | + if(weekday == 2){ | |
85 | + return "周一"; | |
86 | + } | |
87 | + if(weekday == 3){ | |
88 | + return "周二"; | |
89 | + } | |
90 | + if(weekday == 4){ | |
91 | + return "周三"; | |
92 | + } | |
93 | + if(weekday == 5){ | |
94 | + return "周四"; | |
95 | + } | |
96 | + if(weekday == 6){ | |
97 | + return "周五"; | |
98 | + } | |
99 | + if(weekday == 7){ | |
100 | + return "周六"; | |
101 | + } | |
102 | + return ""; | |
103 | + } | |
75 | 104 | } | ... | ... |
cloud/huoti/1111.jpg
25 KB
cloud/huoti/22222.jpg
26.3 KB
cloud/log/2019-11-25/下发指令.txt
cloud/log/2019-11-25/检测成功.txt
... | ... | @@ -1,4 +0,0 @@ |
1 | -2019-11-25 17:33:59 检测成功:/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCALQAhwDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD1qiiimAtFGKKYBRRRQWOooooAWiiigBaKKKACiiigB9FFFADKKKPwoJCjvR+FAHNAh9FFFABRRRQAUUUUAFFFFABRRRQAtFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACUUUUAFFFFABRRRQAUUUUAFFFFADKKKPwoAKKKKACiiigBKKKKAExRS0UAJRRRQAUUUUAMo70UUAP7UUdqKACilopjCiiikULRRRQA+iiigAooooAKKKKCQooooEFFFFABRRRQAUUUUAFFFFAC0UUUAFFFFABRRRQAUUUUAFFFFAC0UUUAFFFFABRRRQAlFFFABRRRQAUUUUAFFFFABRRRQAlFFFABRRRQAyiij8KACij8KPwoAKKKKAEooooAKKKKAEopaSgBtLSUtAC0UUUALRRRTGLRRRSKCij8KUUAOooooAKKKKCQooooEFFFFAC0UUUAFFFFABRRRQAUUUUAFFFFAC0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACUUUUAFFFFABRRRQAlFFFABRRRQAyiij8KACiiigAooooASkpaSgAoo7UUALRRRQAUUUUxi0d6PwoA5pAPooopgFFFFIQUUUUALRRRQAUUUUAFFFFABRRRQAtFFFABRRRQAUUUUAFFFFABRRiigBaKKKAEop1FADaKdRQA2inUUANop1FADaKdRQAlFFFACUUUUAFFFFABRRRQAUUUUAJRRRQAUUUUAJRRRQAUUUUAMooo/CgAooooAKMUUUAJRRSigAooooASgdaKB1pjJKKKKACiiigAooooAWiiikMKKKKACiiigBaKKKCQooooAKKKKAFooooASimFxTZZ0iTJPbigCWiuR1X4haTpjmKNzdS+kfT6ZrkL/4m6sz5t4IoUxxuQu1TzIdj13zcVz93400K0cCS/jPGRsy38hj9a8Q1nxlq+o5jubmSUZyqqNoz7461z8t7ctubcqfWjmHynul78VdFgYrbRyz46sSEH61gz/F25B3QWEWO5kcvn6YArx57p4+HbduOTg44/OlW6B5BK+mRxRcVj2K0+Lsgcm8sYyh6eVJtx+YOf0rqNO+ImjXzbWkELdlkbk/ieP1r52aU43YPrkf40JeSKMqcChXA+pV8T6K+ANStc/3RKCT+tWYdTtZzhLiA9/8AWgkCvlpbzGGGT9OanF/K4GJG45GGwR+tO4j6m86MdZAfxp+7NfNOkeLdT0hybW7mUE5KMwKn8D1rv9F+L4O1NVthtAwZYFwc+4z/ACoTA9Yp1ZWl6/p2swiWyuUlXuAeR9RWnvpgOooooAKKKKACiiigApD0paD0oAjooooAKKKKACiiigBKKKKACiiigBKKKKACiiigAph60+mkc0AJRR+FFABRRRQAUUUUAJQOtFA60xklFFFABRRRQAtFFFIYUUUUDCiiigBaKKKZIUUUUALRRRSATFGKfgUYoEMz/s1VuLtUIUcsTjHTJpmp38djZzTuwCRqWNeV6z4/eMlYUHmnOXl5AB/ujoPypDSuega1r1no0KvdTDLA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 | |
2 | - | |
3 | -2019-11-25 17:34:21 检测成功:/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCALQAhwDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD1UUtIKWqJCiiigBaKKKACiiigAoxT8UYoAKKKKBBRRRQAmKMU6igY3FGKdRQA3FGKdRQA3FGKdRQAYoxS0UAJijFLRQAmKMUtFACYoxS0UAJijFLRQAmKMUtFADMUYp1FADcUYp1FADcUYp1FADcUYp1FADcUYp1FADcUYp2KMUANxRinYoxQA3FGKdijFADMUYp1FBQ3FGKWigBmKMUtFADSKQ0+mkUANxRilooAZijFOooAZRRRQA3FGKWigCOinUmKALVLS4ooJCinHpTaACiiimA6iiikIKKKKAFooooGGKMUtFACYoxS0UAGKMUtFACYoxS0UAJijFLRQAYoxS0UAJijFLRQAmKMUtFACYoxS0UAJijFLRQAmKMUtFACYoxS0UAJijFLRQAmKMUtFACYoxS0UAJijFLRQAyinYoxQA2inYoxQA3FGKWigBKKKKBiUUUUDG4oxTqKAGYoxTsUYoAZRRRQAzFFOoxQBHijFOIoxQBHRT8UYoAjoxS0UAW6KKKCAooooAXFFFFAwxRRRQAUtFFABS0UUAGKKWigBKWiigAop2KMUANop2KMUAJRS4oxQAlFPxRigBlFPxRigBlFPxRigBlFPxRigBlFPxRigBlFPxRigBlFPxRigBlFPxRigBtFLijFMBKKKKACiiigBtFOxRikA2inYoxQAzFGKWigBtFOxRigY3FJS0UANopcUlABRRRQA3FGKdRQAyiiigBpFNxUhppFADcUYpaKBjMUYp9GKAJ6KKKCQooooAKWiigAooooAWinYoxQAYopcUmKAFxRS4oxQAmKTFOxSUAFFOooAbRTqKAG0U6igAopaKAEopaKACilooASilooASilooASilooASilooASilooASilooAbRS0UAJRS0UAJRS0UAMop1FADaKKKYBRRRSGNpKdikIoASkxTqSgBuKMUtFACUUUUANooooAbRS4oxQA3FGKWigY2kp1GKAJqKKKCRKcBQBTqAG0U7FGKAEooooAXFGKWigAooopgOooopAFFFFAC0UUUAGKMUtFABijFLRQAmKMUtFABijFLRQAmKMUtFACUUUUALRRRQAYoxS0UAJRRRQAUUUUAJRRRQAUUUUAFFFFACUUUUAJRRRQAlFFFAwooooASiiigBKD0oooAZijFLRQA2iiigBKKKKAEooooASiiigBtFOptAyeiiigkBS9qAKcBxQA2iiigBaKKKYBSjrRigDmkAtFOxRigBKKKKAFooooAWiiigAooooAWiiigAooooAMUYpaKAExRilooAKKKKYBRRRQAUUUUAFFFFABRRRQAUUUUAJijFLRSAQjikxzTyOKbQAlFFFABRRRQAlFFFAxKKKKAEooooASiiigBKKKKAG4pMU/FGKAI8UYpaKAG0UUUAJRRRQAUYoooGTUUUUyQooooAdRRRSAbTqKKAHUUUUALRRRQAUUUUALRRRQAUUUUAGKMUtFABRS4oxTASilxRikAtFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFADaKXFGKYDaKfijFIBmKMU7FGKBjcUYp2KMUAR0UUUAJijFLRQA2iiigBKKKKAEooooAYRSVIRkUygBKKKKAEpKdSUDJaKKKZIuKAOadiikAUtFFABRS0UAFFFFAC0UUUALRRRTAKKKKAHUUUUgCiiigBaKKKACiiigAooooAKKKKAFooooAKKKKACiiigAooooAKKKKACiiigBKKKKACiiigAooooASiiigAooooGFFFFADMUYp1FADKKKKAEooooASiiigBveijHNFACUmKWigBlFFFACUlLSUDJ6KKKCR1FFFABS0UUAFLRRQAUUtFABTqKKACiiigAooooAWiiigAooooAWiiigAooooAKKKKACiiigBaKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBKKKKAEooooAKKKKBhRRRQA2iiigBKKdijFADaKKKAG0UUUANooooAbijFLRQA2iiigBtJT6ZQMmooooJHUUUUAFLRRQAUtFFABTqQCloAKKKWgAooooAWiiigAooooAKKKKAFooooAKKKKAFooooAKKKKACiiigAooooAKKKKACiiigBaKKKYBRRRQAlFFFIAooooASiiigAooooASiiigYUUUUAJRRRQAlFFFAAelNPWndqaaACiiigBtFFFADaKKKAEooooASm06m0DJaKKKCRaKKKAHUUUUwHUUUUgFooooAWiiigApaKKAEpaKKACiiigAooooAKKKKAFooooAKKKKAFooopgFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABijFOxRikAyiiigAooooASiiigYUUUUAJRRRQAlFFFACUUUUAB6U09ad2ppoATFGKdRQBHRRRQAlFFFADaKWkoGSUUUUEjqKKKYDqKKKQC0UUUALRRRQAtFFFACUtFFAC0UUUAFFFFABRRRQAUUUUALRRRTAKKKMUAFFFFABRRRQAUUUUAOooopAIOtO7U0dad2oASiiigAooooAKKKKACiiigBtFLijFMBKKKKAEopcUYpDEooooASiiigBKKKKAEooooASiiigBKKKKAGnpTT1p56Uw0ABpKWkoASkpaSgZJ3pwpvenDpQSFKOtJSjrTAdRRRSAWiiigBaKKKACiiigBaKKKAFooopgFFFFABRRRQAUoFAFLSAbSgUtFACAU4UYooAaRQOtKaaBmgBcDOCetN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 | |
4 | - |
cloud/log/2019-11-27/10_文件保存回调.txt
... | ... | @@ -1,210 +0,0 @@ |
1 | -2019-11-27 10:18:05 文件名:810D513456CBA7FBA73BAABB5D074ED52019-11-27.jpg | |
2 | - | |
3 | -2019-11-27 10:18:11 文件名:20AF7A3FF1C5C8D0EE0B8DB87F1648572019-11-27.jpg | |
4 | - | |
5 | -2019-11-27 10:21:47 文件名:9E0B1092D9CE87609A04D39AB2FCF5E42019-11-27.jpg | |
6 | - | |
7 | -2019-11-27 10:21:52 文件名:594F476E4BF44D31C5FF99322C9A0D902019-11-27.jpg | |
8 | - | |
9 | -2019-11-27 10:24:44 文件名:10CF60758E844CDFC0229E88B887A7C32019-11-27.jpg | |
10 | - | |
11 | -2019-11-27 10:24:45 文件名:C4461E6A1F52EF3AD4D3AC7340A0F20B2019-11-27.jpg | |
12 | - | |
13 | -2019-11-27 10:24:49 文件名:1CC7CBA141B25BDC5CE9FAB59329E5962019-11-27.jpg | |
14 | - | |
15 | -2019-11-27 10:24:50 文件名:4725B668776A68E29326F7B473A9463F2019-11-27.jpg | |
16 | - | |
17 | -2019-11-27 10:25:04 文件名:B0F88BCB00C4320F7E5DEC65241AC2A82019-11-27.jpg | |
18 | - | |
19 | -2019-11-27 10:25:09 文件名:DCAF738191E04286560B89649B9046682019-11-27.jpg | |
20 | - | |
21 | -2019-11-27 10:25:24 文件名:F59B539256C84B13D3A88029CC73A88A2019-11-27.jpg | |
22 | - | |
23 | -2019-11-27 10:25:29 文件名:0C16CCFA0C362A3F30046DC3DBEFC9CA2019-11-27.jpg | |
24 | - | |
25 | -2019-11-27 10:25:33 文件名:320328FD87BDE778E72C1B2693CC439B2019-11-27.jpg | |
26 | - | |
27 | -2019-11-27 10:25:38 文件名:625B8DAC8F7E1EC84187715845629C512019-11-27.jpg | |
28 | - | |
29 | -2019-11-27 10:25:55 文件名:C96B2864DCC8F2760F448E6D9283EBAA2019-11-27.jpg | |
30 | - | |
31 | -2019-11-27 10:25:57 文件名:BCBC1AEF17B92419FB502941B76A238C2019-11-27.jpg | |
32 | - | |
33 | -2019-11-27 10:26:00 文件名:25101CE455217F300710147CEF23184F2019-11-27.jpg | |
34 | - | |
35 | -2019-11-27 10:26:00 文件名:ABF1064C9628A0F2E0AE1BC64AF2446C2019-11-27.jpg | |
36 | - | |
37 | -2019-11-27 10:26:03 文件名:581E27479DBD28D6EAB7A004CECA0BA32019-11-27.jpg | |
38 | - | |
39 | -2019-11-27 10:26:05 文件名:BB45B0B376C08F39058A86F7C4DA7BF02019-11-27.jpg | |
40 | - | |
41 | -2019-11-27 10:26:13 文件名:82C8F712A6E59EC3EA16CF11AA09723B2019-11-27.jpg | |
42 | - | |
43 | -2019-11-27 10:26:18 文件名:11F2F0FC7D64B3DEB47F07CCD3A11AC72019-11-27.jpg | |
44 | - | |
45 | -2019-11-27 10:26:22 文件名:CCBBBA717D13B8058D07AC6523A076492019-11-27.jpg | |
46 | - | |
47 | -2019-11-27 10:26:25 文件名:632F822D2CA45C76456F1313C84597262019-11-27.jpg | |
48 | - | |
49 | -2019-11-27 10:26:27 文件名:867236B30E58229261D3A4289ADC273B2019-11-27.jpg | |
50 | - | |
51 | -2019-11-27 10:26:30 文件名:4A0762296BF7F9C93E2AD830A332A8432019-11-27.jpg | |
52 | - | |
53 | -2019-11-27 10:26:32 文件名:EB6452574128FE028334436D1B7E927E2019-11-27.jpg | |
54 | - | |
55 | -2019-11-27 10:26:38 文件名:9431B0268FF793433425469C5A55F9A22019-11-27.jpg | |
56 | - | |
57 | -2019-11-27 10:26:40 文件名:EC5419C85D8E378796741943A663B3732019-11-27.jpg | |
58 | - | |
59 | -2019-11-27 10:26:44 文件名:48ECCE4288DDB5DF92E683CECCB2CCBF2019-11-27.jpg | |
60 | - | |
61 | -2019-11-27 10:26:45 文件名:129A4DDCF92DF3F03C7BEB38BE6D242D2019-11-27.jpg | |
62 | - | |
63 | -2019-11-27 10:26:48 文件名:A1D82B10388020F4EB2B0132A00438562019-11-27.jpg | |
64 | - | |
65 | -2019-11-27 10:26:49 文件名:7A72A4D0CE3F906659762A70778968572019-11-27.jpg | |
66 | - | |
67 | -2019-11-27 10:26:53 文件名:D6074CB8E081633A7B25AE4A29C27E1B2019-11-27.jpg | |
68 | - | |
69 | -2019-11-27 10:34:55 文件名:0355C70D74F948E1207B33915E40DBBA2019-11-27.jpg | |
70 | - | |
71 | -2019-11-27 10:34:59 文件名:D99935BEBEA89F9710CE23775A8AE61F2019-11-27.jpg | |
72 | - | |
73 | -2019-11-27 10:35:00 文件名:F6D68747EC477E67C640FDCE94E6E2582019-11-27.jpg | |
74 | - | |
75 | -2019-11-27 10:35:04 文件名:295029379ED79DA4CF5CCEC1BAF572F12019-11-27.jpg | |
76 | - | |
77 | -2019-11-27 10:35:23 文件名:70F31E8750040DC1913FAFD5BFB3CD832019-11-27.jpg | |
78 | - | |
79 | -2019-11-27 10:35:28 文件名:024CA6FC7983CB6B611B2D2832BCF17C2019-11-27.jpg | |
80 | - | |
81 | -2019-11-27 10:35:32 文件名:E7097B486BA7869698A61F1B659417FF2019-11-27.jpg | |
82 | - | |
83 | -2019-11-27 10:35:37 文件名:3FB5911C2B6C4F11301B8B93356B1A892019-11-27.jpg | |
84 | - | |
85 | -2019-11-27 10:36:09 文件名:ED3DC3781880EBBEC24ACC7821F8015D2019-11-27.jpg | |
86 | - | |
87 | -2019-11-27 10:36:12 文件名:70E6D4B05278556CB347EB1A86AA60962019-11-27.jpg | |
88 | - | |
89 | -2019-11-27 10:36:14 文件名:3DE839366E3D90AEABAD784C2C1ECD5E2019-11-27.jpg | |
90 | - | |
91 | -2019-11-27 10:36:15 文件名:A793182637DD5299C8DBFCCAE3C9DBD42019-11-27.jpg | |
92 | - | |
93 | -2019-11-27 10:36:17 文件名:24E9DB276340C807E3872AB53278796C2019-11-27.jpg | |
94 | - | |
95 | -2019-11-27 10:36:20 文件名:037E4F58057BDA6CAD0B53B312DCE08A2019-11-27.jpg | |
96 | - | |
97 | -2019-11-27 10:36:30 文件名:62A7DD07160A659D44ED3E0F8CA149612019-11-27.jpg | |
98 | - | |
99 | -2019-11-27 10:36:35 文件名:35850C6FEEFD24287EDF8543F3BCDBA82019-11-27.jpg | |
100 | - | |
101 | -2019-11-27 10:36:42 文件名:66CEEC8F9CA22DDFE96C0A65F5BE07A62019-11-27.jpg | |
102 | - | |
103 | -2019-11-27 10:36:47 文件名:D624897445219021AFE2C91978BC2B2F2019-11-27.jpg | |
104 | - | |
105 | -2019-11-27 10:36:51 文件名:4A47CEE2E8CA8A4E11365F4B49B2CF692019-11-27.jpg | |
106 | - | |
107 | -2019-11-27 10:36:56 文件名:1536FCDF2E2FB87F7E151502CB2C26BB2019-11-27.jpg | |
108 | - | |
109 | -2019-11-27 10:37:00 文件名:FA6B742B82A3695203AF0DF35F1F465D2019-11-27.jpg | |
110 | - | |
111 | -2019-11-27 10:37:05 文件名:FB5F0997D59CDA6C3022E2467C1A1E072019-11-27.jpg | |
112 | - | |
113 | -2019-11-27 10:37:21 文件名:7D344E9110CC2FC26354B28A6ECBF7522019-11-27.jpg | |
114 | - | |
115 | -2019-11-27 10:37:26 文件名:514A78EC6169EA6CEAE1F6A1F83A2A822019-11-27.jpg | |
116 | - | |
117 | -2019-11-27 10:37:49 文件名:95FBE2E863CDBBA46086F963D3DD01F62019-11-27.jpg | |
118 | - | |
119 | -2019-11-27 10:37:54 文件名:E279992C1EFCE7614F0F10EFF0B9BA3B2019-11-27.jpg | |
120 | - | |
121 | -2019-11-27 10:38:05 文件名:F575DA21D0AA891BF8A77F3FF6491F9A2019-11-27.jpg | |
122 | - | |
123 | -2019-11-27 10:40:03 文件名:52236608F132CA3CBF878CC0446B9EE22019-11-27.jpg | |
124 | - | |
125 | -2019-11-27 10:40:06 文件名:44438C86EDF1C4B6215726605356409F2019-11-27.jpg | |
126 | - | |
127 | -2019-11-27 10:40:08 文件名:282DA0DFC2466870CE648AEA83B099982019-11-27.jpg | |
128 | - | |
129 | -2019-11-27 10:40:11 文件名:A71B08CC32A3DD9C77B2013BF4B8832F2019-11-27.jpg | |
130 | - | |
131 | -2019-11-27 10:40:31 文件名:658808E32F8D6076EA5C8B2C09A998C32019-11-27.jpg | |
132 | - | |
133 | -2019-11-27 10:40:36 文件名:3BE13E615D7949AB09D0D9DD6BE55A232019-11-27.jpg | |
134 | - | |
135 | -2019-11-27 10:40:42 文件名:47F493546E4640E8413ADB780E09D6192019-11-27.jpg | |
136 | - | |
137 | -2019-11-27 10:40:47 文件名:4FA91F81AB7E3F3178BC3B814F7E23692019-11-27.jpg | |
138 | - | |
139 | -2019-11-27 10:49:08 文件名:CC44E5FDDBBDB7DEC8560D4B225507E92019-11-27.jpg | |
140 | - | |
141 | -2019-11-27 10:49:13 文件名:946D1336238369C2E96FA9273F44D2A32019-11-27.jpg | |
142 | - | |
143 | -2019-11-27 10:49:15 文件名:ECA81E17F830B0368FE84AC18CAA1F1E2019-11-27.jpg | |
144 | - | |
145 | -2019-11-27 10:49:20 文件名:D36C45573059293F11280E1DF337B5F72019-11-27.jpg | |
146 | - | |
147 | -2019-11-27 10:49:45 文件名:46A2227AF668DC04F80604EBBDD2F1EA2019-11-27.jpg | |
148 | - | |
149 | -2019-11-27 10:49:49 文件名:9F4A08016388F0FCF07A5E1CD5DBDC322019-11-27.jpg | |
150 | - | |
151 | -2019-11-27 10:49:50 文件名:263E600D5BECFF15ED1B06A016522EDF2019-11-27.jpg | |
152 | - | |
153 | -2019-11-27 10:49:54 文件名:3299C81578B701333C48113FA242D6762019-11-27.jpg | |
154 | - | |
155 | -2019-11-27 10:49:54 文件名:512D353150EB3F72A6617769765FC46E2019-11-27.jpg | |
156 | - | |
157 | -2019-11-27 10:49:59 文件名:EC7A0BCA1ED69E2B7BF58C2F72109EE52019-11-27.jpg | |
158 | - | |
159 | -2019-11-27 10:50:27 文件名:6443415F760D49779E9A29C2FF6E2B312019-11-27.jpg | |
160 | - | |
161 | -2019-11-27 10:50:32 文件名:90890C206CE5283D47B6F7D3910909302019-11-27.jpg | |
162 | - | |
163 | -2019-11-27 10:50:36 文件名:AF7F0741B25412309E397A4142F09E5C2019-11-27.jpg | |
164 | - | |
165 | -2019-11-27 10:50:41 文件名:45B40CC34869548AC3EB272F00E070EA2019-11-27.jpg | |
166 | - | |
167 | -2019-11-27 10:51:10 文件名:E1AD3245A234C8A8C888AB9744D3F0042019-11-27.jpg | |
168 | - | |
169 | -2019-11-27 10:51:12 文件名:D812A36A0A5D7FD734B72663158F75BD2019-11-27.jpg | |
170 | - | |
171 | -2019-11-27 10:51:15 文件名:F8270BCA5642F3AFCFDB7AC60D3C36FC2019-11-27.jpg | |
172 | - | |
173 | -2019-11-27 10:51:17 文件名:55C87DC191A927AD173EC3C32024E9462019-11-27.jpg | |
174 | - | |
175 | -2019-11-27 10:52:08 文件名:8F89B3C9E24BF8DD5E8192F484F063062019-11-27.jpg | |
176 | - | |
177 | -2019-11-27 10:52:13 文件名:78F1CA5FE13B066DCCE171AA2ECA80E32019-11-27.jpg | |
178 | - | |
179 | -2019-11-27 10:53:04 文件名:BBC8B8E29E832CC49BB0AE079C4AF3DB2019-11-27.jpg | |
180 | - | |
181 | -2019-11-27 10:53:09 文件名:275E22DE4998CB434707C9D96D4324082019-11-27.jpg | |
182 | - | |
183 | -2019-11-27 10:55:35 文件名:F53DB87234FBA3197B71D4294FC0CA612019-11-27.jpg | |
184 | - | |
185 | -2019-11-27 10:55:40 文件名:6A3EDE9969AA37A46D6A7B6A2AFBF5712019-11-27.jpg | |
186 | - | |
187 | -2019-11-27 10:56:39 文件名:4C244C12A55159B771F279FE99DF854D2019-11-27.jpg | |
188 | - | |
189 | -2019-11-27 10:56:44 文件名:3EFA3523C28FFBE7155003F45F78A04C2019-11-27.jpg | |
190 | - | |
191 | -2019-11-27 10:57:13 文件名:A24648956C4B4C131574E280740620322019-11-27.jpg | |
192 | - | |
193 | -2019-11-27 10:57:18 文件名:D4B51829A900DE83CE2FE80BBC03E8BA2019-11-27.jpg | |
194 | - | |
195 | -2019-11-27 10:57:18 文件名:309D7969698AF66DFF094E01724941032019-11-27.jpg | |
196 | - | |
197 | -2019-11-27 10:57:19 文件名:729857F43930936AE3977790BF302B632019-11-27.jpg | |
198 | - | |
199 | -2019-11-27 10:57:19 文件名:2F1CDCA51CD43C46235C71817489A7AC2019-11-27.jpg | |
200 | - | |
201 | -2019-11-27 10:57:23 文件名:9FB9C8195CCB175F5BEB35B7441D089C2019-11-27.jpg | |
202 | - | |
203 | -2019-11-27 10:57:24 文件名:71B195184585D1E2D67D418B4DD9E3052019-11-27.jpg | |
204 | - | |
205 | -2019-11-27 10:57:24 文件名:6926EE97A9469803FBBF0C73D0CDA9312019-11-27.jpg | |
206 | - | |
207 | -2019-11-27 10:57:48 文件名:BE4B21434B764356157F8761DF87A0FE2019-11-27.jpg | |
208 | - | |
209 | -2019-11-27 10:57:53 文件名:F7456467AC2C72CAC0D3FDE2E3A322E42019-11-27.jpg | |
210 | - |
cloud/quartz/pom.xml
... | ... | @@ -89,7 +89,7 @@ |
89 | 89 | <configuration> |
90 | 90 | <archive> |
91 | 91 | <manifest> |
92 | - <mainClass>com.sincere.smartSearch.SmartSearchApplication</mainClass> | |
92 | + <mainClass>com.sincere.quartz.QuartzApplication</mainClass> | |
93 | 93 | <addClasspath>true</addClasspath> |
94 | 94 | <classpathPrefix>lib/</classpathPrefix> |
95 | 95 | </manifest> | ... | ... |
cloud/quartz/src/main/java/com/sincere/quartz/enums/KqTypeEnums.java
0 → 100644
... | ... | @@ -0,0 +1,56 @@ |
1 | +package com.sincere.quartz.enums; | |
2 | + | |
3 | +import com.sincere.common.dto.smartCampus.KqTeacherDto; | |
4 | + | |
5 | +/** | |
6 | + * @author chen | |
7 | + * @version 1.0 | |
8 | + * @date 2019/11/29 0029 11:44 | |
9 | + */ | |
10 | +public enum KqTypeEnums { | |
11 | + morning_to_school(1,"早上到校"), | |
12 | + noon_le_school(2,"中午离校"), | |
13 | + afternoon_to_school(3,"下午到校"), | |
14 | + afternoon_le_school(4,"下午离校"), | |
15 | + night_to_school(5,"晚上到校"), | |
16 | + night_le_school(6,"晚上离校"), | |
17 | + morning_to_chamber(7,"早上离寝"), | |
18 | + noon_to_chamber(8,"中午到寝"), | |
19 | + noon_le_chamber(9,"中午离寝"), | |
20 | + afternoon_to_chamber(10,"下午到寝"), | |
21 | + afternoon_le_chamber(11,"下午离寝"), | |
22 | + night_to_chamber(12,"晚上到寝"); | |
23 | + | |
24 | + private int type ; | |
25 | + private String name ; | |
26 | + | |
27 | + public int getType() { | |
28 | + return type; | |
29 | + } | |
30 | + | |
31 | + public void setType(int type) { | |
32 | + this.type = type; | |
33 | + } | |
34 | + | |
35 | + public String getName() { | |
36 | + return name; | |
37 | + } | |
38 | + | |
39 | + public void setName(String name) { | |
40 | + this.name = name; | |
41 | + } | |
42 | + | |
43 | + KqTypeEnums(int type, String name) { | |
44 | + this.type = type; | |
45 | + this.name = name; | |
46 | + } | |
47 | + | |
48 | + public static String getName(int type){ | |
49 | + for(KqTypeEnums enums : KqTypeEnums.values()){ | |
50 | + if(enums.getType() == type){ | |
51 | + return enums.getName(); | |
52 | + } | |
53 | + } | |
54 | + return "" ; | |
55 | + } | |
56 | +} | ... | ... |
cloud/quartz/src/main/java/com/sincere/quartz/enums/TypeEnums.java
0 → 100644
... | ... | @@ -0,0 +1,35 @@ |
1 | +package com.sincere.quartz.enums; | |
2 | + | |
3 | +/** | |
4 | + * @author chen | |
5 | + * @version 1.0 | |
6 | + * @date 2019/11/29 0029 11:25 | |
7 | + */ | |
8 | +public enum TypeEnums { | |
9 | + | |
10 | + kaoqing(10,"考勤"); | |
11 | + | |
12 | + TypeEnums(int type, String name) { | |
13 | + this.type = type; | |
14 | + this.name = name; | |
15 | + } | |
16 | + | |
17 | + private int type ; | |
18 | + private String name ; | |
19 | + | |
20 | + public int getType() { | |
21 | + return type; | |
22 | + } | |
23 | + | |
24 | + public void setType(int type) { | |
25 | + this.type = type; | |
26 | + } | |
27 | + | |
28 | + public String getName() { | |
29 | + return name; | |
30 | + } | |
31 | + | |
32 | + public void setName(String name) { | |
33 | + this.name = name; | |
34 | + } | |
35 | +} | ... | ... |
cloud/quartz/src/main/java/com/sincere/quartz/feign/ScFeign.java
1 | 1 | package com.sincere.quartz.feign; |
2 | 2 | |
3 | 3 | import com.sincere.common.dto.smartCampus.AppDto; |
4 | +import com.sincere.common.dto.smartCampus.CensusKqDto; | |
4 | 5 | import com.sincere.common.dto.smartCampus.KqTeacherDto; |
5 | 6 | import com.sincere.common.dto.smartCampus.TemplateDto; |
6 | 7 | import org.springframework.cloud.openfeign.FeignClient; |
... | ... | @@ -26,4 +27,7 @@ public interface ScFeign { |
26 | 27 | |
27 | 28 | @RequestMapping(value = "/sm/kq/getApp",method = RequestMethod.GET) |
28 | 29 | AppDto getApp(@RequestParam("schoolId")int schoolId , @RequestParam("type") int type); |
30 | + | |
31 | + @RequestMapping(value = "/sm/kq/getCensusKq",method = RequestMethod.GET) | |
32 | + List<CensusKqDto> getCensusKq(@RequestParam("userId") String userId , @RequestParam("type") int type); | |
29 | 33 | } | ... | ... |
cloud/quartz/src/main/java/com/sincere/quartz/job/KQJob.java
0 → 100644
... | ... | @@ -0,0 +1,177 @@ |
1 | +package com.sincere.quartz.job; | |
2 | + | |
3 | +import com.sincere.common.dto.smartCampus.AppDto; | |
4 | +import com.sincere.common.dto.smartCampus.CensusKqDto; | |
5 | +import com.sincere.common.dto.smartCampus.KqTeacherDto; | |
6 | +import com.sincere.common.dto.smartCampus.TemplateDto; | |
7 | +import com.sincere.common.util.DateUtils; | |
8 | +import com.sincere.quartz.enums.KqTypeEnums; | |
9 | +import com.sincere.quartz.enums.TypeEnums; | |
10 | +import com.sincere.quartz.feign.ScFeign; | |
11 | +import com.sincere.quartz.mapper.SmsMapper; | |
12 | +import com.sincere.quartz.model.DingSms; | |
13 | +import com.sincere.quartz.model.WeChatSms; | |
14 | +import org.apache.commons.lang3.StringUtils; | |
15 | +import org.slf4j.Logger; | |
16 | +import org.slf4j.LoggerFactory; | |
17 | +import org.springframework.beans.factory.annotation.Autowired; | |
18 | +import org.springframework.scheduling.annotation.Scheduled; | |
19 | +import org.springframework.stereotype.Service; | |
20 | + | |
21 | +import java.util.*; | |
22 | + | |
23 | +/** | |
24 | + * 考勤任务推送调用 | |
25 | + * 主要推送盯盯以及企业号 | |
26 | + * @author chen | |
27 | + * @version 1.0 | |
28 | + * @date 2019/11/27 0027 17:05 | |
29 | + */ | |
30 | +@Service | |
31 | +public class KQJob { | |
32 | + | |
33 | + private Logger logger = LoggerFactory.getLogger(KQJob.class); | |
34 | + | |
35 | + @Autowired | |
36 | + ScFeign scFeign ; | |
37 | + | |
38 | + @Autowired | |
39 | + SmsMapper smsMapper; | |
40 | + | |
41 | + private static String date ; | |
42 | + private static Map<String , String> map = new HashMap<>(); | |
43 | + | |
44 | + @Scheduled(cron = "* 0/1 * * * ?") | |
45 | + public void kaoQing() { | |
46 | + String now = DateUtils.date2String(new Date(),DateUtils.format1) ; | |
47 | + if(StringUtils.isBlank(date)){ | |
48 | + initMap(); | |
49 | + date = now ; | |
50 | + } | |
51 | + if(!DateUtils.date2String(new Date(),DateUtils.format1).equals(date)){ | |
52 | + initMap(); | |
53 | + date = DateUtils.date2String(new Date(),DateUtils.format1) ; | |
54 | + } | |
55 | + //开始过滤数据 推送 | |
56 | + List<String> keyList = new ArrayList<>(); | |
57 | + for(Map.Entry<String, String> entity : map.entrySet()){ | |
58 | + String endTime = entity.getValue().split("_")[1]; | |
59 | + if(DateUtils.getDateDifference(new Date(),DateUtils.string2Date(now+" "+endTime+":00",DateUtils.format2),"m")>=2 | |
60 | + && DateUtils.getDateDifference(new Date(),DateUtils.string2Date(now+" "+endTime+":00",DateUtils.format2),"m")<5){ | |
61 | + String key = entity.getKey(); | |
62 | + String[] messageArray = key.split("_"); | |
63 | + List<KqTeacherDto> list = scFeign.getTeacherList(Integer.valueOf(messageArray[1])); | |
64 | + if(messageArray[2].contains("5")){ | |
65 | + logger.info("企业号推送:" + messageArray[0] + "__" + messageArray[1]); | |
66 | + weChatPush(list,entity.getValue()); | |
67 | + } | |
68 | + if(messageArray[2].contains("4")){ | |
69 | + logger.info(("盯盯推送:" + messageArray[0] + "__" + messageArray[1])); | |
70 | + dingPush(list,entity.getValue()); | |
71 | + } | |
72 | + keyList.add(key); | |
73 | + } | |
74 | + } | |
75 | + for(String key : keyList){ | |
76 | + map.remove(key); | |
77 | + } | |
78 | + } | |
79 | + | |
80 | + private void initMap(){ | |
81 | + map = new HashMap<>(); | |
82 | + List<TemplateDto> list = scFeign.getAllTemplate(); | |
83 | + logger.info(("------需要推送的考勤模板------")); | |
84 | + for(TemplateDto templateDto : list){ | |
85 | + String config = templateDto.getConfig(); | |
86 | + String[] array = config.split("<Template"); | |
87 | + for(int i = 1 ; i<array.length ;i++){ | |
88 | + try{ | |
89 | + String msg = array[i]; | |
90 | + String beginTime = msg.substring(msg.indexOf("BeginTime")+11,msg.indexOf("BeginTime")+16); | |
91 | + String endTime = msg.substring(msg.indexOf("EndTime")+9,msg.indexOf("EndTime")+14); | |
92 | + String templateId = msg.substring(msg.indexOf("TemplateID")+12,msg.indexOf("TemplateID")+22); | |
93 | + String Week = msg.substring(msg.indexOf("Week")+6,msg.indexOf("Week")+19); | |
94 | + String type = msg.substring(msg.indexOf("Type")+6,msg.indexOf("Type")+8); | |
95 | + type = type.replace("\"",""); | |
96 | + int nowWeek = DateUtils.getWeek() ; | |
97 | + if(Week.contains(nowWeek+"")){ | |
98 | + logger.info((templateId+"_"+templateDto.getSchoolId()+templateDto.getType()+"------"+beginTime+"_"+endTime)); | |
99 | + map.put(templateId+"_"+templateDto.getSchoolId()+"_"+templateDto.getType() , beginTime+"_"+endTime+"_"+type); | |
100 | + } | |
101 | + }catch (Exception e){ | |
102 | + e.printStackTrace(); | |
103 | + } | |
104 | + } | |
105 | + } | |
106 | + } | |
107 | + | |
108 | + private void dingPush(List<KqTeacherDto> list , String key){ | |
109 | + String[] times = key.split("_"); | |
110 | + String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | |
111 | + AppDto appDto = scFeign.getApp(list.get(0).getSchoolId(),1); | |
112 | + for(KqTeacherDto teacher : list){ | |
113 | + if(StringUtils.isNotBlank(teacher.getDingUserId())){ | |
114 | + List<CensusKqDto> censusKqDtos = scFeign.getCensusKq(teacher.getUserId(),Integer.valueOf(times[2])); | |
115 | + String message = ""; | |
116 | + for(CensusKqDto censusKqDto : censusKqDtos){ | |
117 | + int number = censusKqDto.getAllT() - censusKqDto.getKqT() ; | |
118 | + message += "[" + censusKqDto.getClassName() + "]未考勤" + number + "人;"; | |
119 | + } | |
120 | + DingSms dingSms = new DingSms(); | |
121 | + dingSms.setName(teacher.getName()); | |
122 | + dingSms.setTableName("DingSmsNew"+tableSuffix); | |
123 | + dingSms.setMsg("报告类型:"+KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - "+ | |
124 | + "签到日期:"+DateUtils.date2String(new Date(),DateUtils.format1)+ "("+DateUtils.getWeekName()+") \n - "+ | |
125 | + "签到时间:"+times[0]+"-"+ times[1] +" \n - "+ | |
126 | + "整体数据:" + message.substring(0,message.length()-1)); | |
127 | + dingSms.setSchoolId(teacher.getSchoolId()); | |
128 | + dingSms.setDingUserId(teacher.getDingUserId()); | |
129 | + dingSms.setAgentId(appDto.getAgentId()); | |
130 | + String wapUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + | |
131 | + "schoolid="+teacher.getSchoolId()+"&userId="+teacher.getUserId()+"&name="+teacher.getName()+ | |
132 | + "&data="+teacher.getDingUserId()+"&type=1&stype=4&mobile="+teacher.getMobile()+"&pass="+teacher.getPass()+ | |
133 | + "&face=&sourcetype=16&soutype=3×tamp="+ DateUtils.getDate() ; | |
134 | + dingSms.setWapUrl(wapUrl); | |
135 | + dingSms.setReceiveUserId(teacher.getUserId()); | |
136 | + dingSms.setTdType(TypeEnums.kaoqing.getType()); | |
137 | + smsMapper.insertDing(dingSms); | |
138 | + } | |
139 | + | |
140 | + } | |
141 | + } | |
142 | + | |
143 | + private void weChatPush(List<KqTeacherDto> list , String key){ | |
144 | + String[] times = key.split("_"); | |
145 | + String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | |
146 | + AppDto appDto = scFeign.getApp(list.get(0).getSchoolId(),0); | |
147 | + for(KqTeacherDto teacher : list){ | |
148 | + if (StringUtils.isNotBlank(teacher.getOpenId())) { | |
149 | + List<CensusKqDto> censusKqDtos = scFeign.getCensusKq(teacher.getUserId(),Integer.valueOf(times[2])); | |
150 | + String message = ""; | |
151 | + for(CensusKqDto censusKqDto : censusKqDtos){ | |
152 | + int number = censusKqDto.getAllT() - censusKqDto.getKqT() ; | |
153 | + message += "[" + censusKqDto.getClassName() + "]未考勤" + number + "人;"; | |
154 | + } | |
155 | + WeChatSms weChatSms = new WeChatSms(); | |
156 | + weChatSms.setTableName("qyhSmsNew" + tableSuffix); | |
157 | + weChatSms.setMsg("报告类型:"+KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - "+ | |
158 | + "签到日期:"+DateUtils.date2String(new Date(),DateUtils.format1)+ "("+DateUtils.getWeekName()+") \n - "+ | |
159 | + "签到时间:"+times[0]+"-"+ times[1] +" \n - "+ | |
160 | + "整体数据:" + message.substring(0,message.length()-1)); | |
161 | + weChatSms.setSchoolId(teacher.getSchoolId()); | |
162 | + weChatSms.setName(teacher.getName()); | |
163 | + weChatSms.setQiYeHaoUserId(teacher.getWeChatUserId()); | |
164 | + weChatSms.setReceiveUserId(teacher.getUserId()); | |
165 | + weChatSms.setAppId(appDto.getAgentId()); | |
166 | + weChatSms.setSecret(appDto.getAgentSecret()); | |
167 | + String msgUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + | |
168 | + "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() + | |
169 | + "&data=" + teacher.getWeChatUserId() + "&type=1&stype=3&mobile=" + teacher.getMobile() + "&pass=" + teacher.getPass() + | |
170 | + "&face=" + teacher.getFace() + "&sourcetype=16&soutype=2×tamp=" + DateUtils.getDate(); | |
171 | + weChatSms.setMsgUrl(msgUrl); | |
172 | + weChatSms.setTdType(TypeEnums.kaoqing.getType()); | |
173 | + smsMapper.insertWeChat(weChatSms); | |
174 | + } | |
175 | + } | |
176 | + } | |
177 | +} | ... | ... |
cloud/quartz/src/main/java/com/sincere/quartz/job/QDService.java
... | ... | @@ -1,142 +0,0 @@ |
1 | -package com.sincere.quartz.job; | |
2 | - | |
3 | -import com.sincere.common.dto.smartCampus.AppDto; | |
4 | -import com.sincere.common.dto.smartCampus.KqTeacherDto; | |
5 | -import com.sincere.common.dto.smartCampus.TemplateDto; | |
6 | -import com.sincere.common.util.DateUtils; | |
7 | -import com.sincere.quartz.feign.ScFeign; | |
8 | -import com.sincere.quartz.mapper.SmsMapper; | |
9 | -import com.sincere.quartz.model.DingSms; | |
10 | -import com.sincere.quartz.model.WeChatSms; | |
11 | -import org.apache.commons.lang3.StringUtils; | |
12 | -import org.springframework.beans.factory.annotation.Autowired; | |
13 | -import org.springframework.scheduling.annotation.Scheduled; | |
14 | -import org.springframework.stereotype.Service; | |
15 | - | |
16 | -import java.util.*; | |
17 | - | |
18 | -/** | |
19 | - * @author chen | |
20 | - * @version 1.0 | |
21 | - * @date 2019/11/27 0027 17:05 | |
22 | - */ | |
23 | -@Service | |
24 | -public class QDService { | |
25 | - | |
26 | - @Autowired | |
27 | - ScFeign scFeign ; | |
28 | - | |
29 | - @Autowired | |
30 | - SmsMapper smsMapper; | |
31 | - | |
32 | - private static String date ; | |
33 | - private static Map<String , String> map = new HashMap<>(); | |
34 | - | |
35 | - @Scheduled(cron = "* 0/1 * * * ?") | |
36 | - public void kaoQing() { | |
37 | - String now = DateUtils.date2String(new Date(),DateUtils.format1) ; | |
38 | - if(StringUtils.isBlank(date)){ | |
39 | - initMap(); | |
40 | - date = now ; | |
41 | - } | |
42 | - if(!DateUtils.date2String(new Date(),DateUtils.format1).equals(date)){ | |
43 | - initMap(); | |
44 | - date = DateUtils.date2String(new Date(),DateUtils.format1) ; | |
45 | - } | |
46 | - //开始过滤数据 推送 | |
47 | - List<String> keyList = new ArrayList<>(); | |
48 | - for(Map.Entry<String, String> entity : map.entrySet()){ | |
49 | - String endTime = entity.getValue().split("_")[1]; | |
50 | - if(DateUtils.getDateDifference(new Date(),DateUtils.string2Date(now+" "+endTime+":00",DateUtils.format2),"m")>0 | |
51 | - && DateUtils.getDateDifference(new Date(),DateUtils.string2Date(now+" "+endTime+":00",DateUtils.format2),"m")<5){ | |
52 | - String key = entity.getKey(); | |
53 | - String[] messageArray = key.split("_"); | |
54 | - List<KqTeacherDto> list = scFeign.getTeacherList(Integer.valueOf(messageArray[1])); | |
55 | - if(messageArray[2].contains("4")){ | |
56 | - System.out.println("企业号推送:" + messageArray[0] + "__" + messageArray[1]); | |
57 | - weChatPush(list,entity.getValue()); | |
58 | - } | |
59 | - if(messageArray[2].contains("5")){ | |
60 | - System.out.println("盯盯推送:" + messageArray[0] + "__" + messageArray[1]); | |
61 | - dingPush(list,entity.getValue()); | |
62 | - } | |
63 | - keyList.add(key); | |
64 | - } | |
65 | - } | |
66 | - for(String key : keyList){ | |
67 | - map.remove(key); | |
68 | - } | |
69 | - } | |
70 | - | |
71 | - private void initMap(){ | |
72 | - map = new HashMap<>(); | |
73 | - List<TemplateDto> list = scFeign.getAllTemplate(); | |
74 | - for(TemplateDto templateDto : list){ | |
75 | - String config = templateDto.getConfig(); | |
76 | - String[] array = config.split("<Template"); | |
77 | - for(int i = 1 ; i<array.length ;i++){ | |
78 | - try{ | |
79 | - String msg = array[i]; | |
80 | - String beginTime = msg.substring(msg.indexOf("BeginTime")+11,msg.indexOf("BeginTime")+16); | |
81 | - String endTime = msg.substring(msg.indexOf("EndTime")+9,msg.indexOf("EndTime")+14); | |
82 | - String templateId = msg.substring(msg.indexOf("TemplateID")+12,msg.indexOf("TemplateID")+22); | |
83 | - String Week = msg.substring(msg.indexOf("Week")+6,msg.indexOf("Week")+19); | |
84 | - int nowWeek = DateUtils.getWeek() ; | |
85 | - if(Week.contains(nowWeek+"")){ | |
86 | - map.put(templateId+"_"+templateDto.getSchoolId()+"_"+templateDto.getType() , beginTime+"_"+endTime); | |
87 | - } | |
88 | - }catch (Exception e){ | |
89 | - e.printStackTrace(); | |
90 | - } | |
91 | - } | |
92 | - } | |
93 | - } | |
94 | - | |
95 | - private void dingPush(List<KqTeacherDto> list , String key){ | |
96 | - String[] times = key.split("_"); | |
97 | - String Date = DateUtils.date2String(new Date(),DateUtils.format1); | |
98 | - String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | |
99 | - AppDto appDto = scFeign.getApp(list.get(0).getSchoolId(),1); | |
100 | - for(KqTeacherDto teacher : list){ | |
101 | - if(StringUtils.isNotBlank(teacher.getDingUserId())){ | |
102 | - DingSms dingSms = new DingSms(); | |
103 | - dingSms.setTableName("DingSmsNew"+tableSuffix); | |
104 | - dingSms.setMsg("{\"title\":\"请查看签到信息\",\"form\":[{\"key\":\"开始时间:\",\"value\":\"" + | |
105 | - Date+" "+times[0]+"\"},{\"key\":\"结束时间:\",\"value\":\""+Date+" "+times[1]+"\"}]}"); | |
106 | - dingSms.setSchoolId(teacher.getSchoolId()); | |
107 | - dingSms.setDingUserId(teacher.getDingUserId()); | |
108 | - dingSms.setAgentId(appDto.getAgentId()); //智能校卫 | |
109 | - String wapUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + | |
110 | - "schoolid="+teacher.getSchoolId()+"&userId="+teacher.getUserId()+"&name="+teacher.getName()+ | |
111 | - "&data="+teacher.getDingUserId()+"&type=1&stype=4&mobile="+teacher.getMobile()+"&pass="+teacher.getPass()+ | |
112 | - "&face=&sourcetype=16&soutype=3×tamp="+ DateUtils.getDate() ; | |
113 | - dingSms.setWapUrl(wapUrl); | |
114 | - smsMapper.insertDing(dingSms); | |
115 | - } | |
116 | - } | |
117 | - } | |
118 | - | |
119 | - private void weChatPush(List<KqTeacherDto> list , String key){ | |
120 | - String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | |
121 | - AppDto appDto = scFeign.getApp(list.get(0).getSchoolId(),0); | |
122 | - for(KqTeacherDto teacher : list){ | |
123 | - if(StringUtils.isNotBlank(teacher.getxSTOpenId())){ | |
124 | - WeChatSms weChatSms = new WeChatSms(); | |
125 | - weChatSms.setTableName("qyhSmsNew"+tableSuffix); | |
126 | - weChatSms.setSchoolId(teacher.getSchoolId()); | |
127 | - weChatSms.setName(teacher.getName()); | |
128 | - weChatSms.setxSTOpenId(teacher.getxSTOpenId()); | |
129 | - weChatSms.setQiYeHaoUserId(teacher.getWeChatUserId()); | |
130 | - weChatSms.setReceiveUserId(teacher.getUserId()); | |
131 | - weChatSms.setAppId(appDto.getAgentId()); | |
132 | - weChatSms.setSecret(appDto.getAgentSecret()); | |
133 | - String msgUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + | |
134 | - "schoolid="+teacher.getSchoolId()+"&userId="+teacher.getUserId()+"&name="+teacher.getName()+ | |
135 | - "&data="+teacher.getWeChatUserId()+"&type=1&stype=3&mobile="+teacher.getMobile()+"&pass="+teacher.getPass()+ | |
136 | - "&face="+ teacher.getFace() +"&sourcetype=16&soutype=2×tamp="+ DateUtils.getDate() ; | |
137 | - weChatSms.setMsgUrl(msgUrl); | |
138 | - smsMapper.insertWeChat(weChatSms); | |
139 | - } | |
140 | - } | |
141 | - } | |
142 | -} |
cloud/quartz/src/main/java/com/sincere/quartz/model/DingSms.java
... | ... | @@ -13,6 +13,9 @@ public class DingSms { |
13 | 13 | private String dingUserId ; |
14 | 14 | private String wapUrl ; |
15 | 15 | private String agentId ; |
16 | + private int tdType ; | |
17 | + private String receiveUserId ; | |
18 | + private String name ; | |
16 | 19 | |
17 | 20 | public String getTableName() { |
18 | 21 | return tableName; |
... | ... | @@ -61,4 +64,28 @@ public class DingSms { |
61 | 64 | public void setAgentId(String agentId) { |
62 | 65 | this.agentId = agentId; |
63 | 66 | } |
67 | + | |
68 | + public int getTdType() { | |
69 | + return tdType; | |
70 | + } | |
71 | + | |
72 | + public void setTdType(int tdType) { | |
73 | + this.tdType = tdType; | |
74 | + } | |
75 | + | |
76 | + public String getReceiveUserId() { | |
77 | + return receiveUserId; | |
78 | + } | |
79 | + | |
80 | + public void setReceiveUserId(String receiveUserId) { | |
81 | + this.receiveUserId = receiveUserId; | |
82 | + } | |
83 | + | |
84 | + public String getName() { | |
85 | + return name; | |
86 | + } | |
87 | + | |
88 | + public void setName(String name) { | |
89 | + this.name = name; | |
90 | + } | |
64 | 91 | } | ... | ... |
cloud/quartz/src/main/java/com/sincere/quartz/model/WeChatSms.java
... | ... | @@ -14,9 +14,10 @@ public class WeChatSms { |
14 | 14 | private int schoolId ; |
15 | 15 | private String msgUrl ; |
16 | 16 | private String name ; |
17 | - private String xSTOpenId ; | |
18 | 17 | private String appId ; |
19 | 18 | private String secret ; |
19 | + private int tdType ; | |
20 | + private String msg ; | |
20 | 21 | |
21 | 22 | |
22 | 23 | public String getAppId() { |
... | ... | @@ -83,11 +84,19 @@ public class WeChatSms { |
83 | 84 | this.name = name; |
84 | 85 | } |
85 | 86 | |
86 | - public String getxSTOpenId() { | |
87 | - return xSTOpenId; | |
87 | + public int getTdType() { | |
88 | + return tdType; | |
88 | 89 | } |
89 | 90 | |
90 | - public void setxSTOpenId(String xSTOpenId) { | |
91 | - this.xSTOpenId = xSTOpenId; | |
91 | + public void setTdType(int tdType) { | |
92 | + this.tdType = tdType; | |
93 | + } | |
94 | + | |
95 | + public String getMsg() { | |
96 | + return msg; | |
97 | + } | |
98 | + | |
99 | + public void setMsg(String msg) { | |
100 | + this.msg = msg; | |
92 | 101 | } |
93 | 102 | } | ... | ... |
cloud/quartz/src/main/resources/application.yaml
... | ... | @@ -14,7 +14,9 @@ mybatis: |
14 | 14 | mapper-locations: classpath:mapper/*.xml |
15 | 15 | type-aliases-package: com.sincere.quartz.mapper |
16 | 16 | check-config-location: true |
17 | - | |
17 | +ribbon: | |
18 | + ReadTimeout: 50000 | |
19 | + ConnectTimeout: 5000 | |
18 | 20 | eureka: |
19 | 21 | instance: |
20 | 22 | hostname: localhost | ... | ... |
... | ... | @@ -0,0 +1,60 @@ |
1 | +<?xml version="1.0" encoding="UTF-8"?> | |
2 | +<configuration debug="true"> | |
3 | + <!-- 项目名称 --> | |
4 | + <property name="PROJECT_NAME" value="quartz" /> | |
5 | + | |
6 | + <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--> | |
7 | + <property name="LOG_HOME" value="C://log"/> | |
8 | + | |
9 | + <!-- 控制台输出 --> | |
10 | + <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> | |
11 | + <!--<withJansi>true</withJansi>--> | |
12 | + <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> | |
13 | + <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> | |
14 | + <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %highlight([%-5level] %logger{50} - %msg%n)</pattern> | |
15 | + <charset>UTF-8</charset> | |
16 | + </encoder> | |
17 | + </appender> | |
18 | + | |
19 | + <!-- 按照每天生成日志文件 --> | |
20 | + <appender name="SYSTEM_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | |
21 | + <!-- 过滤器,只打印ERROR级别的日志 --> | |
22 | + <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> | |
23 | + <!--日志文件输出的文件名--> | |
24 | + <FileNamePattern>${LOG_HOME}/${PROJECT_NAME}/%d{yyyy-MM-dd HH}.%i.log</FileNamePattern> | |
25 | + <!--日志文件保留天数--> | |
26 | + <MaxHistory>30</MaxHistory> | |
27 | + <!--日志文件最大的大小--> | |
28 | + <MaxFileSize>100MB</MaxFileSize> | |
29 | + </rollingPolicy> | |
30 | + | |
31 | + <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> | |
32 | + <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> | |
33 | + <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] %logger{50} - %msg%n</pattern> | |
34 | + <charset>UTF-8</charset> | |
35 | + </encoder> | |
36 | + </appender> | |
37 | + <logger name="system_error" additivity="true"> | |
38 | + <appender-ref ref="SYSTEM_FILE"/> | |
39 | + </logger> | |
40 | + | |
41 | + <!-- 设置Spring&Hibernate日志输出级别 --> | |
42 | + <logger name="org.springframework" level="WARN" /> | |
43 | + <logger name="org.mybatis" level="WARN" /> | |
44 | + <logger name="com.ibatis" level="DEBUG" /> | |
45 | + <logger name="com.ibatis.common.jdbc.SimpleDataSource" level="DEBUG" /> | |
46 | + <logger name="com.ibatis.common.jdbc.ScriptRunner" level="DEBUG" /> | |
47 | + <logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate" level="DEBUG" /> | |
48 | + | |
49 | + | |
50 | + <logger name="java.sql.Connection" level="DEBUG" /> | |
51 | + <logger name="java.sql.Statement" level="DEBUG" /> | |
52 | + <logger name="java.sql.PreparedStatement" level="DEBUG" /> | |
53 | + <logger name="com.sincere.smartSearch.mapper" level="DEBUG" /> | |
54 | + <!-- 开发环境下的日志配置 --> | |
55 | + <root level="INFO"> | |
56 | + <appender-ref ref="CONSOLE" /> | |
57 | + <appender-ref ref="SYSTEM_FILE" /> | |
58 | + </root> | |
59 | + | |
60 | +</configuration> | ... | ... |
cloud/quartz/src/main/resources/mapper/SmsMapper.xml
... | ... | @@ -3,12 +3,12 @@ |
3 | 3 | <mapper namespace="com.sincere.quartz.mapper.SmsMapper"> |
4 | 4 | |
5 | 5 | <insert id="insertDing" parameterType="com.sincere.quartz.model.DingSms"> |
6 | - insert into ${tableName} (Msg,SchoolID,Type,Status,intime,sendtime,DingUserId,WapUrl,agentid) | |
7 | - values (#{msg},#{schoolId},2,0,GETDATE(),GETDATE(),#{dingUserId},#{wapUrl},#{agentId}) | |
6 | + insert into ${tableName} (Msg,MsgID,SchoolID,Type,Status,intime,sendtime,DingUserId,WapUrl,agentid,tdtype,ReceiveUserID,Remark) | |
7 | + values (#{msg},-1,#{schoolId},1,0,GETDATE(),GETDATE(),#{dingUserId},#{wapUrl},#{agentId},#{tdType},#{receiveUserId},#{name}) | |
8 | 8 | </insert> |
9 | 9 | |
10 | 10 | <insert id="insertWeChat" parameterType="com.sincere.quartz.model.WeChatSms"> |
11 | - insert into ${tableName} (SchoolID,WapUrl,Status,intime,sendTime,SendUserName,ReceiveUserID,QiYeHaoUserId,AppID,Secret) | |
12 | - values (#{schoolId},#{msgUrl},0,GETDATE(),GETDATE(),#{name},#{receiveUserId},#{qiYeHaoUserId},#{appId},#{secret}) | |
11 | + insert into ${tableName} (SchoolID,MsgID,Guid,WapUrl,Status,intime,sendTime,SendUserName,ReceiveUserID,QiYeHaoUserId,AppID,Secret,tdtype,Remark) | |
12 | + values (#{schoolId},-1,#{msg},#{msgUrl},0,GETDATE(),GETDATE(),'智能校卫',#{receiveUserId},#{qiYeHaoUserId},#{appId},#{secret},#{tdType},#{name}) | |
13 | 13 | </insert> |
14 | 14 | </mapper> | ... | ... |
cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/KqController.java
1 | 1 | package com.sincere.smartSearch.controller; |
2 | 2 | |
3 | 3 | import com.sincere.common.dto.smartCampus.AppDto; |
4 | +import com.sincere.common.dto.smartCampus.CensusKqDto; | |
4 | 5 | import com.sincere.common.dto.smartCampus.KqTeacherDto; |
5 | 6 | import com.sincere.common.dto.smartCampus.TemplateDto; |
7 | +import com.sincere.common.util.DateUtils; | |
6 | 8 | import com.sincere.smartSearch.model.KqTemplate; |
7 | 9 | import com.sincere.smartSearch.service.KqService; |
8 | 10 | import org.springframework.beans.factory.annotation.Autowired; |
... | ... | @@ -11,10 +13,7 @@ import org.springframework.web.bind.annotation.RequestMethod; |
11 | 13 | import org.springframework.web.bind.annotation.RequestParam; |
12 | 14 | import org.springframework.web.bind.annotation.RestController; |
13 | 15 | |
14 | -import java.util.ArrayList; | |
15 | -import java.util.HashMap; | |
16 | -import java.util.List; | |
17 | -import java.util.Map; | |
16 | +import java.util.*; | |
18 | 17 | |
19 | 18 | /** |
20 | 19 | * @author chen |
... | ... | @@ -55,4 +54,14 @@ public class KqController { |
55 | 54 | map.put("type",type); |
56 | 55 | return kqService.selectApp(map); |
57 | 56 | } |
57 | + | |
58 | + @RequestMapping(value = "getCensusKq",method = RequestMethod.GET) | |
59 | + public List<CensusKqDto> getCensusKq(@RequestParam("userId") String userId , @RequestParam("type") int type){ | |
60 | + String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | |
61 | + Map<String,String> map = new HashMap<>(); | |
62 | + map.put("userId",userId); | |
63 | + map.put("tableName","SZ_AttendanceRecords"+tableSuffix); | |
64 | + map.put("type",type+""); | |
65 | + return kqService.selectCensusKq(map); | |
66 | + } | |
58 | 67 | } | ... | ... |
cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/KqTemplateMapper.java
1 | 1 | package com.sincere.smartSearch.mapper; |
2 | 2 | |
3 | 3 | import com.sincere.common.dto.smartCampus.AppDto; |
4 | +import com.sincere.common.dto.smartCampus.CensusKqDto; | |
4 | 5 | import com.sincere.common.dto.smartCampus.KqTeacherDto; |
5 | 6 | import com.sincere.smartSearch.model.KqTemplate; |
6 | 7 | |
... | ... | @@ -19,4 +20,6 @@ public interface KqTemplateMapper { |
19 | 20 | List<KqTeacherDto> selectSchoolTeacher(int schoolId); |
20 | 21 | |
21 | 22 | AppDto selectApp(Map<String,Integer> map); |
23 | + | |
24 | + List<CensusKqDto> selectCensusKq(Map<String ,String> map); | |
22 | 25 | } | ... | ... |
cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/KqService.java
1 | 1 | package com.sincere.smartSearch.service; |
2 | 2 | |
3 | 3 | import com.sincere.common.dto.smartCampus.AppDto; |
4 | +import com.sincere.common.dto.smartCampus.CensusKqDto; | |
4 | 5 | import com.sincere.common.dto.smartCampus.KqTeacherDto; |
5 | 6 | import com.sincere.smartSearch.model.KqTemplate; |
6 | 7 | |
... | ... | @@ -19,4 +20,6 @@ public interface KqService { |
19 | 20 | List<KqTeacherDto> selectSchoolTeacher(int schoolId); |
20 | 21 | |
21 | 22 | AppDto selectApp(Map<String,Integer> map); |
23 | + | |
24 | + List<CensusKqDto> selectCensusKq(Map<String ,String> map); | |
22 | 25 | } | ... | ... |
cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/KqServiceImpl.java
1 | 1 | package com.sincere.smartSearch.service.impl; |
2 | 2 | |
3 | 3 | import com.sincere.common.dto.smartCampus.AppDto; |
4 | +import com.sincere.common.dto.smartCampus.CensusKqDto; | |
4 | 5 | import com.sincere.common.dto.smartCampus.KqTeacherDto; |
5 | 6 | import com.sincere.smartSearch.mapper.KqTemplateMapper; |
6 | 7 | import com.sincere.smartSearch.model.KqTemplate; |
... | ... | @@ -36,4 +37,9 @@ public class KqServiceImpl implements KqService { |
36 | 37 | public AppDto selectApp(Map<String, Integer> map) { |
37 | 38 | return kqTemplateMapper.selectApp(map); |
38 | 39 | } |
40 | + | |
41 | + @Override | |
42 | + public List<CensusKqDto> selectCensusKq(Map<String, String> map) { | |
43 | + return kqTemplateMapper.selectCensusKq(map); | |
44 | + } | |
39 | 45 | } | ... | ... |
cloud/search_smartCampus/src/main/resources/application.yml
cloud/search_smartCampus/src/main/resources/logback.xml
1 | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | 2 | <configuration debug="true"> |
3 | 3 | <!-- 项目名称 --> |
4 | - <property name="PROJECT_NAME" value="schedule" /> | |
4 | + <property name="PROJECT_NAME" value="search_smartCampus" /> | |
5 | 5 | |
6 | 6 | <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--> |
7 | - <!-- <property name="LOG_HOME" value="/opt/web/log/" />--> | |
8 | - <property name="LOG_HOME" value="C://smartCampus_java//log"/> | |
7 | + <property name="LOG_HOME" value="C://log"/> | |
9 | 8 | |
10 | 9 | <!-- 控制台输出 --> |
11 | 10 | <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> |
... | ... | @@ -22,7 +21,7 @@ |
22 | 21 | <!-- 过滤器,只打印ERROR级别的日志 --> |
23 | 22 | <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> |
24 | 23 | <!--日志文件输出的文件名--> |
25 | - <FileNamePattern>${LOG_HOME}/${PROJECT_NAME}.system-dev.%d{yyyy-MM-dd HH}.%i.log</FileNamePattern> | |
24 | + <FileNamePattern>${LOG_HOME}/${PROJECT_NAME}/%d{yyyy-MM-dd HH}.%i.log</FileNamePattern> | |
26 | 25 | <!--日志文件保留天数--> |
27 | 26 | <MaxHistory>30</MaxHistory> |
28 | 27 | <!--日志文件最大的大小--> | ... | ... |
cloud/search_smartCampus/src/main/resources/mapper/KqTemplateMapper.xml
... | ... | @@ -11,8 +11,9 @@ |
11 | 11 | <select id="selectKqTemplate" resultMap="TemplateMap"> |
12 | 12 | select XA_KqTemplate.config , XA_KqTemplate.SchoolId ,SZ_School.MsgTypes as type from XA_KqTemplate |
13 | 13 | join SZ_School on XA_KqTemplate.SchoolId = SZ_School.school_id |
14 | - where XA_KqTemplate.State = 1 and XA_KqTemplate.ScenceType = 0 | |
14 | + where XA_KqTemplate.State = 1 and XA_KqTemplate.ScenceType = 0 and XA_KqTemplate.TType = 1 | |
15 | 15 | and (SZ_School.MsgTypes like '%4%' or SZ_School.MsgTypes like '%5%') |
16 | + and SZ_School.IsPush =1 | |
16 | 17 | </select> |
17 | 18 | |
18 | 19 | <resultMap id="TeacherMap" type="com.sincere.common.dto.smartCampus.KqTeacherDto"> |
... | ... | @@ -23,14 +24,16 @@ |
23 | 24 | <result column="pass" property="pass"/> |
24 | 25 | <result column="DingUserId" property="dingUserId"/> |
25 | 26 | <result column="QiYeHaoUserId" property="weChatUserId"/> |
26 | - <result column="XSTOpenId" property="xSTOpenId"/> | |
27 | + <result column="OpenId" property="openId"/> | |
27 | 28 | <result column="face" property="face"/> |
28 | 29 | </resultMap> |
29 | 30 | <select id="selectSchoolTeacher" parameterType="java.lang.Integer" resultMap="TeacherMap"> |
30 | - select SZ_User.user_id , SZ_UserRole.school_id , SZ_User.name , SZ_User.mobile , SZ_User.pass , | |
31 | - SZ_User.DingUserId , SZ_User.QiYeHaoUserId , SZ_User.XSTOpenId ,SZ_User.face | |
32 | - from SZ_User join SZ_UserRole on SZ_User.user_id = SZ_UserRole.user_id | |
33 | - where SZ_UserRole.school_id = #{schoolId} and SZ_UserRole.usertype = 0 | |
31 | + select distinct a.user_id,a.school_id,a.name,a.mobile,a.face,a.pass, a.OpenId,a.QiYeHaoUserId,a.DingUserId | |
32 | + 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 | |
34 | + join SZ_UserRole on a.user_id = SZ_UserRole.user_id | |
35 | + and a.school_id=#{schoolId} | |
36 | + where a.role_state=1 and SZ_UserRole.userType = 0 | |
34 | 37 | </select> |
35 | 38 | |
36 | 39 | <resultMap id="AppMap" type="com.sincere.common.dto.smartCampus.AppDto"> |
... | ... | @@ -41,4 +44,20 @@ |
41 | 44 | select AgentId,AgentSecret from EM_QYHApply where SchoolId=#{schoolId} and type= #{type} |
42 | 45 | and ApplyName = '智能校卫' |
43 | 46 | </select> |
47 | + | |
48 | + <resultMap id="KqMap" type="com.sincere.common.dto.smartCampus.CensusKqDto"> | |
49 | + <result column="class_name" property="className"/> | |
50 | + <result column="allT" property="allT"/> | |
51 | + <result column="kqT" property="kqT"/> | |
52 | + </resultMap> | |
53 | + <select id="selectCensusKq" parameterType="java.util.Map" resultMap="KqMap"> | |
54 | + select distinct b.class_name, | |
55 | + (select count(distinct user_id) from SZ_V_School_Student x where c.class_id=x.class_id) as allT, | |
56 | + (select count(distinct customerid) from dblan27.xiaoanhxy.dbo.${tableName} y | |
57 | + 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 | |
58 | + from sz_userrole c | |
59 | + inner join SZ_Class b on c.class_id=b.class_id and b.state=1 and b.is_finish=0 | |
60 | + inner join SZ_V_School_Teacher a on a.user_id=c.user_id and c.usertype=0 | |
61 | + where a.role_state=1 and a.user_id=#{userId} | |
62 | + </select> | |
44 | 63 | </mapper> | ... | ... |
cloud/search_xiaoan/src/main/resources/application.yml
... | ... | @@ -4,9 +4,9 @@ spring: |
4 | 4 | application: |
5 | 5 | name: xiaoanSearch |
6 | 6 | datasource: |
7 | - username: SZJXTUSER | |
8 | - password: xst200919 | |
9 | - url: jdbc:sqlserver://60.190.202.57:14333;database=xiaoanhxy | |
7 | + username: szjxtuser | |
8 | + password: RQminVCJota3H1u8bBYH | |
9 | + url: jdbc:sqlserver://116.62.241.27:33419;database=xiaoanhxy | |
10 | 10 | driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver |
11 | 11 | ##mybatis |
12 | 12 | mybatis: | ... | ... |