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,8 +672,8 @@ public class MyTask implements ApplicationRunner { | ||
672 | //考勤成功 | 672 | //考勤成功 |
673 | String content = "考勤成功!,设备:" + deviceId + "卡号:" + cardNo + "方向:" + (eventType == 1 ? "进门" : "出门") + "______" + eventTime; | 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 | FileUtils.getInstance().writeLogs(content, FileUtils.qiandaoSuccess); | 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,75 +21,75 @@ public class MqttManager { | ||
21 | private static int qosLevel; | 21 | private static int qosLevel; |
22 | 22 | ||
23 | public void init() { | 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 | public void sendMq(String deviceId, String cmd) { | 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,13 +245,6 @@ public class CMSServer implements ApplicationRunner { | ||
245 | } | 245 | } |
246 | pInBuffer.dwSize = pInBuffer.size(); | 246 | pInBuffer.dwSize = pInBuffer.size(); |
247 | saveAttendance(deviceId); | 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 | byte[] byIP = ip_cloud.getBytes(); | 248 | byte[] byIP = ip_cloud.getBytes(); |
256 | System.arraycopy(byIP, 0, pInBuffer.struUDPAlarmSever.szIP, 0, byIP.length); | 249 | System.arraycopy(byIP, 0, pInBuffer.struUDPAlarmSever.szIP, 0, byIP.length); |
257 | // TODO: 2020/8/27 人脸机类型为0 | 250 | // TODO: 2020/8/27 人脸机类型为0 |
@@ -1052,7 +1045,7 @@ public class CMSServer implements ApplicationRunner { | @@ -1052,7 +1045,7 @@ public class CMSServer implements ApplicationRunner { | ||
1052 | deviceDao.updateDeviceStatu(1,inTime,deviceId); | 1045 | deviceDao.updateDeviceStatu(1,inTime,deviceId); |
1053 | } else { | 1046 | } else { |
1054 | deviceDao.addDevide(attendanceBean.getClint_id(), attendanceBean.getClint_type(), attendanceBean.getIntime(), | 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,7 +55,8 @@ public class SendUserAsync { | ||
55 | * @param deviceId | 55 | * @param deviceId |
56 | * @param userType | 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 | //1、检测图片是否合格 | 60 | //1、检测图片是否合格 |
60 | boolean check = true; | 61 | boolean check = true; |
61 | if (check) {//合格 | 62 | if (check) {//合格 |
@@ -70,25 +71,6 @@ public class SendUserAsync { | @@ -70,25 +71,6 @@ public class SendUserAsync { | ||
70 | String resultCard = getCard(String.format("%08x", lon)).toUpperCase(); | 71 | String resultCard = getCard(String.format("%08x", lon)).toUpperCase(); |
71 | //系统时间 | 72 | //系统时间 |
72 | String time = System.currentTimeMillis() + ""; | 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 | cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardTemplate(), "设置卡权限计划模板",schoolId,cardNum); | 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 | package com.sincere.haikangface.bean; | 1 | package com.sincere.haikangface.bean; |
2 | 2 | ||
3 | +import lombok.Data; | ||
4 | + | ||
3 | import java.io.Serializable; | 5 | import java.io.Serializable; |
4 | 6 | ||
5 | /** | 7 | /** |
6 | * 人脸下发记录 | 8 | * 人脸下发记录 |
7 | */ | 9 | */ |
10 | +@Data | ||
8 | public class SendRecordBean implements Serializable { | 11 | public class SendRecordBean implements Serializable { |
9 | 12 | ||
10 | - | ||
11 | private String customerid;//用户编号 | 13 | private String customerid;//用户编号 |
12 | 14 | ||
13 | private String Num; | 15 | private String Num; |
14 | 16 | ||
15 | private String Name; | 17 | private String Name; |
16 | 18 | ||
17 | - private int schoolId; | 19 | + private Integer schoolId; |
20 | + | ||
21 | + private String userId; | ||
18 | 22 | ||
19 | private String schoolName;//下发结果 | 23 | private String schoolName;//下发结果 |
20 | 24 | ||
@@ -22,117 +26,13 @@ public class SendRecordBean implements Serializable { | @@ -22,117 +26,13 @@ public class SendRecordBean implements Serializable { | ||
22 | 26 | ||
23 | private String imgPath;//下发的图片路径 | 27 | private String imgPath;//下发的图片路径 |
24 | 28 | ||
25 | - private int userType; | 29 | + private Integer userType; |
26 | 30 | ||
27 | private String time; | 31 | private String time; |
28 | 32 | ||
29 | private String failContent; | 33 | private String failContent; |
30 | 34 | ||
31 | private int failType; | 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 | \ No newline at end of file | 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,6 +2,7 @@ package com.sincere.haikangface.bean.face; | ||
2 | 2 | ||
3 | import io.swagger.annotations.ApiModel; | 3 | import io.swagger.annotations.ApiModel; |
4 | import io.swagger.annotations.ApiModelProperty; | 4 | import io.swagger.annotations.ApiModelProperty; |
5 | +import lombok.Data; | ||
5 | 6 | ||
6 | import java.util.List; | 7 | import java.util.List; |
7 | 8 | ||
@@ -10,6 +11,7 @@ import java.util.List; | @@ -10,6 +11,7 @@ import java.util.List; | ||
10 | * @author xuquan | 11 | * @author xuquan |
11 | * @date 2020/12/16 09:10 | 12 | * @date 2020/12/16 09:10 |
12 | */ | 13 | */ |
14 | +@Data | ||
13 | @ApiModel | 15 | @ApiModel |
14 | public class AuthRecordDto { | 16 | public class AuthRecordDto { |
15 | 17 | ||
@@ -27,60 +29,4 @@ public class AuthRecordDto { | @@ -27,60 +29,4 @@ public class AuthRecordDto { | ||
27 | private List<WeekDay> weekDays ; | 29 | private List<WeekDay> weekDays ; |
28 | @ApiModelProperty("权限类型1微耕权限2人脸机权限") | 30 | @ApiModelProperty("权限类型1微耕权限2人脸机权限") |
29 | private Integer authType; | 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 | package com.sincere.haikangface.bean.face; | 1 | package com.sincere.haikangface.bean.face; |
2 | 2 | ||
3 | import io.swagger.annotations.ApiModelProperty; | 3 | import io.swagger.annotations.ApiModelProperty; |
4 | +import lombok.Data; | ||
4 | 5 | ||
5 | import java.io.Serializable; | 6 | import java.io.Serializable; |
6 | import java.util.List; | 7 | import java.util.List; |
7 | 8 | ||
9 | +@Data | ||
8 | public class PermissionBean implements Serializable { | 10 | public class PermissionBean implements Serializable { |
9 | 11 | ||
10 | @ApiModelProperty("设备ID,批量用英文逗号,隔开") | 12 | @ApiModelProperty("设备ID,批量用英文逗号,隔开") |
@@ -21,44 +23,4 @@ public class PermissionBean implements Serializable { | @@ -21,44 +23,4 @@ public class PermissionBean implements Serializable { | ||
21 | 23 | ||
22 | @ApiModelProperty("用户ID,批量用英文逗号,隔开") | 24 | @ApiModelProperty("用户ID,批量用英文逗号,隔开") |
23 | private String userIds; | 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 | package com.sincere.haikangface.bean.face; | 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,14 +4,14 @@ import com.sincere.haikangface.bean.Result; | ||
4 | import com.sincere.haikangface.bean.ResultGenerator; | 4 | import com.sincere.haikangface.bean.ResultGenerator; |
5 | import com.sincere.haikangface.bean.face.AuthRecordDto; | 5 | import com.sincere.haikangface.bean.face.AuthRecordDto; |
6 | import com.sincere.haikangface.bean.face.DeviceAuthRecord; | 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 | import com.sincere.haikangface.dao.UserDao; | 8 | import com.sincere.haikangface.dao.UserDao; |
9 | import com.sincere.haikangface.service.UserOperateService; | 9 | import com.sincere.haikangface.service.UserOperateService; |
10 | -import com.sincere.haikangface.utils.JsonUtils; | ||
11 | import io.swagger.annotations.ApiOperation; | 10 | import io.swagger.annotations.ApiOperation; |
12 | import lombok.extern.slf4j.Slf4j; | 11 | import lombok.extern.slf4j.Slf4j; |
13 | import org.springframework.beans.factory.annotation.Autowired; | 12 | import org.springframework.beans.factory.annotation.Autowired; |
14 | import org.springframework.http.MediaType; | 13 | import org.springframework.http.MediaType; |
14 | +import org.springframework.validation.annotation.Validated; | ||
15 | import org.springframework.web.bind.annotation.*; | 15 | import org.springframework.web.bind.annotation.*; |
16 | import org.springframework.web.multipart.MultipartFile; | 16 | import org.springframework.web.multipart.MultipartFile; |
17 | 17 | ||
@@ -65,11 +65,14 @@ public class UserOperateController { | @@ -65,11 +65,14 @@ public class UserOperateController { | ||
65 | return userOperateService.againSendFace(userId,deviceId,userType); | 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 | @ApiOperation(value = "删除下发失败人脸2.0") | 78 | @ApiOperation(value = "删除下发失败人脸2.0") |
@@ -80,40 +83,14 @@ public class UserOperateController { | @@ -80,40 +83,14 @@ public class UserOperateController { | ||
80 | 83 | ||
81 | @RequestMapping(value = "sendFailFace", method = RequestMethod.POST) | 84 | @RequestMapping(value = "sendFailFace", method = RequestMethod.POST) |
82 | @ApiOperation(value = "重新下发失败人脸2.0") | 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 | @ApiOperation(value = "删除指定人脸2.0") | 90 | @ApiOperation(value = "删除指定人脸2.0") |
95 | @RequestMapping(value = "deleteFace", method = RequestMethod.POST) | 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 | @ApiOperation(value = "捷安成闸机导入") | 96 | @ApiOperation(value = "捷安成闸机导入") |
@@ -122,71 +99,36 @@ public class UserOperateController { | @@ -122,71 +99,36 @@ public class UserOperateController { | ||
122 | return userOperateService.insertUpdateCard(cardNums); | 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 | @RequestMapping(value = "sendFaceByClassId", method = RequestMethod.POST) | 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 | @RequestMapping(value = "sendFaceByRoomId", method = RequestMethod.POST) | 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,27 +12,6 @@ import java.util.List; | ||
12 | @Repository | 12 | @Repository |
13 | public interface UserDao { | 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 | @Select("select Top(1) student_num from SZ_V_School_Student where student_id = #{student_id} and role_state = 1") | 15 | @Select("select Top(1) student_num from SZ_V_School_Student where student_id = #{student_id} and role_state = 1") |
37 | String getStudent_Num(@Param("student_id") String student_id); | 16 | String getStudent_Num(@Param("student_id") String student_id); |
38 | 17 | ||
@@ -47,153 +26,9 @@ public interface UserDao { | @@ -47,153 +26,9 @@ public interface UserDao { | ||
47 | @Param("KnowledgeId") String KnowledgeId, @Param("TestId") String TestId, @Param("ChapterId") String ChapterId, @Param("GradeId") String GradeId, @Param("SourceId") String SourceId, | 26 | @Param("KnowledgeId") String KnowledgeId, @Param("TestId") String TestId, @Param("ChapterId") String ChapterId, @Param("GradeId") String GradeId, @Param("SourceId") String SourceId, |
48 | @Param("OrderId") String OrderId, @Param("SId") String SId, @Param("StemId") String StemId, @Param("AutomaticCorrection") String AutomaticCorrection, @Param("SchoolId") String SchoolId); | 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 | @Select("select school_name from SZ_School where school_id = #{schoolid}") | 29 | @Select("select school_name from SZ_School where school_id = #{schoolid}") |
54 | String getSchoolName(@Param("schoolid") String schoolid); | 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 | @Select("select Top(1) * from SZ_V_School_Student where studentcode = #{studentcode} and school_id = #{schoolId}") | 33 | @Select("select Top(1) * from SZ_V_School_Student where studentcode = #{studentcode} and school_id = #{schoolId}") |
199 | StudentBean getStudentWithstudentcode(@Param("studentcode") String studentcode, @Param("schoolId") String schoolId); | 34 | StudentBean getStudentWithstudentcode(@Param("studentcode") String studentcode, @Param("schoolId") String schoolId); |
@@ -210,18 +45,6 @@ public interface UserDao { | @@ -210,18 +45,6 @@ public interface UserDao { | ||
210 | void addWGTem(@Param("UserId") String UserId, @Param("StudentId") String StudentId, @Param("Name") String Name, @Param("ClassId") String ClassId, | 45 | void addWGTem(@Param("UserId") String UserId, @Param("StudentId") String StudentId, @Param("Name") String Name, @Param("ClassId") String ClassId, |
211 | @Param("ClassName") String ClassName, @Param("Temperature") String Temperature, @Param("Type") String Type, @Param("SchoolId") String SchoolId, @Param("Intime") String Intime); | 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 | @Select("select Top(1) studentcode from SZ_V_School_Student where student_num = #{num}") | 48 | @Select("select Top(1) studentcode from SZ_V_School_Student where student_num = #{num}") |
226 | String getStudentCode(@Param("num") String num); | 49 | String getStudentCode(@Param("num") String num); |
227 | 50 | ||
@@ -274,14 +97,9 @@ public interface UserDao { | @@ -274,14 +97,9 @@ public interface UserDao { | ||
274 | @Param("groupId")Integer groupId); | 97 | @Param("groupId")Integer groupId); |
275 | 98 | ||
276 | List<StudentBean> getStudentByClassId(@Param("schoolId") int schoolId, | 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 | List<String> getDeviceIds(@Param("schoolId") Integer schoolId,@Param("deviceId") String deviceId); | 104 | List<String> getDeviceIds(@Param("schoolId") Integer schoolId,@Param("deviceId") String deviceId); |
287 | 105 | ||
@@ -292,7 +110,7 @@ public interface UserDao { | @@ -292,7 +110,7 @@ public interface UserDao { | ||
292 | @Select(" select top 1* from SZ_V_School_Student where student_id = #{student_id}") | 110 | @Select(" select top 1* from SZ_V_School_Student where student_id = #{student_id}") |
293 | StudentBean getStudentWithid(@Param("student_id") String student_id); | 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 | StudentBean getTeacherByUserId(@Param("userId") String userId,@Param("schoolId") Integer schoolId); | 115 | StudentBean getTeacherByUserId(@Param("userId") String userId,@Param("schoolId") Integer schoolId); |
298 | 116 | ||
@@ -302,16 +120,11 @@ public interface UserDao { | @@ -302,16 +120,11 @@ public interface UserDao { | ||
302 | 120 | ||
303 | void insertCard(UpdateCardBean bean); | 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 | List<Integer> getRoomBySchoolId(@Param("schoolId") Integer schoolId,@Param("groupId") Integer groupId); | 123 | List<Integer> getRoomBySchoolId(@Param("schoolId") Integer schoolId,@Param("groupId") Integer groupId); |
312 | 124 | ||
313 | List<StudentBean> getStudentByRoomIds(@Param("schoolId") Integer schoolId,@Param("pIdList") List<Integer> pIdList); | 125 | List<StudentBean> getStudentByRoomIds(@Param("schoolId") Integer schoolId,@Param("pIdList") List<Integer> pIdList); |
314 | 126 | ||
127 | + /***找回已毕业的数据***/ | ||
315 | List<StudentBean> getTestVsByKeyword(@Param("schoolId") int schoolId, | 128 | List<StudentBean> getTestVsByKeyword(@Param("schoolId") int schoolId, |
316 | @Param("keyword") String keyword, | 129 | @Param("keyword") String keyword, |
317 | @Param("sexList") List<Integer> sexList, | 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,7 +3,10 @@ package com.sincere.haikangface.service; | ||
3 | import com.sincere.haikangface.bean.Result; | 3 | import com.sincere.haikangface.bean.Result; |
4 | import com.sincere.haikangface.bean.face.AuthRecordDto; | 4 | import com.sincere.haikangface.bean.face.AuthRecordDto; |
5 | import com.sincere.haikangface.bean.face.DeviceAuthRecord; | 5 | import com.sincere.haikangface.bean.face.DeviceAuthRecord; |
6 | +import com.sincere.haikangface.bean.face.SendFaceBean; | ||
6 | import com.sincere.haikangface.bean.face.SendFaceDto; | 7 | import com.sincere.haikangface.bean.face.SendFaceDto; |
8 | +import org.springframework.validation.annotation.Validated; | ||
9 | +import org.springframework.web.bind.annotation.RequestBody; | ||
7 | import org.springframework.web.multipart.MultipartFile; | 10 | import org.springframework.web.multipart.MultipartFile; |
8 | 11 | ||
9 | /** | 12 | /** |
@@ -52,13 +55,6 @@ public interface UserOperateService { | @@ -52,13 +55,6 @@ public interface UserOperateService { | ||
52 | Result againSendFace(String userId,String deviceId,Integer userType); | 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 | * @param schoolId | 59 | * @param schoolId |
64 | * @return | 60 | * @return |
@@ -67,31 +63,15 @@ public interface UserOperateService { | @@ -67,31 +63,15 @@ public interface UserOperateService { | ||
67 | 63 | ||
68 | /** | 64 | /** |
69 | * 下发失败表人脸 | 65 | * 下发失败表人脸 |
70 | - * @param schoolId | ||
71 | * @return | 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 | * @return | 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,57 +92,40 @@ public interface UserOperateService { | ||
112 | Result insertUpdateCard(String cardNums); | 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 | * @return | 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 | * @return | 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 | * @return | 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 | * @return | 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 | * @param schoolId | 124 | * @param schoolId |
125 | + * @param userType | ||
160 | * @param deviceIds | 126 | * @param deviceIds |
127 | + * @param faceSrcPath | ||
161 | * @return | 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,6 +8,7 @@ import com.sincere.haikangface.async.SendUserAsync; | ||
8 | import com.sincere.haikangface.bean.AttendanceBean; | 8 | import com.sincere.haikangface.bean.AttendanceBean; |
9 | import com.sincere.haikangface.bean.SendRecordBean; | 9 | import com.sincere.haikangface.bean.SendRecordBean; |
10 | import com.sincere.haikangface.bean.StudentBean; | 10 | import com.sincere.haikangface.bean.StudentBean; |
11 | +import com.sincere.haikangface.bean.face.SendFaceBean; | ||
11 | import com.sincere.haikangface.dao.DeviceDao; | 12 | import com.sincere.haikangface.dao.DeviceDao; |
12 | import com.sincere.haikangface.dao.UserDao; | 13 | import com.sincere.haikangface.dao.UserDao; |
13 | import com.sincere.haikangface.enums.EnumSzBusinessType; | 14 | import com.sincere.haikangface.enums.EnumSzBusinessType; |
@@ -23,9 +24,12 @@ import org.springframework.stereotype.Service; | @@ -23,9 +24,12 @@ import org.springframework.stereotype.Service; | ||
23 | import org.springframework.util.CollectionUtils; | 24 | import org.springframework.util.CollectionUtils; |
24 | 25 | ||
25 | import java.io.File; | 26 | import java.io.File; |
27 | +import java.io.FileInputStream; | ||
28 | +import java.io.FileOutputStream; | ||
26 | import java.text.SimpleDateFormat; | 29 | import java.text.SimpleDateFormat; |
27 | import java.util.*; | 30 | import java.util.*; |
28 | import java.util.concurrent.*; | 31 | import java.util.concurrent.*; |
32 | +import java.util.function.Function; | ||
29 | import java.util.stream.Collectors; | 33 | import java.util.stream.Collectors; |
30 | 34 | ||
31 | /** | 35 | /** |
@@ -276,29 +280,22 @@ public class BaseService { | @@ -276,29 +280,22 @@ public class BaseService { | ||
276 | 280 | ||
277 | @Async | 281 | @Async |
278 | public void sendUserFaceByAsyncThread(Integer schoolId,Integer userType,List<StudentBean> studentBeanList,List<String> deviceList){ | 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 | for (String sno : deviceList) { | 286 | for (String sno : deviceList) { |
283 | //若100服务器有此设备再进行多线程执行下发人脸任务,否则请求253服务执行单个下发人脸 | 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 | log.info("------------------------开始执行100服务,人脸照下发---------------------"); | 299 | log.info("------------------------开始执行100服务,人脸照下发---------------------"); |
303 | String startTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); | 300 | String startTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); |
304 | Calendar calendar = Calendar.getInstance(); | 301 | Calendar calendar = Calendar.getInstance(); |
@@ -306,64 +303,41 @@ public class BaseService { | @@ -306,64 +303,41 @@ public class BaseService { | ||
306 | String endTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime()); | 303 | String endTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime()); |
307 | //下发标识:详情见枚举 EnumHkOperateType | 304 | //下发标识:详情见枚举 EnumHkOperateType |
308 | int validTimeEnabled = EnumSzBusinessType.EnumHkOperateType.ADD.code; | 305 | int validTimeEnabled = EnumSzBusinessType.EnumHkOperateType.ADD.code; |
309 | - for(StudentBean studentBean : studentBeanList){ | 306 | + studentList.stream().forEach(s->{ |
310 | try{ | 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 | }catch (Exception e){ | 333 | }catch (Exception e){ |
360 | log.error("人脸下发失败,异常信息:",e); | 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 | log.info("------------------------开始执行253服务,人脸照下发---------------------"); | 341 | log.info("------------------------开始执行253服务,人脸照下发---------------------"); |
368 | String startTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); | 342 | String startTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); |
369 | Calendar calendar = Calendar.getInstance(); | 343 | Calendar calendar = Calendar.getInstance(); |
@@ -371,73 +345,31 @@ public class BaseService { | @@ -371,73 +345,31 @@ public class BaseService { | ||
371 | String endTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime()); | 345 | String endTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime()); |
372 | //下发标识:详情见枚举 EnumHkOperateType | 346 | //下发标识:详情见枚举 EnumHkOperateType |
373 | int validTimeEnabled = EnumSzBusinessType.EnumHkOperateType.ADD.code; | 347 | int validTimeEnabled = EnumSzBusinessType.EnumHkOperateType.ADD.code; |
374 | - for(StudentBean studentBean : studentBeanList){ | 348 | + studentList.stream().forEach(s->{ |
375 | try{ | 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 | }catch (Exception e){ | 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,43 +412,12 @@ public class BaseService { | ||
480 | 412 | ||
481 | /** | 413 | /** |
482 | * 根据班级ID获取对应班级下的学生数据信息 | 414 | * 根据班级ID获取对应班级下的学生数据信息 |
483 | - * @param schoolId | ||
484 | - * @param classIds | ||
485 | * @return | 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 | List<StudentBean> studentList = students.stream().collect(Collectors.collectingAndThen( | 422 | List<StudentBean> studentList = students.stream().collect(Collectors.collectingAndThen( |
522 | Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(StudentBean::getStudent_num))), ArrayList::new)); | 423 | Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(StudentBean::getStudent_num))), ArrayList::new)); |
@@ -555,7 +456,7 @@ public class BaseService { | @@ -555,7 +456,7 @@ public class BaseService { | ||
555 | List<Integer> pIdlIst = rooms.stream().distinct().collect(Collectors.toList()); | 456 | List<Integer> pIdlIst = rooms.stream().distinct().collect(Collectors.toList()); |
556 | List<StudentBean> studentBeans = userDao.getStudentByRoomIds(schoolId,pIdlIst); | 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 | Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(StudentBean::getStudent_num))), ArrayList::new)); | 460 | Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(StudentBean::getStudent_num))), ArrayList::new)); |
560 | return studentList; | 461 | return studentList; |
561 | } | 462 | } |
@@ -576,34 +477,20 @@ public class BaseService { | @@ -576,34 +477,20 @@ public class BaseService { | ||
576 | return teacherist; | 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 | public void clearStudent(Integer schoolId,String deviceIds) { | 494 | public void clearStudent(Integer schoolId,String deviceIds) { |
608 | //下发设备集合 | 495 | //下发设备集合 |
609 | String[] deviceArr = deviceIds.split(","); | 496 | String[] deviceArr = deviceIds.split(","); |
@@ -637,7 +524,6 @@ public class BaseService { | @@ -637,7 +524,6 @@ public class BaseService { | ||
637 | System.out.println("size: " + sendRecordBeans.size()); | 524 | System.out.println("size: " + sendRecordBeans.size()); |
638 | for(String s : sendRecordBeans){ | 525 | for(String s : sendRecordBeans){ |
639 | StudentBean studentBean = userDao.getStudentWithCard(s,schoolId); | 526 | StudentBean studentBean = userDao.getStudentWithCard(s,schoolId); |
640 | -// System.out.println(new Gson().toJson(studentBean)); | ||
641 | if(studentBean == null){ | 527 | if(studentBean == null){ |
642 | System.out.println(s); | 528 | System.out.println(s); |
643 | sendRecordDao.deleteRecordByNum(schoolId,s); | 529 | sendRecordDao.deleteRecordByNum(schoolId,s); |
@@ -676,5 +562,58 @@ public class BaseService { | @@ -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,7 +6,6 @@ import com.sincere.haikangface.CMSServer; | ||
6 | import com.sincere.haikangface.async.SendUserAsync; | 6 | import com.sincere.haikangface.async.SendUserAsync; |
7 | import com.sincere.haikangface.bean.*; | 7 | import com.sincere.haikangface.bean.*; |
8 | import com.sincere.haikangface.bean.face.*; | 8 | import com.sincere.haikangface.bean.face.*; |
9 | -import com.sincere.haikangface.bean.test.SaveStudentBak; | ||
10 | import com.sincere.haikangface.dao.DeviceDao; | 9 | import com.sincere.haikangface.dao.DeviceDao; |
11 | import com.sincere.haikangface.dao.UserDao; | 10 | import com.sincere.haikangface.dao.UserDao; |
12 | import com.sincere.haikangface.enums.EnumSzBusinessType; | 11 | import com.sincere.haikangface.enums.EnumSzBusinessType; |
@@ -22,11 +21,10 @@ import org.springframework.stereotype.Service; | @@ -22,11 +21,10 @@ import org.springframework.stereotype.Service; | ||
22 | import org.springframework.web.multipart.MultipartFile; | 21 | import org.springframework.web.multipart.MultipartFile; |
23 | 22 | ||
24 | import java.io.File; | 23 | import java.io.File; |
25 | -import java.io.FileInputStream; | ||
26 | import java.io.FileOutputStream; | 24 | import java.io.FileOutputStream; |
27 | import java.io.IOException; | 25 | import java.io.IOException; |
28 | -import java.text.SimpleDateFormat; | ||
29 | import java.util.*; | 26 | import java.util.*; |
27 | +import java.util.function.Function; | ||
30 | import java.util.stream.Collectors; | 28 | import java.util.stream.Collectors; |
31 | 29 | ||
32 | /** | 30 | /** |
@@ -125,16 +123,10 @@ public class UserOperateServiceImpl implements UserOperateService { | @@ -125,16 +123,10 @@ public class UserOperateServiceImpl implements UserOperateService { | ||
125 | @Override | 123 | @Override |
126 | public Result sendHKAuth(Integer authId) { | 124 | public Result sendHKAuth(Integer authId) { |
127 | DeviceAuthRecord record = userDao.getAuthRecord(authId); | 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 | Integer studentType = record.getStudentType(); | 131 | Integer studentType = record.getStudentType(); |
140 | //周计划详情 | 132 | //周计划详情 |
@@ -188,54 +180,28 @@ public class UserOperateServiceImpl implements UserOperateService { | @@ -188,54 +180,28 @@ public class UserOperateServiceImpl implements UserOperateService { | ||
188 | } | 180 | } |
189 | 181 | ||
190 | @Override | 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 | log.error("下发人脸失败,userId: {},未查询到用户信息", userId); | 187 | log.error("下发人脸失败,userId: {},未查询到用户信息", userId); |
209 | return ResultGenerator.genSuccessResult("未查询到用户信息"); | 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 | String typeName = userType.intValue() ==1 ? "Teacher" : "Student"; | 198 | String typeName = userType.intValue() ==1 ? "Teacher" : "Student"; |
214 | - String[] fileNameStr =photo.split(typeName +"/"); | 199 | + String[] fileNameStr = photo.split(typeName +"/"); |
215 | if(fileNameStr.length==0){ | 200 | if(fileNameStr.length==0){ |
216 | log.error("文件名为空,文件路径 :"+ photo); | 201 | log.error("文件名为空,文件路径 :"+ photo); |
217 | return ResultGenerator.genSuccessResult("文件名为空"); | 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 | //校验100服务文件存储地址上是否存在此人脸 | 205 | //校验100服务文件存储地址上是否存在此人脸 |
240 | File file = new File(filePath.trim());//图片 | 206 | File file = new File(filePath.trim());//图片 |
241 | if (!file.exists()) { | 207 | if (!file.exists()) { |
@@ -249,6 +215,7 @@ public class UserOperateServiceImpl implements UserOperateService { | @@ -249,6 +215,7 @@ public class UserOperateServiceImpl implements UserOperateService { | ||
249 | CompressPic.CompressPic(file.getAbsolutePath(), targetPath); | 215 | CompressPic.CompressPic(file.getAbsolutePath(), targetPath); |
250 | } catch (Exception e) { | 216 | } catch (Exception e) { |
251 | log.error("压缩图片失败:",e); | 217 | log.error("压缩图片失败:",e); |
218 | + return ResultGenerator.genFailResult("重新下发失败"); | ||
252 | } | 219 | } |
253 | } | 220 | } |
254 | //设备类型 | 221 | //设备类型 |
@@ -264,87 +231,19 @@ public class UserOperateServiceImpl implements UserOperateService { | @@ -264,87 +231,19 @@ public class UserOperateServiceImpl implements UserOperateService { | ||
264 | } | 231 | } |
265 | //2.重新下发 | 232 | //2.重新下发 |
266 | boolean isOk = baseService.sendImg(file.getAbsolutePath(), targetPath, deviceId, cardNum, userName, String.valueOf(userType), schoolId); | 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 | if(clintType.intValue()== 22 || clintType.intValue()== 29){ | 237 | if(clintType.intValue()== 22 || clintType.intValue()== 29){ |
275 | //下发单个人脸至大华设备 | 238 | //下发单个人脸至大华设备 |
276 | HttpUtil.uploadDHImgForOne(filePath,schoolId,studentCode,clintType,deviceId); | 239 | HttpUtil.uploadDHImgForOne(filePath,schoolId,studentCode,clintType,deviceId); |
277 | - return ResultGenerator.genSuccessResult(); | ||
278 | } | 240 | } |
279 | return ResultGenerator.genSuccessResult(); | 241 | return ResultGenerator.genSuccessResult(); |
280 | } | 242 | } |
281 | 243 | ||
282 | @Override | 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 | public Result deleteFailFace(Integer schoolId) { | 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 | List<SendRecordBean> recordBeanList = sendRecordDao.getFailRecord(schoolId); | 247 | List<SendRecordBean> recordBeanList = sendRecordDao.getFailRecord(schoolId); |
349 | if(recordBeanList.size()>0){ | 248 | if(recordBeanList.size()>0){ |
350 | for(SendRecordBean recordBean : recordBeanList){ | 249 | for(SendRecordBean recordBean : recordBeanList){ |
@@ -369,7 +268,6 @@ public class UserOperateServiceImpl implements UserOperateService { | @@ -369,7 +268,6 @@ public class UserOperateServiceImpl implements UserOperateService { | ||
369 | HttpUtil.deleteDHFace(schoolId,cardNum,deviceId); | 268 | HttpUtil.deleteDHFace(schoolId,cardNum,deviceId); |
370 | } | 269 | } |
371 | //删除成功记录 | 270 | //删除成功记录 |
372 | - sendRecordDao.deleteUserFaceSuccess(schoolId,cardNum,deviceId); | ||
373 | sendRecordDao.deleteRecord(schoolId,deviceId,cardNum); | 271 | sendRecordDao.deleteRecord(schoolId,deviceId,cardNum); |
374 | }catch (Exception e){ | 272 | }catch (Exception e){ |
375 | log.error("删除失败人脸失败,异常信息:{}",e); | 273 | log.error("删除失败人脸失败,异常信息:{}",e); |
@@ -381,414 +279,163 @@ public class UserOperateServiceImpl implements UserOperateService { | @@ -381,414 +279,163 @@ public class UserOperateServiceImpl implements UserOperateService { | ||
381 | } | 279 | } |
382 | 280 | ||
383 | @Override | 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 | }else{ | 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 | return ResultGenerator.genSuccessResult(); | 330 | return ResultGenerator.genSuccessResult(); |
576 | } | 331 | } |
577 | 332 | ||
578 | @Override | 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 | for(String card : cardList){ | 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 | return ResultGenerator.genSuccessResult(); | 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 | @Async | 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 | for(String sno : deviceIds){ | 396 | for(String sno : deviceIds){ |
674 | try{ | 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 | }catch (Exception e){ | 407 | }catch (Exception e){ |
733 | log.error("人脸下发失败"); | 408 | log.error("人脸下发失败"); |
734 | e.printStackTrace(); | 409 | e.printStackTrace(); |
735 | continue; | 410 | continue; |
736 | } | 411 | } |
737 | } | 412 | } |
738 | - } | 413 | + }); |
739 | } | 414 | } |
740 | 415 | ||
741 | @Override | 416 | @Override |
742 | public Result againNoSendOneFace(MultipartFile file, Integer schoolId, String cardNum, Integer userType, String deviceIds) { | 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 | String userName = studentBean.getName(); | 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 | String typeName = userType.intValue()==1?"Teacher":"Student"; | 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 | String fileName = studentCode + ".png"; | 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 | String targetPath = FileUtils.picPathComp + file.getName(); | 432 | String targetPath = FileUtils.picPathComp + file.getName(); |
785 | try { | 433 | try { |
786 | CompressPic.CompressPic(new File(facePath).getAbsolutePath(), targetPath); | 434 | CompressPic.CompressPic(new File(facePath).getAbsolutePath(), targetPath); |
787 | } catch (Exception e) { | 435 | } catch (Exception e) { |
788 | log.error("压缩图片失败: ",e); | 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 | if(CollectionUtils.isNotEmpty(deviceList)){ | 439 | if(CollectionUtils.isNotEmpty(deviceList)){ |
793 | for(String deviceId : deviceList) { | 440 | for(String deviceId : deviceList) { |
794 | //获取设备类型 | 441 | //获取设备类型 |
@@ -808,6 +455,24 @@ public class UserOperateServiceImpl implements UserOperateService { | @@ -808,6 +455,24 @@ public class UserOperateServiceImpl implements UserOperateService { | ||
808 | return ResultGenerator.genSuccessResult(); | 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 | @Override | 476 | @Override |
812 | public Result insertUpdateCard(String cardNums) { | 477 | public Result insertUpdateCard(String cardNums) { |
813 | String[] cardArr = cardNums.split(","); | 478 | String[] cardArr = cardNums.split(","); |
@@ -843,78 +508,6 @@ public class UserOperateServiceImpl implements UserOperateService { | @@ -843,78 +508,6 @@ public class UserOperateServiceImpl implements UserOperateService { | ||
843 | return new Result(); | 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 | public void asyncSendFace(List<StudentBean> sendFaces,List<String> deviceList,Integer schoolId,Integer userType){ | 511 | public void asyncSendFace(List<StudentBean> sendFaces,List<String> deviceList,Integer schoolId,Integer userType){ |
919 | log.info("总共检测到:{},张人脸照片。",sendFaces.size()); | 512 | log.info("总共检测到:{},张人脸照片。",sendFaces.size()); |
920 | //设备类型 | 513 | //设备类型 |
@@ -925,103 +518,18 @@ public class UserOperateServiceImpl implements UserOperateService { | @@ -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 | @Override | 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 | List<StudentBean> resultCard = new ArrayList<>(); | 527 | List<StudentBean> resultCard = new ArrayList<>(); |
1020 | List<String> resultDevices = new ArrayList<>(); | 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 | log.info("统计共有下发用户数量:{}",studentBeanList.size()); | 531 | log.info("统计共有下发用户数量:{}",studentBeanList.size()); |
1024 | - if(isCheck !=null){ | 532 | + if(Objects.equals(faceBean.getIsCheck(),1)){ |
1025 | for(StudentBean studentBean : studentBeanList){ | 533 | for(StudentBean studentBean : studentBeanList){ |
1026 | String cardNum = studentBean.getStudent_num(); | 534 | String cardNum = studentBean.getStudent_num(); |
1027 | boolean isOk = true; | 535 | boolean isOk = true; |
@@ -1041,21 +549,20 @@ public class UserOperateServiceImpl implements UserOperateService { | @@ -1041,21 +549,20 @@ public class UserOperateServiceImpl implements UserOperateService { | ||
1041 | } | 549 | } |
1042 | //去重重复数据 | 550 | //去重重复数据 |
1043 | studentBeanList = resultCard.stream().collect(Collectors.collectingAndThen( | 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 | deviceList = resultDevices.stream().distinct().collect(Collectors.toList()); | 555 | deviceList = resultDevices.stream().distinct().collect(Collectors.toList()); |
1047 | } | 556 | } |
1048 | log.info("统计共有下发用户数量:{}",studentBeanList.size()); | 557 | log.info("统计共有下发用户数量:{}",studentBeanList.size()); |
1049 | //设备类型 | 558 | //设备类型 |
1050 | Integer clintType = userDao.getClintTypeByDeviceId(deviceList.get(0)); | 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 | int fileSize = studentBeanList.size(); | 566 | int fileSize = studentBeanList.size(); |
1060 | int clintNum = deviceList.size(); | 567 | int clintNum = deviceList.size(); |
1061 | //下发所用时长 | 568 | //下发所用时长 |
@@ -1070,16 +577,15 @@ public class UserOperateServiceImpl implements UserOperateService { | @@ -1070,16 +577,15 @@ public class UserOperateServiceImpl implements UserOperateService { | ||
1070 | } | 577 | } |
1071 | 578 | ||
1072 | @Override | 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 | int clintNum = deviceList.size(); | 589 | int clintNum = deviceList.size(); |
1084 | //下发所用时长 | 590 | //下发所用时长 |
1085 | int timeLength = new Double(clintNum * fileSize * 0.06).intValue(); | 591 | int timeLength = new Double(clintNum * fileSize * 0.06).intValue(); |
@@ -1093,17 +599,11 @@ public class UserOperateServiceImpl implements UserOperateService { | @@ -1093,17 +599,11 @@ public class UserOperateServiceImpl implements UserOperateService { | ||
1093 | } | 599 | } |
1094 | 600 | ||
1095 | @Override | 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 | log.info("统计共有下发用户数量:{}",studentBeanList.size()); | 607 | log.info("统计共有下发用户数量:{}",studentBeanList.size()); |
1108 | //设备类型 | 608 | //设备类型 |
1109 | Integer clintType = userDao.getClintTypeByDeviceId(deviceList.get(0)); | 609 | Integer clintType = userDao.getClintTypeByDeviceId(deviceList.get(0)); |
@@ -1113,7 +613,7 @@ public class UserOperateServiceImpl implements UserOperateService { | @@ -1113,7 +613,7 @@ public class UserOperateServiceImpl implements UserOperateService { | ||
1113 | // } | 613 | // } |
1114 | if(clintType.intValue()== 18 || clintType.intValue()== 28){ | 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 | int fileSize = studentBeanList.size(); | 618 | int fileSize = studentBeanList.size(); |
1119 | int clintNum = deviceList.size(); | 619 | int clintNum = deviceList.size(); |
@@ -1129,148 +629,82 @@ public class UserOperateServiceImpl implements UserOperateService { | @@ -1129,148 +629,82 @@ public class UserOperateServiceImpl implements UserOperateService { | ||
1129 | } | 629 | } |
1130 | 630 | ||
1131 | @Override | 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 | return ResultGenerator.genSuccessResult(); | 657 | return ResultGenerator.genSuccessResult(); |
1166 | } | 658 | } |
1167 | 659 | ||
1168 | @Override | 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 | int clintNum = deviceList.size(); | 708 | int clintNum = deviceList.size(); |
1275 | //下发所用时长 | 709 | //下发所用时长 |
1276 | int timeLength = new Double(clintNum * fileSize * 0.06).intValue(); | 710 | int timeLength = new Double(clintNum * fileSize * 0.06).intValue(); |
@@ -1282,26 +716,4 @@ public class UserOperateServiceImpl implements UserOperateService { | @@ -1282,26 +716,4 @@ public class UserOperateServiceImpl implements UserOperateService { | ||
1282 | map.put("fileSize",fileSize); | 716 | map.put("fileSize",fileSize); |
1283 | return ResultGenerator.genSuccessResult(objectMapper.toJson(map)); | 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,32 +23,14 @@ public interface SendRecordDao { | ||
23 | @Param("time") String time, @Param("schoolName") String schoolName, @Param("imgPath") String imgPath, @Param("schoolId") int schoolId, | 23 | @Param("time") String time, @Param("schoolName") String schoolName, @Param("imgPath") String imgPath, @Param("schoolId") int schoolId, |
24 | @Param("userType") int userType, @Param("deviceType") int deviceType); | 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 | @Select("select * from Face_SendSuccess where deviceID = #{deviceID} and schoolId = #{schoolId}") | 26 | @Select("select * from Face_SendSuccess where deviceID = #{deviceID} and schoolId = #{schoolId}") |
30 | List<SendRecordBean> getSenSuccesss(@Param("deviceID") String deviceId, @Param("schoolId") Integer schoolId); | 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 | @Insert("insert into Face_Recoder values(#{deviceId},#{user_id},#{name},#{imgurl},#{inOrOut},#{time},#{cardNum},#{temp},#{schoolId})") | 29 | @Insert("insert into Face_Recoder values(#{deviceId},#{user_id},#{name},#{imgurl},#{inOrOut},#{time},#{cardNum},#{temp},#{schoolId})") |
40 | void addFaceRecoder(@Param("deviceId") String deviceId, @Param("user_id") String user_id, @Param("name") String name, | 30 | void addFaceRecoder(@Param("deviceId") String deviceId, @Param("user_id") String user_id, @Param("name") String name, |
41 | @Param("imgurl") String imgurl, @Param("inOrOut") int inOrOut, @Param("time") String time, | 31 | @Param("imgurl") String imgurl, @Param("inOrOut") int inOrOut, @Param("time") String time, |
42 | @Param("cardNum") String cardNum, @Param("temp") String currTemperature,@Param("schoolId") int schoolId); | 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 | @Select("select * from Face_SendSuccess where Num = #{Num} and deviceID = #{deviceID}") | 34 | @Select("select * from Face_SendSuccess where Num = #{Num} and deviceID = #{deviceID}") |
53 | List<SendRecordBean> getFaceSendSucess(@Param("Num")String Num,@Param("deviceID")String deviceID); | 35 | List<SendRecordBean> getFaceSendSucess(@Param("Num")String Num,@Param("deviceID")String deviceID); |
54 | 36 | ||
@@ -63,6 +45,9 @@ public interface SendRecordDao { | @@ -63,6 +45,9 @@ public interface SendRecordDao { | ||
63 | @Select("select * from Face_SendRecord where deviceID = #{deviceID} and Num = #{Num} and userId = #{userId}") | 45 | @Select("select * from Face_SendRecord where deviceID = #{deviceID} and Num = #{Num} and userId = #{userId}") |
64 | List<SendRecordBean> getRecordIsExit(@Param("deviceID") String deviceId, @Param("Num") String cardNum,@Param("userId") String userId); | 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 | @Insert("insert into Face_SendRecord values(#{deviceID},#{userId},#{num},#{name},#{time},#{schoolName},#{imgPath},#{schoolId},#{failContent},#{failType},#{userType},#{deviceType},#{status},#{channel})") | 51 | @Insert("insert into Face_SendRecord values(#{deviceID},#{userId},#{num},#{name},#{time},#{schoolName},#{imgPath},#{schoolId},#{failContent},#{failType},#{userType},#{deviceType},#{status},#{channel})") |
67 | void saveFaceRecord(@Param("userId") String userId, @Param("deviceID") String deviceID, @Param("num") String num, @Param("name") String name, | 52 | void saveFaceRecord(@Param("userId") String userId, @Param("deviceID") String deviceID, @Param("num") String num, @Param("name") String name, |
68 | @Param("time") String time, @Param("schoolName") String schoolName, @Param("imgPath") String imgPath, @Param("schoolId") Integer schoolId, @Param("failContent") String failContent, | 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,35 +62,18 @@ public interface SendRecordDao { | ||
77 | @Select("select * from Face_SendRecord where schoolId = #{schoolId} and status =2") | 62 | @Select("select * from Face_SendRecord where schoolId = #{schoolId} and status =2") |
78 | List<SendRecordBean> getFailRecord(@Param("schoolId") Integer schoolId); | 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 | @Delete("delete Face_SendRecord where Num = #{Num} and schoolId = #{schoolId}") | 65 | @Delete("delete Face_SendRecord where Num = #{Num} and schoolId = #{schoolId}") |
90 | void deleteRecordByNum(@Param("schoolId") Integer schoolId,@Param("Num") String Num); | 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 | @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}") | 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 | 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); | 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 | @Select("select DISTINCT num from Face_SendRecord where schoolId = #{schoolId} ") | 71 | @Select("select DISTINCT num from Face_SendRecord where schoolId = #{schoolId} ") |
107 | List<String> getFaceRecordList(@Param("schoolId") Integer schoolId); | 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 | * @param checkIn | 79 | * @param checkIn |
cloud/haikangface/src/main/resources/mapper/usermapper.xml
@@ -86,40 +86,22 @@ | @@ -86,40 +86,22 @@ | ||
86 | </select> | 86 | </select> |
87 | 87 | ||
88 | <select id="getStudentByClassId" resultType="com.sincere.haikangface.bean.StudentBean"> | 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 | <if test="studentType != null"> | 90 | <if test="studentType != null"> |
97 | and student_type = #{studentType} | 91 | and student_type = #{studentType} |
98 | </if> | 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 | #{item} | 96 | #{item} |
103 | </foreach> | 97 | </foreach> |
104 | </if> | 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 | <if test="sexList != null and sexList.size() >0"> | 99 | <if test="sexList != null and sexList.size() >0"> |
114 | and sex in | 100 | and sex in |
115 | <foreach item="item" collection="sexList" separator="," open="(" close=")" index=""> | 101 | <foreach item="item" collection="sexList" separator="," open="(" close=")" index=""> |
116 | #{item} | 102 | #{item} |
117 | </foreach> | 103 | </foreach> |
118 | </if> | 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 | </select> | 105 | </select> |
124 | 106 | ||
125 | <select id="getStudentCardGroup" resultType="com.sincere.haikangface.bean.StudentBean"> | 107 | <select id="getStudentCardGroup" resultType="com.sincere.haikangface.bean.StudentBean"> |
@@ -162,7 +144,6 @@ | @@ -162,7 +144,6 @@ | ||
162 | (#{userId},#{customerId}, #{studentType}, #{userType}, #{name}, #{classId}, #{className}, #{oldCard}, #{card},#{schoolId},#{isNew},#{updateType}, #{addTime}, #{sex}, #{face}, #{studentCode}, #{mobile}) | 144 | (#{userId},#{customerId}, #{studentType}, #{userType}, #{name}, #{classId}, #{className}, #{oldCard}, #{card},#{schoolId},#{isNew},#{updateType}, #{addTime}, #{sex}, #{face}, #{studentCode}, #{mobile}) |
163 | </insert> | 145 | </insert> |
164 | 146 | ||
165 | - | ||
166 | <select id="getStudentWithCard" resultType="com.sincere.haikangface.bean.StudentBean"> | 147 | <select id="getStudentWithCard" resultType="com.sincere.haikangface.bean.StudentBean"> |
167 | select Top(1)* from SZ_V_School_Student where student_num = #{card} | 148 | select Top(1)* from SZ_V_School_Student where student_num = #{card} |
168 | <if test="schoolId !=null"> | 149 | <if test="schoolId !=null"> |
@@ -177,7 +158,7 @@ | @@ -177,7 +158,7 @@ | ||
177 | </if> | 158 | </if> |
178 | </select> | 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 | select Top(1) * from SZ_V_School_Student where user_id = #{userId} | 162 | select Top(1) * from SZ_V_School_Student where user_id = #{userId} |
182 | <if test="schoolId !=null"> | 163 | <if test="schoolId !=null"> |
183 | and school_id = #{schoolId} | 164 | and school_id = #{schoolId} |
@@ -191,32 +172,6 @@ | @@ -191,32 +172,6 @@ | ||
191 | </if> | 172 | </if> |
192 | </select> | 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 | <select id="getRoomBySchoolId" resultType="java.lang.Integer"> | 175 | <select id="getRoomBySchoolId" resultType="java.lang.Integer"> |
221 | select Id from ss_room where schoolId = #{schoolId} and pId = #{groupId} | 176 | select Id from ss_room where schoolId = #{schoolId} and pId = #{groupId} |
222 | </select> | 177 | </select> |
cloud/haikangface/src/main/resources/xiaoanmapper/usermapper.xml
@@ -13,4 +13,17 @@ | @@ -13,4 +13,17 @@ | ||
13 | #{out,mode=OUT,jdbcType=VARCHAR,resultMap=resultMap},#{isSuccess,mode=OUT,jdbcType=INTEGER,resultMap=resultMap} | 13 | #{out,mode=OUT,jdbcType=VARCHAR,resultMap=resultMap},#{isSuccess,mode=OUT,jdbcType=INTEGER,resultMap=resultMap} |
14 | )} | 14 | )} |
15 | </insert> | 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 | </mapper> | 29 | </mapper> |
cloud/haikangface/src/test/java/com/sincere/haikangface/HaikangfaceApplicationTests.java
@@ -103,7 +103,7 @@ public class HaikangfaceApplicationTests { | @@ -103,7 +103,7 @@ public class HaikangfaceApplicationTests { | ||
103 | saveStudentBak.setName(name); | 103 | saveStudentBak.setName(name); |
104 | saveStudentBak.setClassName(className); | 104 | saveStudentBak.setClassName(className); |
105 | saveStudentBak.setStatus(2); | 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,12 +34,12 @@ public class DataSourceConfig { | ||
34 | public DataSource dataSource3() { | 34 | public DataSource dataSource3() { |
35 | return DataSourceBuilder.create().build(); | 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 | @Bean(name="dynamicDataSource") | 44 | @Bean(name="dynamicDataSource") |
45 | @Primary //优先使用,多数据源 | 45 | @Primary //优先使用,多数据源 |
@@ -48,7 +48,7 @@ public class DataSourceConfig { | @@ -48,7 +48,7 @@ public class DataSourceConfig { | ||
48 | DataSource master = dataSource1(); | 48 | DataSource master = dataSource1(); |
49 | DataSource slave = dataSource2(); | 49 | DataSource slave = dataSource2(); |
50 | DataSource yxy = dataSource3(); | 50 | DataSource yxy = dataSource3(); |
51 | - DataSource update = dataSource4(); | 51 | +// DataSource update = dataSource4(); |
52 | //设置默认数据源 | 52 | //设置默认数据源 |
53 | dynamicDataSource.setDefaultTargetDataSource(master); | 53 | dynamicDataSource.setDefaultTargetDataSource(master); |
54 | //配置多数据源 | 54 | //配置多数据源 |
@@ -56,7 +56,7 @@ public class DataSourceConfig { | @@ -56,7 +56,7 @@ public class DataSourceConfig { | ||
56 | map.put(DataSourceType.Master.getName(), master); //key需要跟ThreadLocal中的值对应 | 56 | map.put(DataSourceType.Master.getName(), master); //key需要跟ThreadLocal中的值对应 |
57 | map.put(DataSourceType.Slave.getName(), slave); | 57 | map.put(DataSourceType.Slave.getName(), slave); |
58 | map.put(DataSourceType.Yxy.getName(), yxy); | 58 | map.put(DataSourceType.Yxy.getName(), yxy); |
59 | - map.put(DataSourceType.Update.getName(), update); | 59 | +// map.put(DataSourceType.Update.getName(), update); |
60 | dynamicDataSource.setTargetDataSources(map); | 60 | dynamicDataSource.setTargetDataSources(map); |
61 | return dynamicDataSource; | 61 | return dynamicDataSource; |
62 | } | 62 | } |
cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java
@@ -23,7 +23,7 @@ public class SyncJob { | @@ -23,7 +23,7 @@ public class SyncJob { | ||
23 | YXYReadService yxyReadService ; | 23 | YXYReadService yxyReadService ; |
24 | 24 | ||
25 | // @Scheduled(cron = "30 1 22 * * ? ") | 25 | // @Scheduled(cron = "30 1 22 * * ? ") |
26 | - @Scheduled(fixedDelay = 220 * 60 * 1000) | 26 | + @Scheduled(fixedDelay = 60 * 60 * 1000) |
27 | public void Sync(){ | 27 | public void Sync(){ |
28 | //翼校通的同步 之后还有钉钉的同步等等 | 28 | //翼校通的同步 之后还有钉钉的同步等等 |
29 | yxyReadService.sync(); | 29 | yxyReadService.sync(); |