Commit 2f519872b8bd71d0aad466649cbc4003743bb2d9
1 parent
38841d26
Exists in
master
修改提交
Showing
19 changed files
with
603 additions
and
1830 deletions
Show diff stats
cloud/dahua/src/main/java/com/example/dahua/MyTask.java
... | ... | @@ -672,8 +672,8 @@ public class MyTask implements ApplicationRunner { |
672 | 672 | //考勤成功 |
673 | 673 | String content = "考勤成功!,设备:" + deviceId + "卡号:" + cardNo + "方向:" + (eventType == 1 ? "进门" : "出门") + "______" + eventTime; |
674 | 674 | |
675 | - //开始推送看板 | |
676 | - sendMQMess(deviceId,cardNo,eventType); | |
675 | +// //开始推送看板 | |
676 | +// sendMQMess(deviceId,cardNo,eventType); | |
677 | 677 | |
678 | 678 | //记录学生考勤签到记录 |
679 | 679 | FileUtils.getInstance().writeLogs(content, FileUtils.qiandaoSuccess); | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/mqtt/MqttManager.java
... | ... | @@ -21,75 +21,75 @@ public class MqttManager { |
21 | 21 | private static int qosLevel; |
22 | 22 | |
23 | 23 | public void init() { |
24 | - final String brokerUrl = "tcp://post-cn-4590mq2hr03.mqtt.aliyuncs.com:1883"; | |
25 | - groupId = "GID_HFJSIURFHAQO110"; | |
26 | - topic = "Topic_Quene_Test"; | |
27 | - qosLevel = 1; | |
28 | - final Boolean cleanSession = false; | |
29 | - String clientId = groupId + "@@@9ED96FB6D72C1698"; | |
30 | - accessKey = "UimvLVp0Wj90P88u"; | |
31 | - String secretKey = "TE4rZenITG27tiQqHx9qINjx71Nws7"; | |
32 | - final MemoryPersistence memoryPersistence = new MemoryPersistence(); | |
33 | - if (null == mqttClient) { | |
34 | - try { | |
35 | - mqttClient = new MqttClient(brokerUrl, clientId, memoryPersistence); | |
36 | - } catch (MqttException e) { | |
37 | - e.printStackTrace(); | |
38 | - } | |
39 | - MqttConnectOptions connOpts = new MqttConnectOptions(); | |
40 | - //cal the sign as password,sign=BASE64(MAC.SHA1(groupId,secretKey)) | |
41 | - try { | |
42 | - sign = Tools.macSignature(clientId.split("@@@")[0], secretKey); | |
43 | - } catch (InvalidKeyException e) { | |
44 | - e.printStackTrace(); | |
45 | - } catch (NoSuchAlgorithmException e) { | |
46 | - e.printStackTrace(); | |
47 | - } | |
48 | - connOpts.setUserName(accessKey); | |
49 | - connOpts.setPassword(sign.toCharArray()); | |
50 | - connOpts.setCleanSession(cleanSession); | |
51 | - connOpts.setKeepAliveInterval(90); | |
52 | - connOpts.setAutomaticReconnect(true); | |
53 | - mqttClient.setCallback(new MqttCallbackExtended() { | |
54 | - @Override | |
55 | - public void connectComplete(boolean reconnect, String serverURI) { | |
56 | - System.out.println("connect success"); | |
57 | - } | |
58 | - | |
59 | - @Override | |
60 | - public void connectionLost(Throwable throwable) { | |
61 | - System.out.println("connect lost:" + throwable.toString()); | |
62 | - throwable.printStackTrace(); | |
63 | - init();//初始化 | |
64 | - } | |
65 | - | |
66 | - @Override | |
67 | - public void messageArrived(String s, MqttMessage mqttMessage) throws Exception { | |
68 | - System.out.println("receive msg from topic " + s + " , body is " + new String(mqttMessage.getPayload())); | |
69 | - } | |
70 | - | |
71 | - @Override | |
72 | - public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) { | |
73 | - //this notice make sense when qos >0 | |
74 | -// System.out.println("send msg succeed"); | |
75 | - } | |
76 | - }); | |
77 | - try { | |
78 | - mqttClient.connect(connOpts); | |
79 | - } catch (MqttException e) { | |
80 | - System.out.println("mqtt:" + e.toString()); | |
81 | - e.printStackTrace(); | |
82 | - } | |
83 | - /*while (true){ | |
84 | - sendMessageTest("528C8E6CD4A3C659","zy105387",0); | |
85 | - try { | |
86 | - Thread.sleep(10000); | |
87 | - } catch (InterruptedException e) { | |
88 | - System.out.println("connect success:"+e); | |
89 | - e.printStackTrace(); | |
90 | - } | |
91 | - }*/ | |
92 | - } | |
24 | +// final String brokerUrl = "tcp://post-cn-4590mq2hr03.mqtt.aliyuncs.com:1883"; | |
25 | +// groupId = "GID_HFJSIURFHAQO110"; | |
26 | +// topic = "Topic_Quene_Test"; | |
27 | +// qosLevel = 1; | |
28 | +// final Boolean cleanSession = false; | |
29 | +// String clientId = groupId + "@@@9ED96FB6D72C1698"; | |
30 | +// accessKey = "UimvLVp0Wj90P88u"; | |
31 | +// String secretKey = "TE4rZenITG27tiQqHx9qINjx71Nws7"; | |
32 | +// final MemoryPersistence memoryPersistence = new MemoryPersistence(); | |
33 | +// if (null == mqttClient) { | |
34 | +// try { | |
35 | +// mqttClient = new MqttClient(brokerUrl, clientId, memoryPersistence); | |
36 | +// } catch (MqttException e) { | |
37 | +// e.printStackTrace(); | |
38 | +// } | |
39 | +// MqttConnectOptions connOpts = new MqttConnectOptions(); | |
40 | +// //cal the sign as password,sign=BASE64(MAC.SHA1(groupId,secretKey)) | |
41 | +// try { | |
42 | +// sign = Tools.macSignature(clientId.split("@@@")[0], secretKey); | |
43 | +// } catch (InvalidKeyException e) { | |
44 | +// e.printStackTrace(); | |
45 | +// } catch (NoSuchAlgorithmException e) { | |
46 | +// e.printStackTrace(); | |
47 | +// } | |
48 | +// connOpts.setUserName(accessKey); | |
49 | +// connOpts.setPassword(sign.toCharArray()); | |
50 | +// connOpts.setCleanSession(cleanSession); | |
51 | +// connOpts.setKeepAliveInterval(90); | |
52 | +// connOpts.setAutomaticReconnect(true); | |
53 | +// mqttClient.setCallback(new MqttCallbackExtended() { | |
54 | +// @Override | |
55 | +// public void connectComplete(boolean reconnect, String serverURI) { | |
56 | +// System.out.println("connect success"); | |
57 | +// } | |
58 | +// | |
59 | +// @Override | |
60 | +// public void connectionLost(Throwable throwable) { | |
61 | +// System.out.println("connect lost:" + throwable.toString()); | |
62 | +// throwable.printStackTrace(); | |
63 | +// init();//初始化 | |
64 | +// } | |
65 | +// | |
66 | +// @Override | |
67 | +// public void messageArrived(String s, MqttMessage mqttMessage) throws Exception { | |
68 | +// System.out.println("receive msg from topic " + s + " , body is " + new String(mqttMessage.getPayload())); | |
69 | +// } | |
70 | +// | |
71 | +// @Override | |
72 | +// public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) { | |
73 | +// //this notice make sense when qos >0 | |
74 | +//// System.out.println("send msg succeed"); | |
75 | +// } | |
76 | +// }); | |
77 | +// try { | |
78 | +// mqttClient.connect(connOpts); | |
79 | +// } catch (MqttException e) { | |
80 | +// System.out.println("mqtt:" + e.toString()); | |
81 | +// e.printStackTrace(); | |
82 | +// } | |
83 | +// /*while (true){ | |
84 | +// sendMessageTest("528C8E6CD4A3C659","zy105387",0); | |
85 | +// try { | |
86 | +// Thread.sleep(10000); | |
87 | +// } catch (InterruptedException e) { | |
88 | +// System.out.println("connect success:"+e); | |
89 | +// e.printStackTrace(); | |
90 | +// } | |
91 | +// }*/ | |
92 | +// } | |
93 | 93 | } |
94 | 94 | |
95 | 95 | public void sendMq(String deviceId, String cmd) { | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java
... | ... | @@ -245,13 +245,6 @@ public class CMSServer implements ApplicationRunner { |
245 | 245 | } |
246 | 246 | pInBuffer.dwSize = pInBuffer.size(); |
247 | 247 | saveAttendance(deviceId); |
248 | - /*这里加判断即可,可以通过byDeviceID、sDeviceSerial、sDevName 进行判断 | |
249 | - if(strDevRegInfo.dwDevType == 1) { | |
250 | - pInBuffer.dwAlarmServerType = 3; | |
251 | - } else{ | |
252 | - pInBuffer.dwAlarmServerType = 1; | |
253 | - } | |
254 | - */ | |
255 | 248 | byte[] byIP = ip_cloud.getBytes(); |
256 | 249 | System.arraycopy(byIP, 0, pInBuffer.struUDPAlarmSever.szIP, 0, byIP.length); |
257 | 250 | // TODO: 2020/8/27 人脸机类型为0 |
... | ... | @@ -1052,7 +1045,7 @@ public class CMSServer implements ApplicationRunner { |
1052 | 1045 | deviceDao.updateDeviceStatu(1,inTime,deviceId); |
1053 | 1046 | } else { |
1054 | 1047 | deviceDao.addDevide(attendanceBean.getClint_id(), attendanceBean.getClint_type(), attendanceBean.getIntime(), |
1055 | - attendanceBean.getSchool_id(), attendanceBean.getState() + "", attendanceBean.getIsConnection() + ""); | |
1048 | + attendanceBean.getSchool_id(),attendanceBean.getState() + "", attendanceBean.getIsConnection() + ""); | |
1056 | 1049 | } |
1057 | 1050 | } |
1058 | 1051 | } | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/async/SendUserAsync.java
... | ... | @@ -55,7 +55,8 @@ public class SendUserAsync { |
55 | 55 | * @param deviceId |
56 | 56 | * @param userType |
57 | 57 | */ |
58 | - public void sendStuToHaiKang(String srcFile, String picUrl, String card, String startTime, String endTime, int validTimeEnabled, String name, String deviceId, String userType,Integer schoolId,String cardNum) { | |
58 | + public void sendStuToHaiKang(String srcFile, String picUrl, String card, String startTime, String endTime, | |
59 | + int validTimeEnabled, String name, String deviceId, String userType,Integer schoolId,String cardNum) { | |
59 | 60 | //1、检测图片是否合格 |
60 | 61 | boolean check = true; |
61 | 62 | if (check) {//合格 |
... | ... | @@ -70,25 +71,6 @@ public class SendUserAsync { |
70 | 71 | String resultCard = getCard(String.format("%08x", lon)).toUpperCase(); |
71 | 72 | //系统时间 |
72 | 73 | String time = System.currentTimeMillis() + ""; |
73 | - //1老师;2学生 | |
74 | - if (Integer.parseInt(userType) ==EnumSzBusinessType.EnumUserType.TEACHER.code) { | |
75 | - //根据卡号获取老师信息 | |
76 | - StudentBean studentBean = userDao.getTeacherWithCard(resultCard,schoolId); | |
77 | - if (null == studentBean) { | |
78 | - employeeNo = time.substring(time.length() - 6, time.length()); | |
79 | - } else{ | |
80 | - employeeNo = studentBean.getTeacher_id(); | |
81 | - } | |
82 | - } | |
83 | - if (Integer.parseInt(userType) == EnumSzBusinessType.EnumUserType.STUDENT.code) { | |
84 | - //根据卡号获取学生信息 | |
85 | - StudentBean studentBean = userDao.getStudentWithCard(resultCard,schoolId); | |
86 | - if (null == studentBean) { | |
87 | - employeeNo = time.substring(time.length() - 6, time.length()); | |
88 | - } else{ | |
89 | - employeeNo = studentBean.getStudent_id(); | |
90 | - } | |
91 | - } | |
92 | 74 | //设置卡权限计划模板 |
93 | 75 | cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardTemplate(), "设置卡权限计划模板",schoolId,cardNum); |
94 | 76 | //设置卡权限周计划 | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/bean/SendRecordBean.java
1 | 1 | package com.sincere.haikangface.bean; |
2 | 2 | |
3 | +import lombok.Data; | |
4 | + | |
3 | 5 | import java.io.Serializable; |
4 | 6 | |
5 | 7 | /** |
6 | 8 | * 人脸下发记录 |
7 | 9 | */ |
10 | +@Data | |
8 | 11 | public class SendRecordBean implements Serializable { |
9 | 12 | |
10 | - | |
11 | 13 | private String customerid;//用户编号 |
12 | 14 | |
13 | 15 | private String Num; |
14 | 16 | |
15 | 17 | private String Name; |
16 | 18 | |
17 | - private int schoolId; | |
19 | + private Integer schoolId; | |
20 | + | |
21 | + private String userId; | |
18 | 22 | |
19 | 23 | private String schoolName;//下发结果 |
20 | 24 | |
... | ... | @@ -22,117 +26,13 @@ public class SendRecordBean implements Serializable { |
22 | 26 | |
23 | 27 | private String imgPath;//下发的图片路径 |
24 | 28 | |
25 | - private int userType; | |
29 | + private Integer userType; | |
26 | 30 | |
27 | 31 | private String time; |
28 | 32 | |
29 | 33 | private String failContent; |
30 | 34 | |
31 | 35 | private int failType; |
32 | - | |
33 | - | |
34 | - public String getCustomerid() { | |
35 | - return customerid; | |
36 | - } | |
37 | - | |
38 | - public void setCustomerid(String customerid) { | |
39 | - this.customerid = customerid; | |
40 | - } | |
41 | - | |
42 | - public String getNum() { | |
43 | - return Num; | |
44 | - } | |
45 | - | |
46 | - public void setNum(String num) { | |
47 | - Num = num; | |
48 | - } | |
49 | - | |
50 | - public String getName() { | |
51 | - return Name; | |
52 | - } | |
53 | - | |
54 | - public void setName(String name) { | |
55 | - Name = name; | |
56 | - } | |
57 | - | |
58 | - public int getSchoolId() { | |
59 | - return schoolId; | |
60 | - } | |
61 | - | |
62 | - public void setSchoolId(int schoolId) { | |
63 | - this.schoolId = schoolId; | |
64 | - } | |
65 | - | |
66 | - public String getSchoolName() { | |
67 | - return schoolName; | |
68 | - } | |
69 | - | |
70 | - public void setSchoolName(String schoolName) { | |
71 | - this.schoolName = schoolName; | |
72 | - } | |
73 | - | |
74 | - public String getDeviceID() { | |
75 | - return deviceID; | |
76 | - } | |
77 | - | |
78 | - public void setDeviceID(String deviceID) { | |
79 | - this.deviceID = deviceID; | |
80 | - } | |
81 | - | |
82 | - public String getImgPath() { | |
83 | - return imgPath; | |
84 | - } | |
85 | - | |
86 | - public void setImgPath(String imgPath) { | |
87 | - this.imgPath = imgPath; | |
88 | - } | |
89 | - | |
90 | - public int getUserType() { | |
91 | - return userType; | |
92 | - } | |
93 | - | |
94 | - public void setUserType(int userType) { | |
95 | - this.userType = userType; | |
96 | - } | |
97 | - | |
98 | - public String getTime() { | |
99 | - return time; | |
100 | - } | |
101 | - | |
102 | - public void setTime(String time) { | |
103 | - this.time = time; | |
104 | - } | |
105 | - | |
106 | - public String getFailContent() { | |
107 | - return failContent; | |
108 | - } | |
109 | - | |
110 | - public void setFailContent(String failContent) { | |
111 | - this.failContent = failContent; | |
112 | - } | |
113 | - | |
114 | - public int getFailType() { | |
115 | - return failType; | |
116 | - } | |
117 | - | |
118 | - public void setFailType(int failType) { | |
119 | - this.failType = failType; | |
120 | - } | |
121 | - | |
122 | - @Override | |
123 | - public String toString() { | |
124 | - return "SendRecordBean{" + | |
125 | - "customerid='" + customerid + '\'' + | |
126 | - ", Num='" + Num + '\'' + | |
127 | - ", Name='" + Name + '\'' + | |
128 | - ", schoolId=" + schoolId + | |
129 | - ", schoolName='" + schoolName + '\'' + | |
130 | - ", deviceID='" + deviceID + '\'' + | |
131 | - ", imgPath='" + imgPath + '\'' + | |
132 | - ", userType=" + userType + | |
133 | - ", time='" + time + '\'' + | |
134 | - ", failContent='" + failContent + '\'' + | |
135 | - ", failType=" + failType + | |
136 | - '}'; | |
137 | - } | |
138 | -} | |
36 | + //1成功2失败 | |
37 | + private Integer status; | |
38 | +} | |
139 | 39 | \ No newline at end of file | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/AuthRecordDto.java
... | ... | @@ -2,6 +2,7 @@ package com.sincere.haikangface.bean.face; |
2 | 2 | |
3 | 3 | import io.swagger.annotations.ApiModel; |
4 | 4 | import io.swagger.annotations.ApiModelProperty; |
5 | +import lombok.Data; | |
5 | 6 | |
6 | 7 | import java.util.List; |
7 | 8 | |
... | ... | @@ -10,6 +11,7 @@ import java.util.List; |
10 | 11 | * @author xuquan |
11 | 12 | * @date 2020/12/16 09:10 |
12 | 13 | */ |
14 | +@Data | |
13 | 15 | @ApiModel |
14 | 16 | public class AuthRecordDto { |
15 | 17 | |
... | ... | @@ -27,60 +29,4 @@ public class AuthRecordDto { |
27 | 29 | private List<WeekDay> weekDays ; |
28 | 30 | @ApiModelProperty("权限类型1微耕权限2人脸机权限") |
29 | 31 | private Integer authType; |
30 | - | |
31 | - public Integer getId() { | |
32 | - return id; | |
33 | - } | |
34 | - | |
35 | - public void setId(Integer id) { | |
36 | - this.id = id; | |
37 | - } | |
38 | - | |
39 | - public Integer getType() { | |
40 | - return type; | |
41 | - } | |
42 | - | |
43 | - public void setType(Integer type) { | |
44 | - this.type = type; | |
45 | - } | |
46 | - | |
47 | - public Integer getSchoolId() { | |
48 | - return schoolId; | |
49 | - } | |
50 | - | |
51 | - public void setSchoolId(Integer schoolId) { | |
52 | - this.schoolId = schoolId; | |
53 | - } | |
54 | - | |
55 | - public List<String> getSnList() { | |
56 | - return snList; | |
57 | - } | |
58 | - | |
59 | - public void setSnList(List<String> snList) { | |
60 | - this.snList = snList; | |
61 | - } | |
62 | - | |
63 | - public Integer getStudentType() { | |
64 | - return studentType; | |
65 | - } | |
66 | - | |
67 | - public void setStudentType(Integer studentType) { | |
68 | - this.studentType = studentType; | |
69 | - } | |
70 | - | |
71 | - public List<WeekDay> getWeekDays() { | |
72 | - return weekDays; | |
73 | - } | |
74 | - | |
75 | - public void setWeekDays(List<WeekDay> weekDays) { | |
76 | - this.weekDays = weekDays; | |
77 | - } | |
78 | - | |
79 | - public Integer getAuthType() { | |
80 | - return authType; | |
81 | - } | |
82 | - | |
83 | - public void setAuthType(Integer authType) { | |
84 | - this.authType = authType; | |
85 | - } | |
86 | 32 | } | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/PermissionBean.java
1 | 1 | package com.sincere.haikangface.bean.face; |
2 | 2 | |
3 | 3 | import io.swagger.annotations.ApiModelProperty; |
4 | +import lombok.Data; | |
4 | 5 | |
5 | 6 | import java.io.Serializable; |
6 | 7 | import java.util.List; |
7 | 8 | |
9 | +@Data | |
8 | 10 | public class PermissionBean implements Serializable { |
9 | 11 | |
10 | 12 | @ApiModelProperty("设备ID,批量用英文逗号,隔开") |
... | ... | @@ -21,44 +23,4 @@ public class PermissionBean implements Serializable { |
21 | 23 | |
22 | 24 | @ApiModelProperty("用户ID,批量用英文逗号,隔开") |
23 | 25 | private String userIds; |
24 | - | |
25 | - public String getUserIds() { | |
26 | - return userIds; | |
27 | - } | |
28 | - | |
29 | - public void setUserIds(String userIds) { | |
30 | - this.userIds = userIds; | |
31 | - } | |
32 | - | |
33 | - public List<String> getDeviceIds() { | |
34 | - return deviceIds; | |
35 | - } | |
36 | - | |
37 | - public void setDeviceIds(List<String> deviceIds) { | |
38 | - this.deviceIds = deviceIds; | |
39 | - } | |
40 | - | |
41 | - public String getSchoolId() { | |
42 | - return schoolId; | |
43 | - } | |
44 | - | |
45 | - public void setSchoolId(String schoolId) { | |
46 | - this.schoolId = schoolId; | |
47 | - } | |
48 | - | |
49 | - public String getUserType() { | |
50 | - return userType; | |
51 | - } | |
52 | - | |
53 | - public void setUserType(String userType) { | |
54 | - this.userType = userType; | |
55 | - } | |
56 | - | |
57 | - public List<WeekDay> getWeekDays() { | |
58 | - return weekDays; | |
59 | - } | |
60 | - | |
61 | - public void setWeekDays(List<WeekDay> weekDays) { | |
62 | - this.weekDays = weekDays; | |
63 | - } | |
64 | 26 | } | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/SendFaceBean.java
1 | 1 | package com.sincere.haikangface.bean.face; |
2 | 2 | |
3 | -public class SendFaceBean { | |
4 | - | |
5 | - private String card; | |
6 | - | |
7 | - private String name; | |
8 | - | |
9 | - private String deviceId; | |
10 | - | |
11 | - private String startTime; | |
3 | +import com.fasterxml.jackson.annotation.JsonIgnore; | |
4 | +import io.swagger.annotations.ApiModelProperty; | |
5 | +import lombok.Data; | |
6 | +import org.apache.commons.lang3.StringUtils; | |
12 | 7 | |
13 | - private String endTime; | |
8 | +import javax.validation.constraints.NotNull; | |
9 | +import java.util.Arrays; | |
10 | +import java.util.List; | |
14 | 11 | |
15 | - private int validTimeEnabled; | |
16 | - | |
17 | - private String userType; | |
12 | +@Data | |
13 | +public class SendFaceBean { | |
18 | 14 | |
19 | - public String getCard() { | |
20 | - return card; | |
21 | - } | |
15 | + @NotNull(message = "学校ID必传") | |
16 | + @ApiModelProperty("学校ID") | |
17 | + private Integer schoolId; | |
22 | 18 | |
23 | - public void setCard(String card) { | |
24 | - this.card = card; | |
25 | - } | |
19 | + @ApiModelProperty("学生类型1老师2学生") | |
20 | + private Integer userType; | |
26 | 21 | |
27 | - public String getName() { | |
28 | - return name; | |
29 | - } | |
22 | + @ApiModelProperty("学生类型1通校2住校3通晚4其他") | |
23 | + private Integer studentType; | |
30 | 24 | |
31 | - public void setName(String name) { | |
32 | - this.name = name; | |
33 | - } | |
25 | + @ApiModelProperty("性别,多个英文逗号隔开") | |
26 | + private String sex; | |
34 | 27 | |
35 | - public String getDeviceId() { | |
36 | - return deviceId; | |
37 | - } | |
28 | + @ApiModelProperty("下发人脸照") | |
29 | + private String photo; | |
38 | 30 | |
39 | - public void setDeviceId(String deviceId) { | |
40 | - this.deviceId = deviceId; | |
41 | - } | |
31 | + @ApiModelProperty("下发班级,多个英文逗号隔开") | |
32 | + private String classIds; | |
42 | 33 | |
43 | - public String getStartTime() { | |
44 | - return startTime; | |
45 | - } | |
34 | + @ApiModelProperty("下发设备,多个英文逗号隔开") | |
35 | + private String deviceIds; | |
46 | 36 | |
47 | - public void setStartTime(String startTime) { | |
48 | - this.startTime = startTime; | |
49 | - } | |
37 | + @ApiModelProperty("下发卡号,多个英文逗号隔开") | |
38 | + private String cardNos; | |
50 | 39 | |
51 | - public String getEndTime() { | |
52 | - return endTime; | |
53 | - } | |
40 | + @ApiModelProperty("是否检验人脸1是2否,默认2") | |
41 | + private Integer isCheck = 2; | |
54 | 42 | |
55 | - public void setEndTime(String endTime) { | |
56 | - this.endTime = endTime; | |
57 | - } | |
43 | + @ApiModelProperty("宿舍分组ID") | |
44 | + private Integer roomId; | |
58 | 45 | |
59 | - public int getValidTimeEnabled() { | |
60 | - return validTimeEnabled; | |
61 | - } | |
46 | + @ApiModelProperty("下发状态") | |
47 | + private Integer status; | |
62 | 48 | |
63 | - public void setValidTimeEnabled(int validTimeEnabled) { | |
64 | - this.validTimeEnabled = validTimeEnabled; | |
49 | + @JsonIgnore | |
50 | + public List<String> getSexList(){ | |
51 | + if(StringUtils.isNotBlank(getSex())) return Arrays.asList(getSex().split(",")); | |
52 | + return null; | |
65 | 53 | } |
66 | 54 | |
67 | - public String getUserType() { | |
68 | - return userType; | |
55 | + @JsonIgnore | |
56 | + public List<String> getClassList(){ | |
57 | + if(StringUtils.isNotBlank(getClassIds())) return Arrays.asList(getClassIds().split(",")); | |
58 | + return null; | |
69 | 59 | } |
70 | 60 | |
71 | - public void setUserType(String userType) { | |
72 | - this.userType = userType; | |
61 | + @JsonIgnore | |
62 | + public List<String> getDeviceList(){ | |
63 | + if(StringUtils.isNotBlank(getDeviceIds())) return Arrays.asList(getDeviceIds().split(",")); | |
64 | + return null; | |
73 | 65 | } |
74 | 66 | |
75 | - @Override | |
76 | - public String toString() { | |
77 | - return "SendFaceBean{" + | |
78 | - "card='" + card + '\'' + | |
79 | - ", name='" + name + '\'' + | |
80 | - ", deviceId='" + deviceId + '\'' + | |
81 | - ", startTime='" + startTime + '\'' + | |
82 | - ", endTime='" + endTime + '\'' + | |
83 | - ", validTimeEnabled=" + validTimeEnabled + | |
84 | - ", userType='" + userType + '\'' + | |
85 | - '}'; | |
67 | + @JsonIgnore | |
68 | + public List<String> getCardList(){ | |
69 | + if(StringUtils.isNotBlank(getCardNos())) return Arrays.asList(getCardNos().split(",")); | |
70 | + return null; | |
86 | 71 | } |
87 | 72 | } | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserOperateController.java
... | ... | @@ -4,14 +4,14 @@ import com.sincere.haikangface.bean.Result; |
4 | 4 | import com.sincere.haikangface.bean.ResultGenerator; |
5 | 5 | import com.sincere.haikangface.bean.face.AuthRecordDto; |
6 | 6 | import com.sincere.haikangface.bean.face.DeviceAuthRecord; |
7 | -import com.sincere.haikangface.bean.face.SendFaceDto; | |
7 | +import com.sincere.haikangface.bean.face.SendFaceBean; | |
8 | 8 | import com.sincere.haikangface.dao.UserDao; |
9 | 9 | import com.sincere.haikangface.service.UserOperateService; |
10 | -import com.sincere.haikangface.utils.JsonUtils; | |
11 | 10 | import io.swagger.annotations.ApiOperation; |
12 | 11 | import lombok.extern.slf4j.Slf4j; |
13 | 12 | import org.springframework.beans.factory.annotation.Autowired; |
14 | 13 | import org.springframework.http.MediaType; |
14 | +import org.springframework.validation.annotation.Validated; | |
15 | 15 | import org.springframework.web.bind.annotation.*; |
16 | 16 | import org.springframework.web.multipart.MultipartFile; |
17 | 17 | |
... | ... | @@ -65,11 +65,14 @@ public class UserOperateController { |
65 | 65 | return userOperateService.againSendFace(userId,deviceId,userType); |
66 | 66 | } |
67 | 67 | |
68 | - @ApiOperation(value = "照片下发2.0") | |
69 | - @RequestMapping(value = "sendFaceByThread", method = RequestMethod.POST) | |
70 | - public Result sendFaceByThread(@RequestBody SendFaceDto sendFaceDto, | |
71 | - @RequestParam(value = "groupId",required = false) Integer groupId) { | |
72 | - return userOperateService.sendUserFaceByThread(sendFaceDto,groupId); | |
68 | + @ApiOperation(value = "补发单个人脸至指定设备2.0") | |
69 | + @RequestMapping(value = "againNoSendOneFace", method = RequestMethod.POST) | |
70 | + public Result againNoSendOneFace(@RequestParam(value = "file",required = false) MultipartFile file, | |
71 | + @RequestParam("schoolId") Integer schoolId, | |
72 | + @RequestParam("cardNum") String cardNum, | |
73 | + @RequestParam("userType") Integer userType, | |
74 | + @RequestParam("deviceIds") String deviceIds) { | |
75 | + return userOperateService.againNoSendOneFace(file,schoolId,cardNum,userType,deviceIds); | |
73 | 76 | } |
74 | 77 | |
75 | 78 | @ApiOperation(value = "删除下发失败人脸2.0") |
... | ... | @@ -80,40 +83,14 @@ public class UserOperateController { |
80 | 83 | |
81 | 84 | @RequestMapping(value = "sendFailFace", method = RequestMethod.POST) |
82 | 85 | @ApiOperation(value = "重新下发失败人脸2.0") |
83 | - public Result sendFailFace(@RequestParam("schoolId") Integer schoolId) { | |
84 | - return userOperateService.sendFailFace(schoolId); | |
85 | - } | |
86 | - | |
87 | - @RequestMapping(value = "sendFailFace2", method = RequestMethod.POST) | |
88 | - @ApiOperation(value = "重新下发失败人脸2.1") | |
89 | - public Result sendFailFace(@RequestParam("schoolId") Integer schoolId, | |
90 | - @RequestParam(value = "deviceIds",required = false) String deviceIds) { | |
91 | - return userOperateService.sendFailFace2(schoolId,deviceIds); | |
86 | + public Result sendFailFace(@Validated @RequestBody SendFaceBean faceBean) { | |
87 | + return userOperateService.sendFailFace(faceBean); | |
92 | 88 | } |
93 | 89 | |
94 | 90 | @ApiOperation(value = "删除指定人脸2.0") |
95 | 91 | @RequestMapping(value = "deleteFace", method = RequestMethod.POST) |
96 | - public Result deleteFace(@RequestParam("schoolId") Integer schoolId, @RequestParam("cards") String cards, | |
97 | - @RequestParam(value = "deviceIds",required = false) String deviceIds) { | |
98 | - return userOperateService.deleteFace(schoolId,cards,deviceIds); | |
99 | - } | |
100 | - | |
101 | - @ApiOperation(value = "下发未下发的人脸至指定设备2.0") | |
102 | - @RequestMapping(value = "sendFaceForNoSend", method = RequestMethod.POST) | |
103 | - public Result sendFaceForNoSend(@RequestParam("schoolId") Integer schoolId, | |
104 | - @RequestParam("userType") Integer userType, | |
105 | - @RequestParam(value = "studentType",required = false) Integer studentType, | |
106 | - @RequestParam(value = "sex",required = false) String sex, | |
107 | - @RequestParam(value = "deviceIds",required = false) String deviceIds, | |
108 | - @RequestParam(value = "groupId",required = false) Integer groupId) { | |
109 | - return userOperateService.sendFaceForNoSend(schoolId,studentType,sex,userType,deviceIds,groupId); | |
110 | - } | |
111 | - | |
112 | - @ApiOperation(value = "补发单个人脸至指定设备2.0") | |
113 | - @RequestMapping(value = "againNoSendOneFace", method = RequestMethod.POST) | |
114 | - public Result againNoSendOneFace(@RequestParam("file") MultipartFile file,@RequestParam("schoolId") Integer schoolId, | |
115 | - @RequestParam("cardNum") String cardNum,@RequestParam("userType") Integer userType,@RequestParam("deviceIds") String deviceIds) { | |
116 | - return userOperateService.againNoSendOneFace(file,schoolId,cardNum,userType,deviceIds); | |
92 | + public Result deleteFace(@Validated @RequestBody SendFaceBean faceBean) { | |
93 | + return userOperateService.deleteFace(faceBean); | |
117 | 94 | } |
118 | 95 | |
119 | 96 | @ApiOperation(value = "捷安成闸机导入") |
... | ... | @@ -122,71 +99,36 @@ public class UserOperateController { |
122 | 99 | return userOperateService.insertUpdateCard(cardNums); |
123 | 100 | } |
124 | 101 | |
125 | - | |
126 | - @ApiOperation(value = "压缩包上传下发") | |
127 | - @RequestMapping(value = "exportFace", method = RequestMethod.POST) | |
128 | - public Result exportFace(@RequestParam("schoolId") Integer schoolId, | |
129 | - @RequestParam("userType") Integer userType, | |
130 | - @RequestParam("deviceIds") String deviceIds, | |
131 | - @RequestParam("faceSrcPath") String faceSrcPath){ | |
132 | - return userOperateService.exportFace(schoolId,userType,deviceIds,faceSrcPath); | |
133 | - } | |
134 | - | |
135 | - @ApiOperation(value = "按班级指定下发") | |
102 | + @ApiOperation(value = "按条件指定下发") | |
136 | 103 | @RequestMapping(value = "sendFaceByClassId", method = RequestMethod.POST) |
137 | - public Result sendFaceByClassId(@RequestParam("schoolId") Integer schoolId, | |
138 | - @RequestParam(value = "classIds",required = false) String classIds, | |
139 | - @RequestParam(value = "deviceIds",required = false) String deviceIds, | |
140 | - @RequestParam(value = "studentType",required = false) Integer studentType, | |
141 | - @RequestParam(value = "sex",required = false) String sex, | |
142 | - @RequestParam(value = "isCheck",required = false) Integer isCheck){ | |
143 | - return userOperateService.sendFaceByClassId(schoolId,classIds,deviceIds,studentType,sex,isCheck); | |
144 | - } | |
145 | - | |
146 | - @ApiOperation(value = "按班级指定下发") | |
147 | - @RequestMapping(value = "sendFaceByKeyword", method = RequestMethod.POST) | |
148 | - public Result sendFaceByKeyword(@RequestParam("schoolId") Integer schoolId, | |
149 | - @RequestParam(value = "deviceIds",required = false) String deviceIds, | |
150 | - @RequestParam(value = "keyword",required = false) String keyword, | |
151 | - @RequestParam(value = "studentType",required = false) Integer studentType, | |
152 | - @RequestParam(value = "sex",required = false) String sex, | |
153 | - @RequestParam(value = "isCheck",required = false) Integer isCheck){ | |
154 | - return userOperateService.sendFaceByKeyword(schoolId,deviceIds,keyword,studentType,sex,isCheck); | |
104 | + public Result sendFaceByClassId(@Validated @RequestBody SendFaceBean faceBean){ | |
105 | + return userOperateService.sendFaceByClassId(faceBean); | |
155 | 106 | } |
156 | 107 | |
157 | - @ApiOperation(value = "指定班级下发未下发人脸") | |
158 | - @RequestMapping(value = "noSendByKeyword", method = RequestMethod.POST) | |
159 | - public Result noSendByKeyword(@RequestParam("schoolId") Integer schoolId, | |
160 | - @RequestParam(value = "keyword",required = false) String keyword, | |
161 | - @RequestParam(value = "deviceIds",required = false) String deviceIds) { | |
162 | - return userOperateService.noSendByKeyword(schoolId,keyword,deviceIds); | |
108 | + @ApiOperation(value = "按条件指定下发未发送") | |
109 | + @RequestMapping(value = "sendNuFaceByClassId", method = RequestMethod.POST) | |
110 | + public Result noSendByKeyword(@Validated @RequestBody SendFaceBean faceBean) { | |
111 | + return userOperateService.sendNuFaceByClassId(faceBean); | |
163 | 112 | } |
164 | 113 | |
165 | - @ApiOperation(value = "根据宿舍分组下发") | |
114 | + @ApiOperation(value = "按宿舍分组下发") | |
166 | 115 | @RequestMapping(value = "sendFaceByRoomId", method = RequestMethod.POST) |
167 | - public Result sendFaceByRoomId(@RequestParam("schoolId") Integer schoolId, | |
168 | - @RequestParam("roomId") Integer roomId, | |
169 | - @RequestParam(value = "deviceIds",required = false) String deviceIds) { | |
170 | - return userOperateService.sendFaceByRoomId(schoolId,roomId,deviceIds); | |
116 | + public Result sendFaceByRoomId(@Validated @RequestBody SendFaceBean faceBean) { | |
117 | + return userOperateService.sendFaceByRoomId(faceBean); | |
171 | 118 | } |
172 | 119 | |
173 | - @ApiOperation(value = "删除指定学校下人脸照片") | |
174 | - @RequestMapping(value = "deleteBySchoolId", method = RequestMethod.POST) | |
175 | - public Result deleteBySchoolId(@RequestParam("schoolId") Integer schoolId, | |
176 | - @RequestParam(value = "deviceIds",required = false) String deviceIds){ | |
177 | - return userOperateService.deleteFaceBySchoolId(schoolId,deviceIds); | |
120 | + @ApiOperation(value = "按条件删除学校下人脸照片") | |
121 | + @RequestMapping(value = "deleteByCondition", method = RequestMethod.POST) | |
122 | + public Result deleteByCondition(@Validated @RequestBody SendFaceBean faceBean){ | |
123 | + return userOperateService.deleteByCondition(faceBean); | |
178 | 124 | } |
179 | 125 | |
180 | - @RequestMapping(value = "checkFaceSend", method = RequestMethod.GET) | |
181 | - public void checkFaceSend(){ | |
182 | - userOperateService.checkFaceSend(); | |
183 | - } | |
184 | - | |
185 | - @ApiOperation(value = "按班级指定下发") | |
186 | - @RequestMapping(value = "replaceFaceByKeyword", method = RequestMethod.POST) | |
187 | - public Result replaceFaceByKeyword(@RequestParam("schoolId") Integer schoolId, | |
188 | - @RequestParam("deviceIds") String deviceIds, | |
189 | - @RequestParam("keyword") String keyword){ | |
190 | - return userOperateService.replaceFaceByKeyword(schoolId,deviceIds,keyword); | |
126 | + @ApiOperation(value = "压缩包上传下发") | |
127 | + @RequestMapping(value = "exportFace", method = RequestMethod.POST) | |
128 | + public Result exportFace(@RequestParam("schoolId") Integer schoolId, | |
129 | + @RequestParam("userType") Integer userType, | |
130 | + @RequestParam("deviceIds") String deviceIds, | |
131 | + @RequestParam("faceSrcPath") String faceSrcPath){ | |
132 | + return userOperateService.exportFace(schoolId,userType,deviceIds,faceSrcPath); | |
191 | 133 | } |
192 | 134 | } | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/dao/UserDao.java
... | ... | @@ -12,27 +12,6 @@ import java.util.List; |
12 | 12 | @Repository |
13 | 13 | public interface UserDao { |
14 | 14 | |
15 | - /** | |
16 | - * 没有记录取最新十条下发 | |
17 | - * | |
18 | - * @return | |
19 | - */ | |
20 | - @Select("select top (10) * from HS_StudentUpdateCard order by AddTime desc") | |
21 | - List<StudentBean> getStudents(); | |
22 | - | |
23 | - @Select("select student_num,name,studentcode from SZ_V_School_Student where school_id = 479") | |
24 | - List<StudentBean> getStu(); | |
25 | - | |
26 | - /** | |
27 | - * 获取所有的学生 | |
28 | - * | |
29 | - * @return | |
30 | - */ | |
31 | - @Select("select * from HS_StudentUpdateCard where ID > #{id} and StudentType = #{StudentType} order by AddTime desc") | |
32 | - List<StudentBean> getAllStudents(@Param("id") long id, @Param("StudentType") int StudentType); | |
33 | - @Update("update SZ_V_School_Student set name = #{name} where student_id = #{student_id}") | |
34 | - void updateTest(@Param("student_id") String student_id, @Param("name") String name); | |
35 | - | |
36 | 15 | @Select("select Top(1) student_num from SZ_V_School_Student where student_id = #{student_id} and role_state = 1") |
37 | 16 | String getStudent_Num(@Param("student_id") String student_id); |
38 | 17 | |
... | ... | @@ -47,153 +26,9 @@ public interface UserDao { |
47 | 26 | @Param("KnowledgeId") String KnowledgeId, @Param("TestId") String TestId, @Param("ChapterId") String ChapterId, @Param("GradeId") String GradeId, @Param("SourceId") String SourceId, |
48 | 27 | @Param("OrderId") String OrderId, @Param("SId") String SId, @Param("StemId") String StemId, @Param("AutomaticCorrection") String AutomaticCorrection, @Param("SchoolId") String SchoolId); |
49 | 28 | |
50 | - @Select("select * from SZ_User where user_id = #{user_id}") | |
51 | - UserBean getUser(@Param("user_id") String user_id); | |
52 | - | |
53 | 29 | @Select("select school_name from SZ_School where school_id = #{schoolid}") |
54 | 30 | String getSchoolName(@Param("schoolid") String schoolid); |
55 | 31 | |
56 | - @Select("select * from HS_ResFiles where UserId in(select user_id from SZ_V_School_Teacher where school_id = 1021)") | |
57 | - List<FileBean> getFileRes(); | |
58 | - | |
59 | - @Select("select * from HS_ResFiles where UserId = 'zy405704' and id >= 4476 ") | |
60 | - List<FileBean> getFIlesReses(); | |
61 | - | |
62 | - // | |
63 | - @Select("(select Name from HS_ResGrade where SchoolId = 350 and id = #{id})") | |
64 | - String getGradeName(@Param("id") String id); | |
65 | - | |
66 | - // | |
67 | - @Select("select id from HS_ResGrade where SchoolId = 349 and name = #{name}") | |
68 | - String getGradeId(@Param("name") String name); | |
69 | - | |
70 | - @Select("select * from HS_ResGrade where SchoolId = 350") | |
71 | - List<HSGrade> getGrades(); | |
72 | - | |
73 | - | |
74 | - @Insert("insert into HS_ResGrade values (#{name},#{addTime},#{status},#{userId},#{schoolId},#{shortName},#{schoolYear},#{year},#{remark},#{isFinish})") | |
75 | - void addGrade(@Param("name") String name, @Param("addTime") String addTime, @Param("status") int status, @Param("userId") String userId, | |
76 | - @Param("schoolId") int schoolId, @Param("shortName") String shortName, @Param("schoolYear") int schoolYear, @Param("year") int year, @Param("remark") String remark, @Param("isFinish") int isFinish); | |
77 | - | |
78 | - // | |
79 | - @Select("select * from HS_ResBook where SchoolId = 350") | |
80 | - List<HS_ResBook> getHSResBook(); | |
81 | - | |
82 | - @Insert(" insert into HS_ResBook values (#{name},#{addTime},#{status},#{userId},#{schoolId},#{press},#{pressTimes},#{price})") | |
83 | - void addHSResBook(@Param("name") String name, @Param("addTime") String addTime, @Param("status") String status, @Param("userId") String userId, @Param("schoolId") String schoolId, @Param("press") String press, | |
84 | - @Param("pressTimes") String pressTimes, @Param("price") String price); | |
85 | - | |
86 | - @Select("select * from SZ_Subject where school_id =350 and Status = 1") | |
87 | - List<SubjectBean> getSubjects(); | |
88 | - | |
89 | - @Insert("insert into SZ_Subject values(#{school_id},#{subject_name},#{intime},#{subId},#{isElective},#{status},#{typeId},#{maxPerson},#{shortName})") | |
90 | - void addSubjectbean(@Param("school_id") int school_id, @Param("subject_name") String subject_name, @Param("intime") String intime, | |
91 | - @Param("subId") int subId, @Param("isElective") int isElective, @Param("status") int status, @Param("typeId") int typeId, @Param("maxPerson") int maxPerson, @Param("shortName") String shortName); | |
92 | - | |
93 | - @Select("select Top(1)subject_id from SZ_Subject where subject_name = #{subject_name} and school_id = 349") | |
94 | - String getSubjectId(@Param("subject_name") String subject_name); | |
95 | - | |
96 | - @Select("select Top(1) subject_name from SZ_Subject where subject_id = #{subject_id} and school_id = 350") | |
97 | - String getSubjectName(@Param("subject_id") int subject_id); | |
98 | - | |
99 | - @Select("select Top(1) name from HS_ResBook where SchoolId = 350 and id = #{id}") | |
100 | - String getBookName(@Param("id") int bookId); | |
101 | - | |
102 | - @Select("select Top(1) id from HS_ResBook where SchoolId = 349 and name = #{name}") | |
103 | - int getBookId(@Param("name") String bookName); | |
104 | - | |
105 | - @Select("select id from HS_ResBookVersion where SchoolId = #{SchoolId}") | |
106 | - List<String> getbookversionId(@Param("SchoolId") String SchoolId); | |
107 | - | |
108 | - @Select("select * from HS_ResChapter where SchoolId = 350") | |
109 | - List<HS_ResChapter> getChapters(); | |
110 | - | |
111 | - // | |
112 | - @Select(" select * from HS_ResBookVersion where SchoolId = 350") | |
113 | - List<HS_ResBookVersion> getResBookVersion(); | |
114 | - | |
115 | - @Insert("insert into HS_ResBookVersion values(#{bookId},#{gradeId},#{subjectId},#{isUse},#{state},#{intime},#{schoolId})") | |
116 | - void addResBookVersion(@Param("bookId") int bookId, @Param("gradeId") int gradeId, @Param("subjectId") int subjectId, @Param("isUse") int isUse, @Param("state") int state, | |
117 | - @Param("intime") String intime, @Param("schoolId") int schoolId); | |
118 | - | |
119 | - @Insert("insert into HS_ResChapter values(#{name},#{subjectId},#{gradeId},#{pid},#{jiaoCaiId},#{bookVersionId},#{sort},#{type},#{addTime},#{status},#{userId},#{schoolId})") | |
120 | - void addChapter(@Param("name") String name, @Param("subjectId") int subjectId, @Param("gradeId") int gradeId, @Param("pid") int pid, @Param("jiaoCaiId") int jiaoCaiId, @Param("bookVersionId") int bookVersionId, | |
121 | - @Param("sort") int sort, @Param("type") int type, @Param("addTime") String addTime, @Param("status") int status, @Param("userId") String userId, @Param("schoolId") int schoolId); | |
122 | - | |
123 | - @Select("Select Top(1)name from HS_ResChapter where id = #{pid} ") | |
124 | - String getChapterName(@Param("pid") int pid); | |
125 | - | |
126 | - @Select(" Select Top(1)id from HS_ResChapter where name=#{name} and SchoolId = 349") | |
127 | - String getChapterId(@Param("name") String name); | |
128 | - | |
129 | - @Update("update HS_ResChapter set Pid = #{pid} where SchoolId = 349 and userId = #{userId} and name = #{name}") | |
130 | - void updateChapter(@Param("userId") String userId, @Param("name") String name, @Param("pid") String chapterId); | |
131 | - | |
132 | - @Select("select id from HS_ResBook where SchoolId = 885 and name =(select name from HS_ResBook where SchoolId = 1021 and Id = #{id})") | |
133 | - String getJiaoCaiId(@Param("id") int id); | |
134 | - | |
135 | - @Select("select id from HS_ResCatalog where SchoolId = 885 and name = #{name}") | |
136 | - String getResCatalog(@Param("name") String name); | |
137 | - | |
138 | - @Select("select name from HS_ResCatalog where SchoolId = 1021 and id = #{id}") | |
139 | - String getResCatalogName(@Param("id") String id); | |
140 | - | |
141 | - @Select("select id from HS_ResType where SchoolId = 885 and name = #{name}") | |
142 | - String getResType(@Param("name") String name); | |
143 | - | |
144 | - @Select("select name from HS_ResType where SchoolId = 1021 and id = #{id}") | |
145 | - String getResTypeName(@Param("id") String id); | |
146 | - | |
147 | - // | |
148 | - @Insert("insert into HS_ResFiles values(#{name},#{catalogId},#{typeId},#{gradeId},#{subjectId},#{jiaoCaiId},#{charpId},#{fileUrl},#{descript},#{keywords}" + | |
149 | - ",#{addTime},#{status},#{userId},#{targetUrl},#{clicks},#{userList},#{isShare},#{charpId1},#{knowledgeId})") | |
150 | - void addFiles(@Param("name") String name, @Param("catalogId") String catalogId, @Param("typeId") int typeId, @Param("gradeId") int gradeId, | |
151 | - @Param("subjectId") int subjectId, @Param("jiaoCaiId") int jiaoCaiId, @Param("charpId") int charpId, @Param("fileUrl") String fileUrl, | |
152 | - @Param("descript") String descript, @Param("keywords") String keywords, @Param("addTime") String addTime, @Param("status") int status, | |
153 | - @Param("userId") String userId, @Param("targetUrl") String targetUrl, @Param("clicks") int clicks, @Param("userList") String userList, @Param("isShare") int isShare, | |
154 | - @Param("charpId1") int charpId1, @Param("knowledgeId") int knowledgeId); | |
155 | - | |
156 | - @Select("select *\n" + | |
157 | - "from SZ_V_School_Student where name = #{name} and school_id = #{school_id}") | |
158 | - List<StudentBean> getAllStudentsWithSchoolId(@Param("school_id") String school_id, @Param("name") String name); | |
159 | - | |
160 | - @Select("select * from SZ_V_School_Student where school_id = #{school_id} and student_type = 2") | |
161 | - List<StudentBean> getAllStuWithSchoolId(@Param("school_id") String school_id); | |
162 | - | |
163 | - @Select(" select * from SZ_V_School_Student where school_id = 562 and student_num is not null and photo is not null and len(photo)>0") | |
164 | - List<StudentInfo> getAllStus(); | |
165 | - | |
166 | - @Select("select user_id\n" + | |
167 | - "from SZ_V_School_Student where school_id = 13 and student_type =2 and len(student_num)=0\n") | |
168 | - List<String> getUserids(); | |
169 | - | |
170 | - @Insert("insert into HS_ResRalation (FileId,AddTime,UserId) values (#{FileId},#{AddTime},#{userId})") | |
171 | - void addRelation(@Param("FileId") String id, @Param("AddTime") String time, @Param("userId") String userId); | |
172 | - | |
173 | - @Select("select student_id from SZ_V_School_Student where school_id = #{s} and name = #{name}") | |
174 | - List<String> getStudentIdWidthName(@Param("name") String trim, @Param("s") String s); | |
175 | - | |
176 | - @Insert("insert into Virtual_Card values(#{intCardNum},#{i},#{cardNum})") | |
177 | - void addVirtual_Card(@Param("intCardNum") long intCardNum, @Param("i") int i, @Param("cardNum") String cardNum); | |
178 | - | |
179 | - @Select("select class_id from SZ_V_School_Student where school_id = 479 and student_id = #{customerId} ") | |
180 | - String getClassName(@Param("customerId") String customerId); | |
181 | - | |
182 | - @Select("select clint_id from SZ_Attendance where school_id = #{schoolId} and clint_type=18") | |
183 | - List<String> getDeviceIdsWidthSchoolId(@Param("schoolId") int schoolId); | |
184 | - | |
185 | - | |
186 | - @Select("select StudentId from SS_RoomNumber where Pid in (select id\n" + | |
187 | - " from SS_Room\n" + | |
188 | - " where SchoolId = 479 and SS_Room.Pid =10284 )") | |
189 | - List<String> getStudentIdWithRoom(); | |
190 | - | |
191 | - @Select("select CardNum from Virtual_Card where state =0 and id < 5475 ;") | |
192 | - List<String> getVirCards(); | |
193 | - | |
194 | - @Update("update SZ_V_School_Student set student_num =#{student_num} where school_id = 13 and student_type =2 and len(student_num)=0 and user_id = #{user_id}") | |
195 | - void updateStuCards(@Param("student_num") String card, @Param("user_id") String user_id); | |
196 | - | |
197 | 32 | |
198 | 33 | @Select("select Top(1) * from SZ_V_School_Student where studentcode = #{studentcode} and school_id = #{schoolId}") |
199 | 34 | StudentBean getStudentWithstudentcode(@Param("studentcode") String studentcode, @Param("schoolId") String schoolId); |
... | ... | @@ -210,18 +45,6 @@ public interface UserDao { |
210 | 45 | void addWGTem(@Param("UserId") String UserId, @Param("StudentId") String StudentId, @Param("Name") String Name, @Param("ClassId") String ClassId, |
211 | 46 | @Param("ClassName") String ClassName, @Param("Temperature") String Temperature, @Param("Type") String Type, @Param("SchoolId") String SchoolId, @Param("Intime") String Intime); |
212 | 47 | |
213 | - @Select("select student_num from SZ_V_School_Student where school_id = #{schoolId} and student_num<>''") | |
214 | - List<String> getStudentCardsWidthSchoolId(@Param("schoolId") int schoolId); | |
215 | - | |
216 | - @Select("select student_num from SZ_V_School_Teacher where school_id = #{schoolId} and student_num<>''") | |
217 | - List<String> getTeaCardsWidthSchoolId(@Param("schoolId") String schoolId); | |
218 | - | |
219 | - @Select("select Top(1) teacher_num from SZ_V_School_Teacher where user_id = #{userId}") | |
220 | - String getTeaCardWithUserId(@Param("userId") String userId); | |
221 | - | |
222 | - @Select("select Top(1) student_num from SZ_V_School_Student where school_id = #{schoolId} and user_id = #{userId}") | |
223 | - String getStudentCardWithUserId(@Param("schoolId") String schoolId,@Param("userId") String userId); | |
224 | - | |
225 | 48 | @Select("select Top(1) studentcode from SZ_V_School_Student where student_num = #{num}") |
226 | 49 | String getStudentCode(@Param("num") String num); |
227 | 50 | |
... | ... | @@ -274,14 +97,9 @@ public interface UserDao { |
274 | 97 | @Param("groupId")Integer groupId); |
275 | 98 | |
276 | 99 | List<StudentBean> getStudentByClassId(@Param("schoolId") int schoolId, |
277 | - @Param("classIds") List<Integer> classIds, | |
278 | - @Param("sexList") List<Integer> sexList, | |
279 | - @Param("studentType")Integer studentType); | |
280 | - | |
281 | - List<StudentBean> getStudentByKeyword(@Param("schoolId") int schoolId, | |
282 | - @Param("keyword") String keyword, | |
283 | - @Param("sexList") List<Integer> sexList, | |
284 | - @Param("studentType")Integer studentType); | |
100 | + @Param("studentType") Integer studentType, | |
101 | + @Param("classIds") List<String> classIds, | |
102 | + @Param("sexList") List<String> sexList); | |
285 | 103 | |
286 | 104 | List<String> getDeviceIds(@Param("schoolId") Integer schoolId,@Param("deviceId") String deviceId); |
287 | 105 | |
... | ... | @@ -292,7 +110,7 @@ public interface UserDao { |
292 | 110 | @Select(" select top 1* from SZ_V_School_Student where student_id = #{student_id}") |
293 | 111 | StudentBean getStudentWithid(@Param("student_id") String student_id); |
294 | 112 | |
295 | - StudentBean getStudentCByUserId(@Param("userId") String userId,@Param("schoolId") Integer schoolId); | |
113 | + StudentBean getStudentByUserId(@Param("userId") String userId,@Param("schoolId") Integer schoolId); | |
296 | 114 | |
297 | 115 | StudentBean getTeacherByUserId(@Param("userId") String userId,@Param("schoolId") Integer schoolId); |
298 | 116 | |
... | ... | @@ -302,16 +120,11 @@ public interface UserDao { |
302 | 120 | |
303 | 121 | void insertCard(UpdateCardBean bean); |
304 | 122 | |
305 | - void insertStudent(SaveStudentBak studentBak); | |
306 | - | |
307 | - void updateStudent(@Param("id") Integer id); | |
308 | - | |
309 | - List<SaveStudentBak> selectStudentList(); | |
310 | - | |
311 | 123 | List<Integer> getRoomBySchoolId(@Param("schoolId") Integer schoolId,@Param("groupId") Integer groupId); |
312 | 124 | |
313 | 125 | List<StudentBean> getStudentByRoomIds(@Param("schoolId") Integer schoolId,@Param("pIdList") List<Integer> pIdList); |
314 | 126 | |
127 | + /***找回已毕业的数据***/ | |
315 | 128 | List<StudentBean> getTestVsByKeyword(@Param("schoolId") int schoolId, |
316 | 129 | @Param("keyword") String keyword, |
317 | 130 | @Param("sexList") List<Integer> sexList, | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/service/UserOperateService.java
... | ... | @@ -3,7 +3,10 @@ package com.sincere.haikangface.service; |
3 | 3 | import com.sincere.haikangface.bean.Result; |
4 | 4 | import com.sincere.haikangface.bean.face.AuthRecordDto; |
5 | 5 | import com.sincere.haikangface.bean.face.DeviceAuthRecord; |
6 | +import com.sincere.haikangface.bean.face.SendFaceBean; | |
6 | 7 | import com.sincere.haikangface.bean.face.SendFaceDto; |
8 | +import org.springframework.validation.annotation.Validated; | |
9 | +import org.springframework.web.bind.annotation.RequestBody; | |
7 | 10 | import org.springframework.web.multipart.MultipartFile; |
8 | 11 | |
9 | 12 | /** |
... | ... | @@ -52,13 +55,6 @@ public interface UserOperateService { |
52 | 55 | Result againSendFace(String userId,String deviceId,Integer userType); |
53 | 56 | |
54 | 57 | /** |
55 | - * 多线程照片下发 | |
56 | - * @param sendFaceDto | |
57 | - * @return | |
58 | - */ | |
59 | - Result sendUserFaceByThread(SendFaceDto sendFaceDto,Integer groupId); | |
60 | - | |
61 | - /** | |
62 | 58 | * 删除失败表人脸 |
63 | 59 | * @param schoolId |
64 | 60 | * @return |
... | ... | @@ -67,31 +63,15 @@ public interface UserOperateService { |
67 | 63 | |
68 | 64 | /** |
69 | 65 | * 下发失败表人脸 |
70 | - * @param schoolId | |
71 | 66 | * @return |
72 | 67 | */ |
73 | - Result sendFailFace(Integer schoolId); | |
74 | - | |
75 | - Result sendFailFace2(Integer schoolId,String deviceIds); | |
68 | + Result sendFailFace(SendFaceBean faceBean); | |
76 | 69 | |
77 | 70 | /** |
78 | 71 | * 删除指定人脸 |
79 | - * @param schoolId | |
80 | - * @param cards | |
81 | - * @param deviceIds | |
82 | 72 | * @return |
83 | 73 | */ |
84 | - Result deleteFace(Integer schoolId,String cards,String deviceIds); | |
85 | - | |
86 | - /** | |
87 | - * 下发未下发完的人脸,仅供测试使用 | |
88 | - * @param schoolId | |
89 | - * @param studentType | |
90 | - * @param sex | |
91 | - * @param deviceIds | |
92 | - * @return | |
93 | - */ | |
94 | - Result sendFaceForNoSend(Integer schoolId,Integer studentType,String sex,Integer userType,String deviceIds,Integer groupId); | |
74 | + Result deleteFace(SendFaceBean faceBean); | |
95 | 75 | |
96 | 76 | /** |
97 | 77 | * 补发单个人脸至指定设备 |
... | ... | @@ -112,57 +92,40 @@ public interface UserOperateService { |
112 | 92 | Result insertUpdateCard(String cardNums); |
113 | 93 | |
114 | 94 | /** |
115 | - * 压缩包上传下发人脸 | |
116 | - * @param schoolId | |
117 | - * @param userType | |
118 | - * @param deviceIds | |
119 | - * @param faceSrcPath | |
95 | + * | |
96 | + * @param faceBean | |
120 | 97 | * @return |
121 | 98 | */ |
122 | - Result exportFace(Integer schoolId,Integer userType,String deviceIds,String faceSrcPath); | |
99 | + Result sendFaceByClassId(SendFaceBean faceBean); | |
123 | 100 | |
124 | 101 | /** |
125 | - * 按班级下发人脸 | |
126 | - * @param schoolId | |
127 | - * @param classIds | |
128 | - * @param deviceIds | |
129 | - * @param isCheck | |
102 | + * | |
103 | + * @param faceBean | |
130 | 104 | * @return |
131 | 105 | */ |
132 | - Result sendFaceByClassId(Integer schoolId,String classIds,String deviceIds,Integer studentType,String sex,Integer isCheck); | |
106 | + Result sendNuFaceByClassId(SendFaceBean faceBean); | |
133 | 107 | |
134 | 108 | /** |
135 | - * 根据班级新生班级关键字下发 | |
136 | - * @param schoolId | |
137 | - * @param deviceIds | |
138 | - * @param keyword | |
139 | - * @param studentType | |
140 | - * @param sex | |
141 | - * @param isCheck | |
109 | + * 根据寝室号下发人脸 | |
110 | + * @param faceBean | |
142 | 111 | * @return |
143 | 112 | */ |
144 | - Result sendFaceByKeyword(Integer schoolId,String deviceIds,String keyword,Integer studentType,String sex,Integer isCheck); | |
145 | - | |
146 | - Result noSendByKeyword(Integer schoolId,String keyword,String deviceIds); | |
113 | + Result sendFaceByRoomId(SendFaceBean faceBean); | |
147 | 114 | |
148 | 115 | /** |
149 | - * 根据寝室号下发人脸 | |
150 | - * @param schoolId | |
151 | - * @param groupId | |
152 | - * @param deviceIds | |
116 | + * 删除指定学校下的人脸 | |
117 | + * @param faceBean | |
153 | 118 | * @return |
154 | 119 | */ |
155 | - Result sendFaceByRoomId(Integer schoolId,Integer groupId,String deviceIds); | |
120 | + Result deleteByCondition(SendFaceBean faceBean); | |
156 | 121 | |
157 | 122 | /** |
158 | - * 删除指定学校下的人脸 | |
123 | + * 压缩包上传下发人脸 | |
159 | 124 | * @param schoolId |
125 | + * @param userType | |
160 | 126 | * @param deviceIds |
127 | + * @param faceSrcPath | |
161 | 128 | * @return |
162 | 129 | */ |
163 | - Result deleteFaceBySchoolId(Integer schoolId,String deviceIds); | |
164 | - | |
165 | - void checkFaceSend(); | |
166 | - | |
167 | - Result replaceFaceByKeyword(Integer schoolId,String deviceIds,String keyword); | |
130 | + Result exportFace(Integer schoolId,Integer userType,String deviceIds,String faceSrcPath); | |
168 | 131 | } | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/service/impl/BaseService.java
... | ... | @@ -8,6 +8,7 @@ import com.sincere.haikangface.async.SendUserAsync; |
8 | 8 | import com.sincere.haikangface.bean.AttendanceBean; |
9 | 9 | import com.sincere.haikangface.bean.SendRecordBean; |
10 | 10 | import com.sincere.haikangface.bean.StudentBean; |
11 | +import com.sincere.haikangface.bean.face.SendFaceBean; | |
11 | 12 | import com.sincere.haikangface.dao.DeviceDao; |
12 | 13 | import com.sincere.haikangface.dao.UserDao; |
13 | 14 | import com.sincere.haikangface.enums.EnumSzBusinessType; |
... | ... | @@ -23,9 +24,12 @@ import org.springframework.stereotype.Service; |
23 | 24 | import org.springframework.util.CollectionUtils; |
24 | 25 | |
25 | 26 | import java.io.File; |
27 | +import java.io.FileInputStream; | |
28 | +import java.io.FileOutputStream; | |
26 | 29 | import java.text.SimpleDateFormat; |
27 | 30 | import java.util.*; |
28 | 31 | import java.util.concurrent.*; |
32 | +import java.util.function.Function; | |
29 | 33 | import java.util.stream.Collectors; |
30 | 34 | |
31 | 35 | /** |
... | ... | @@ -276,29 +280,22 @@ public class BaseService { |
276 | 280 | |
277 | 281 | @Async |
278 | 282 | public void sendUserFaceByAsyncThread(Integer schoolId,Integer userType,List<StudentBean> studentBeanList,List<String> deviceList){ |
279 | - List<String> deviceId_100 = new ArrayList<>(); | |
280 | - List<String> deviceId_253 = new ArrayList<>(); | |
283 | + List<String> deviceId100 = new ArrayList<>(); | |
284 | + List<String> deviceId253 = new ArrayList<>(); | |
281 | 285 | //过滤设备 |
282 | 286 | for (String sno : deviceList) { |
283 | 287 | //若100服务器有此设备再进行多线程执行下发人脸任务,否则请求253服务执行单个下发人脸 |
284 | - if (cmsServer.getIsDeviceOnline(sno)) { | |
285 | - deviceId_100.add(sno); | |
286 | - }else{ | |
287 | - deviceId_253.add(sno); | |
288 | - } | |
289 | - } | |
290 | - if(deviceId_100.size()>0){ | |
291 | - //100服务器 | |
292 | - sendFaceToDevice100(deviceId_100,studentBeanList,schoolId,userType); | |
293 | - } | |
294 | - if(deviceId_253.size()>0){ | |
295 | - //253服务器 | |
296 | - sendFaceToDevice253(deviceId_253,studentBeanList,schoolId,userType); | |
288 | + if (cmsServer.getIsDeviceOnline(sno)) deviceId100.add(sno); | |
289 | + else deviceId253.add(sno); | |
297 | 290 | } |
291 | + //100服务器 | |
292 | + sendFaceToDevice100(deviceId100,studentBeanList,schoolId,userType); | |
293 | + //253服务器 | |
294 | + sendFaceToDevice253(deviceId100,studentBeanList,schoolId,userType); | |
298 | 295 | } |
299 | 296 | |
300 | 297 | |
301 | - protected void sendFaceToDevice100(List<String> deviceIds,List<StudentBean> studentBeanList,Integer schoolId,Integer userType){ | |
298 | + protected void sendFaceToDevice100(List<String> deviceIds,List<StudentBean> studentList,Integer schoolId,Integer userType){ | |
302 | 299 | log.info("------------------------开始执行100服务,人脸照下发---------------------"); |
303 | 300 | String startTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); |
304 | 301 | Calendar calendar = Calendar.getInstance(); |
... | ... | @@ -306,64 +303,41 @@ public class BaseService { |
306 | 303 | String endTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime()); |
307 | 304 | //下发标识:详情见枚举 EnumHkOperateType |
308 | 305 | int validTimeEnabled = EnumSzBusinessType.EnumHkOperateType.ADD.code; |
309 | - for(StudentBean studentBean : studentBeanList){ | |
306 | + studentList.stream().forEach(s->{ | |
310 | 307 | try{ |
311 | - String userName= studentBean.getName(); | |
312 | - String userId = studentBean.getUser_id(); | |
313 | - String photo = userType.intValue()==1?studentBean.getFace():studentBean.getPhoto(); | |
314 | - String cardNum =userType.intValue()==1?studentBean.getTeacher_num():studentBean.getStudent_num(); | |
315 | - String typeName=userType.intValue()==1?"Teacher":"Student"; | |
316 | - if (StringUtils.isBlank(photo) || StringUtils.isBlank(cardNum)){ | |
317 | - continue; | |
318 | - } | |
319 | - //以学籍号为名的文件名 | |
320 | - String fileName = photo.substring(photo.lastIndexOf("/") + 1,photo.length()); | |
321 | - //100服务器人脸照绝对路径 | |
322 | - String path_1 = "E:\\wwwhtdocs\\SmartCampus\\face17e50\\School" + schoolId + "\\" + typeName; | |
323 | - String path_2 = "E:\\wwwhtdocs\\SmartCampus\\face17e5\\School" + schoolId + "\\" + typeName; | |
324 | - String path_3 = "E:\\wwwhtdocs\\SmartCampus\\f0i5l7e5\\"; | |
325 | - String filePath=""; | |
326 | - if(photo.indexOf("f0i5l7e5")!=-1){ | |
327 | - String afterStr = photo.split("f0i5l7e5/")[1].replace("/","\\"); | |
328 | - filePath= path_3 + afterStr; | |
329 | - } | |
330 | - if(photo.indexOf("face17e5")!=-1){ | |
331 | - filePath = path_2 + "\\" + fileName; | |
332 | - } | |
333 | - if(photo.indexOf("face17e50")!=-1){ | |
334 | - filePath = path_1 + "\\" + fileName; | |
308 | + String userName = s.getName(); | |
309 | + String studentNum = s.getStudent_num(); | |
310 | + String filePath = this.checkUserFace(s,userType,schoolId); | |
311 | + if(StringUtils.isBlank(filePath)) return; | |
312 | + File file = new File(filePath); | |
313 | + if(!file.exists()) return; | |
314 | + String targetPath = FileUtils.picPathComp + file.getName(); | |
315 | + try { | |
316 | + CompressPic.CompressPic(file.getAbsolutePath(), targetPath); | |
317 | + } catch (Exception e) { | |
318 | + log.error("压缩图片失败:",e); | |
319 | + return; | |
335 | 320 | } |
336 | - File file = new File(filePath);//图片 | |
337 | - if(file.exists()){ | |
338 | - String targetPath = FileUtils.picPathComp + file.getName(); | |
339 | - try { | |
340 | - CompressPic.CompressPic(file.getAbsolutePath(), targetPath); | |
341 | - } catch (Exception e) { | |
342 | - log.error("压缩图片失败:",e); | |
343 | - continue; | |
344 | - } | |
345 | - for(String sno : deviceIds){ | |
346 | - if(sendRecordDao.getRecordIsExit(sno,cardNum,userId).size()<1){ | |
347 | - if(cmsServer.getIsDeviceOnline(sno)){ | |
348 | - if(!StringUtils.isBlank(cardNum)){ | |
349 | - String cardNumLong = Long.parseLong(getCard(cardNum),16) + ""; | |
350 | - //下发100海康设备 | |
351 | - sendUserAsync.sendStuToHaiKang(file.getAbsolutePath(),targetPath,cardNumLong, startTime, endTime, validTimeEnabled, userName, sno, String.valueOf(userType),schoolId,cardNum); | |
352 | - } | |
353 | - }else{ | |
354 | - log.error("100服务器,设备不在线"); | |
355 | - } | |
321 | + for(String sno : deviceIds){ | |
322 | + if(cmsServer.getIsDeviceOnline(sno)){ | |
323 | + if(!StringUtils.isBlank(s.getStudent_num())){ | |
324 | + String cardNumLong = Long.parseLong(getCard(studentNum),16) + ""; | |
325 | + //下发100海康设备 | |
326 | + sendUserAsync.sendStuToHaiKang(file.getAbsolutePath(),targetPath,cardNumLong, startTime, endTime, | |
327 | + validTimeEnabled, userName, sno, String.valueOf(userType),schoolId,studentNum); | |
356 | 328 | } |
329 | + }else{ | |
330 | + log.error("100服务器,设备不在线"); | |
357 | 331 | } |
358 | 332 | } |
359 | 333 | }catch (Exception e){ |
360 | 334 | log.error("人脸下发失败,异常信息:",e); |
361 | - continue; | |
335 | + return; | |
362 | 336 | } |
363 | - } | |
337 | + }); | |
364 | 338 | } |
365 | 339 | |
366 | - protected void sendFaceToDevice253(List<String> deviceIds,List<StudentBean> studentBeanList,Integer schoolId,Integer userType){ | |
340 | + protected void sendFaceToDevice253(List<String> deviceIds,List<StudentBean> studentList,Integer schoolId,Integer userType){ | |
367 | 341 | log.info("------------------------开始执行253服务,人脸照下发---------------------"); |
368 | 342 | String startTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); |
369 | 343 | Calendar calendar = Calendar.getInstance(); |
... | ... | @@ -371,73 +345,31 @@ public class BaseService { |
371 | 345 | String endTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime()); |
372 | 346 | //下发标识:详情见枚举 EnumHkOperateType |
373 | 347 | int validTimeEnabled = EnumSzBusinessType.EnumHkOperateType.ADD.code; |
374 | - for(StudentBean studentBean : studentBeanList){ | |
348 | + studentList.stream().forEach(s->{ | |
375 | 349 | try{ |
376 | - String userName= studentBean.getName(); | |
377 | - String userId = studentBean.getUser_id(); | |
378 | - String photo = userType.intValue()==1?studentBean.getFace():studentBean.getPhoto(); | |
379 | - String cardNum =userType.intValue()==1?studentBean.getTeacher_num():studentBean.getStudent_num(); | |
380 | - String typeName=userType.intValue()==1?"Teacher":"Student"; | |
381 | - if (StringUtils.isBlank(photo) || StringUtils.isBlank(cardNum)){ | |
382 | - continue; | |
383 | - } | |
384 | - //以学籍号为名的文件名 | |
385 | - String fileName = photo.substring(photo.lastIndexOf("/") + 1,photo.length()); | |
386 | - //100服务器人脸照绝对路径 | |
387 | - String path_1 = "E:\\wwwhtdocs\\SmartCampus\\face17e50\\School" + schoolId + "\\" + typeName; | |
388 | - String path_2 = "E:\\wwwhtdocs\\SmartCampus\\face17e5\\School" + schoolId + "\\" + typeName; | |
389 | - String path_3 = "E:\\wwwhtdocs\\SmartCampus\\f0i5l7e5\\"; | |
390 | - String filePath=""; | |
391 | - if(photo.indexOf("f0i5l7e5")!=-1){ | |
392 | - String afterStr = photo.split("f0i5l7e5/")[1].replace("/","\\"); | |
393 | - filePath= path_3 + afterStr; | |
394 | - } | |
395 | - if(photo.indexOf("face17e5")!=-1){ | |
396 | - filePath = path_2 + "\\" + fileName; | |
397 | - } | |
398 | - if(photo.indexOf("face17e50")!=-1){ | |
399 | - filePath = path_1 + "\\" + fileName; | |
350 | + String userName = s.getName(); | |
351 | + String studentNum = s.getStudent_num(); | |
352 | + String filePath = this.checkUserFace(s,userType,schoolId); | |
353 | + if(StringUtils.isBlank(filePath)) return; | |
354 | + File file = new File(filePath); | |
355 | + if(!file.exists()) return; | |
356 | + String targetPath = FileUtils.picPathComp + file.getName(); | |
357 | + try { | |
358 | + CompressPic.CompressPic(file.getAbsolutePath(), targetPath); | |
359 | + } catch (Exception e) { | |
360 | + log.error("压缩图片失败:",e); | |
361 | + return; | |
400 | 362 | } |
401 | - File file = new File(filePath);//图片 | |
402 | - if(file.exists()) { | |
403 | - String targetPath = FileUtils.picPathComp + file.getName(); | |
404 | - try { | |
405 | - CompressPic.CompressPic(file.getAbsolutePath(), targetPath); | |
406 | - } catch (Exception e) { | |
407 | - log.error("压缩图片失败:", e); | |
408 | - continue; | |
409 | - } | |
410 | - for (String sno : deviceIds) { | |
411 | - if(sendRecordDao.getRecordIsExit(sno,cardNum,userId).size()<1){ | |
412 | - //下发253服务器 | |
413 | - sendUserAsync.uploadImgs(targetPath,cardNum, userName, sno, startTime, endTime, validTimeEnabled, String.valueOf(userType),schoolId); | |
414 | - } | |
415 | - } | |
363 | + for (String sno : deviceIds) { | |
364 | + //下发253服务器 | |
365 | + sendUserAsync.uploadImgs(targetPath,studentNum, userName, sno, startTime, endTime, validTimeEnabled, | |
366 | + String.valueOf(userType),schoolId); | |
416 | 367 | } |
417 | 368 | }catch (Exception e){ |
418 | - log.error("人脸下发失败"); | |
419 | - e.printStackTrace(); | |
420 | - continue; | |
369 | + log.error("人脸下发失败",e); | |
370 | + return; | |
421 | 371 | } |
422 | - } | |
423 | - } | |
424 | - | |
425 | - | |
426 | - /** | |
427 | - * 获取指定学校下的学生卡信息 | |
428 | - * @param schoolId | |
429 | - * @return | |
430 | - */ | |
431 | - public List<SendRecordBean> getRecordCardBySchoolId(int schoolId) { | |
432 | - List<SendRecordBean> allStudents = new LinkedList<>(); | |
433 | - List<SendRecordBean> students = sendRecordDao.getSendFaceSuccess(schoolId); | |
434 | - allStudents.addAll(students); | |
435 | - List<SendRecordBean> students2 = sendRecordDao.getFaceRecord(schoolId); | |
436 | - allStudents.addAll(students2); | |
437 | - //去重重复数据 | |
438 | - List<SendRecordBean> studentList = allStudents.stream().collect(Collectors.collectingAndThen( | |
439 | - Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(SendRecordBean::getNum))),ArrayList::new)); | |
440 | - return studentList; | |
372 | + }); | |
441 | 373 | } |
442 | 374 | |
443 | 375 | /** |
... | ... | @@ -480,43 +412,12 @@ public class BaseService { |
480 | 412 | |
481 | 413 | /** |
482 | 414 | * 根据班级ID获取对应班级下的学生数据信息 |
483 | - * @param schoolId | |
484 | - * @param classIds | |
485 | 415 | * @return |
486 | 416 | */ |
487 | - public List<StudentBean> getStudentByClassId(Integer schoolId,String classIds,Integer studentType,String sex) { | |
488 | - List<Integer> classList = null; | |
489 | - if(StringUtils.isNotBlank(classIds)){ | |
490 | - classList = Arrays.asList(classIds.split(",")) | |
491 | - .stream().map(Integer::parseInt).collect(Collectors.toList()); | |
492 | - } | |
493 | - List<Integer> sexList = null; | |
494 | - if(StringUtils.isNotBlank(sex)){ | |
495 | - sexList = Arrays.asList(sex.split(",")) | |
496 | - .stream().map(Integer::parseInt).collect(Collectors.toList()); | |
497 | - } | |
498 | - List<StudentBean> students = userDao.getStudentByClassId(schoolId,classList,sexList,studentType); | |
499 | - //去重重复数据 | |
500 | - List<StudentBean> studentList = students.stream().collect(Collectors.collectingAndThen( | |
501 | - Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(StudentBean::getStudent_num))), ArrayList::new)); | |
502 | - return studentList; | |
503 | - } | |
504 | - | |
505 | - /** | |
506 | - * 根据班级关键字获取学生数据信息 | |
507 | - * @param schoolId | |
508 | - * @param keyword | |
509 | - * @param studentType | |
510 | - * @param sex | |
511 | - * @return | |
512 | - */ | |
513 | - public List<StudentBean> getStudentByKeyword(Integer schoolId,String keyword,Integer studentType,String sex) { | |
514 | - List<Integer> sexList = null; | |
515 | - if(StringUtils.isNotBlank(sex)){ | |
516 | - sexList = Arrays.asList(sex.split(",")) | |
517 | - .stream().map(Integer::parseInt).collect(Collectors.toList()); | |
518 | - } | |
519 | - List<StudentBean> students = userDao.getStudentByKeyword(schoolId,keyword,sexList,studentType); | |
417 | + public List<StudentBean> getStudentByClassId(SendFaceBean faceBean) { | |
418 | + List<String> classList = faceBean.getClassList(); | |
419 | + List<String> sexList = faceBean.getSexList(); | |
420 | + List<StudentBean> students = userDao.getStudentByClassId(faceBean.getSchoolId(),faceBean.getStudentType(),classList,sexList); | |
520 | 421 | //去重重复数据 |
521 | 422 | List<StudentBean> studentList = students.stream().collect(Collectors.collectingAndThen( |
522 | 423 | Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(StudentBean::getStudent_num))), ArrayList::new)); |
... | ... | @@ -555,7 +456,7 @@ public class BaseService { |
555 | 456 | List<Integer> pIdlIst = rooms.stream().distinct().collect(Collectors.toList()); |
556 | 457 | List<StudentBean> studentBeans = userDao.getStudentByRoomIds(schoolId,pIdlIst); |
557 | 458 | //去重重复数据 |
558 | - List<StudentBean> studentList = studentBeans.stream().collect(Collectors.collectingAndThen( | |
459 | + List<StudentBean> studentList = studentBeans.parallelStream().collect(Collectors.collectingAndThen( | |
559 | 460 | Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(StudentBean::getStudent_num))), ArrayList::new)); |
560 | 461 | return studentList; |
561 | 462 | } |
... | ... | @@ -576,34 +477,20 @@ public class BaseService { |
576 | 477 | return teacherist; |
577 | 478 | } |
578 | 479 | |
579 | - | |
580 | - public void getSuccessList(Integer schoolId,String deviceIds) { | |
581 | - //下发设备集合 | |
582 | - String[] deviceArr = deviceIds.split(","); | |
583 | - List<String> deviceList= new ArrayList<>(Arrays.asList(deviceArr)); | |
584 | - if(deviceList.size()<1){ | |
585 | - return; | |
586 | - } | |
587 | - //启用多线程执行 | |
588 | - CountDownLatch begin = new CountDownLatch(1); | |
589 | - CountDownLatch end = new CountDownLatch(deviceList.size()); | |
590 | - ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("thread-sendFace-runner-%d").build(); | |
591 | - ExecutorService exe = new ThreadPoolExecutor(8,16,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>(),namedThreadFactory); | |
592 | - for(String sno : deviceList){ | |
593 | - exe.execute(new AsyncTask(userDao,sendRecordDao,schoolId,sno,begin,end)); | |
594 | - } | |
595 | - begin.countDown(); | |
596 | - try { | |
597 | - end.await(); | |
598 | - }catch (Exception e){ | |
599 | - log.error("迁移人脸照失败"+e); | |
600 | - e.printStackTrace(); | |
601 | - } | |
602 | - exe.shutdown(); | |
603 | - System.out.println("统计100服务器总共有"+deviceList.size()+"个设备,处理完毕"); | |
480 | + /** | |
481 | + * 获取指定学校下的学生卡信息 | |
482 | + * @return | |
483 | + */ | |
484 | + public List<SendRecordBean> getSendRecordList(SendFaceBean faceBean) { | |
485 | + List<SendRecordBean> students = sendRecordDao.getSendRecordList(faceBean.getSchoolId(),faceBean.getDeviceList(),faceBean.getStatus()); | |
486 | + //去重重复数据 | |
487 | + List<SendRecordBean> studentList = students.stream().collect(Collectors.collectingAndThen( | |
488 | + Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(SendRecordBean::getNum))),ArrayList::new)); | |
489 | + return studentList; | |
604 | 490 | } |
605 | 491 | |
606 | 492 | |
493 | + | |
607 | 494 | public void clearStudent(Integer schoolId,String deviceIds) { |
608 | 495 | //下发设备集合 |
609 | 496 | String[] deviceArr = deviceIds.split(","); |
... | ... | @@ -637,7 +524,6 @@ public class BaseService { |
637 | 524 | System.out.println("size: " + sendRecordBeans.size()); |
638 | 525 | for(String s : sendRecordBeans){ |
639 | 526 | StudentBean studentBean = userDao.getStudentWithCard(s,schoolId); |
640 | -// System.out.println(new Gson().toJson(studentBean)); | |
641 | 527 | if(studentBean == null){ |
642 | 528 | System.out.println(s); |
643 | 529 | sendRecordDao.deleteRecordByNum(schoolId,s); |
... | ... | @@ -676,5 +562,58 @@ public class BaseService { |
676 | 562 | } |
677 | 563 | |
678 | 564 | |
565 | + public List<String> getDeviceList(String deviceIds,Integer schoolId){ | |
566 | + if(StringUtils.isNotBlank(deviceIds)) return Arrays.asList(deviceIds.split(",")); | |
567 | + return deviceDao.selectDeviceBySchoolId(schoolId); | |
568 | + } | |
679 | 569 | |
570 | + public String checkUserFace(StudentBean studentBean,Integer userType,Integer schoolId){ | |
571 | + String cardNum = userType.intValue()==1 ? studentBean.getTeacher_num():studentBean.getStudent_num(); | |
572 | + String photo = userType.intValue()==1?studentBean.getFace():studentBean.getPhoto(); | |
573 | + if (StringUtils.isBlank(photo) || StringUtils.isBlank(cardNum)) return null; | |
574 | + String typeName= userType.intValue()==1?"Teacher":"Student"; | |
575 | + //以学籍号为名的文件名 | |
576 | + String fileName = photo.substring(photo.lastIndexOf("/") + 1,photo.length()); | |
577 | + //100服务器人脸照绝对路径 | |
578 | + String path_1 = "E:\\wwwhtdocs\\SmartCampus\\face17e50\\School" + schoolId + "\\" + typeName; | |
579 | + String path_2 = "E:\\wwwhtdocs\\SmartCampus\\face17e5\\School" + schoolId + "\\" + typeName; | |
580 | + String path_3 = "E:\\wwwhtdocs\\SmartCampus\\f0i5l7e5\\"; | |
581 | + String filePath=""; | |
582 | + if(photo.indexOf("face17e5")!=-1) filePath = path_2 + "\\" + fileName; | |
583 | + if(photo.indexOf("face17e50")!=-1) filePath = path_1 + "\\" + fileName; | |
584 | + if(filePath.indexOf("?v=")!=-1) filePath = filePath.split("\\?")[0]; | |
585 | + if(photo.indexOf("f0i5l7e5")!=-1){ | |
586 | + String afterStr = photo.split("f0i5l7e5/")[1].replace("/","\\"); | |
587 | + filePath = path_3 + afterStr; | |
588 | + } | |
589 | + return filePath; | |
590 | + } | |
591 | + | |
592 | + public static void copy(String srcPathStr, String desPathStr) { | |
593 | + //获取源文件的名称 | |
594 | + try { | |
595 | + FileInputStream fis = new FileInputStream(srcPathStr);//创建输入流对象 | |
596 | + FileOutputStream fos = new FileOutputStream(desPathStr); //创建输出流对象 | |
597 | + byte datas[] = new byte[1024*8];//创建搬运工具 | |
598 | + int len = 0;//创建长度 | |
599 | + while((len = fis.read(datas))!=-1)//循环读取数据 | |
600 | + { | |
601 | + fos.write(datas,0,len); | |
602 | + } | |
603 | + fis.close();//释放资源 | |
604 | + fis.close();//释放资源 | |
605 | + } | |
606 | + catch (Exception e) | |
607 | + { | |
608 | + e.printStackTrace(); | |
609 | + } | |
610 | + } | |
611 | + | |
612 | + public boolean checkSendRecord(List<SendRecordBean> sendRecords,String sno,Integer schoolId,String cardNum){ | |
613 | + SendRecordBean record = sendRecords.stream().filter(s->Objects.equals(s.getDeviceID(),sno) && | |
614 | + Objects.equals(s.getStatus(),1) && Objects.equals(s.getSchoolId(),schoolId) && | |
615 | + Objects.equals(s.getNum(),cardNum)).findFirst().orElse(null); | |
616 | + if(Objects.nonNull(record)) return true; | |
617 | + return false; | |
618 | + } | |
680 | 619 | } | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/service/impl/UserOperateServiceImpl.java
... | ... | @@ -6,7 +6,6 @@ import com.sincere.haikangface.CMSServer; |
6 | 6 | import com.sincere.haikangface.async.SendUserAsync; |
7 | 7 | import com.sincere.haikangface.bean.*; |
8 | 8 | import com.sincere.haikangface.bean.face.*; |
9 | -import com.sincere.haikangface.bean.test.SaveStudentBak; | |
10 | 9 | import com.sincere.haikangface.dao.DeviceDao; |
11 | 10 | import com.sincere.haikangface.dao.UserDao; |
12 | 11 | import com.sincere.haikangface.enums.EnumSzBusinessType; |
... | ... | @@ -22,11 +21,10 @@ import org.springframework.stereotype.Service; |
22 | 21 | import org.springframework.web.multipart.MultipartFile; |
23 | 22 | |
24 | 23 | import java.io.File; |
25 | -import java.io.FileInputStream; | |
26 | 24 | import java.io.FileOutputStream; |
27 | 25 | import java.io.IOException; |
28 | -import java.text.SimpleDateFormat; | |
29 | 26 | import java.util.*; |
27 | +import java.util.function.Function; | |
30 | 28 | import java.util.stream.Collectors; |
31 | 29 | |
32 | 30 | /** |
... | ... | @@ -125,16 +123,10 @@ public class UserOperateServiceImpl implements UserOperateService { |
125 | 123 | @Override |
126 | 124 | public Result sendHKAuth(Integer authId) { |
127 | 125 | DeviceAuthRecord record = userDao.getAuthRecord(authId); |
128 | - if(record ==null){ | |
129 | - log.info("未查询到对应权限ID: {}, 权限计划。",authId); | |
130 | - return ResultGenerator.genFailResult("未查询到对应下发权限计划"); | |
131 | - } | |
132 | - //设备ID | |
133 | - String[] deviceArr = record.getSno().split(","); | |
134 | - List<String> devices= new ArrayList<>(Arrays.asList(deviceArr)); | |
135 | - if(CollectionUtils.isEmpty(devices)){ | |
136 | - return ResultGenerator.genFailResult("未选择权限计划下发设备。"); | |
137 | - } | |
126 | + if(Objects.isNull(record)) return ResultGenerator.genFailResult("未查询到对应下发权限计划"); | |
127 | + | |
128 | + List<String> devices= Arrays.asList(record.getSno().split(",")); | |
129 | + if(CollectionUtils.isEmpty(devices)) return ResultGenerator.genFailResult("未选择权限计划下发设备。"); | |
138 | 130 | //学生类型 |
139 | 131 | Integer studentType = record.getStudentType(); |
140 | 132 | //周计划详情 |
... | ... | @@ -188,54 +180,28 @@ public class UserOperateServiceImpl implements UserOperateService { |
188 | 180 | } |
189 | 181 | |
190 | 182 | @Override |
191 | - public Result againSendFace(String userId, String deviceId,Integer userType) { | |
192 | - StudentBean studentBean = null; | |
193 | - String cardNum =""; | |
194 | - String photo =""; | |
195 | - String studentCode = ""; | |
196 | - if(userType.intValue() ==1){ | |
197 | - studentBean = userDao.getTeacherByUserId(userId,null); | |
198 | - cardNum = studentBean.getTeacher_num(); | |
199 | - photo = studentBean.getFace(); | |
200 | - studentCode = studentBean.getNum(); | |
201 | - }else{ | |
202 | - studentBean = userDao.getStudentCByUserId(userId,null); | |
203 | - cardNum = studentBean.getStudent_num(); | |
204 | - photo = studentBean.getPhoto(); | |
205 | - studentCode = studentBean.getStudentCode(); | |
206 | - } | |
207 | - if (studentBean == null) { | |
183 | + public Result againSendFace(String userId, String deviceId, Integer userType) { | |
184 | + StudentBean bean = Objects.equals(userType,EnumSzBusinessType.EnumUserType.STUDENT.code) ? | |
185 | + userDao.getStudentByUserId(userId,null) : userDao.getTeacherByUserId(userId,null); | |
186 | + if (Objects.isNull(bean)) { | |
208 | 187 | log.error("下发人脸失败,userId: {},未查询到用户信息", userId); |
209 | 188 | return ResultGenerator.genSuccessResult("未查询到用户信息"); |
210 | 189 | } |
211 | - Integer schoolId = studentBean.getSchool_id(); | |
212 | - String userName = studentBean.getName(); | |
190 | + String cardNum = Objects.equals(userType,EnumSzBusinessType.EnumUserType.STUDENT.code) ? | |
191 | + bean.getStudent_num() : bean.getTeacher_num(); | |
192 | + String photo = Objects.equals(userType,EnumSzBusinessType.EnumUserType.STUDENT.code) ? | |
193 | + bean.getPhoto() : bean.getFace(); | |
194 | + String studentCode = Objects.equals(userType,EnumSzBusinessType.EnumUserType.STUDENT.code) ? | |
195 | + bean.getStudentCode() : bean.getNum(); | |
196 | + Integer schoolId = bean.getSchool_id(); | |
197 | + String userName = bean.getName(); | |
213 | 198 | String typeName = userType.intValue() ==1 ? "Teacher" : "Student"; |
214 | - String[] fileNameStr =photo.split(typeName +"/"); | |
199 | + String[] fileNameStr = photo.split(typeName +"/"); | |
215 | 200 | if(fileNameStr.length==0){ |
216 | 201 | log.error("文件名为空,文件路径 :"+ photo); |
217 | 202 | return ResultGenerator.genSuccessResult("文件名为空"); |
218 | 203 | } |
219 | - //以学籍号为名的文件名 | |
220 | - String fileName = photo.substring(photo.lastIndexOf("/") + 1,photo.length()); | |
221 | - //100服务器人脸照绝对路径 | |
222 | - String path_1 = "E:\\wwwhtdocs\\SmartCampus\\face17e50\\School" + schoolId + "\\" + typeName; | |
223 | - String path_2 = "E:\\wwwhtdocs\\SmartCampus\\face17e5\\School" + schoolId + "\\" + typeName; | |
224 | - String path_3 = "E:\\wwwhtdocs\\SmartCampus\\f0i5l7e5\\"; | |
225 | - String filePath=""; | |
226 | - if(photo.indexOf("f0i5l7e5")!=-1){ | |
227 | - String afterStr = photo.split("f0i5l7e5/")[1].replace("/","\\"); | |
228 | - filePath= path_3 + afterStr; | |
229 | - } | |
230 | - if(photo.indexOf("face17e5")!=-1){ | |
231 | - filePath = path_2 + "\\" + fileName; | |
232 | - } | |
233 | - if(photo.indexOf("face17e50")!=-1){ | |
234 | - filePath = path_1 + "\\" + fileName; | |
235 | - } | |
236 | - if(filePath.indexOf("?v=")!=-1){ | |
237 | - filePath = filePath.split("\\?")[0]; | |
238 | - } | |
204 | + String filePath = baseService.checkUserFace(bean,userType,schoolId); | |
239 | 205 | //校验100服务文件存储地址上是否存在此人脸 |
240 | 206 | File file = new File(filePath.trim());//图片 |
241 | 207 | if (!file.exists()) { |
... | ... | @@ -249,6 +215,7 @@ public class UserOperateServiceImpl implements UserOperateService { |
249 | 215 | CompressPic.CompressPic(file.getAbsolutePath(), targetPath); |
250 | 216 | } catch (Exception e) { |
251 | 217 | log.error("压缩图片失败:",e); |
218 | + return ResultGenerator.genFailResult("重新下发失败"); | |
252 | 219 | } |
253 | 220 | } |
254 | 221 | //设备类型 |
... | ... | @@ -264,87 +231,19 @@ public class UserOperateServiceImpl implements UserOperateService { |
264 | 231 | } |
265 | 232 | //2.重新下发 |
266 | 233 | boolean isOk = baseService.sendImg(file.getAbsolutePath(), targetPath, deviceId, cardNum, userName, String.valueOf(userType), schoolId); |
267 | - if (isOk) { | |
268 | - return ResultGenerator.genSuccessResult(); | |
269 | - } else { | |
270 | - return ResultGenerator.genFailResult("重新下发失败"); | |
271 | - } | |
234 | + if (!isOk) return ResultGenerator.genFailResult("重新下发失败"); | |
272 | 235 | } |
273 | 236 | //下大华人脸 |
274 | 237 | if(clintType.intValue()== 22 || clintType.intValue()== 29){ |
275 | 238 | //下发单个人脸至大华设备 |
276 | 239 | HttpUtil.uploadDHImgForOne(filePath,schoolId,studentCode,clintType,deviceId); |
277 | - return ResultGenerator.genSuccessResult(); | |
278 | 240 | } |
279 | 241 | return ResultGenerator.genSuccessResult(); |
280 | 242 | } |
281 | 243 | |
282 | 244 | @Override |
283 | - public Result sendUserFaceByThread(SendFaceDto sendFaceDto,Integer groupId) { | |
284 | - //下发设备集合 | |
285 | - String[] deviceArr = sendFaceDto.getsNos().split(","); | |
286 | - List<String> deviceList= new ArrayList<>(Arrays.asList(deviceArr)); | |
287 | - if(deviceList.size()<1){ | |
288 | - return ResultGenerator.genFailResult("未选择下发设备"); | |
289 | - } | |
290 | - Integer schoolId = sendFaceDto.getSchoolId(); | |
291 | - Integer studentType = sendFaceDto.getStudentType(); | |
292 | - String sex = sendFaceDto.getSex(); | |
293 | - Integer userType = null; | |
294 | - if(sendFaceDto.getType().intValue()==0 || sendFaceDto.getType().intValue()==1){ | |
295 | - userType = 2; | |
296 | - }else{ | |
297 | - userType = 1; | |
298 | - } | |
299 | - //根据类型获取下发用户信息 | |
300 | - List<StudentBean> studentBeanList = null; | |
301 | - if (userType == EnumSzBusinessType.EnumUserType.TEACHER.code) { | |
302 | - studentBeanList = baseService.getTeacherList(schoolId); | |
303 | - } | |
304 | - if (userType == EnumSzBusinessType.EnumUserType.STUDENT.code && groupId ==null) { | |
305 | - studentBeanList = baseService.getStudentList(schoolId,studentType,sex); | |
306 | - }else if(userType == EnumSzBusinessType.EnumUserType.STUDENT.code && groupId !=null){ | |
307 | - studentBeanList = baseService.getStudentListByGroup(schoolId,studentType,sex,groupId); | |
308 | - } | |
309 | - log.info("统计共有下发用户数量:{}",studentBeanList.size()); | |
310 | - //设备类型 | |
311 | - Integer clintType = userDao.getClintTypeByDeviceId(deviceList.get(0)); | |
312 | - if(clintType.intValue()== 22 || clintType.intValue()== 29){ | |
313 | - if(groupId ==null){ | |
314 | - //发送大华设备 | |
315 | - HttpUtil.uploadDHImg(String.valueOf(schoolId),userType,sendFaceDto.getsNos(),studentType,sex); | |
316 | - }else{ | |
317 | - Integer finalUserType = userType; | |
318 | - studentBeanList.stream().forEach(s->{ | |
319 | - String userId = s.getUser_id(); | |
320 | - deviceList.stream().forEach(deviceId ->{ | |
321 | - this.againSendFace(userId,deviceId, finalUserType); | |
322 | - }); | |
323 | - }); | |
324 | - } | |
325 | - } | |
326 | - if(clintType.intValue()== 18 || clintType.intValue()== 28){ | |
327 | - //发送海康设备:异步执行 | |
328 | - baseService.sendUserFaceByAsyncThread(schoolId,userType,studentBeanList,deviceList); | |
329 | - } | |
330 | - int fileSize = studentBeanList.size(); | |
331 | - int clintNum = deviceList.size(); | |
332 | - //下发所用时长 | |
333 | - int timeLength = new Double(clintNum * fileSize * 0.06).intValue(); | |
334 | - //下发截止时间 | |
335 | - String dateStr = baseService.getTime(fileSize,clintNum,timeLength); | |
336 | - Map map = new HashMap(); | |
337 | - map.put("timeLength",timeLength); | |
338 | - map.put("afterDate",dateStr); | |
339 | - map.put("fileSize",fileSize); | |
340 | - return ResultGenerator.genSuccessResult(objectMapper.toJson(map)); | |
341 | - } | |
342 | - | |
343 | - @Override | |
344 | 245 | public Result deleteFailFace(Integer schoolId) { |
345 | - if(schoolId ==null){ | |
346 | - return ResultGenerator.genFailResult("删除失败人脸,学校ID不能为空"); | |
347 | - } | |
246 | + if(schoolId ==null) return ResultGenerator.genFailResult("删除失败人脸,学校ID不能为空"); | |
348 | 247 | List<SendRecordBean> recordBeanList = sendRecordDao.getFailRecord(schoolId); |
349 | 248 | if(recordBeanList.size()>0){ |
350 | 249 | for(SendRecordBean recordBean : recordBeanList){ |
... | ... | @@ -369,7 +268,6 @@ public class UserOperateServiceImpl implements UserOperateService { |
369 | 268 | HttpUtil.deleteDHFace(schoolId,cardNum,deviceId); |
370 | 269 | } |
371 | 270 | //删除成功记录 |
372 | - sendRecordDao.deleteUserFaceSuccess(schoolId,cardNum,deviceId); | |
373 | 271 | sendRecordDao.deleteRecord(schoolId,deviceId,cardNum); |
374 | 272 | }catch (Exception e){ |
375 | 273 | log.error("删除失败人脸失败,异常信息:{}",e); |
... | ... | @@ -381,414 +279,163 @@ public class UserOperateServiceImpl implements UserOperateService { |
381 | 279 | } |
382 | 280 | |
383 | 281 | @Override |
384 | - public Result sendFailFace(Integer schoolId) { | |
385 | - if(schoolId ==null){ | |
386 | - return ResultGenerator.genFailResult("删除失败人脸,学校ID不能为空"); | |
387 | - } | |
388 | - List<SendRecordBean> recordBeanList = sendRecordDao.getFailRecord(schoolId); | |
389 | - if(recordBeanList.size()>0){ | |
390 | - for(SendRecordBean recordBean : recordBeanList){ | |
391 | - try{ | |
392 | - //用户类型1老师2学生 | |
393 | - int userType = recordBean.getUserType(); | |
394 | - //人脸卡号 | |
395 | - String cardNum = recordBean.getNum(); | |
396 | - //设备ID、设备类型 | |
397 | - String deviceId = recordBean.getDeviceID(); | |
398 | - Integer clintType = userDao.getClintTypeByDeviceId(deviceId); | |
399 | - //2.重新下发 | |
400 | - StudentBean studentBean= null; | |
401 | - String typeName =""; | |
402 | - String photo = ""; | |
403 | - if(userType ==1){ | |
404 | - typeName= "Teacher"; | |
405 | - studentBean = userDao.getTeacherWithCard(cardNum,schoolId); | |
406 | - photo=studentBean.getFace(); | |
282 | + public Result sendFailFace(SendFaceBean faceBean) { | |
283 | + List<SendRecordBean> recordList = baseService.getSendRecordList(faceBean); | |
284 | + if(CollectionUtils.isEmpty(recordList)) return ResultGenerator.genSuccessResult(); | |
285 | + recordList.stream().forEach(s->{ | |
286 | + try{ | |
287 | + //用户类型1老师2学生 | |
288 | + Integer userType = s.getUserType(); | |
289 | + String userId = s.getUserId(); | |
290 | + Integer schoolId = s.getSchoolId(); | |
291 | + String deviceId = s.getDeviceID(); | |
292 | + //2.重新下发 | |
293 | + StudentBean bean = Objects.equals(userType,EnumSzBusinessType.EnumUserType.STUDENT.code) ? | |
294 | + userDao.getStudentByUserId(userId,null) : userDao.getTeacherByUserId(userId,null); | |
295 | + String cardNum = Objects.equals(userType,EnumSzBusinessType.EnumUserType.STUDENT.code) ? | |
296 | + bean.getStudent_num() : bean.getTeacher_num(); | |
297 | + String photo = Objects.equals(userType,EnumSzBusinessType.EnumUserType.STUDENT.code) ? | |
298 | + bean.getPhoto() : bean.getFace(); | |
299 | + String studentCode = Objects.equals(userType,EnumSzBusinessType.EnumUserType.STUDENT.code) ? | |
300 | + bean.getStudentCode() : bean.getNum(); | |
301 | + if(Objects.isNull(bean) || StringUtils.isBlank(photo) || StringUtils.isBlank(cardNum)) return; | |
302 | + | |
303 | + String userName= bean.getName(); | |
304 | + String filePath = baseService.checkUserFace(bean,userType,schoolId); | |
305 | + File file = new File(filePath);//图片 | |
306 | + if(file.exists()) return; | |
307 | + Integer clintType = userDao.getClintTypeByDeviceId(deviceId); | |
308 | + //下发海康人脸 | |
309 | + if(clintType.intValue()== 18 || clintType.intValue()== 28){ | |
310 | + //1.先删除人脸 | |
311 | + if (cmsServer.getIsDeviceOnline(deviceId)) { | |
312 | + String cardNo = Long.parseLong(baseService.getCard(cardNum),16) + ""; | |
313 | + cmsServer.deleteFace(deviceId, cardNo,schoolId); | |
407 | 314 | }else{ |
408 | - typeName= "Student"; | |
409 | - studentBean= userDao.getStudentWithCard(cardNum,schoolId); | |
410 | - photo=studentBean.getPhoto(); | |
411 | - } | |
412 | - if(studentBean==null|| StringUtils.isBlank(photo)){ | |
413 | - continue; | |
414 | - } | |
415 | - String userName= studentBean.getName(); | |
416 | - String studentCode = studentBean.getStudentCode(); | |
417 | - String filePath=""; | |
418 | - //下发海康人脸 | |
419 | - if(clintType.intValue()== 18 || clintType.intValue()== 28){ | |
420 | - //1.先删除人脸 | |
421 | - if (cmsServer.getIsDeviceOnline(deviceId)) { | |
422 | - String cardNo = Long.parseLong(baseService.getCard(cardNum),16) + ""; | |
423 | - cmsServer.deleteFace(deviceId, cardNo,schoolId); | |
424 | - }else{ | |
425 | - //不在线,去253服务器上删除 | |
426 | - HttpUtil.deleteCard(deviceId, cardNum); | |
427 | - } | |
428 | - //以学籍号为名的文件名 | |
429 | - String fileName = photo.substring(photo.lastIndexOf("/") + 1,photo.length()); | |
430 | - //100服务器人脸照绝对路径 | |
431 | - String path_1 = "E:\\wwwhtdocs\\SmartCampus\\face17e50\\School" + schoolId + "\\" + typeName; | |
432 | - String path_2 = "E:\\wwwhtdocs\\SmartCampus\\face17e5\\School" + schoolId + "\\" + typeName; | |
433 | - String path_3 = "E:\\wwwhtdocs\\SmartCampus\\f0i5l7e5\\"; | |
434 | - if(photo.indexOf("f0i5l7e5")!=-1){ | |
435 | - String afterStr = photo.split("f0i5l7e5/")[1].replace("/","\\"); | |
436 | - filePath= path_3 + afterStr; | |
437 | - } | |
438 | - if(photo.indexOf("face17e5")!=-1){ | |
439 | - filePath = path_2 + "\\" + fileName; | |
440 | - } | |
441 | - if(photo.indexOf("face17e50")!=-1){ | |
442 | - filePath = path_1 + "\\" + fileName; | |
443 | - } | |
444 | - if(filePath.indexOf("?v=")!=-1){ | |
445 | - filePath = filePath.split("\\?")[0]; | |
446 | - } | |
447 | - File file = new File(filePath);//图片 | |
448 | - if(file.exists()){ | |
449 | - String targetPath = FileUtils.picPathComp + file.getName(); | |
450 | - try { | |
451 | - CompressPic.CompressPic(file.getAbsolutePath(), targetPath); | |
452 | - } catch (Exception e) { | |
453 | - log.error("压缩图片失败:",e); | |
454 | - continue; | |
455 | - } | |
456 | - if(!StringUtils.isBlank(cardNum)) { | |
457 | - baseService.sendImg(file.getAbsolutePath(), targetPath, deviceId, cardNum, userName, String.valueOf(userType), schoolId); | |
458 | - } | |
459 | - } | |
315 | + //不在线,去253服务器上删除 | |
316 | + HttpUtil.deleteCard(deviceId, cardNum); | |
460 | 317 | } |
461 | - //下发大华人脸 | |
462 | - if(clintType.intValue()== 22 || clintType.intValue()== 29){ | |
463 | - HttpUtil.uploadDHImgForOne(filePath,schoolId,studentCode,clintType,deviceId); | |
464 | - } | |
465 | - }catch (Exception e){ | |
466 | - log.error("下发失败表人脸失败,异常信息:{}",e); | |
467 | - continue; | |
318 | + String targetPath = FileUtils.picPathComp + file.getName(); | |
319 | + CompressPic.CompressPic(file.getAbsolutePath(), targetPath); | |
320 | + baseService.sendImg(file.getAbsolutePath(), targetPath, deviceId, cardNum, userName, String.valueOf(userType), schoolId); | |
468 | 321 | } |
469 | - } | |
470 | - } | |
471 | - return ResultGenerator.genSuccessResult(); | |
472 | - } | |
473 | - | |
474 | - | |
475 | - @Override | |
476 | - public Result sendFailFace2(Integer schoolId,String deviceIds) { | |
477 | - if(schoolId ==null){ | |
478 | - return ResultGenerator.genFailResult("删除失败人脸,学校ID不能为空"); | |
479 | - } | |
480 | - List<SendRecordBean> resultList = new ArrayList<>(); | |
481 | - if(StringUtils.isNotBlank(deviceIds)){ | |
482 | - //设备集合 | |
483 | - String[] deviceArr = deviceIds.split(","); | |
484 | - List<String> deviceList= new ArrayList<>(Arrays.asList(deviceArr)); | |
485 | - for(String deviceId : deviceList){ | |
486 | - List<SendRecordBean> recordBeanList = sendRecordDao.getFailRecord2(schoolId,deviceId); | |
487 | - resultList.addAll(recordBeanList); | |
488 | - } | |
489 | - }else{ | |
490 | - List<SendRecordBean> recordBeanList = sendRecordDao.getFailRecord(schoolId); | |
491 | - resultList.addAll(recordBeanList); | |
492 | - } | |
493 | - if(resultList.size()>0){ | |
494 | - for(SendRecordBean recordBean : resultList){ | |
495 | - try{ | |
496 | - //用户类型1老师2学生 | |
497 | - int userType = recordBean.getUserType(); | |
498 | - //人脸卡号 | |
499 | - String cardNum = recordBean.getNum(); | |
500 | - //设备ID、设备类型 | |
501 | - String deviceId = recordBean.getDeviceID(); | |
502 | - Integer clintType = userDao.getClintTypeByDeviceId(deviceId); | |
503 | - //2.重新下发 | |
504 | - StudentBean studentBean= null; | |
505 | - String typeName =""; | |
506 | - String photo = ""; | |
507 | - if(userType ==1){ | |
508 | - typeName= "Teacher"; | |
509 | - studentBean = userDao.getTeacherWithCard(cardNum,schoolId); | |
510 | - photo=studentBean.getFace(); | |
511 | - }else{ | |
512 | - typeName= "Student"; | |
513 | - studentBean= userDao.getStudentWithCard(cardNum,schoolId); | |
514 | - photo=studentBean.getPhoto(); | |
515 | - } | |
516 | - if(studentBean==null|| StringUtils.isBlank(photo)){ | |
517 | - continue; | |
518 | - } | |
519 | - String userName= studentBean.getName(); | |
520 | - String studentCode = studentBean.getStudentCode(); | |
521 | - String filePath=""; | |
522 | - //下发海康人脸 | |
523 | - if(clintType.intValue()== 18 || clintType.intValue()== 28){ | |
524 | - //1.先删除人脸 | |
525 | - if (cmsServer.getIsDeviceOnline(deviceId)) { | |
526 | - String cardNo = Long.parseLong(baseService.getCard(cardNum),16) + ""; | |
527 | - cmsServer.deleteFace(deviceId, cardNo,schoolId); | |
528 | - }else{ | |
529 | - //不在线,去253服务器上删除 | |
530 | - HttpUtil.deleteCard(deviceId, cardNum); | |
531 | - } | |
532 | - //以学籍号为名的文件名 | |
533 | - String fileName = photo.substring(photo.lastIndexOf("/") + 1,photo.length()); | |
534 | - //100服务器人脸照绝对路径 | |
535 | - String path_1 = "E:\\wwwhtdocs\\SmartCampus\\face17e50\\School" + schoolId + "\\" + typeName; | |
536 | - String path_2 = "E:\\wwwhtdocs\\SmartCampus\\face17e5\\School" + schoolId + "\\" + typeName; | |
537 | - String path_3 = "E:\\wwwhtdocs\\SmartCampus\\f0i5l7e5\\"; | |
538 | - if(photo.indexOf("f0i5l7e5")!=-1){ | |
539 | - String afterStr = photo.split("f0i5l7e5/")[1].replace("/","\\"); | |
540 | - filePath= path_3 + afterStr; | |
541 | - } | |
542 | - if(photo.indexOf("face17e5")!=-1){ | |
543 | - filePath = path_2 + "\\" + fileName; | |
544 | - } | |
545 | - if(photo.indexOf("face17e50")!=-1){ | |
546 | - filePath = path_1 + "\\" + fileName; | |
547 | - } | |
548 | - if(filePath.indexOf("?v=")!=-1){ | |
549 | - filePath = filePath.split("\\?")[0]; | |
550 | - } | |
551 | - File file = new File(filePath);//图片 | |
552 | - if(file.exists()){ | |
553 | - String targetPath = FileUtils.picPathComp + file.getName(); | |
554 | - try { | |
555 | - CompressPic.CompressPic(file.getAbsolutePath(), targetPath); | |
556 | - } catch (Exception e) { | |
557 | - log.error("压缩图片失败:",e); | |
558 | - continue; | |
559 | - } | |
560 | - if(!StringUtils.isBlank(cardNum)) { | |
561 | - baseService.sendImg(file.getAbsolutePath(), targetPath, deviceId, cardNum, userName, String.valueOf(userType), schoolId); | |
562 | - } | |
563 | - } | |
564 | - } | |
565 | - //下发大华人脸 | |
566 | - if(clintType.intValue()== 22 || clintType.intValue()== 29){ | |
567 | - HttpUtil.uploadDHImgForOne(filePath,schoolId,studentCode,clintType,deviceId); | |
568 | - } | |
569 | - }catch (Exception e){ | |
570 | - log.error("下发失败表人脸失败,异常信息:{}",e); | |
571 | - continue; | |
322 | + if(clintType.intValue()== 22 || clintType.intValue()== 29){ | |
323 | + HttpUtil.uploadDHImgForOne(filePath,schoolId,studentCode,clintType,deviceId); | |
572 | 324 | } |
325 | + }catch (Exception e){ | |
326 | + log.error("下发失败表人脸失败,异常信息:{}",e); | |
327 | + return; | |
573 | 328 | } |
574 | - } | |
329 | + }); | |
575 | 330 | return ResultGenerator.genSuccessResult(); |
576 | 331 | } |
577 | 332 | |
578 | 333 | @Override |
579 | - public Result deleteFace(Integer schoolId,String cards,String deviceIds) { | |
580 | - if(StringUtils.isBlank(cards)){ | |
581 | - return ResultGenerator.genFailResult("删除人脸卡号为空"); | |
582 | - } | |
583 | - List<String> deviceList = new ArrayList<>(); | |
584 | - if(StringUtils.isBlank(deviceIds)){ | |
585 | - List<String> clintList = userDao.getDeviceIds(schoolId,null); | |
586 | - if(CollectionUtils.isNotEmpty(clintList)){ | |
587 | - deviceList.addAll(clintList); | |
588 | - } | |
589 | - }else{ | |
590 | - //设备集合 | |
591 | - String[] deviceArr = deviceIds.split(","); | |
592 | - deviceList= new ArrayList<>(Arrays.asList(deviceArr)); | |
593 | - } | |
594 | - String[] cardArr = cards.split(","); | |
595 | - List<String> cardList = new ArrayList<>(Arrays.asList(cardArr)); | |
334 | + public Result deleteFace(SendFaceBean faceBean) { | |
335 | + //下发设备集合 | |
336 | + List<String> deviceList = baseService.getDeviceList(faceBean.getDeviceIds(),faceBean.getSchoolId()); | |
337 | + List<String> cardList = faceBean.getCardList(); | |
338 | + if(CollectionUtils.isEmpty(cardList)) return ResultGenerator.genFailResult("删除卡号必传"); | |
596 | 339 | for(String card : cardList){ |
597 | - //未指定设备,删除学校下所有 | |
598 | - if(CollectionUtils.isNotEmpty(deviceList)) { | |
599 | - for (String sno : deviceList) { | |
600 | - try { | |
601 | - //设备类型 | |
602 | - Integer clintType = userDao.getClintTypeByDeviceId(sno); | |
603 | - if (clintType.intValue() == 18 || clintType.intValue() == 28) { | |
604 | - //删除海康设备人脸 | |
605 | - if (cmsServer.getIsDeviceOnline(sno)) { | |
606 | - String cardNo = Long.parseLong(baseService.getCard(card), 16) + ""; | |
607 | - cmsServer.deleteFace(sno, cardNo, schoolId); | |
608 | - } else { | |
609 | - HttpUtil.deleteCard(sno, card); | |
610 | - } | |
611 | - } | |
612 | - if (clintType.intValue() == 22 || clintType.intValue() == 29) { | |
613 | - //删除大华设备人脸 | |
614 | - HttpUtil.deleteDHFace(schoolId, card, sno); | |
340 | + for (String sno : deviceList) { | |
341 | + try { | |
342 | + //设备类型 | |
343 | + Integer clintType = userDao.getClintTypeByDeviceId(sno); | |
344 | + if (clintType.intValue() == 18 || clintType.intValue() == 28) { | |
345 | + //删除海康设备人脸 | |
346 | + if (cmsServer.getIsDeviceOnline(sno)) { | |
347 | + String cardNo = Long.parseLong(baseService.getCard(card), 16) + ""; | |
348 | + cmsServer.deleteFace(sno, cardNo, faceBean.getSchoolId()); | |
349 | + } else { | |
350 | + HttpUtil.deleteCard(sno, card); | |
615 | 351 | } |
616 | - //删除成功记录 | |
617 | - sendRecordDao.deleteUserFaceSuccess(schoolId,card,sno); | |
618 | - sendRecordDao.deleteRecord(schoolId,sno,card); | |
619 | - } catch (Exception e) { | |
620 | - log.error("删除人脸失败,异常信息:{}", e); | |
621 | - continue; | |
622 | 352 | } |
353 | + if (clintType.intValue() == 22 || clintType.intValue() == 29) { | |
354 | + //删除大华设备人脸 | |
355 | + HttpUtil.deleteDHFace(faceBean.getSchoolId(), card, sno); | |
356 | + } | |
357 | + //删除成功记录 | |
358 | + sendRecordDao.deleteRecord(faceBean.getSchoolId(), sno,card); | |
359 | + } catch (Exception e) { | |
360 | + log.error("删除人脸失败,异常信息:{}", e); | |
361 | + continue; | |
623 | 362 | } |
624 | 363 | } |
625 | 364 | } |
626 | 365 | return ResultGenerator.genSuccessResult(); |
627 | 366 | } |
628 | 367 | |
629 | - @Override | |
630 | - public Result sendFaceForNoSend(Integer schoolId,Integer studentType,String sex,Integer userType,String deviceIds,Integer groupId) { | |
631 | - //若未传下发,则下发该学校下所有设备 | |
632 | - //下发设备集合 | |
633 | - List<String> idLists = null; | |
634 | - if(StringUtils.isBlank(deviceIds)){ | |
635 | - idLists = userDao.getDeviceIds(schoolId,null); | |
636 | - }else{ | |
637 | - String[] deviceArr = deviceIds.split(","); | |
638 | - idLists= new ArrayList<>(Arrays.asList(deviceArr)); | |
639 | - } | |
640 | - if(CollectionUtils.isEmpty(idLists)){ | |
641 | - log.warn("该学校下未查询到下发设备"); | |
642 | - return ResultGenerator.genFailResult("该学校下未查询到下发设备"); | |
643 | - } | |
644 | - //下发用户集合 | |
645 | - List<StudentBean> list = null; | |
646 | - if (userType == EnumSzBusinessType.EnumUserType.STUDENT.code && groupId ==null) { | |
647 | - list = baseService.getStudentList(schoolId,studentType,sex); | |
648 | - }else if(userType == EnumSzBusinessType.EnumUserType.STUDENT.code && groupId !=null){ | |
649 | - list = baseService.getStudentListByGroup(schoolId,studentType,sex,groupId); | |
650 | - } | |
651 | - if(userType.intValue()==EnumSzBusinessType.EnumUserType.TEACHER.code){ | |
652 | - list = baseService.getTeacherList(schoolId); | |
653 | - } | |
654 | - //异步执行下发 | |
655 | - sendFaceForNoSend(schoolId,userType,list,idLists); | |
656 | - int fileSize = list.size(); | |
657 | - int clintNum = idLists.size(); | |
658 | - //下发所用时长 | |
659 | - int timeLength = new Double(clintNum * fileSize * 0.06).intValue(); | |
660 | - //下发截止时间 | |
661 | - String dateStr = baseService.getTime(fileSize,clintNum,timeLength); | |
662 | - Map map = new HashMap(); | |
663 | - map.put("timeLength",timeLength); | |
664 | - map.put("afterDate",dateStr); | |
665 | - map.put("fileSize",fileSize); | |
666 | - return ResultGenerator.genSuccessResult(objectMapper.toJson(map)); | |
667 | - } | |
668 | - | |
368 | + /** | |
369 | + * 下发未发人脸 | |
370 | + * @param studentList | |
371 | + * @param deviceIds | |
372 | + */ | |
669 | 373 | @Async |
670 | - public void sendFaceForNoSend(Integer schoolId,Integer userType,List<StudentBean> studentList,List<String> deviceIds){ | |
671 | - log.info("统计共有:"+studentList.size()+"张卡,"+deviceIds.size()+"台设备." ); | |
672 | - for(StudentBean studentBean : studentList){ | |
374 | + public void sendFaceForNoSend(SendFaceBean faceBean,List<StudentBean> studentList,List<String> deviceIds){ | |
375 | + log.info("统计学校共有:"+studentList.size()+"张卡,"+deviceIds.size()+"台设备." ); | |
376 | + List<SendRecordBean> sendRecords = baseService.getSendRecordList(faceBean); | |
377 | + List<SendRecordBean> list = sendRecords.parallelStream() | |
378 | + .collect(Collectors.toMap(t-> Arrays.asList(t.getSchoolId(),t.getNum(),t.getDeviceID()), | |
379 | + Function.identity(),(oldValue, newValue) -> oldValue)) | |
380 | + .values().stream().collect(Collectors.toList()); | |
381 | + studentList.stream().forEach(s->{ | |
382 | + String userName = s.getName(); | |
383 | + String studentCode = s.getStudentCode(); | |
384 | + String studentNum = s.getStudent_num(); | |
385 | + String filePath = baseService.checkUserFace(s, faceBean.getUserType(), faceBean.getSchoolId()); | |
386 | + if(StringUtils.isBlank(filePath)) return; | |
387 | + File file = new File(filePath); | |
388 | + if(!file.exists()) return; | |
389 | + String targetPath = FileUtils.picPathComp + file.getName(); | |
390 | + try { | |
391 | + CompressPic.CompressPic(file.getAbsolutePath(), targetPath); | |
392 | + } catch (Exception e) { | |
393 | + log.error("压缩图片失败:",e); | |
394 | + return; | |
395 | + } | |
673 | 396 | for(String sno : deviceIds){ |
674 | 397 | try{ |
675 | - //卡号 | |
676 | - String cardNum = userType.intValue()==1?studentBean.getTeacher_num():studentBean.getStudent_num(); | |
677 | - //人脸照 | |
678 | - String photo = userType.intValue()==1?studentBean.getFace():studentBean.getPhoto(); | |
679 | - if (StringUtils.isBlank(photo) || StringUtils.isBlank(cardNum)){ | |
680 | - continue; | |
681 | - } | |
682 | - String userName= studentBean.getName(); | |
683 | - String userId = studentBean.getUser_id(); | |
684 | - String studentCode = studentBean.getStudentCode(); | |
685 | - List<SendRecordBean> bean = sendRecordDao.getRecordIsExit(sno,cardNum,userId); | |
686 | - if(CollectionUtils.isNotEmpty(bean)){ | |
687 | - continue; | |
688 | - } | |
689 | - String typeName= userType.intValue()==1?"Teacher":"Student"; | |
690 | - //以学籍号为名的文件名 | |
691 | - String fileName = photo.substring(photo.lastIndexOf("/") + 1,photo.length()); | |
692 | - //100服务器人脸照绝对路径 | |
693 | - String path_1 = "E:\\wwwhtdocs\\SmartCampus\\face17e50\\School" + schoolId + "\\" + typeName; | |
694 | - String path_2 = "E:\\wwwhtdocs\\SmartCampus\\face17e5\\School" + schoolId + "\\" + typeName; | |
695 | - String path_3 = "E:\\wwwhtdocs\\SmartCampus\\f0i5l7e5\\"; | |
696 | - String filePath=""; | |
697 | - if(photo.indexOf("f0i5l7e5")!=-1){ | |
698 | - String afterStr = photo.split("f0i5l7e5/")[1].replace("/","\\"); | |
699 | - filePath= path_3 + afterStr; | |
700 | - } | |
701 | - if(photo.indexOf("face17e5")!=-1){ | |
702 | - filePath = path_2 + "\\" + fileName; | |
703 | - } | |
704 | - if(photo.indexOf("face17e50")!=-1){ | |
705 | - filePath = path_1 + "\\" + fileName; | |
706 | - } | |
707 | - if(filePath.indexOf("?v=")!=-1){ | |
708 | - filePath = filePath.split("\\?")[0]; | |
709 | - } | |
710 | - File file = new File(filePath);//图片 | |
711 | - if(file.exists()){ | |
712 | - String targetPath = FileUtils.picPathComp + file.getName(); | |
713 | - try { | |
714 | - CompressPic.CompressPic(file.getAbsolutePath(), targetPath); | |
715 | - } catch (Exception e) { | |
716 | - log.error("压缩图片失败:",e); | |
717 | - continue; | |
718 | - } | |
719 | - if(!StringUtils.isBlank(cardNum)) { | |
720 | - //设备类型 | |
721 | - Integer clintType = userDao.getClintTypeByDeviceId(sno); | |
722 | - if(clintType.intValue()== 18 || clintType.intValue()== 28){ | |
723 | - baseService.sendImg(file.getAbsolutePath(), targetPath, sno, cardNum, userName, String.valueOf(userType), schoolId); | |
724 | - } | |
725 | - //下大华人脸 | |
726 | - if(clintType.intValue()== 22 || clintType.intValue()== 29){ | |
727 | - //下发单个人脸至大华设备 | |
728 | - HttpUtil.uploadDHImgForOne(filePath,schoolId,studentCode,clintType,sno); | |
729 | - } | |
730 | - } | |
731 | - } | |
398 | + if(baseService.checkSendRecord(list,sno, faceBean.getSchoolId(), studentNum)) continue; | |
399 | + Integer clintType = userDao.getClintTypeByDeviceId(sno); | |
400 | + //大华 | |
401 | + if(clintType.intValue()== 18 || clintType.intValue()== 28) | |
402 | + baseService.sendImg(file.getAbsolutePath(), targetPath, sno, studentNum, userName, | |
403 | + String.valueOf(faceBean.getUserType()), faceBean.getSchoolId()); | |
404 | + //海康 | |
405 | + if(clintType.intValue()== 22 || clintType.intValue()== 29) | |
406 | + HttpUtil.uploadDHImgForOne(filePath, faceBean.getSchoolId(), studentCode,clintType,sno); | |
732 | 407 | }catch (Exception e){ |
733 | 408 | log.error("人脸下发失败"); |
734 | 409 | e.printStackTrace(); |
735 | 410 | continue; |
736 | 411 | } |
737 | 412 | } |
738 | - } | |
413 | + }); | |
739 | 414 | } |
740 | 415 | |
741 | 416 | @Override |
742 | 417 | public Result againNoSendOneFace(MultipartFile file, Integer schoolId, String cardNum, Integer userType, String deviceIds) { |
743 | - if(StringUtils.isBlank(cardNum)){ | |
744 | - return ResultGenerator.genFailResult("卡号为空"); | |
745 | - } | |
746 | - if(StringUtils.isBlank(deviceIds)){ | |
747 | - return ResultGenerator.genFailResult("未指定下发设备"); | |
748 | - } | |
749 | - StudentBean studentBean=null; | |
750 | - if(userType.intValue()==2){ | |
751 | - studentBean= userDao.getStudentWithCard(cardNum,schoolId); | |
752 | - }else{ | |
753 | - studentBean= userDao.getTeacherWithCard(cardNum,schoolId); | |
754 | - } | |
755 | - if(studentBean ==null){ | |
756 | - return ResultGenerator.genFailResult("此卡号未查询到对应学生/老师信息"); | |
757 | - } | |
418 | + if(StringUtils.isBlank(cardNum)) return ResultGenerator.genFailResult("卡号为空"); | |
419 | + if(StringUtils.isBlank(deviceIds)) return ResultGenerator.genFailResult("未指定下发设备"); | |
420 | + StudentBean studentBean = Objects.equals(userType,EnumSzBusinessType.EnumUserType.STUDENT.code) ? | |
421 | + userDao.getStudentWithCard(cardNum,schoolId) : userDao.getTeacherWithCard(cardNum,schoolId); | |
422 | + if(Objects.isNull(studentBean)) return ResultGenerator.genFailResult("此卡号未查询到对应学生/老师信息"); | |
423 | + | |
758 | 424 | String userName = studentBean.getName(); |
759 | - String studentCode = userType.intValue()==1?studentBean.getNum():studentBean.getStudentCode(); | |
425 | + String studentCode = userType.intValue()==1 ? studentBean.getNum(): studentBean.getStudentCode(); | |
760 | 426 | String typeName = userType.intValue()==1?"Teacher":"Student"; |
761 | - //100服务器人脸照绝对路径 | |
762 | - String path = "E:\\wwwhtdocs\\SmartCampus\\face17e5\\School" + schoolId + "\\" + typeName; | |
763 | - if(!new File(path).exists()){ | |
764 | - new File(path).mkdirs(); | |
765 | - } | |
766 | 427 | //以学籍号为名的文件名 |
767 | 428 | String fileName = studentCode + ".png"; |
768 | - //人脸文件路径 | |
769 | - String facePath = path + "\\" +fileName; | |
770 | - try { | |
771 | - File absolutePath = new File(facePath); | |
772 | - FileOutputStream fileOutputStream = new FileOutputStream(absolutePath); | |
773 | - fileOutputStream.write(file.getBytes()); | |
774 | - fileOutputStream.close(); | |
775 | - }catch (IOException e){ | |
776 | - log.error("文件处理异常: ",e); | |
777 | - } | |
778 | -// //在线活体检测 | |
779 | -// String result = HttpUtil.checkFace(facePath); | |
780 | -// if(StringUtils.isBlank(result) || result.equals("false")){ | |
781 | -// log.error("人脸检测不合格!"); | |
782 | -// return ResultGenerator.genFailResult("请添加规范的人脸照片."); | |
783 | -// } | |
429 | + String facePath = ""; | |
430 | + if(file.isEmpty()) facePath = this.getFilePath(schoolId,typeName,fileName,file); | |
431 | + else facePath = baseService.checkUserFace(studentBean,userType,schoolId); | |
784 | 432 | String targetPath = FileUtils.picPathComp + file.getName(); |
785 | 433 | try { |
786 | 434 | CompressPic.CompressPic(new File(facePath).getAbsolutePath(), targetPath); |
787 | 435 | } catch (Exception e) { |
788 | 436 | log.error("压缩图片失败: ",e); |
789 | 437 | } |
790 | - String[] deviceArr = deviceIds.split(","); | |
791 | - List<String> deviceList= new ArrayList<>(Arrays.asList(deviceArr)); | |
438 | + List<String> deviceList= Arrays.asList(deviceIds.split(",")); | |
792 | 439 | if(CollectionUtils.isNotEmpty(deviceList)){ |
793 | 440 | for(String deviceId : deviceList) { |
794 | 441 | //获取设备类型 |
... | ... | @@ -808,6 +455,24 @@ public class UserOperateServiceImpl implements UserOperateService { |
808 | 455 | return ResultGenerator.genSuccessResult(); |
809 | 456 | } |
810 | 457 | |
458 | + private String getFilePath(Integer schoolId,String typeName,String fileName,MultipartFile file){ | |
459 | + //100服务器人脸照绝对路径 | |
460 | + String path = "E:\\wwwhtdocs\\SmartCampus\\face17e5\\School" + schoolId + "\\" + typeName; | |
461 | + File saveFile = new File(path); | |
462 | + if(!saveFile.exists()) saveFile.mkdirs(); | |
463 | + //人脸文件路径 | |
464 | + String facePath = path + "\\" + fileName; | |
465 | + try { | |
466 | + File absolutePath = new File(facePath); | |
467 | + FileOutputStream fileOutputStream = new FileOutputStream(absolutePath); | |
468 | + fileOutputStream.write(file.getBytes()); | |
469 | + fileOutputStream.close(); | |
470 | + }catch (IOException e){ | |
471 | + log.error("文件处理异常: ",e); | |
472 | + } | |
473 | + return facePath; | |
474 | + } | |
475 | + | |
811 | 476 | @Override |
812 | 477 | public Result insertUpdateCard(String cardNums) { |
813 | 478 | String[] cardArr = cardNums.split(","); |
... | ... | @@ -843,78 +508,6 @@ public class UserOperateServiceImpl implements UserOperateService { |
843 | 508 | return new Result(); |
844 | 509 | } |
845 | 510 | |
846 | - @Override | |
847 | - public Result exportFace(Integer schoolId,Integer userType,String deviceIds,String faceSrcPath) { | |
848 | - File imgPathFile = new File(faceSrcPath);//目录 | |
849 | - File[] imgfiles = imgPathFile.listFiles(); | |
850 | - if(imgfiles.length==0){ | |
851 | - return ResultGenerator.genFailResult("未获取要下发的人脸照片。"); | |
852 | - } | |
853 | - List<StudentBean> sendFaces = new ArrayList<>(); | |
854 | - for (int i = 0; i < imgfiles.length; i++) { | |
855 | - try{ | |
856 | - //人脸照片 | |
857 | - File file = imgfiles[i]; | |
858 | - if(!file.isFile()){ | |
859 | - continue; | |
860 | - } | |
861 | - if (file.exists()){ | |
862 | - //原始文件路径 | |
863 | - String srcPath = file.getAbsolutePath(); | |
864 | - //原始文件名 | |
865 | - String fileName = file.getName(); | |
866 | - System.out.println("文件名:"+ fileName+", 学籍号:"+ fileName.split("\\.")[0]); | |
867 | - StudentBean studentBean = new StudentBean(); | |
868 | - if (userType.intValue()==1) { | |
869 | - studentBean = userDao.getTeacherWithstudentcode(fileName.split("\\.")[0],String.valueOf(schoolId)); | |
870 | - }else { | |
871 | - studentBean = userDao.getStudentWithstudentcode(fileName.split("\\.")[0],String.valueOf(schoolId)); | |
872 | - } | |
873 | - if(studentBean == null){ | |
874 | - continue; | |
875 | - } | |
876 | - String typeName = userType.intValue() ==1 ? "Teacher" : "Student"; | |
877 | - String targetPath = "E:\\wwwhtdocs\\SmartCampus\\face17e50\\School" + schoolId + "\\" + typeName; | |
878 | -// //目标路径 | |
879 | - targetPath = targetPath + "\\" + fileName; | |
880 | - //复制文件 | |
881 | - copy(srcPath,targetPath); | |
882 | - String savePath = "http://campus.myjxt.com//face17e50/School"+ schoolId + "/" + typeName + "/" + fileName; | |
883 | - if(userType.intValue() ==1){ | |
884 | - studentBean.setFace(savePath); | |
885 | - }else { | |
886 | - studentBean.setPhoto(savePath); | |
887 | - } | |
888 | - //savePath | |
889 | - userDao.updateUser(studentBean.getUser_id(),savePath); | |
890 | - sendFaces.add(studentBean); | |
891 | - } | |
892 | - file.delete(); | |
893 | - }catch (Exception e){ | |
894 | - e.printStackTrace(); | |
895 | - continue; | |
896 | - } | |
897 | - } | |
898 | - if(StringUtils.isBlank(deviceIds)){ | |
899 | - return ResultGenerator.genFailResult("未选择下发设备"); | |
900 | - } | |
901 | - String[] deviceArr = deviceIds.split(","); | |
902 | - List<String> deviceList = new ArrayList<>(Arrays.asList(deviceArr)); | |
903 | - //异步执行下发 | |
904 | - asyncSendFace(sendFaces,deviceList,schoolId,userType); | |
905 | - int fileSize = sendFaces.size(); | |
906 | - int clintNum = deviceList.size(); | |
907 | - //下发所用时长 | |
908 | - int timeLength = new Double(clintNum * fileSize * 0.06).intValue(); | |
909 | - //下发截止时间 | |
910 | - String dateStr = baseService.getTime(fileSize,clintNum,timeLength); | |
911 | - Map map = new HashMap(); | |
912 | - map.put("timeLength",timeLength); | |
913 | - map.put("afterDate",dateStr); | |
914 | - map.put("fileSize",fileSize); | |
915 | - return ResultGenerator.genSuccessResult(objectMapper.toJson(map)); | |
916 | - } | |
917 | - | |
918 | 511 | public void asyncSendFace(List<StudentBean> sendFaces,List<String> deviceList,Integer schoolId,Integer userType){ |
919 | 512 | log.info("总共检测到:{},张人脸照片。",sendFaces.size()); |
920 | 513 | //设备类型 |
... | ... | @@ -925,103 +518,18 @@ public class UserOperateServiceImpl implements UserOperateService { |
925 | 518 | } |
926 | 519 | } |
927 | 520 | |
928 | - private static void copy(String srcPathStr, String desPathStr) { | |
929 | - //获取源文件的名称 | |
930 | - try { | |
931 | - FileInputStream fis = new FileInputStream(srcPathStr);//创建输入流对象 | |
932 | - FileOutputStream fos = new FileOutputStream(desPathStr); //创建输出流对象 | |
933 | - byte datas[] = new byte[1024*8];//创建搬运工具 | |
934 | - int len = 0;//创建长度 | |
935 | - while((len = fis.read(datas))!=-1)//循环读取数据 | |
936 | - { | |
937 | - fos.write(datas,0,len); | |
938 | - } | |
939 | - fis.close();//释放资源 | |
940 | - fis.close();//释放资源 | |
941 | - } | |
942 | - catch (Exception e) | |
943 | - { | |
944 | - e.printStackTrace(); | |
945 | - } | |
946 | - } | |
947 | 521 | |
948 | - @Override | |
949 | - public Result sendFaceByClassId(Integer schoolId,String classIds,String deviceIds,Integer studentType,String sex,Integer isCheck) { | |
950 | - //下发设备集合 | |
951 | - List<String> deviceList = null; | |
952 | - if(StringUtils.isBlank(deviceIds)){ | |
953 | - deviceList = deviceDao.selectDeviceBySchoolId(schoolId); | |
954 | - }else{ | |
955 | - deviceList= new ArrayList<>(Arrays.asList(deviceIds.split(","))); | |
956 | - } | |
957 | - List<StudentBean> resultCard = new ArrayList<>(); | |
958 | - List<String> resultDevices = new ArrayList<>(); | |
959 | - //根据类型获取下发用户信息 | |
960 | - List<StudentBean> studentBeanList = baseService.getStudentByClassId(schoolId,classIds,studentType,sex); | |
961 | - log.info("统计共有下发用户数量:{}",studentBeanList.size()); | |
962 | - if(isCheck !=null){ | |
963 | - for(StudentBean studentBean : studentBeanList){ | |
964 | - String cardNum = studentBean.getStudent_num(); | |
965 | - boolean isOk = true; | |
966 | - for(String deviceId : deviceList){ | |
967 | - if (cmsServer.getIsDeviceOnline(deviceId)) { | |
968 | - String cardNo = Long.parseLong(baseService.getCard(cardNum), 16) + ""; | |
969 | - isOk = cmsServer.getFace(deviceId,cardNo,null); | |
970 | - }else{ | |
971 | - isOk = HttpUtil.getCard(deviceId, cardNum); | |
972 | - } | |
973 | - if(!isOk){ | |
974 | - resultCard.add(studentBean); | |
975 | - resultCard.add(studentBean); | |
976 | - resultDevices.add(deviceId); | |
977 | - } | |
978 | - } | |
979 | - } | |
980 | - //去重重复数据 | |
981 | - studentBeanList = resultCard.stream().collect(Collectors.collectingAndThen( | |
982 | - Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(StudentBean::getStudent_num))), ArrayList::new)); | |
983 | - //去重重复数据 | |
984 | - deviceList = resultDevices.stream().distinct().collect(Collectors.toList()); | |
985 | - } | |
986 | - log.info("统计共有下发用户数量:{}",studentBeanList.size()); | |
987 | - //设备类型 | |
988 | - Integer clintType = userDao.getClintTypeByDeviceId(deviceList.get(0)); | |
989 | - if(clintType.intValue()== 22 || clintType.intValue()== 29){ | |
990 | - //发送大华设备 | |
991 | - HttpUtil.uploadDHImgByClassId(String.valueOf(schoolId),deviceIds,classIds); | |
992 | - } | |
993 | - if(clintType.intValue()== 18 || clintType.intValue()== 28){ | |
994 | - //发送海康设备:异步执行 | |
995 | - baseService.sendUserFaceByAsyncThread(schoolId,2,studentBeanList,deviceList); | |
996 | - } | |
997 | - int fileSize = studentBeanList.size(); | |
998 | - int clintNum = deviceList.size(); | |
999 | - //下发所用时长 | |
1000 | - int timeLength = new Double(clintNum * fileSize * 0.06).intValue(); | |
1001 | - //下发截止时间 | |
1002 | - String dateStr = baseService.getTime(fileSize,clintNum,timeLength); | |
1003 | - Map map = new HashMap(); | |
1004 | - map.put("timeLength",timeLength); | |
1005 | - map.put("afterDate",dateStr); | |
1006 | - map.put("fileSize",fileSize); | |
1007 | - return ResultGenerator.genSuccessResult(objectMapper.toJson(map)); | |
1008 | - } | |
1009 | 522 | |
1010 | 523 | @Override |
1011 | - public Result sendFaceByKeyword(Integer schoolId,String keyword,String deviceIds,Integer studentType,String sex,Integer isCheck) { | |
524 | + public Result sendFaceByClassId(SendFaceBean faceBean) { | |
1012 | 525 | //下发设备集合 |
1013 | - List<String> deviceList = null; | |
1014 | - if(StringUtils.isBlank(deviceIds)){ | |
1015 | - deviceList = deviceDao.selectDeviceBySchoolId(schoolId); | |
1016 | - }else{ | |
1017 | - deviceList= Arrays.asList(deviceIds.split(",")); | |
1018 | - } | |
526 | + List<String> deviceList = baseService.getDeviceList(faceBean.getDeviceIds(),faceBean.getSchoolId()); | |
1019 | 527 | List<StudentBean> resultCard = new ArrayList<>(); |
1020 | 528 | List<String> resultDevices = new ArrayList<>(); |
1021 | 529 | //根据类型获取下发用户信息 |
1022 | - List<StudentBean> studentBeanList = baseService.getStudentByKeyword(schoolId,keyword,studentType,sex); | |
530 | + List<StudentBean> studentBeanList = baseService.getStudentByClassId(faceBean); | |
1023 | 531 | log.info("统计共有下发用户数量:{}",studentBeanList.size()); |
1024 | - if(isCheck !=null){ | |
532 | + if(Objects.equals(faceBean.getIsCheck(),1)){ | |
1025 | 533 | for(StudentBean studentBean : studentBeanList){ |
1026 | 534 | String cardNum = studentBean.getStudent_num(); |
1027 | 535 | boolean isOk = true; |
... | ... | @@ -1041,21 +549,20 @@ public class UserOperateServiceImpl implements UserOperateService { |
1041 | 549 | } |
1042 | 550 | //去重重复数据 |
1043 | 551 | studentBeanList = resultCard.stream().collect(Collectors.collectingAndThen( |
1044 | - Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(StudentBean::getStudent_num))), ArrayList::new)); | |
552 | + Collectors.toCollection(() -> new TreeSet<>(Comparator | |
553 | + .comparing(StudentBean::getStudent_num))), ArrayList::new)); | |
1045 | 554 | //去重重复数据 |
1046 | 555 | deviceList = resultDevices.stream().distinct().collect(Collectors.toList()); |
1047 | 556 | } |
1048 | 557 | log.info("统计共有下发用户数量:{}",studentBeanList.size()); |
1049 | 558 | //设备类型 |
1050 | 559 | Integer clintType = userDao.getClintTypeByDeviceId(deviceList.get(0)); |
1051 | - if(clintType.intValue()== 22 || clintType.intValue()== 29){ | |
1052 | - //发送大华设备 | |
1053 | - HttpUtil.uploadDHImgByClassId(String.valueOf(schoolId),deviceIds,keyword); | |
1054 | - } | |
1055 | - if(clintType.intValue()== 18 || clintType.intValue()== 28){ | |
1056 | - //发送海康设备:异步执行 | |
1057 | - baseService.sendUserFaceByAsyncThread(schoolId,2,studentBeanList,deviceList); | |
1058 | - } | |
560 | + //发送大华设备 | |
561 | + if(clintType.intValue()== 22 || clintType.intValue()== 29) | |
562 | + HttpUtil.uploadDHImgByClassId(String.valueOf(faceBean.getSchoolId()),faceBean.getDeviceIds(),faceBean.getClassIds()); | |
563 | + //发送海康设备:异步执行 | |
564 | + if(clintType.intValue()== 18 || clintType.intValue()== 28) | |
565 | + baseService.sendUserFaceByAsyncThread(faceBean.getSchoolId(),2,studentBeanList,deviceList); | |
1059 | 566 | int fileSize = studentBeanList.size(); |
1060 | 567 | int clintNum = deviceList.size(); |
1061 | 568 | //下发所用时长 |
... | ... | @@ -1070,16 +577,15 @@ public class UserOperateServiceImpl implements UserOperateService { |
1070 | 577 | } |
1071 | 578 | |
1072 | 579 | @Override |
1073 | - public Result noSendByKeyword(Integer schoolId,String keyword,String deviceIds) { | |
580 | + public Result sendNuFaceByClassId(SendFaceBean faceBean) { | |
1074 | 581 | //下发设备集合 |
1075 | - List<String> deviceList = Arrays.asList(deviceIds.split(",")); | |
582 | + List<String> deviceList = baseService.getDeviceList(faceBean.getDeviceIds(),faceBean.getSchoolId()); | |
1076 | 583 | //根据类型获取下发用户信息 |
1077 | - List<StudentBean> studentBeanList = baseService.getStudentByKeyword(schoolId,keyword,null,null); | |
1078 | - | |
584 | + List<StudentBean> studentBeans = Objects.equals(faceBean.getUserType(),EnumSzBusinessType.EnumUserType.TEACHER.code) ? | |
585 | + baseService.getStudentByClassId(faceBean) : baseService.getTeacherList(faceBean.getSchoolId()); | |
1079 | 586 | //异步执行下发 |
1080 | - sendFaceForNoSend(schoolId,2,studentBeanList,deviceList); | |
1081 | - | |
1082 | - int fileSize = studentBeanList.size(); | |
587 | + this.sendFaceForNoSend(faceBean,studentBeans,deviceList); | |
588 | + int fileSize = studentBeans.size(); | |
1083 | 589 | int clintNum = deviceList.size(); |
1084 | 590 | //下发所用时长 |
1085 | 591 | int timeLength = new Double(clintNum * fileSize * 0.06).intValue(); |
... | ... | @@ -1093,17 +599,11 @@ public class UserOperateServiceImpl implements UserOperateService { |
1093 | 599 | } |
1094 | 600 | |
1095 | 601 | @Override |
1096 | - public Result sendFaceByRoomId(Integer schoolId,Integer roomId,String deviceIds) { | |
602 | + public Result sendFaceByRoomId(SendFaceBean faceBean) { | |
1097 | 603 | //下发设备集合 |
1098 | - List<String> deviceList = new ArrayList<>(); | |
1099 | - if(StringUtils.isBlank(deviceIds)){ | |
1100 | - deviceList = deviceDao.selectDeviceBySchoolId(schoolId); | |
1101 | - }else{ | |
1102 | - String[] deviceArr = deviceIds.split(","); | |
1103 | - deviceList= new ArrayList<>(Arrays.asList(deviceArr)); | |
1104 | - } | |
604 | + List<String> deviceList = baseService.getDeviceList(faceBean.getDeviceIds(),faceBean.getSchoolId()); | |
1105 | 605 | //根据类型获取下发用户信息 |
1106 | - List<StudentBean> studentBeanList = baseService.getStudentListByRoomId(schoolId,roomId); | |
606 | + List<StudentBean> studentBeanList = baseService.getStudentListByRoomId(faceBean.getSchoolId(),faceBean.getRoomId()); | |
1107 | 607 | log.info("统计共有下发用户数量:{}",studentBeanList.size()); |
1108 | 608 | //设备类型 |
1109 | 609 | Integer clintType = userDao.getClintTypeByDeviceId(deviceList.get(0)); |
... | ... | @@ -1113,7 +613,7 @@ public class UserOperateServiceImpl implements UserOperateService { |
1113 | 613 | // } |
1114 | 614 | if(clintType.intValue()== 18 || clintType.intValue()== 28){ |
1115 | 615 | //发送海康设备:异步执行 |
1116 | - baseService.sendUserFaceByAsyncThread(schoolId,2,studentBeanList,deviceList); | |
616 | + baseService.sendUserFaceByAsyncThread(faceBean.getSchoolId(),faceBean.getUserType(),studentBeanList,deviceList); | |
1117 | 617 | } |
1118 | 618 | int fileSize = studentBeanList.size(); |
1119 | 619 | int clintNum = deviceList.size(); |
... | ... | @@ -1129,148 +629,82 @@ public class UserOperateServiceImpl implements UserOperateService { |
1129 | 629 | } |
1130 | 630 | |
1131 | 631 | @Override |
1132 | - public Result deleteFaceBySchoolId(Integer schoolId, String deviceIds) { | |
632 | + public Result deleteByCondition(SendFaceBean faceBean) { | |
1133 | 633 | //下发设备集合 |
1134 | - List<String> deviceList = null; | |
1135 | - if(StringUtils.isBlank(deviceIds)){ | |
1136 | - deviceList = deviceDao.selectDeviceBySchoolId(schoolId); | |
1137 | - }else{ | |
1138 | - String[] deviceArr = deviceIds.split(","); | |
1139 | - deviceList= new ArrayList<>(Arrays.asList(deviceArr)); | |
1140 | - } | |
1141 | - List<SendRecordBean> students= baseService.getRecordCardBySchoolId(schoolId.intValue()); | |
1142 | - if(!CollectionUtils.isEmpty(students)){ | |
1143 | - for(SendRecordBean s : students){ | |
1144 | - String cardNum = s.getNum(); | |
1145 | - StudentBean studentBean = userDao.getStudentWithCard(cardNum,schoolId.intValue()); | |
1146 | - StudentBean teacher = userDao.getTeacherWithCard(cardNum,schoolId.intValue()); | |
1147 | - if(studentBean == null && teacher ==null){ | |
1148 | - deviceList.stream().forEach(c->{ | |
1149 | - boolean isOk = false; | |
1150 | - if (cmsServer.getIsDeviceOnline(c)) { | |
1151 | - String cardNo = Long.parseLong(baseService.getCard(cardNum), 16) + ""; | |
1152 | - isOk = cmsServer.deleteFace(c,cardNo,null); | |
1153 | - }else{ | |
1154 | - isOk = HttpUtil.deleteCard(c, cardNum); | |
1155 | - } | |
1156 | - if(isOk){ | |
1157 | - //删除成功记录 | |
1158 | - sendRecordDao.deleteUserFaceSuccess(schoolId,cardNum,c); | |
1159 | - sendRecordDao.deleteRecord(schoolId,c,cardNum); | |
1160 | - } | |
1161 | - }); | |
1162 | - } | |
634 | + List<String> deviceList = baseService.getDeviceList(faceBean.getDeviceIds(),faceBean.getSchoolId()); | |
635 | + //根据类型获取下发用户信息 | |
636 | + List<StudentBean> studentBeans = Objects.equals(faceBean.getUserType(),EnumSzBusinessType.EnumUserType.STUDENT.code) ? | |
637 | + baseService.getStudentByClassId(faceBean) : baseService.getTeacherList(faceBean.getSchoolId()); | |
638 | + List<SendRecordBean> students = baseService.getSendRecordList(faceBean); | |
639 | + if(CollectionUtils.isEmpty(students)) return ResultGenerator.genSuccessResult(); | |
640 | + for(SendRecordBean s : students){ | |
641 | + String cardNum = s.getNum(); | |
642 | + StudentBean bean = studentBeans.stream().filter(f->Objects.equals(f.getNum(),cardNum) && | |
643 | + Objects.equals(f.getSchoolId(),faceBean.getSchoolId())).findFirst().orElse(null); | |
644 | + if(Objects.isNull(bean)){ | |
645 | + deviceList.stream().forEach(c->{ | |
646 | + boolean isOk = false; | |
647 | + if (cmsServer.getIsDeviceOnline(c)) { | |
648 | + String cardNo = Long.parseLong(baseService.getCard(cardNum), 16) + ""; | |
649 | + isOk = cmsServer.deleteFace(c,cardNo,null); | |
650 | + }else{ | |
651 | + isOk = HttpUtil.deleteCard(c, cardNum); | |
652 | + } | |
653 | + if(isOk) sendRecordDao.deleteRecord(faceBean.getSchoolId(),c,cardNum); | |
654 | + }); | |
1163 | 655 | } |
1164 | 656 | } |
1165 | 657 | return ResultGenerator.genSuccessResult(); |
1166 | 658 | } |
1167 | 659 | |
1168 | 660 | @Override |
1169 | - public void checkFaceSend() { | |
1170 | - List<SaveStudentBak> saveStudentBaks = userDao.selectStudentList(); | |
1171 | - if(!CollectionUtils.isEmpty(saveStudentBaks)) { | |
1172 | - saveStudentBaks.stream().forEach(saveStudentBak -> { | |
1173 | - try{ | |
1174 | - String cardNum = saveStudentBak.getCardNum(); | |
1175 | - Integer schoolId = saveStudentBak.getSchoolId(); | |
1176 | - String deviceId = saveStudentBak.getClientId(); | |
1177 | - StudentBean studentBean = userDao.getStudentWithCard(cardNum, schoolId); | |
1178 | - if (studentBean == null) { | |
1179 | - return; | |
1180 | - } | |
1181 | - String photo = studentBean.getPhoto(); | |
1182 | - if (StringUtils.isBlank(photo)) { | |
1183 | - return; | |
1184 | - } | |
1185 | - int userType = studentBean.getUserType(); | |
1186 | - String userName = studentBean.getName(); | |
1187 | - String studentCode = studentBean.getStudentCode(); | |
1188 | - String typeName = "Student"; | |
1189 | - //以学籍号为名的文件名 | |
1190 | - String fileName = photo.substring(photo.lastIndexOf("/") + 1, photo.length()); | |
1191 | - //100服务器人脸照绝对路径 | |
1192 | - String path_1 = "E:\\wwwhtdocs\\SmartCampus\\face17e50\\School" + schoolId + "\\" + typeName; | |
1193 | - String path_2 = "E:\\wwwhtdocs\\SmartCampus\\face17e5\\School" + schoolId + "\\" + typeName; | |
1194 | - String path_3 = "E:\\wwwhtdocs\\SmartCampus\\f0i5l7e5\\"; | |
1195 | - String filePath = ""; | |
1196 | - if (photo.indexOf("f0i5l7e5") != -1) { | |
1197 | - String afterStr = photo.split("f0i5l7e5/")[1].replace("/", "\\"); | |
1198 | - filePath = path_3 + afterStr; | |
1199 | - } | |
1200 | - if (photo.indexOf("face17e5") != -1) { | |
1201 | - filePath = path_2 + "\\" + fileName; | |
1202 | - } | |
1203 | - if (photo.indexOf("face17e50") != -1) { | |
1204 | - filePath = path_1 + "\\" + fileName; | |
1205 | - } | |
1206 | - if (filePath.indexOf("?v=") != -1) { | |
1207 | - filePath = filePath.split("\\?")[0]; | |
1208 | - } | |
1209 | - //校验100服务文件存储地址上是否存在此人脸 | |
1210 | - File file = new File(filePath.trim());//图片 | |
1211 | - if (!file.exists()) { | |
1212 | - log.error("文件不存在:" + filePath); | |
1213 | - baseService.sendFailRecord(cardNum, filePath, deviceId, "文件不存在", String.valueOf(userType), schoolId); | |
1214 | - return; | |
1215 | - } | |
1216 | - String targetPath = FileUtils.picPathComp + file.getName(); | |
1217 | - if (file.exists()) { | |
1218 | - try { | |
1219 | - CompressPic.CompressPic(file.getAbsolutePath(), targetPath); | |
1220 | - } catch (Exception e) { | |
1221 | - log.error("压缩图片失败:", e); | |
1222 | - } | |
1223 | - } | |
1224 | - //设备类型 | |
1225 | - Integer clintType = userDao.getClintTypeByDeviceId(deviceId); | |
1226 | - if (clintType.intValue() == 18 || clintType.intValue() == 28) { | |
1227 | -// //1.先删除人脸 | |
1228 | -// if (cmsServer.getIsDeviceOnline(deviceId)) { | |
1229 | -// String cardNo = Long.parseLong(baseService.getCard(cardNum), 16) + ""; | |
1230 | -// cmsServer.deleteFace(deviceId, cardNo, schoolId); | |
1231 | -// } else { | |
1232 | -// //不在线,去253服务器上删除 | |
1233 | -// HttpUtil.deleteCard(deviceId, cardNum); | |
1234 | -// } | |
1235 | - //2.重新下发 | |
1236 | - boolean isOk = baseService.sendImg(file.getAbsolutePath(), targetPath, deviceId, cardNum, userName, String.valueOf(userType), schoolId); | |
1237 | - if (isOk) { | |
1238 | - userDao.updateStudent(saveStudentBak.getId()); | |
1239 | - return; | |
1240 | - } else { | |
1241 | - } | |
1242 | - } | |
1243 | - //下大华人脸 | |
1244 | - if (clintType.intValue() == 22 || clintType.intValue() == 29) { | |
1245 | - //下发单个人脸至大华设备 | |
1246 | - HttpUtil.uploadDHImgForOne(filePath, schoolId, studentCode, clintType, deviceId); | |
1247 | - return; | |
1248 | - } | |
1249 | - }catch (Exception e){ | |
1250 | - log.error("下发出错"); | |
1251 | - return; | |
661 | + public Result exportFace(Integer schoolId,Integer userType,String deviceIds,String faceSrcPath) { | |
662 | + File imgPathFile = new File(faceSrcPath);//目录 | |
663 | + File[] imgfiles = imgPathFile.listFiles(); | |
664 | + if(imgfiles.length==0) return ResultGenerator.genFailResult("未获取要下发的人脸照片。"); | |
665 | + List<StudentBean> sendFaces = new ArrayList<>(); | |
666 | + for (int i = 0; i < imgfiles.length; i++) { | |
667 | + try{ | |
668 | + //人脸照片 | |
669 | + File file = imgfiles[i]; | |
670 | + if(!file.isFile())continue; | |
671 | + if(!file.exists()) continue; | |
672 | + //原始文件路径 | |
673 | + String srcPath = file.getAbsolutePath(); | |
674 | + //原始文件名 | |
675 | + String fileName = file.getName(); | |
676 | + System.out.println("文件名:"+ fileName+", 学籍号:"+ fileName.split("\\.")[0]); | |
677 | + StudentBean studentBean = null; | |
678 | + if (userType.intValue()==1) { | |
679 | + studentBean = userDao.getTeacherWithstudentcode(fileName.split("\\.")[0],String.valueOf(schoolId)); | |
680 | + }else { | |
681 | + studentBean = userDao.getStudentWithstudentcode(fileName.split("\\.")[0],String.valueOf(schoolId)); | |
1252 | 682 | } |
1253 | - }); | |
1254 | - } | |
1255 | - } | |
1256 | - | |
1257 | - @Override | |
1258 | - public Result replaceFaceByKeyword(Integer schoolId,String deviceIds,String keyword) { | |
1259 | - //下发设备集合 | |
1260 | - List<String> deviceList = null; | |
1261 | - if(StringUtils.isBlank(deviceIds)){ | |
1262 | - deviceList = deviceDao.selectDeviceBySchoolId(schoolId); | |
1263 | - }else{ | |
1264 | - deviceList= Arrays.asList(deviceIds.split(",")); | |
683 | + if(Objects.isNull(studentBean)) continue; | |
684 | + String typeName = userType.intValue() ==1 ? "Teacher" : "Student"; | |
685 | + String targetPath = "E:\\wwwhtdocs\\SmartCampus\\face17e50\\School" + schoolId + "\\" + typeName; | |
686 | + //目标路径 | |
687 | + targetPath = targetPath + "\\" + fileName; | |
688 | + //复制文件 | |
689 | + baseService.copy(srcPath,targetPath); | |
690 | + String savePath = "http://campus.myjxt.com//face17e50/School"+ schoolId + "/" + typeName + "/" + fileName; | |
691 | + if(userType.intValue() ==1) studentBean.setFace(savePath); | |
692 | + else studentBean.setPhoto(savePath); | |
693 | + //savePath | |
694 | + userDao.updateUser(studentBean.getUser_id(),savePath); | |
695 | + sendFaces.add(studentBean); | |
696 | + file.delete(); | |
697 | + }catch (Exception e){ | |
698 | + e.printStackTrace(); | |
699 | + continue; | |
700 | + } | |
1265 | 701 | } |
1266 | - //根据类型获取下发用户信息 | |
1267 | - List<StudentBean> studentBeanList = baseService.getReplaceByKeyword(schoolId,keyword); | |
1268 | - log.info("统计共有下发用户数量:{}",studentBeanList.size()); | |
1269 | - | |
1270 | - //发送海康设备:异步执行 | |
1271 | - this.deleteReplaceFace(schoolId,studentBeanList,deviceList); | |
1272 | - | |
1273 | - int fileSize = studentBeanList.size(); | |
702 | + if(StringUtils.isBlank(deviceIds)) return ResultGenerator.genFailResult("未选择下发设备"); | |
703 | + String[] deviceArr = deviceIds.split(","); | |
704 | + List<String> deviceList = new ArrayList<>(Arrays.asList(deviceArr)); | |
705 | + //异步执行下发 | |
706 | + asyncSendFace(sendFaces,deviceList,schoolId,userType); | |
707 | + int fileSize = sendFaces.size(); | |
1274 | 708 | int clintNum = deviceList.size(); |
1275 | 709 | //下发所用时长 |
1276 | 710 | int timeLength = new Double(clintNum * fileSize * 0.06).intValue(); |
... | ... | @@ -1282,26 +716,4 @@ public class UserOperateServiceImpl implements UserOperateService { |
1282 | 716 | map.put("fileSize",fileSize); |
1283 | 717 | return ResultGenerator.genSuccessResult(objectMapper.toJson(map)); |
1284 | 718 | } |
1285 | - | |
1286 | - @Async | |
1287 | - public void deleteReplaceFace(Integer schoolId,List<StudentBean> studentBeanList,List<String> deviceList){ | |
1288 | - //100服务器; | |
1289 | - studentBeanList.stream().forEach(s->{ | |
1290 | - String cardNum = s.getStudent_num(); | |
1291 | - deviceList.stream().forEach(c->{ | |
1292 | - boolean isOk = false; | |
1293 | - if (cmsServer.getIsDeviceOnline(c)) { | |
1294 | - String cardNo = Long.parseLong(baseService.getCard(cardNum), 16) + ""; | |
1295 | - isOk = HttpUtil.deleteCard100(c,cardNo); | |
1296 | - }else{ | |
1297 | - isOk = HttpUtil.deleteCard(c, cardNum); | |
1298 | - } | |
1299 | - if(isOk){ | |
1300 | - //删除成功记录 | |
1301 | - sendRecordDao.deleteUserFaceSuccess(schoolId,cardNum,c); | |
1302 | - sendRecordDao.deleteRecord(schoolId,c,cardNum); | |
1303 | - } | |
1304 | - }); | |
1305 | - }); | |
1306 | - } | |
1307 | 719 | } | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/xiananDao/SendRecordDao.java
... | ... | @@ -23,32 +23,14 @@ public interface SendRecordDao { |
23 | 23 | @Param("time") String time, @Param("schoolName") String schoolName, @Param("imgPath") String imgPath, @Param("schoolId") int schoolId, |
24 | 24 | @Param("userType") int userType, @Param("deviceType") int deviceType); |
25 | 25 | |
26 | - @Select("select * from Face_SendSuccess where schoolId = #{schoolId} ") | |
27 | - List<SendRecordBean> getSendFaceSuccess(@Param("schoolId") Integer schoolId); | |
28 | - | |
29 | 26 | @Select("select * from Face_SendSuccess where deviceID = #{deviceID} and schoolId = #{schoolId}") |
30 | 27 | List<SendRecordBean> getSenSuccesss(@Param("deviceID") String deviceId, @Param("schoolId") Integer schoolId); |
31 | 28 | |
32 | - @Select("select a.customerID from [dbo].[WG_SendFail] a inner join DBlan137.smartcampus.dbo.SZ_AttendanceDto b on a.deviceID=b.clint_id and b.isConnection=1 order by createTime desc") | |
33 | - List<String> getWGFail(); | |
34 | - | |
35 | - //获取成功表和失败人脸表中都存在的数据 | |
36 | - @Select("select a.deviceID,a.Num,a.Name from Face_SendFail a inner join Face_SendSuccess b on a.deviceID = b.deviceID where a.schoolId = 1030 and a.num = b.Num") | |
37 | - List<SendRecordBean> getSuccessAndFail(); | |
38 | - | |
39 | 29 | @Insert("insert into Face_Recoder values(#{deviceId},#{user_id},#{name},#{imgurl},#{inOrOut},#{time},#{cardNum},#{temp},#{schoolId})") |
40 | 30 | void addFaceRecoder(@Param("deviceId") String deviceId, @Param("user_id") String user_id, @Param("name") String name, |
41 | 31 | @Param("imgurl") String imgurl, @Param("inOrOut") int inOrOut, @Param("time") String time, |
42 | 32 | @Param("cardNum") String cardNum, @Param("temp") String currTemperature,@Param("schoolId") int schoolId); |
43 | 33 | |
44 | - @Insert("insert into SZ_AttendanceRecordsSS201911 values(#{user_id},#{school_id},#{customerId},#{usertype},#{card_num},#{card_type},#{outof},#{intime},#{cid}," + | |
45 | - "#{func_no},#{head_image},#{classId},#{s},#{attendance_id},#{name},#{mobile},#{class_name},#{sex},#{student_type},#{systime})") | |
46 | - int addAttenRecodrds(@Param("user_id") String user_id, @Param("school_id") String school_id, @Param("customerId") String customerId, | |
47 | - @Param("usertype") String usertype, @Param("card_num") String card_num, @Param("card_type") String card_type, | |
48 | - @Param("outof") String outof, @Param("intime") String intime, @Param("cid") String cid, @Param("func_no") String func_no, | |
49 | - @Param("head_image") String head_image, @Param("classId") String classId, @Param("s") String s, @Param("attendance_id") String attendance_id, | |
50 | - @Param("name") String name, @Param("mobile") String mobile, @Param("class_name") String class_name, @Param("sex") String sex, @Param("student_type") String student_type, @Param("systime") String systime); | |
51 | - | |
52 | 34 | @Select("select * from Face_SendSuccess where Num = #{Num} and deviceID = #{deviceID}") |
53 | 35 | List<SendRecordBean> getFaceSendSucess(@Param("Num")String Num,@Param("deviceID")String deviceID); |
54 | 36 | |
... | ... | @@ -63,6 +45,9 @@ public interface SendRecordDao { |
63 | 45 | @Select("select * from Face_SendRecord where deviceID = #{deviceID} and Num = #{Num} and userId = #{userId}") |
64 | 46 | List<SendRecordBean> getRecordIsExit(@Param("deviceID") String deviceId, @Param("Num") String cardNum,@Param("userId") String userId); |
65 | 47 | |
48 | + @Delete("delete Face_SendRecord where deviceID = #{deviceID} and Num = #{Num} and schoolId = #{schoolId}") | |
49 | + void deleteRecord(@Param("schoolId") Integer schoolId,@Param("deviceID") String deviceID,@Param("Num") String Num); | |
50 | + | |
66 | 51 | @Insert("insert into Face_SendRecord values(#{deviceID},#{userId},#{num},#{name},#{time},#{schoolName},#{imgPath},#{schoolId},#{failContent},#{failType},#{userType},#{deviceType},#{status},#{channel})") |
67 | 52 | void saveFaceRecord(@Param("userId") String userId, @Param("deviceID") String deviceID, @Param("num") String num, @Param("name") String name, |
68 | 53 | @Param("time") String time, @Param("schoolName") String schoolName, @Param("imgPath") String imgPath, @Param("schoolId") Integer schoolId, @Param("failContent") String failContent, |
... | ... | @@ -77,35 +62,18 @@ public interface SendRecordDao { |
77 | 62 | @Select("select * from Face_SendRecord where schoolId = #{schoolId} and status =2") |
78 | 63 | List<SendRecordBean> getFailRecord(@Param("schoolId") Integer schoolId); |
79 | 64 | |
80 | - @Select("select * from Face_SendRecord where schoolId = #{schoolId} and deviceID = #{deviceId} and status =2") | |
81 | - List<SendRecordBean> getFailRecord2(@Param("schoolId") Integer schoolId,@Param("deviceId") String deviceId); | |
82 | - | |
83 | - @Select("select * from Face_SendRecord where schoolId = #{schoolId}") | |
84 | - List<SendRecordBean> getFaceRecord(@Param("schoolId") Integer schoolId); | |
85 | - | |
86 | - @Delete("delete Face_SendRecord where deviceID = #{deviceID} and Num = #{Num} and schoolId = #{schoolId}") | |
87 | - void deleteRecord(@Param("schoolId") Integer schoolId,@Param("deviceID") String deviceID,@Param("Num") String Num); | |
88 | - | |
89 | 65 | @Delete("delete Face_SendRecord where Num = #{Num} and schoolId = #{schoolId}") |
90 | 66 | void deleteRecordByNum(@Param("schoolId") Integer schoolId,@Param("Num") String Num); |
91 | 67 | |
92 | - @Delete("delete Face_SendSuccess where deviceID = #{deviceID} and Num = #{Num} and schoolId = #{schoolId}") | |
93 | - void deleteUserFaceSuccess(@Param("schoolId") Integer schoolId,@Param("Num") String Num, @Param("deviceID") String deviceID); | |
94 | - | |
95 | - @Delete("delete WG_SendSuccess where deviceID = #{deviceID} and cardNum = #{cardNum} and schoolID = #{schoolID}") | |
96 | - void deleteWGSuccess(@Param("schoolID") Integer schoolId,@Param("cardNum") String cardNum, @Param("deviceID") String deviceId); | |
97 | - | |
98 | - | |
99 | - @Delete("DELETE from SZ_AttendanceRecords202101 where school_id = #{schoolId} and card_Num = #{cardNum} and card_type = #{cardType} and outof=#{outof} and intime > #{startTime} and intime < #{endTime}") | |
100 | - void delete(@Param("schoolId") Integer schoolId,@Param("cardNum") String cardNum,@Param("cardType") Integer cardType,@Param("outof") Integer outof,@Param("startTime") String startTime,@Param("endTime") String endTime); | |
101 | - | |
102 | 68 | @Delete("DELETE from SZ_AttendanceRecordsSS202101 where school_id = #{schoolId} and card_Num = #{cardNum} and card_type = #{cardType} and outof=#{outof} and intime > #{startTime} and intime < #{endTime}") |
103 | 69 | void deleteSS(@Param("schoolId") Integer schoolId,@Param("cardNum") String cardNum,@Param("cardType") Integer cardType,@Param("outof") Integer outof,@Param("startTime") String startTime,@Param("endTime") String endTime); |
104 | 70 | |
105 | - | |
106 | 71 | @Select("select DISTINCT num from Face_SendRecord where schoolId = #{schoolId} ") |
107 | 72 | List<String> getFaceRecordList(@Param("schoolId") Integer schoolId); |
108 | 73 | |
74 | + List<SendRecordBean> getSendRecordList(@Param("schoolId") Integer schoolId, | |
75 | + @Param("deviceList") List<String> deviceList, | |
76 | + @Param("status") Integer status); | |
109 | 77 | /** |
110 | 78 | * 考勤推送存储过程 |
111 | 79 | * @param checkIn | ... | ... |
cloud/haikangface/src/main/resources/mapper/usermapper.xml
... | ... | @@ -86,40 +86,22 @@ |
86 | 86 | </select> |
87 | 87 | |
88 | 88 | <select id="getStudentByClassId" resultType="com.sincere.haikangface.bean.StudentBean"> |
89 | - select * from SZ_V_School_Student where school_id = #{schoolId} | |
90 | - <if test="classIds != null and classIds.size() >0"> | |
91 | - and class_id in | |
92 | - <foreach item="item" collection="classIds" separator="," open="(" close=")" index=""> | |
93 | - #{item} | |
94 | - </foreach> | |
95 | - </if> | |
89 | + select * from SZ_V_School_Student where school_id = #{schoolId} and student_num != '' and photo !='' | |
96 | 90 | <if test="studentType != null"> |
97 | 91 | and student_type = #{studentType} |
98 | 92 | </if> |
99 | - <if test="sexList != null and sexList.size() >0"> | |
100 | - and sex in | |
101 | - <foreach item="item" collection="sexList" separator="," open="(" close=")" index=""> | |
93 | + <if test="classIds != null and classIds.size() >0"> | |
94 | + and class_id in | |
95 | + <foreach item="item" collection="classIds" separator="," open="(" close=")" index=""> | |
102 | 96 | #{item} |
103 | 97 | </foreach> |
104 | 98 | </if> |
105 | - and student_num != '' and photo !='' | |
106 | - </select> | |
107 | - | |
108 | - <select id="getStudentByKeyword" resultType="com.sincere.haikangface.bean.StudentBean"> | |
109 | - select * from SZ_V_School_Student where school_id = #{schoolId} | |
110 | - <if test="studentType != null"> | |
111 | - and student_type = #{studentType} | |
112 | - </if> | |
113 | 99 | <if test="sexList != null and sexList.size() >0"> |
114 | 100 | and sex in |
115 | 101 | <foreach item="item" collection="sexList" separator="," open="(" close=")" index=""> |
116 | 102 | #{item} |
117 | 103 | </foreach> |
118 | 104 | </if> |
119 | - <if test="keyword != null and keyword !=''"> | |
120 | - and class_name like concat('%', #{keyword}, '%') | |
121 | - </if> | |
122 | - and student_num != '' and photo !='' | |
123 | 105 | </select> |
124 | 106 | |
125 | 107 | <select id="getStudentCardGroup" resultType="com.sincere.haikangface.bean.StudentBean"> |
... | ... | @@ -162,7 +144,6 @@ |
162 | 144 | (#{userId},#{customerId}, #{studentType}, #{userType}, #{name}, #{classId}, #{className}, #{oldCard}, #{card},#{schoolId},#{isNew},#{updateType}, #{addTime}, #{sex}, #{face}, #{studentCode}, #{mobile}) |
163 | 145 | </insert> |
164 | 146 | |
165 | - | |
166 | 147 | <select id="getStudentWithCard" resultType="com.sincere.haikangface.bean.StudentBean"> |
167 | 148 | select Top(1)* from SZ_V_School_Student where student_num = #{card} |
168 | 149 | <if test="schoolId !=null"> |
... | ... | @@ -177,7 +158,7 @@ |
177 | 158 | </if> |
178 | 159 | </select> |
179 | 160 | |
180 | - <select id="getStudentCByUserId" resultType="com.sincere.haikangface.bean.StudentBean"> | |
161 | + <select id="getStudentByUserId" resultType="com.sincere.haikangface.bean.StudentBean"> | |
181 | 162 | select Top(1) * from SZ_V_School_Student where user_id = #{userId} |
182 | 163 | <if test="schoolId !=null"> |
183 | 164 | and school_id = #{schoolId} |
... | ... | @@ -191,32 +172,6 @@ |
191 | 172 | </if> |
192 | 173 | </select> |
193 | 174 | |
194 | - <resultMap id="BaseResultMap" type="com.sincere.haikangface.bean.test.SaveStudentBak"> | |
195 | - <!-- | |
196 | - WARNING - @mbg.generated | |
197 | - --> | |
198 | - <id column="id" jdbcType="INTEGER" property="id"/> | |
199 | - <result column="name" property="name"/> | |
200 | - <result column="user_id" property="userId"/> | |
201 | - <result column="card_num" property="cardNum"/> | |
202 | - <result column="class_name" property="className"/> | |
203 | - <result column="school_Id" property="schoolId"/> | |
204 | - <result column="status" property="status"/> | |
205 | - <result column="client_id" property="clientId"/> | |
206 | - </resultMap> | |
207 | - | |
208 | - <insert id="insertStudent" parameterType="com.sincere.haikangface.bean.test.SaveStudentBak"> | |
209 | - insert into sz_student_bak values (#{name},#{userId},#{cardNum},#{clientId},#{className},#{status},#{schoolId}) | |
210 | - </insert> | |
211 | - | |
212 | - <select id="selectStudentList" resultMap="BaseResultMap"> | |
213 | - select * from sz_student_bak where status = 2 | |
214 | - </select> | |
215 | - | |
216 | - <update id="updateStudent" parameterType="java.lang.Integer"> | |
217 | - update sz_student_bak set status = 1 where id = #{id} | |
218 | - </update> | |
219 | - | |
220 | 175 | <select id="getRoomBySchoolId" resultType="java.lang.Integer"> |
221 | 176 | select Id from ss_room where schoolId = #{schoolId} and pId = #{groupId} |
222 | 177 | </select> | ... | ... |
cloud/haikangface/src/main/resources/xiaoanmapper/usermapper.xml
... | ... | @@ -13,4 +13,17 @@ |
13 | 13 | #{out,mode=OUT,jdbcType=VARCHAR,resultMap=resultMap},#{isSuccess,mode=OUT,jdbcType=INTEGER,resultMap=resultMap} |
14 | 14 | )} |
15 | 15 | </insert> |
16 | + | |
17 | + <select id="getSendRecordList" resultType="com.sincere.haikangface.bean.SendRecordBean"> | |
18 | + select * from Face_SendRecord where schoolId = #{schoolId} and status =2 | |
19 | + <if test="status != null"> | |
20 | + and status = #{status} | |
21 | + </if> | |
22 | + <if test="deviceList != null and deviceList.size() >0"> | |
23 | + and deviceID in | |
24 | + <foreach item="item" collection="deviceList" separator="," open="(" close=")" index=""> | |
25 | + #{item} | |
26 | + </foreach> | |
27 | + </if> | |
28 | + </select> | |
16 | 29 | </mapper> | ... | ... |
cloud/haikangface/src/test/java/com/sincere/haikangface/HaikangfaceApplicationTests.java
... | ... | @@ -103,7 +103,7 @@ public class HaikangfaceApplicationTests { |
103 | 103 | saveStudentBak.setName(name); |
104 | 104 | saveStudentBak.setClassName(className); |
105 | 105 | saveStudentBak.setStatus(2); |
106 | - userDao.insertStudent(saveStudentBak); | |
106 | +// userDao.insertStudent(saveStudentBak); | |
107 | 107 | } |
108 | 108 | } |
109 | 109 | }); | ... | ... |
cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceConfig.java
... | ... | @@ -34,12 +34,12 @@ public class DataSourceConfig { |
34 | 34 | public DataSource dataSource3() { |
35 | 35 | return DataSourceBuilder.create().build(); |
36 | 36 | } |
37 | - | |
38 | - @Bean(name = "update") | |
39 | - @ConfigurationProperties(prefix = "spring.datasource.update") | |
40 | - public DataSource dataSource4() { | |
41 | - return DataSourceBuilder.create().build(); | |
42 | - } | |
37 | +// | |
38 | +// @Bean(name = "update") | |
39 | +// @ConfigurationProperties(prefix = "spring.datasource.update") | |
40 | +// public DataSource dataSource4() { | |
41 | +// return DataSourceBuilder.create().build(); | |
42 | +// } | |
43 | 43 | |
44 | 44 | @Bean(name="dynamicDataSource") |
45 | 45 | @Primary //优先使用,多数据源 |
... | ... | @@ -48,7 +48,7 @@ public class DataSourceConfig { |
48 | 48 | DataSource master = dataSource1(); |
49 | 49 | DataSource slave = dataSource2(); |
50 | 50 | DataSource yxy = dataSource3(); |
51 | - DataSource update = dataSource4(); | |
51 | +// DataSource update = dataSource4(); | |
52 | 52 | //设置默认数据源 |
53 | 53 | dynamicDataSource.setDefaultTargetDataSource(master); |
54 | 54 | //配置多数据源 |
... | ... | @@ -56,7 +56,7 @@ public class DataSourceConfig { |
56 | 56 | map.put(DataSourceType.Master.getName(), master); //key需要跟ThreadLocal中的值对应 |
57 | 57 | map.put(DataSourceType.Slave.getName(), slave); |
58 | 58 | map.put(DataSourceType.Yxy.getName(), yxy); |
59 | - map.put(DataSourceType.Update.getName(), update); | |
59 | +// map.put(DataSourceType.Update.getName(), update); | |
60 | 60 | dynamicDataSource.setTargetDataSources(map); |
61 | 61 | return dynamicDataSource; |
62 | 62 | } | ... | ... |
cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java
... | ... | @@ -23,7 +23,7 @@ public class SyncJob { |
23 | 23 | YXYReadService yxyReadService ; |
24 | 24 | |
25 | 25 | // @Scheduled(cron = "30 1 22 * * ? ") |
26 | - @Scheduled(fixedDelay = 220 * 60 * 1000) | |
26 | + @Scheduled(fixedDelay = 60 * 60 * 1000) | |
27 | 27 | public void Sync(){ |
28 | 28 | //翼校通的同步 之后还有钉钉的同步等等 |
29 | 29 | yxyReadService.sync(); | ... | ... |