Commit 2f519872b8bd71d0aad466649cbc4003743bb2d9

Authored by 徐泉
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();