Commit 124aa27a05ba9e93f32547982e6a3e08330b2ef7
1 parent
a5f89221
Exists in
master
体温上传 博冠人脸
Showing
14 changed files
with
544 additions
and
169 deletions
Show diff stats
cloud/common/src/main/java/com/sincere/common/dto/smartCampus/CwStutemperaturereocrd.java
0 → 100644
... | ... | @@ -0,0 +1,106 @@ |
1 | +package com.sincere.common.dto.smartCampus; | |
2 | + | |
3 | +import java.math.BigDecimal; | |
4 | +import java.util.Date; | |
5 | + | |
6 | +public class CwStutemperaturereocrd { | |
7 | + private Integer id; | |
8 | + | |
9 | + private String userid; | |
10 | + | |
11 | + private Integer studentid; | |
12 | + | |
13 | + private String name; | |
14 | + | |
15 | + private Integer classid; | |
16 | + | |
17 | + private String classname; | |
18 | + | |
19 | + private BigDecimal temperature; | |
20 | + | |
21 | + private Integer type; | |
22 | + | |
23 | + private Integer schoolid; | |
24 | + | |
25 | + private Date intime; | |
26 | + | |
27 | + public Integer getId() { | |
28 | + return id; | |
29 | + } | |
30 | + | |
31 | + public void setId(Integer id) { | |
32 | + this.id = id; | |
33 | + } | |
34 | + | |
35 | + public String getUserid() { | |
36 | + return userid; | |
37 | + } | |
38 | + | |
39 | + public void setUserid(String userid) { | |
40 | + this.userid = userid; | |
41 | + } | |
42 | + | |
43 | + public Integer getStudentid() { | |
44 | + return studentid; | |
45 | + } | |
46 | + | |
47 | + public void setStudentid(Integer studentid) { | |
48 | + this.studentid = studentid; | |
49 | + } | |
50 | + | |
51 | + public String getName() { | |
52 | + return name; | |
53 | + } | |
54 | + | |
55 | + public void setName(String name) { | |
56 | + this.name = name; | |
57 | + } | |
58 | + | |
59 | + public Integer getClassid() { | |
60 | + return classid; | |
61 | + } | |
62 | + | |
63 | + public void setClassid(Integer classid) { | |
64 | + this.classid = classid; | |
65 | + } | |
66 | + | |
67 | + public String getClassname() { | |
68 | + return classname; | |
69 | + } | |
70 | + | |
71 | + public void setClassname(String classname) { | |
72 | + this.classname = classname; | |
73 | + } | |
74 | + | |
75 | + public BigDecimal getTemperature() { | |
76 | + return temperature; | |
77 | + } | |
78 | + | |
79 | + public void setTemperature(BigDecimal temperature) { | |
80 | + this.temperature = temperature; | |
81 | + } | |
82 | + | |
83 | + public Integer getType() { | |
84 | + return type; | |
85 | + } | |
86 | + | |
87 | + public void setType(Integer type) { | |
88 | + this.type = type; | |
89 | + } | |
90 | + | |
91 | + public Integer getSchoolid() { | |
92 | + return schoolid; | |
93 | + } | |
94 | + | |
95 | + public void setSchoolid(Integer schoolid) { | |
96 | + this.schoolid = schoolid; | |
97 | + } | |
98 | + | |
99 | + public Date getIntime() { | |
100 | + return intime; | |
101 | + } | |
102 | + | |
103 | + public void setIntime(Date intime) { | |
104 | + this.intime = intime; | |
105 | + } | |
106 | +} | |
0 | 107 | \ No newline at end of file | ... | ... |
cloud/lapi/src/main/java/com/sincere/lapi/controller/LapiController.java
1 | 1 | package com.sincere.lapi.controller; |
2 | 2 | |
3 | -import com.alibaba.fastjson.JSONArray; | |
4 | -import com.alibaba.fastjson.JSONObject; | |
5 | 3 | import com.sincere.common.dto.smartCampus.SzVSchoolStudent; |
6 | 4 | import com.sincere.common.dto.smartCampus.SzVSchoolTeacher; |
7 | -import com.sincere.common.dto.xiaoan.FaceSendfail; | |
8 | -import com.sincere.common.dto.xiaoan.FaceSendsuccess; | |
9 | 5 | import com.sincere.lapi.Utils.FileUtils; |
10 | 6 | import com.sincere.lapi.feign.ScFeign; |
11 | 7 | import com.sincere.lapi.feign.XaFeign; |
... | ... | @@ -39,21 +35,6 @@ public class LapiController { |
39 | 35 | @Autowired |
40 | 36 | TerminalHttpCall terminalHttpCall = new TerminalHttpCall(); |
41 | 37 | |
42 | - | |
43 | - private static Map<Integer,String> resultCodeMap = new HashMap<>(); | |
44 | - | |
45 | - static { | |
46 | - resultCodeMap.put(1,"通用执行失败"); | |
47 | - resultCodeMap.put(2,"初始化检测失败"); | |
48 | - resultCodeMap.put(3,"人脸检测失败"); | |
49 | - resultCodeMap.put(4,"图片未检测到人脸"); | |
50 | - resultCodeMap.put(5,"jpeg 照片解码失败"); | |
51 | - resultCodeMap.put(6,"人脸图片质量分数不满足"); | |
52 | - resultCodeMap.put(7,"图片缩放失败"); | |
53 | - resultCodeMap.put(8,"未启用智能"); | |
54 | - resultCodeMap.put(9,"图片不存在或过大/过小"); | |
55 | - } | |
56 | - | |
57 | 38 | /** |
58 | 39 | * 下发整个学校 |
59 | 40 | * @param deviceIds 多个设备用,隔开 |
... | ... | @@ -114,27 +95,7 @@ public class LapiController { |
114 | 95 | } |
115 | 96 | |
116 | 97 | private void sendStudent(SzVSchoolStudent student , String deviceId){ |
117 | - try{ | |
118 | - LAPIResponse response = sendImg(Long.valueOf(student.getStudentId()),student.getName(),student.getStudentNum(),student.getPhoto(),deviceId); | |
119 | - terminalHttpCall.removeKey(deviceId); | |
120 | - if(response.getStatusString().equals("Succeed")){ | |
121 | - JSONObject data = JSONObject.parseObject(response.getData()); | |
122 | - JSONArray personList = (JSONArray)data.get("PersonList") ; | |
123 | - JSONArray faceList = (JSONArray) ((JSONObject)personList.get(0)).get("FaceList"); | |
124 | - JSONObject face = (JSONObject) faceList.get(0); | |
125 | - if((Integer) face.get("ResultCode") == 0){ | |
126 | - insertSuccess(deviceId,student.getStudentId(),student.getStudentNum(),student.getName(),student.getPhoto(),student.getSchoolId(),2); | |
127 | - }else { | |
128 | - Integer code = (Integer) face.get("ResultCode") ; | |
129 | - insertFail(deviceId,student.getStudentId(),student.getStudentNum(),student.getName(),student.getPhoto(),student.getSchoolId(),2,code,resultCodeMap.get(code)); | |
130 | - } | |
131 | - }else { | |
132 | - insertFail(deviceId,student.getStudentId(),student.getStudentNum(),student.getName(),student.getPhoto(),student.getSchoolId(),2,response.getStatusCode(),response.getStatusString()); | |
133 | - } | |
134 | - }catch (Exception e){ | |
135 | - e.printStackTrace(); | |
136 | - } | |
137 | - | |
98 | + sendImg(Long.valueOf(student.getStudentId()),student.getName(),student.getStudentNum(),student.getPhoto(),deviceId,2); | |
138 | 99 | } |
139 | 100 | |
140 | 101 | private void sendTeacherBatch( List<SzVSchoolTeacher> list , String deviceId){ |
... | ... | @@ -146,31 +107,11 @@ public class LapiController { |
146 | 107 | } |
147 | 108 | |
148 | 109 | private void sendTeacher(SzVSchoolTeacher teacher , String deviceId){ |
149 | - try{ | |
150 | - LAPIResponse response = sendImg(Long.valueOf(teacher.getTeacherId()),teacher.getName(),teacher.getTeacherNum(),teacher.getFace(),deviceId); | |
151 | - terminalHttpCall.removeKey(deviceId); | |
152 | - if(response.getStatusString().equals("Succeed")){ | |
153 | - JSONObject data = JSONObject.parseObject(response.getData()); | |
154 | - JSONArray personList = (JSONArray)data.get("PersonList") ; | |
155 | - JSONArray faceList = (JSONArray) ((JSONObject)personList.get(0)).get("FaceList"); | |
156 | - JSONObject face = (JSONObject) faceList.get(0); | |
157 | - if((Integer) face.get("ResultCode") == 0){ | |
158 | - insertSuccess(deviceId,teacher.getTeacherId(),teacher.getTeacherNum(),teacher.getName(),teacher.getFace(),teacher.getSchoolId(),1); | |
159 | - }else { | |
160 | - Integer code = (Integer) face.get("ResultCode") ; | |
161 | - insertFail(deviceId,teacher.getTeacherId(),teacher.getTeacherNum(),teacher.getName(),teacher.getFace(),teacher.getSchoolId(),1,code,resultCodeMap.get(code)); | |
162 | - } | |
163 | - }else { | |
164 | - insertFail(deviceId,teacher.getTeacherId(),teacher.getTeacherNum(),teacher.getName(),teacher.getFace(),teacher.getSchoolId(),1,response.getStatusCode(),response.getStatusString()); | |
165 | - } | |
166 | - }catch (Exception e){ | |
167 | - e.printStackTrace(); | |
168 | - } | |
110 | + sendImg(Long.valueOf(teacher.getTeacherId()),teacher.getName(),teacher.getTeacherNum(),teacher.getFace(),deviceId,1); | |
169 | 111 | |
170 | 112 | } |
171 | 113 | |
172 | - private LAPIResponse sendImg(long personId , String name , String code , String fileUrl , String deviceId){ | |
173 | - LAPIResponse response = new LAPIResponse() ; | |
114 | + private void sendImg(long personId , String name , String code , String fileUrl , String deviceId , int userType){ | |
174 | 115 | PersonInfoList personInfoList = new PersonInfoList(); |
175 | 116 | List<PersonInfo> list1 = new ArrayList<PersonInfo>(); |
176 | 117 | personInfoList.setPersonInfoList(list1); |
... | ... | @@ -203,27 +144,16 @@ public class LapiController { |
203 | 144 | String picture = new BASE64Encoder().encode(FileUtils.getBytes(fileUrl)); |
204 | 145 | picture = picture.replaceAll("\n", "").replaceAll("\r", ""); |
205 | 146 | personImageInfo.setData(picture); |
206 | - personImageInfo.setFaceID(1L); | |
147 | + personImageInfo.setFaceID(Long.valueOf(userType)); | |
207 | 148 | //personImageInfo.setName("1.jpg"); |
208 | 149 | personImageInfo.setSize(picture.length()); |
209 | 150 | imageList.add(personImageInfo); |
210 | 151 | personInfo.setImageList(imageList); |
211 | 152 | personInfo.setImageNum(imageList.size()); |
212 | 153 | terminalHttpCall.addPerson(deviceId, personInfoList); |
213 | - | |
214 | - Thread.sleep(2000); | |
215 | - try{ | |
216 | - response = terminalHttpCall.getResponse(deviceId); | |
217 | - response.getStatusString(); | |
218 | - }catch (Exception e){ | |
219 | - Thread.sleep(5000); | |
220 | - response = terminalHttpCall.getResponse(deviceId); | |
221 | - } | |
222 | - | |
223 | 154 | } catch(Exception e) { |
224 | - System.out.println("下发失败"+e.getMessage()); | |
155 | + System.out.println(e.getMessage()); | |
225 | 156 | } |
226 | - return response ; | |
227 | 157 | } |
228 | 158 | |
229 | 159 | |
... | ... | @@ -243,31 +173,4 @@ public class LapiController { |
243 | 173 | } |
244 | 174 | } |
245 | 175 | |
246 | - private void insertSuccess(String deviceId , int customerId , String num , String name , String imgPath , int schoolId ,int userType){ | |
247 | - FaceSendsuccess send = new FaceSendsuccess(); | |
248 | - send.setDeviceid(deviceId); | |
249 | - send.setCustomerid(customerId+""); | |
250 | - send.setDevicetype(25); | |
251 | - send.setImgpath(imgPath); | |
252 | - send.setSchoolid(schoolId); | |
253 | - send.setUsertype(userType); | |
254 | - send.setName(name); | |
255 | - send.setNum(num); | |
256 | - xaFeign.insertFaceSuccess(send); | |
257 | - } | |
258 | - | |
259 | - private void insertFail(String deviceId , int customerId , String num , String name , String imgPath , int schoolId ,int userType , int failType ,String failContent){ | |
260 | - FaceSendfail send = new FaceSendfail(); | |
261 | - send.setDeviceid(deviceId); | |
262 | - send.setCustomerid(customerId+""); | |
263 | - send.setDevicetype(25); | |
264 | - send.setImgpath(imgPath); | |
265 | - send.setSchoolid(schoolId); | |
266 | - send.setUsertype(userType); | |
267 | - send.setName(name); | |
268 | - send.setNum(num); | |
269 | - send.setFailtype(failType); | |
270 | - send.setFailcontent(failContent); | |
271 | - xaFeign.insertFaceFail(send); | |
272 | - } | |
273 | -} | |
176 | + } | ... | ... |
cloud/lapi/src/main/java/com/sincere/lapi/feign/ScFeign.java
1 | 1 | package com.sincere.lapi.feign; |
2 | 2 | |
3 | +import com.sincere.common.dto.smartCampus.CwStutemperaturereocrd; | |
3 | 4 | import com.sincere.common.dto.smartCampus.SZ_AttendanceDto; |
4 | 5 | import com.sincere.common.dto.smartCampus.SzVSchoolStudent; |
5 | 6 | import com.sincere.common.dto.smartCampus.SzVSchoolTeacher; |
... | ... | @@ -19,6 +20,9 @@ import java.util.List; |
19 | 20 | @FeignClient("smartCampusSearch") |
20 | 21 | public interface ScFeign { |
21 | 22 | |
23 | + @RequestMapping(value = "/sm/user/insertTemperature",method = RequestMethod.POST) | |
24 | + int insertTemperature(@RequestBody CwStutemperaturereocrd record); | |
25 | + | |
22 | 26 | @RequestMapping(value = "/attendance/addAttendance", method = RequestMethod.POST) |
23 | 27 | void addAttendance(@RequestBody SZ_AttendanceDto attendanceDto); |
24 | 28 | ... | ... |
cloud/lapi/src/main/java/com/sincere/lapi/server/handler/HttpClientHandler.java
1 | 1 | package com.sincere.lapi.server.handler; |
2 | 2 | |
3 | +import com.alibaba.fastjson.JSONArray; | |
3 | 4 | import com.alibaba.fastjson.JSONObject; |
4 | 5 | import com.sincere.common.util.DateUtils; |
5 | 6 | import com.sincere.lapi.Utils.SpringContextHolder; |
... | ... | @@ -20,6 +21,7 @@ import org.apache.commons.lang3.StringUtils; |
20 | 21 | import org.slf4j.Logger; |
21 | 22 | import org.slf4j.LoggerFactory; |
22 | 23 | |
24 | +import java.math.BigDecimal; | |
23 | 25 | import java.text.SimpleDateFormat; |
24 | 26 | import java.util.Date; |
25 | 27 | |
... | ... | @@ -36,36 +38,60 @@ public class HttpClientHandler extends ChannelInboundHandlerAdapter { |
36 | 38 | AttendanceService attendanceService = SpringContextHolder.getAttendanceService(); |
37 | 39 | String content = (String) msg; |
38 | 40 | logger.info(content); |
41 | + //心跳 更新设备 | |
39 | 42 | if (content.contains("/LAPI/V1.0/PACS/Controller/HeartReportInfo")) { |
40 | 43 | HeartInfo heartInfo = JSONObject.parseObject(getJson(content),HeartInfo.class); |
41 | 44 | call.addChannel(heartInfo.getDeviceCode(),ctx); |
42 | 45 | attendanceService.addAttendance(heartInfo.getDeviceCode()); |
43 | - } | |
44 | - // 记录推送 | |
45 | - if (content.contains("/LAPI/V1.0/System/Event/Notification/PersonVerification")) { | |
46 | - String faceInfo = content.substring(content.indexOf("FaceInfoList")); | |
47 | - String timeInfo = faceInfo.substring(faceInfo.indexOf("Timestamp")); | |
48 | - String time = timeInfo.substring(11,timeInfo.indexOf(",")).trim(); | |
49 | - String deviceString = content.substring(content.indexOf("DeviceCode")); | |
50 | - String deviceCode = deviceString.substring(15,deviceString.indexOf(",")); | |
51 | - deviceCode = deviceCode.substring(0,deviceCode.length()-1); | |
52 | - call.setDeviceTime(deviceCode,time); | |
53 | - }else if (StringUtils.contains(content, "Response")) { | |
54 | - LAPIResponse lapiResponse = JSONObject.parseObject(content, LAPI.class).getResponse(); | |
55 | - if(lapiResponse.getResponseUrl().equals(UrlParam.person_add)){ | |
56 | - //人脸添加 | |
57 | - call.putResponse(call.getDeviceCodeByChannel(ctx),lapiResponse); | |
46 | + }else if (content.contains("Response")) { | |
47 | + try{ | |
48 | + LAPIResponse lapiResponse = JSONObject.parseObject(content.substring(content.indexOf("{")), LAPI.class).getResponse(); | |
49 | + if(lapiResponse.getResponseUrl().equals(UrlParam.person_add)){ | |
50 | + attendanceService.insertSend(lapiResponse,call.getDeviceCodeByChannel(ctx)); | |
51 | + } | |
52 | + }catch (Exception e){ | |
58 | 53 | } |
59 | - }else if(content.contains("MatchPersonID")){ | |
60 | - String personIdString = content.substring(content.indexOf("MatchPersonID")); | |
61 | - String personId = personIdString.substring(15,personIdString.indexOf(",")).trim(); | |
54 | + }else { | |
62 | 55 | String deviceCode = call.getDeviceCodeByChannel(ctx); |
63 | - String time = call.getDeviceTime(deviceCode); | |
64 | - attendanceService.insertRecode(personId,deviceCode,time); | |
56 | + if(content.contains("Content-Type")){ | |
57 | + //第一个包-- 则对之前数据进行处理 | |
58 | + StringBuffer data = call.getDeviceDataMap(deviceCode); | |
59 | + handleData(attendanceService,deviceCode,data.toString()); | |
60 | + //数据放入map中 | |
61 | + data = new StringBuffer(); | |
62 | + data.append(content); | |
63 | + call.setDeviceDataMap(deviceCode,data); | |
64 | + }else { | |
65 | + //分包数据 连接 | |
66 | + StringBuffer data = call.getDeviceDataMap(deviceCode); | |
67 | + data.append(content); | |
68 | + call.setDeviceDataMap(deviceCode,data); | |
69 | + } | |
65 | 70 | } |
66 | 71 | ctx.flush(); |
67 | 72 | } |
68 | 73 | |
74 | + public void handleData(AttendanceService attendanceService, | |
75 | + String deviceCode , String data){ | |
76 | + if (data.contains("/LAPI/V1.0/System/Event/Notification/PersonVerification")) { | |
77 | + try{ | |
78 | + data = data.substring(data.indexOf("{")); | |
79 | + JSONObject object = JSONObject.parseObject(data); | |
80 | + int timestamp = (Integer) object.get("Timestamp"); | |
81 | + JSONArray faceInfoList = (JSONArray) object.get("FaceInfoList"); | |
82 | + JSONObject faceInfo = faceInfoList.getJSONObject(0); | |
83 | + BigDecimal temperature = (BigDecimal) faceInfo.get("Temperature"); | |
84 | + JSONArray libMatInfoList = (JSONArray)object.get("LibMatInfoList"); | |
85 | + JSONObject person = libMatInfoList.getJSONObject(0); | |
86 | + int personId = (Integer) person.get("MatchPersonID") ; | |
87 | + int userType = (Integer) person.get("MatchFaceID"); | |
88 | + attendanceService.insertRecode(personId+"",deviceCode,timestamp+"000",temperature,userType); | |
89 | + }catch (Exception e){ | |
90 | + e.printStackTrace(); | |
91 | + } | |
92 | + } | |
93 | + } | |
94 | + | |
69 | 95 | public String getJson(String context){ |
70 | 96 | String msg = context.substring(context.indexOf("{"),context.indexOf("}")+1); |
71 | 97 | return msg ; | ... | ... |
cloud/lapi/src/main/java/com/sincere/lapi/service/request/AttendanceService.java
1 | 1 | package com.sincere.lapi.service.request; |
2 | 2 | |
3 | +import com.alibaba.fastjson.JSONArray; | |
4 | +import com.alibaba.fastjson.JSONObject; | |
5 | +import com.sincere.common.dto.smartCampus.CwStutemperaturereocrd; | |
3 | 6 | import com.sincere.common.dto.smartCampus.SZ_AttendanceDto; |
4 | 7 | import com.sincere.common.dto.smartCampus.SzVSchoolStudent; |
5 | 8 | import com.sincere.common.dto.smartCampus.SzVSchoolTeacher; |
6 | 9 | import com.sincere.common.dto.xiaoan.FaceRecoder; |
10 | +import com.sincere.common.dto.xiaoan.FaceSendfail; | |
11 | +import com.sincere.common.dto.xiaoan.FaceSendsuccess; | |
7 | 12 | import com.sincere.common.util.DateUtils; |
8 | 13 | import com.sincere.lapi.feign.ScFeign; |
9 | 14 | import com.sincere.lapi.feign.XaFeign; |
15 | +import com.sincere.lapi.pojo.LAPIResponse; | |
10 | 16 | import org.springframework.beans.factory.annotation.Autowired; |
11 | 17 | import org.springframework.stereotype.Service; |
12 | 18 | |
19 | +import java.math.BigDecimal; | |
20 | +import java.util.HashMap; | |
21 | +import java.util.Map; | |
22 | + | |
13 | 23 | @Service("attendanceService") |
14 | 24 | public class AttendanceService { |
15 | 25 | |
... | ... | @@ -19,6 +29,20 @@ public class AttendanceService { |
19 | 29 | @Autowired |
20 | 30 | XaFeign xaFeign ; |
21 | 31 | |
32 | + private static Map<Integer,String> resultCodeMap = new HashMap<>(); | |
33 | + | |
34 | + static { | |
35 | + resultCodeMap.put(1,"通用执行失败"); | |
36 | + resultCodeMap.put(2,"初始化检测失败"); | |
37 | + resultCodeMap.put(3,"人脸检测失败"); | |
38 | + resultCodeMap.put(4,"图片未检测到人脸"); | |
39 | + resultCodeMap.put(5,"jpeg 照片解码失败"); | |
40 | + resultCodeMap.put(6,"人脸图片质量分数不满足"); | |
41 | + resultCodeMap.put(7,"图片缩放失败"); | |
42 | + resultCodeMap.put(8,"未启用智能"); | |
43 | + resultCodeMap.put(9,"图片不存在或过大/过小"); | |
44 | + } | |
45 | + | |
22 | 46 | public void addAttendance(String clientId){ |
23 | 47 | SZ_AttendanceDto dto = new SZ_AttendanceDto(); |
24 | 48 | dto.setClint_id(clientId); |
... | ... | @@ -26,27 +50,106 @@ public class AttendanceService { |
26 | 50 | scFeign.addAttendance(dto); |
27 | 51 | } |
28 | 52 | |
29 | - | |
30 | - public void insertRecode(String customerId , String deviceCode , String time){ | |
53 | + public void insertRecode(String customerId , String deviceCode , String time , BigDecimal temperature ,int userType){ | |
54 | + //1 老师 2 学生 | |
31 | 55 | SZ_AttendanceDto attendanceDto = scFeign.selectAttendaceWithId(deviceCode); |
32 | 56 | FaceRecoder faceRecoder = new FaceRecoder(); |
33 | 57 | faceRecoder.setDeviceid(deviceCode); |
34 | 58 | faceRecoder.setInorout(attendanceDto.getOutOrIn()); |
35 | 59 | faceRecoder.setTime(DateUtils.getByLong(time)); |
36 | - SzVSchoolTeacher teacher = scFeign.selectByTeacherId(Integer.valueOf(customerId)); | |
37 | - if(teacher == null){ | |
38 | - SzVSchoolStudent student = scFeign.selectByStudentId(Integer.valueOf(customerId)); | |
39 | - faceRecoder.setName(student.getName()); | |
40 | - faceRecoder.setImgurl(student.getPhoto()); | |
41 | - faceRecoder.setUserId(customerId); | |
42 | - faceRecoder.setCardnum(student.getStudentNum()); | |
43 | - }else { | |
60 | + if(userType == 1){ | |
61 | + SzVSchoolTeacher teacher = scFeign.selectByTeacherId(Integer.valueOf(customerId)); | |
44 | 62 | faceRecoder.setCardnum(teacher.getTeacherNum()); |
45 | 63 | faceRecoder.setUserId(customerId); |
46 | 64 | faceRecoder.setImgurl(teacher.getFace()); |
47 | 65 | faceRecoder.setName(teacher.getName()); |
66 | + }else { | |
67 | + SzVSchoolStudent student = scFeign.selectByStudentId(Integer.valueOf(customerId)); | |
68 | + faceRecoder.setName(student.getName()); | |
69 | + faceRecoder.setImgurl(student.getPhoto()); | |
70 | + faceRecoder.setUserId(customerId); | |
71 | + faceRecoder.setCardnum(student.getStudentNum()); | |
72 | + CwStutemperaturereocrd record = new CwStutemperaturereocrd(); | |
73 | + record.setClassid(student.getClassId()); | |
74 | + record.setClassname(student.getClassName()); | |
75 | + record.setIntime(DateUtils.getByLong(time)); | |
76 | + record.setName(student.getName()); | |
77 | + record.setStudentid(student.getStudentId()); | |
78 | + record.setTemperature(temperature); | |
79 | + record.setUserid(student.getUserId()); | |
80 | + record.setSchoolid(student.getSchoolId()); | |
81 | + scFeign.insertTemperature(record); | |
48 | 82 | } |
49 | 83 | xaFeign.insertRecode(faceRecoder); |
50 | 84 | } |
51 | 85 | |
86 | + public void insertSend(LAPIResponse response , String deviceCode){ | |
87 | + try{ | |
88 | + if(response.getStatusString().equals("Succeed")){ | |
89 | + JSONObject data = JSONObject.parseObject(response.getData()); | |
90 | + JSONArray personList = (JSONArray)data.get("PersonList") ; | |
91 | + JSONObject person = (JSONObject)personList.get(0) ; | |
92 | + int personId = (Integer) person.get("PersonID"); | |
93 | + | |
94 | + JSONArray faceList = (JSONArray) person.get("FaceList"); | |
95 | + JSONObject face = (JSONObject) faceList.get(0); | |
96 | + int code = (Integer) face.get("ResultCode") ; | |
97 | + int userType = (Integer)face.get("FaceID"); | |
98 | + String num , photo , name ; | |
99 | + int schoolId ; | |
100 | + if(userType == 1){ | |
101 | + SzVSchoolTeacher teacher = scFeign.selectByTeacherId(personId); | |
102 | + num = teacher.getTeacherNum(); | |
103 | + photo = teacher.getFace(); | |
104 | + name = teacher.getName(); | |
105 | + schoolId = teacher.getSchoolId(); | |
106 | + }else { | |
107 | + SzVSchoolStudent student = scFeign.selectByStudentId(personId); | |
108 | + num = student.getStudentNum(); | |
109 | + photo = student.getPhoto() ; | |
110 | + name = student.getName(); | |
111 | + schoolId = student.getSchoolId(); | |
112 | + } | |
113 | + if(code == 0){ | |
114 | + insertSuccess(deviceCode,personId,num,name,photo,schoolId,userType); | |
115 | + }else { | |
116 | + insertFail(deviceCode,personId,num,name,photo,schoolId,userType,code,resultCodeMap.get(code)); | |
117 | + } | |
118 | + }else { | |
119 | + // insertFail(deviceCode,teacher.getTeacherId(),teacher.getTeacherNum(),teacher.getName(),teacher.getFace(),teacher.getSchoolId(),1,response.getStatusCode(),response.getStatusString()); | |
120 | + } | |
121 | + }catch (Exception e){ | |
122 | + | |
123 | + } | |
124 | + | |
125 | + } | |
126 | + | |
127 | + private void insertSuccess(String deviceId , int customerId , String num , String name , String imgPath , int schoolId ,int userType){ | |
128 | + FaceSendsuccess send = new FaceSendsuccess(); | |
129 | + send.setDeviceid(deviceId); | |
130 | + send.setCustomerid(customerId+""); | |
131 | + send.setDevicetype(25); | |
132 | + send.setImgpath(imgPath); | |
133 | + send.setSchoolid(schoolId); | |
134 | + send.setUsertype(userType); | |
135 | + send.setName(name); | |
136 | + send.setNum(num); | |
137 | + xaFeign.insertFaceSuccess(send); | |
138 | + } | |
139 | + | |
140 | + private void insertFail(String deviceId , int customerId , String num , String name , String imgPath , int schoolId ,int userType , int failType ,String failContent){ | |
141 | + FaceSendfail send = new FaceSendfail(); | |
142 | + send.setDeviceid(deviceId); | |
143 | + send.setCustomerid(customerId+""); | |
144 | + send.setDevicetype(25); | |
145 | + send.setImgpath(imgPath); | |
146 | + send.setSchoolid(schoolId); | |
147 | + send.setUsertype(userType); | |
148 | + send.setName(name); | |
149 | + send.setNum(num); | |
150 | + send.setFailtype(failType); | |
151 | + send.setFailcontent(failContent); | |
152 | + xaFeign.insertFaceFail(send); | |
153 | + } | |
154 | + | |
52 | 155 | } | ... | ... |
cloud/lapi/src/main/java/com/sincere/lapi/service/request/TerminalHttpCall.java
... | ... | @@ -14,42 +14,31 @@ import java.net.URI; |
14 | 14 | import java.util.Map; |
15 | 15 | import java.util.concurrent.ConcurrentHashMap; |
16 | 16 | |
17 | +/** | |
18 | + * faceId == userType | |
19 | + */ | |
17 | 20 | @Component("terminalHttpCall") |
18 | 21 | public class TerminalHttpCall { |
19 | 22 | |
20 | 23 | |
21 | 24 | //设备号 对应 通道 |
22 | 25 | private Map<String, ChannelHandlerContext> channelMap = new ConcurrentHashMap<String, ChannelHandlerContext>(); |
23 | - | |
24 | 26 | //通道 对应 设备 |
25 | 27 | private Map<ChannelHandlerContext , String> channelCodeMap = new ConcurrentHashMap<ChannelHandlerContext , String>(); |
26 | - //key=deviceCode | |
27 | - private Map<String , LAPIResponse> responseMap = new ConcurrentHashMap<>(); | |
28 | - //设备刷脸时间 | |
29 | - private Map<String,String> device2TimeMap = new ConcurrentHashMap<>(); | |
30 | - | |
31 | - public void setDeviceTime(String deviceCode , String time){ | |
32 | - //给的是s 转ms | |
33 | - device2TimeMap.put(deviceCode,time+"000"); | |
34 | - } | |
35 | - | |
36 | - public String getDeviceTime(String deviceCode){ | |
37 | - String time = device2TimeMap.get(deviceCode); | |
38 | - device2TimeMap.remove(deviceCode); | |
39 | - return time ; | |
40 | - } | |
41 | - | |
42 | 28 | |
43 | - public void putResponse(String key , LAPIResponse lapiResponse){ | |
44 | - responseMap.put(key,lapiResponse); | |
45 | - } | |
29 | + //设备--上报数据 | |
30 | + private Map<String,StringBuffer> deviceDataMap = new ConcurrentHashMap<>(); | |
46 | 31 | |
47 | - public LAPIResponse getResponse(String key){ | |
48 | - return responseMap.get(key); | |
32 | + public void setDeviceDataMap(String deviceCode , StringBuffer data){ | |
33 | + deviceDataMap.put(deviceCode,data); | |
49 | 34 | } |
50 | 35 | |
51 | - public void removeKey(String key){ | |
52 | - responseMap.remove(key); | |
36 | + public StringBuffer getDeviceDataMap(String deviceCode){ | |
37 | + StringBuffer data = deviceDataMap.get(deviceCode); | |
38 | + if(data == null){ | |
39 | + data = new StringBuffer(); | |
40 | + } | |
41 | + return data ; | |
53 | 42 | } |
54 | 43 | |
55 | 44 | public void addChannel(String deviceCode , ChannelHandlerContext channelHandlerContext){ |
... | ... | @@ -73,11 +62,6 @@ public class TerminalHttpCall { |
73 | 62 | return add(deviceCode, UrlParam.person_add,personInfoList); |
74 | 63 | } |
75 | 64 | |
76 | - public boolean keepAlive(String deviceCode){ | |
77 | - return get(deviceCode,UrlParam.keep_alive); | |
78 | - } | |
79 | - | |
80 | - | |
81 | 65 | private <E> boolean put(String deviceCode , String prefixUrl) { |
82 | 66 | try { |
83 | 67 | URI url = new URI(prefixUrl); | ... | ... |
cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/UserController.java
1 | 1 | package com.sincere.smartSearch.controller; |
2 | 2 | |
3 | +import com.sincere.common.dto.smartCampus.CwStutemperaturereocrd; | |
3 | 4 | import com.sincere.common.dto.smartCampus.StudentBean; |
4 | 5 | import com.sincere.common.dto.smartCampus.SzVSchoolStudent; |
5 | 6 | import com.sincere.common.dto.smartCampus.SzVSchoolTeacher; |
6 | 7 | import com.sincere.smartSearch.service.UserService; |
7 | 8 | import org.springframework.beans.factory.annotation.Autowired; |
8 | -import org.springframework.web.bind.annotation.RequestMapping; | |
9 | -import org.springframework.web.bind.annotation.RequestMethod; | |
10 | -import org.springframework.web.bind.annotation.RequestParam; | |
11 | -import org.springframework.web.bind.annotation.RestController; | |
9 | +import org.springframework.web.bind.annotation.*; | |
12 | 10 | |
13 | 11 | import java.util.List; |
14 | 12 | |
... | ... | @@ -24,6 +22,11 @@ public class UserController { |
24 | 22 | @Autowired |
25 | 23 | UserService userService; |
26 | 24 | |
25 | + @RequestMapping(value = "insertTemperature",method = RequestMethod.POST) | |
26 | + int insertTemperature(@RequestBody CwStutemperaturereocrd record){ | |
27 | + return userService.insertTemperature(record); | |
28 | + } | |
29 | + | |
27 | 30 | @RequestMapping(value = "selectStudentNumByStudentId",method = RequestMethod.GET) |
28 | 31 | String selectStudentNumByStudentId(@RequestParam("studentId") int studentId){ |
29 | 32 | return userService.selectStudentNumByStudentId(studentId); | ... | ... |
cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/CwCheckMapper.java
0 → 100644
cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/CwStutemperaturereocrdMapper.java
0 → 100644
... | ... | @@ -0,0 +1,9 @@ |
1 | +package com.sincere.smartSearch.mapper; | |
2 | + | |
3 | +import com.sincere.common.dto.smartCampus.CwStutemperaturereocrd; | |
4 | + | |
5 | +public interface CwStutemperaturereocrdMapper { | |
6 | + int insert(CwStutemperaturereocrd record); | |
7 | + | |
8 | + int insertSelective(CwStutemperaturereocrd record); | |
9 | +} | |
0 | 10 | \ No newline at end of file | ... | ... |
cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/model/CwCheck.java
0 → 100644
... | ... | @@ -0,0 +1,85 @@ |
1 | +package com.sincere.smartSearch.model; | |
2 | + | |
3 | +import java.util.Date; | |
4 | + | |
5 | +public class CwCheck { | |
6 | + private Integer id; | |
7 | + | |
8 | + private String checkname; | |
9 | + | |
10 | + private String begintime; | |
11 | + | |
12 | + private String endtime; | |
13 | + | |
14 | + private Integer templateid; | |
15 | + | |
16 | + private Integer schoolid; | |
17 | + | |
18 | + private Integer state; | |
19 | + | |
20 | + private Date intime; | |
21 | + | |
22 | + public Integer getId() { | |
23 | + return id; | |
24 | + } | |
25 | + | |
26 | + public void setId(Integer id) { | |
27 | + this.id = id; | |
28 | + } | |
29 | + | |
30 | + public String getCheckname() { | |
31 | + return checkname; | |
32 | + } | |
33 | + | |
34 | + public void setCheckname(String checkname) { | |
35 | + this.checkname = checkname; | |
36 | + } | |
37 | + | |
38 | + public String getBegintime() { | |
39 | + return begintime; | |
40 | + } | |
41 | + | |
42 | + public void setBegintime(String begintime) { | |
43 | + this.begintime = begintime; | |
44 | + } | |
45 | + | |
46 | + public String getEndtime() { | |
47 | + return endtime; | |
48 | + } | |
49 | + | |
50 | + public void setEndtime(String endtime) { | |
51 | + this.endtime = endtime; | |
52 | + } | |
53 | + | |
54 | + public Integer getTemplateid() { | |
55 | + return templateid; | |
56 | + } | |
57 | + | |
58 | + public void setTemplateid(Integer templateid) { | |
59 | + this.templateid = templateid; | |
60 | + } | |
61 | + | |
62 | + public Integer getSchoolid() { | |
63 | + return schoolid; | |
64 | + } | |
65 | + | |
66 | + public void setSchoolid(Integer schoolid) { | |
67 | + this.schoolid = schoolid; | |
68 | + } | |
69 | + | |
70 | + public Integer getState() { | |
71 | + return state; | |
72 | + } | |
73 | + | |
74 | + public void setState(Integer state) { | |
75 | + this.state = state; | |
76 | + } | |
77 | + | |
78 | + public Date getIntime() { | |
79 | + return intime; | |
80 | + } | |
81 | + | |
82 | + public void setIntime(Date intime) { | |
83 | + this.intime = intime; | |
84 | + } | |
85 | +} | |
0 | 86 | \ No newline at end of file | ... | ... |
cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/UserService.java
1 | 1 | package com.sincere.smartSearch.service; |
2 | 2 | |
3 | +import com.sincere.common.dto.smartCampus.CwStutemperaturereocrd; | |
3 | 4 | import com.sincere.common.dto.smartCampus.StudentBean; |
4 | 5 | import com.sincere.common.dto.smartCampus.SzVSchoolStudent; |
5 | 6 | import com.sincere.common.dto.smartCampus.SzVSchoolTeacher; |
... | ... | @@ -27,4 +28,6 @@ public interface UserService { |
27 | 28 | |
28 | 29 | SzVSchoolStudent selectByStudentId(int studentId); |
29 | 30 | |
31 | + int insertTemperature(CwStutemperaturereocrd record); | |
32 | + | |
30 | 33 | } | ... | ... |
cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/UserServiceImpl.java
1 | 1 | package com.sincere.smartSearch.service.impl; |
2 | 2 | |
3 | +import com.sincere.common.dto.smartCampus.CwStutemperaturereocrd; | |
3 | 4 | import com.sincere.common.dto.smartCampus.SzVSchoolStudent; |
4 | 5 | import com.sincere.common.dto.smartCampus.SzVSchoolTeacher; |
5 | -import com.sincere.smartSearch.mapper.SzVSchoolStudentMapper; | |
6 | -import com.sincere.smartSearch.mapper.SzVSchoolTeacherMapper; | |
7 | -import com.sincere.smartSearch.mapper.UserMapper; | |
6 | +import com.sincere.common.util.DateUtils; | |
7 | +import com.sincere.smartSearch.mapper.*; | |
8 | 8 | import com.sincere.common.dto.smartCampus.StudentBean; |
9 | +import com.sincere.smartSearch.model.CwCheck; | |
9 | 10 | import com.sincere.smartSearch.service.UserService; |
10 | 11 | import org.springframework.beans.factory.annotation.Autowired; |
11 | 12 | import org.springframework.stereotype.Service; |
12 | 13 | |
14 | +import java.util.Date; | |
13 | 15 | import java.util.List; |
14 | 16 | |
15 | 17 | /** |
... | ... | @@ -29,6 +31,12 @@ public class UserServiceImpl implements UserService { |
29 | 31 | @Autowired |
30 | 32 | SzVSchoolTeacherMapper szVSchoolTeacherMapper; |
31 | 33 | |
34 | + @Autowired | |
35 | + CwStutemperaturereocrdMapper cwStutemperaturereocrdMapper ; | |
36 | + | |
37 | + @Autowired | |
38 | + CwCheckMapper cwCheckMapper; | |
39 | + | |
32 | 40 | @Override |
33 | 41 | public String selectStudentNumByStudentId(int studentId) { |
34 | 42 | return userMapper.selectStudentNumByStudentId(studentId); |
... | ... | @@ -65,4 +73,24 @@ public class UserServiceImpl implements UserService { |
65 | 73 | public SzVSchoolStudent selectByStudentId(int studentId) { |
66 | 74 | return szVSchoolStudentMapper.selectByStudentId(studentId); |
67 | 75 | } |
76 | + | |
77 | + @Override | |
78 | + public int insertTemperature(CwStutemperaturereocrd record) { | |
79 | + List<CwCheck> list = cwCheckMapper.selectBySchoolId(record.getSchoolid()); | |
80 | + try{ | |
81 | + String today = DateUtils.getToday(DateUtils.format1); | |
82 | + record.setType(1); | |
83 | + for(CwCheck cwCheck : list){ | |
84 | + Date begin = DateUtils.string2Date(today+cwCheck.getBegintime()+":00",DateUtils.format2); | |
85 | + Date end = DateUtils.string2Date(today+cwCheck.getEndtime()+":00",DateUtils.format2); | |
86 | + if(end.compareTo(record.getIntime()) > 1 && record.getIntime().compareTo(begin) > 1){ | |
87 | + record.setType(cwCheck.getCheckname().equals("晨检")?1:2); | |
88 | + } | |
89 | + } | |
90 | + return cwStutemperaturereocrdMapper.insert(record); | |
91 | + }catch (Exception e){ | |
92 | + | |
93 | + } | |
94 | + return 0 ; | |
95 | + } | |
68 | 96 | } | ... | ... |
cloud/search_smartCampus/src/main/resources/mapper/CwCheckMapper.xml
0 → 100644
... | ... | @@ -0,0 +1,18 @@ |
1 | +<?xml version="1.0" encoding="UTF-8"?> | |
2 | +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |
3 | +<mapper namespace="com.sincere.smartSearch.mapper.CwCheckMapper"> | |
4 | + <resultMap id="BaseResultMap" type="com.sincere.smartSearch.model.CwCheck"> | |
5 | + <result column="ID" jdbcType="INTEGER" property="id" /> | |
6 | + <result column="CheckName" jdbcType="VARCHAR" property="checkname" /> | |
7 | + <result column="BeginTime" jdbcType="VARCHAR" property="begintime" /> | |
8 | + <result column="EndTime" jdbcType="VARCHAR" property="endtime" /> | |
9 | + <result column="TemplateId" jdbcType="INTEGER" property="templateid" /> | |
10 | + <result column="SchoolId" jdbcType="INTEGER" property="schoolid" /> | |
11 | + <result column="State" jdbcType="INTEGER" property="state" /> | |
12 | + <result column="Intime" jdbcType="TIMESTAMP" property="intime" /> | |
13 | + </resultMap> | |
14 | + | |
15 | + <select id="selectBySchoolId" parameterType="java.lang.Integer" resultMap="BaseResultMap"> | |
16 | + select * from CW_Check where SchoolId =#{schoolId} and state = 1 | |
17 | + </select> | |
18 | +</mapper> | |
0 | 19 | \ No newline at end of file | ... | ... |
cloud/search_smartCampus/src/main/resources/mapper/CwStutemperaturereocrdMapper.xml
0 → 100644
... | ... | @@ -0,0 +1,93 @@ |
1 | +<?xml version="1.0" encoding="UTF-8"?> | |
2 | +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |
3 | +<mapper namespace="com.sincere.smartSearch.mapper.CwStutemperaturereocrdMapper"> | |
4 | + <resultMap id="BaseResultMap" type="com.sincere.common.dto.smartCampus.CwStutemperaturereocrd"> | |
5 | + <result column="Id" jdbcType="INTEGER" property="id" /> | |
6 | + <result column="UserId" jdbcType="VARCHAR" property="userid" /> | |
7 | + <result column="StudentId" jdbcType="INTEGER" property="studentid" /> | |
8 | + <result column="Name" jdbcType="VARCHAR" property="name" /> | |
9 | + <result column="ClassId" jdbcType="INTEGER" property="classid" /> | |
10 | + <result column="ClassName" jdbcType="VARCHAR" property="classname" /> | |
11 | + <result column="Temperature" jdbcType="DECIMAL" property="temperature" /> | |
12 | + <result column="Type" jdbcType="INTEGER" property="type" /> | |
13 | + <result column="SchoolId" jdbcType="INTEGER" property="schoolid" /> | |
14 | + <result column="Intime" jdbcType="TIMESTAMP" property="intime" /> | |
15 | + </resultMap> | |
16 | + <insert id="insert" parameterType="com.sincere.common.dto.smartCampus.CwStutemperaturereocrd"> | |
17 | + insert into CW_StuTemperatureReocrd ( UserId, StudentId, | |
18 | + Name, ClassId, ClassName, | |
19 | + Temperature, Type, SchoolId, | |
20 | + Intime) | |
21 | + values ( #{userid,jdbcType=VARCHAR}, #{studentid,jdbcType=INTEGER}, | |
22 | + #{name,jdbcType=VARCHAR}, #{classid,jdbcType=INTEGER}, #{classname,jdbcType=VARCHAR}, | |
23 | + #{temperature,jdbcType=DECIMAL}, #{type,jdbcType=INTEGER}, #{schoolid,jdbcType=INTEGER}, | |
24 | + #{intime,jdbcType=TIMESTAMP}) | |
25 | + </insert> | |
26 | + <insert id="insertSelective" parameterType="com.sincere.common.dto.smartCampus.CwStutemperaturereocrd"> | |
27 | + insert into CW_StuTemperatureReocrd | |
28 | + <trim prefix="(" suffix=")" suffixOverrides=","> | |
29 | + <if test="id != null"> | |
30 | + Id, | |
31 | + </if> | |
32 | + <if test="userid != null"> | |
33 | + UserId, | |
34 | + </if> | |
35 | + <if test="studentid != null"> | |
36 | + StudentId, | |
37 | + </if> | |
38 | + <if test="name != null"> | |
39 | + Name, | |
40 | + </if> | |
41 | + <if test="classid != null"> | |
42 | + ClassId, | |
43 | + </if> | |
44 | + <if test="classname != null"> | |
45 | + ClassName, | |
46 | + </if> | |
47 | + <if test="temperature != null"> | |
48 | + Temperature, | |
49 | + </if> | |
50 | + <if test="type != null"> | |
51 | + Type, | |
52 | + </if> | |
53 | + <if test="schoolid != null"> | |
54 | + SchoolId, | |
55 | + </if> | |
56 | + <if test="intime != null"> | |
57 | + Intime, | |
58 | + </if> | |
59 | + </trim> | |
60 | + <trim prefix="values (" suffix=")" suffixOverrides=","> | |
61 | + <if test="id != null"> | |
62 | + #{id,jdbcType=INTEGER}, | |
63 | + </if> | |
64 | + <if test="userid != null"> | |
65 | + #{userid,jdbcType=VARCHAR}, | |
66 | + </if> | |
67 | + <if test="studentid != null"> | |
68 | + #{studentid,jdbcType=INTEGER}, | |
69 | + </if> | |
70 | + <if test="name != null"> | |
71 | + #{name,jdbcType=VARCHAR}, | |
72 | + </if> | |
73 | + <if test="classid != null"> | |
74 | + #{classid,jdbcType=INTEGER}, | |
75 | + </if> | |
76 | + <if test="classname != null"> | |
77 | + #{classname,jdbcType=VARCHAR}, | |
78 | + </if> | |
79 | + <if test="temperature != null"> | |
80 | + #{temperature,jdbcType=DECIMAL}, | |
81 | + </if> | |
82 | + <if test="type != null"> | |
83 | + #{type,jdbcType=INTEGER}, | |
84 | + </if> | |
85 | + <if test="schoolid != null"> | |
86 | + #{schoolid,jdbcType=INTEGER}, | |
87 | + </if> | |
88 | + <if test="intime != null"> | |
89 | + #{intime,jdbcType=TIMESTAMP}, | |
90 | + </if> | |
91 | + </trim> | |
92 | + </insert> | |
93 | +</mapper> | |
0 | 94 | \ No newline at end of file | ... | ... |