Commit 375d859f4fe170bb497f12983469b26eb72a694d

Authored by 陶汉栋
2 parents 46343ee1 557a2d5b
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
... ... @@ -1,2 +0,0 @@
1   -2019-11-25 17:32:49 2019-11-25 17:32:49 30
2   -
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&timestamp="+ 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&timestamp=" + 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&timestamp="+ 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&timestamp="+ 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
... ...
cloud/quartz/src/main/resources/logback.xml 0 → 100644
... ... @@ -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
... ... @@ -11,7 +11,6 @@ spring:
11 11 ##mybatis
12 12 mybatis:
13 13 mapper-locations: classpath:mapper/*.xml
14   -# type-aliases-package: com.sincere.smartSearch.model
15 14 type-aliases-package: com.sincere.smartSearch.mapper
16 15 check-config-location: true
17 16  
... ...
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:
... ...