From 124aa27a05ba9e93f32547982e6a3e08330b2ef7 Mon Sep 17 00:00:00 2001 From: 陈杰 <504987307@qq.com> Date: Fri, 10 Apr 2020 11:50:48 +0800 Subject: [PATCH] 体温上传 博冠人脸 --- cloud/common/src/main/java/com/sincere/common/dto/smartCampus/CwStutemperaturereocrd.java | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/lapi/src/main/java/com/sincere/lapi/controller/LapiController.java | 109 ++++++------------------------------------------------------------------------------------------------------- cloud/lapi/src/main/java/com/sincere/lapi/feign/ScFeign.java | 4 ++++ cloud/lapi/src/main/java/com/sincere/lapi/server/handler/HttpClientHandler.java | 66 ++++++++++++++++++++++++++++++++++++++++++++++-------------------- cloud/lapi/src/main/java/com/sincere/lapi/service/request/AttendanceService.java | 123 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------- cloud/lapi/src/main/java/com/sincere/lapi/service/request/TerminalHttpCall.java | 42 +++++++++++++----------------------------- cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/UserController.java | 11 +++++++---- cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/CwCheckMapper.java | 10 ++++++++++ cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/CwStutemperaturereocrdMapper.java | 9 +++++++++ cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/model/CwCheck.java | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/UserService.java | 3 +++ cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/UserServiceImpl.java | 34 +++++++++++++++++++++++++++++++--- cloud/search_smartCampus/src/main/resources/mapper/CwCheckMapper.xml | 18 ++++++++++++++++++ cloud/search_smartCampus/src/main/resources/mapper/CwStutemperaturereocrdMapper.xml | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 14 files changed, 544 insertions(+), 169 deletions(-) create mode 100644 cloud/common/src/main/java/com/sincere/common/dto/smartCampus/CwStutemperaturereocrd.java create mode 100644 cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/CwCheckMapper.java create mode 100644 cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/CwStutemperaturereocrdMapper.java create mode 100644 cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/model/CwCheck.java create mode 100644 cloud/search_smartCampus/src/main/resources/mapper/CwCheckMapper.xml create mode 100644 cloud/search_smartCampus/src/main/resources/mapper/CwStutemperaturereocrdMapper.xml diff --git a/cloud/common/src/main/java/com/sincere/common/dto/smartCampus/CwStutemperaturereocrd.java b/cloud/common/src/main/java/com/sincere/common/dto/smartCampus/CwStutemperaturereocrd.java new file mode 100644 index 0000000..7e77596 --- /dev/null +++ b/cloud/common/src/main/java/com/sincere/common/dto/smartCampus/CwStutemperaturereocrd.java @@ -0,0 +1,106 @@ +package com.sincere.common.dto.smartCampus; + +import java.math.BigDecimal; +import java.util.Date; + +public class CwStutemperaturereocrd { + private Integer id; + + private String userid; + + private Integer studentid; + + private String name; + + private Integer classid; + + private String classname; + + private BigDecimal temperature; + + private Integer type; + + private Integer schoolid; + + private Date intime; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getUserid() { + return userid; + } + + public void setUserid(String userid) { + this.userid = userid; + } + + public Integer getStudentid() { + return studentid; + } + + public void setStudentid(Integer studentid) { + this.studentid = studentid; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getClassid() { + return classid; + } + + public void setClassid(Integer classid) { + this.classid = classid; + } + + public String getClassname() { + return classname; + } + + public void setClassname(String classname) { + this.classname = classname; + } + + public BigDecimal getTemperature() { + return temperature; + } + + public void setTemperature(BigDecimal temperature) { + this.temperature = temperature; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public Integer getSchoolid() { + return schoolid; + } + + public void setSchoolid(Integer schoolid) { + this.schoolid = schoolid; + } + + public Date getIntime() { + return intime; + } + + public void setIntime(Date intime) { + this.intime = intime; + } +} \ No newline at end of file diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/controller/LapiController.java b/cloud/lapi/src/main/java/com/sincere/lapi/controller/LapiController.java index 758d21f..e94c4b4 100644 --- a/cloud/lapi/src/main/java/com/sincere/lapi/controller/LapiController.java +++ b/cloud/lapi/src/main/java/com/sincere/lapi/controller/LapiController.java @@ -1,11 +1,7 @@ package com.sincere.lapi.controller; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; import com.sincere.common.dto.smartCampus.SzVSchoolStudent; import com.sincere.common.dto.smartCampus.SzVSchoolTeacher; -import com.sincere.common.dto.xiaoan.FaceSendfail; -import com.sincere.common.dto.xiaoan.FaceSendsuccess; import com.sincere.lapi.Utils.FileUtils; import com.sincere.lapi.feign.ScFeign; import com.sincere.lapi.feign.XaFeign; @@ -39,21 +35,6 @@ public class LapiController { @Autowired TerminalHttpCall terminalHttpCall = new TerminalHttpCall(); - - private static Map resultCodeMap = new HashMap<>(); - - static { - resultCodeMap.put(1,"通用执行失败"); - resultCodeMap.put(2,"初始化检测失败"); - resultCodeMap.put(3,"人脸检测失败"); - resultCodeMap.put(4,"图片未检测到人脸"); - resultCodeMap.put(5,"jpeg 照片解码失败"); - resultCodeMap.put(6,"人脸图片质量分数不满足"); - resultCodeMap.put(7,"图片缩放失败"); - resultCodeMap.put(8,"未启用智能"); - resultCodeMap.put(9,"图片不存在或过大/过小"); - } - /** * 下发整个学校 * @param deviceIds 多个设备用,隔开 @@ -114,27 +95,7 @@ public class LapiController { } private void sendStudent(SzVSchoolStudent student , String deviceId){ - try{ - LAPIResponse response = sendImg(Long.valueOf(student.getStudentId()),student.getName(),student.getStudentNum(),student.getPhoto(),deviceId); - terminalHttpCall.removeKey(deviceId); - if(response.getStatusString().equals("Succeed")){ - JSONObject data = JSONObject.parseObject(response.getData()); - JSONArray personList = (JSONArray)data.get("PersonList") ; - JSONArray faceList = (JSONArray) ((JSONObject)personList.get(0)).get("FaceList"); - JSONObject face = (JSONObject) faceList.get(0); - if((Integer) face.get("ResultCode") == 0){ - insertSuccess(deviceId,student.getStudentId(),student.getStudentNum(),student.getName(),student.getPhoto(),student.getSchoolId(),2); - }else { - Integer code = (Integer) face.get("ResultCode") ; - insertFail(deviceId,student.getStudentId(),student.getStudentNum(),student.getName(),student.getPhoto(),student.getSchoolId(),2,code,resultCodeMap.get(code)); - } - }else { - insertFail(deviceId,student.getStudentId(),student.getStudentNum(),student.getName(),student.getPhoto(),student.getSchoolId(),2,response.getStatusCode(),response.getStatusString()); - } - }catch (Exception e){ - e.printStackTrace(); - } - + sendImg(Long.valueOf(student.getStudentId()),student.getName(),student.getStudentNum(),student.getPhoto(),deviceId,2); } private void sendTeacherBatch( List list , String deviceId){ @@ -146,31 +107,11 @@ public class LapiController { } private void sendTeacher(SzVSchoolTeacher teacher , String deviceId){ - try{ - LAPIResponse response = sendImg(Long.valueOf(teacher.getTeacherId()),teacher.getName(),teacher.getTeacherNum(),teacher.getFace(),deviceId); - terminalHttpCall.removeKey(deviceId); - if(response.getStatusString().equals("Succeed")){ - JSONObject data = JSONObject.parseObject(response.getData()); - JSONArray personList = (JSONArray)data.get("PersonList") ; - JSONArray faceList = (JSONArray) ((JSONObject)personList.get(0)).get("FaceList"); - JSONObject face = (JSONObject) faceList.get(0); - if((Integer) face.get("ResultCode") == 0){ - insertSuccess(deviceId,teacher.getTeacherId(),teacher.getTeacherNum(),teacher.getName(),teacher.getFace(),teacher.getSchoolId(),1); - }else { - Integer code = (Integer) face.get("ResultCode") ; - insertFail(deviceId,teacher.getTeacherId(),teacher.getTeacherNum(),teacher.getName(),teacher.getFace(),teacher.getSchoolId(),1,code,resultCodeMap.get(code)); - } - }else { - insertFail(deviceId,teacher.getTeacherId(),teacher.getTeacherNum(),teacher.getName(),teacher.getFace(),teacher.getSchoolId(),1,response.getStatusCode(),response.getStatusString()); - } - }catch (Exception e){ - e.printStackTrace(); - } + sendImg(Long.valueOf(teacher.getTeacherId()),teacher.getName(),teacher.getTeacherNum(),teacher.getFace(),deviceId,1); } - private LAPIResponse sendImg(long personId , String name , String code , String fileUrl , String deviceId){ - LAPIResponse response = new LAPIResponse() ; + private void sendImg(long personId , String name , String code , String fileUrl , String deviceId , int userType){ PersonInfoList personInfoList = new PersonInfoList(); List list1 = new ArrayList(); personInfoList.setPersonInfoList(list1); @@ -203,27 +144,16 @@ public class LapiController { String picture = new BASE64Encoder().encode(FileUtils.getBytes(fileUrl)); picture = picture.replaceAll("\n", "").replaceAll("\r", ""); personImageInfo.setData(picture); - personImageInfo.setFaceID(1L); + personImageInfo.setFaceID(Long.valueOf(userType)); //personImageInfo.setName("1.jpg"); personImageInfo.setSize(picture.length()); imageList.add(personImageInfo); personInfo.setImageList(imageList); personInfo.setImageNum(imageList.size()); terminalHttpCall.addPerson(deviceId, personInfoList); - - Thread.sleep(2000); - try{ - response = terminalHttpCall.getResponse(deviceId); - response.getStatusString(); - }catch (Exception e){ - Thread.sleep(5000); - response = terminalHttpCall.getResponse(deviceId); - } - } catch(Exception e) { - System.out.println("下发失败"+e.getMessage()); + System.out.println(e.getMessage()); } - return response ; } @@ -243,31 +173,4 @@ public class LapiController { } } - private void insertSuccess(String deviceId , int customerId , String num , String name , String imgPath , int schoolId ,int userType){ - FaceSendsuccess send = new FaceSendsuccess(); - send.setDeviceid(deviceId); - send.setCustomerid(customerId+""); - send.setDevicetype(25); - send.setImgpath(imgPath); - send.setSchoolid(schoolId); - send.setUsertype(userType); - send.setName(name); - send.setNum(num); - xaFeign.insertFaceSuccess(send); - } - - private void insertFail(String deviceId , int customerId , String num , String name , String imgPath , int schoolId ,int userType , int failType ,String failContent){ - FaceSendfail send = new FaceSendfail(); - send.setDeviceid(deviceId); - send.setCustomerid(customerId+""); - send.setDevicetype(25); - send.setImgpath(imgPath); - send.setSchoolid(schoolId); - send.setUsertype(userType); - send.setName(name); - send.setNum(num); - send.setFailtype(failType); - send.setFailcontent(failContent); - xaFeign.insertFaceFail(send); - } -} + } diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/feign/ScFeign.java b/cloud/lapi/src/main/java/com/sincere/lapi/feign/ScFeign.java index 727d5f7..985f9b9 100644 --- a/cloud/lapi/src/main/java/com/sincere/lapi/feign/ScFeign.java +++ b/cloud/lapi/src/main/java/com/sincere/lapi/feign/ScFeign.java @@ -1,5 +1,6 @@ package com.sincere.lapi.feign; +import com.sincere.common.dto.smartCampus.CwStutemperaturereocrd; import com.sincere.common.dto.smartCampus.SZ_AttendanceDto; import com.sincere.common.dto.smartCampus.SzVSchoolStudent; import com.sincere.common.dto.smartCampus.SzVSchoolTeacher; @@ -19,6 +20,9 @@ import java.util.List; @FeignClient("smartCampusSearch") public interface ScFeign { + @RequestMapping(value = "/sm/user/insertTemperature",method = RequestMethod.POST) + int insertTemperature(@RequestBody CwStutemperaturereocrd record); + @RequestMapping(value = "/attendance/addAttendance", method = RequestMethod.POST) void addAttendance(@RequestBody SZ_AttendanceDto attendanceDto); diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/server/handler/HttpClientHandler.java b/cloud/lapi/src/main/java/com/sincere/lapi/server/handler/HttpClientHandler.java index 163a592..dc33d49 100644 --- a/cloud/lapi/src/main/java/com/sincere/lapi/server/handler/HttpClientHandler.java +++ b/cloud/lapi/src/main/java/com/sincere/lapi/server/handler/HttpClientHandler.java @@ -1,5 +1,6 @@ package com.sincere.lapi.server.handler; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.sincere.common.util.DateUtils; import com.sincere.lapi.Utils.SpringContextHolder; @@ -20,6 +21,7 @@ import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.Date; @@ -36,36 +38,60 @@ public class HttpClientHandler extends ChannelInboundHandlerAdapter { AttendanceService attendanceService = SpringContextHolder.getAttendanceService(); String content = (String) msg; logger.info(content); + //心跳 更新设备 if (content.contains("/LAPI/V1.0/PACS/Controller/HeartReportInfo")) { HeartInfo heartInfo = JSONObject.parseObject(getJson(content),HeartInfo.class); call.addChannel(heartInfo.getDeviceCode(),ctx); attendanceService.addAttendance(heartInfo.getDeviceCode()); - } - // 记录推送 - if (content.contains("/LAPI/V1.0/System/Event/Notification/PersonVerification")) { - String faceInfo = content.substring(content.indexOf("FaceInfoList")); - String timeInfo = faceInfo.substring(faceInfo.indexOf("Timestamp")); - String time = timeInfo.substring(11,timeInfo.indexOf(",")).trim(); - String deviceString = content.substring(content.indexOf("DeviceCode")); - String deviceCode = deviceString.substring(15,deviceString.indexOf(",")); - deviceCode = deviceCode.substring(0,deviceCode.length()-1); - call.setDeviceTime(deviceCode,time); - }else if (StringUtils.contains(content, "Response")) { - LAPIResponse lapiResponse = JSONObject.parseObject(content, LAPI.class).getResponse(); - if(lapiResponse.getResponseUrl().equals(UrlParam.person_add)){ - //人脸添加 - call.putResponse(call.getDeviceCodeByChannel(ctx),lapiResponse); + }else if (content.contains("Response")) { + try{ + LAPIResponse lapiResponse = JSONObject.parseObject(content.substring(content.indexOf("{")), LAPI.class).getResponse(); + if(lapiResponse.getResponseUrl().equals(UrlParam.person_add)){ + attendanceService.insertSend(lapiResponse,call.getDeviceCodeByChannel(ctx)); + } + }catch (Exception e){ } - }else if(content.contains("MatchPersonID")){ - String personIdString = content.substring(content.indexOf("MatchPersonID")); - String personId = personIdString.substring(15,personIdString.indexOf(",")).trim(); + }else { String deviceCode = call.getDeviceCodeByChannel(ctx); - String time = call.getDeviceTime(deviceCode); - attendanceService.insertRecode(personId,deviceCode,time); + if(content.contains("Content-Type")){ + //第一个包-- 则对之前数据进行处理 + StringBuffer data = call.getDeviceDataMap(deviceCode); + handleData(attendanceService,deviceCode,data.toString()); + //数据放入map中 + data = new StringBuffer(); + data.append(content); + call.setDeviceDataMap(deviceCode,data); + }else { + //分包数据 连接 + StringBuffer data = call.getDeviceDataMap(deviceCode); + data.append(content); + call.setDeviceDataMap(deviceCode,data); + } } ctx.flush(); } + public void handleData(AttendanceService attendanceService, + String deviceCode , String data){ + if (data.contains("/LAPI/V1.0/System/Event/Notification/PersonVerification")) { + try{ + data = data.substring(data.indexOf("{")); + JSONObject object = JSONObject.parseObject(data); + int timestamp = (Integer) object.get("Timestamp"); + JSONArray faceInfoList = (JSONArray) object.get("FaceInfoList"); + JSONObject faceInfo = faceInfoList.getJSONObject(0); + BigDecimal temperature = (BigDecimal) faceInfo.get("Temperature"); + JSONArray libMatInfoList = (JSONArray)object.get("LibMatInfoList"); + JSONObject person = libMatInfoList.getJSONObject(0); + int personId = (Integer) person.get("MatchPersonID") ; + int userType = (Integer) person.get("MatchFaceID"); + attendanceService.insertRecode(personId+"",deviceCode,timestamp+"000",temperature,userType); + }catch (Exception e){ + e.printStackTrace(); + } + } + } + public String getJson(String context){ String msg = context.substring(context.indexOf("{"),context.indexOf("}")+1); return msg ; diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/service/request/AttendanceService.java b/cloud/lapi/src/main/java/com/sincere/lapi/service/request/AttendanceService.java index 8021fa1..b25e8c6 100644 --- a/cloud/lapi/src/main/java/com/sincere/lapi/service/request/AttendanceService.java +++ b/cloud/lapi/src/main/java/com/sincere/lapi/service/request/AttendanceService.java @@ -1,15 +1,25 @@ package com.sincere.lapi.service.request; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.sincere.common.dto.smartCampus.CwStutemperaturereocrd; import com.sincere.common.dto.smartCampus.SZ_AttendanceDto; import com.sincere.common.dto.smartCampus.SzVSchoolStudent; import com.sincere.common.dto.smartCampus.SzVSchoolTeacher; import com.sincere.common.dto.xiaoan.FaceRecoder; +import com.sincere.common.dto.xiaoan.FaceSendfail; +import com.sincere.common.dto.xiaoan.FaceSendsuccess; import com.sincere.common.util.DateUtils; import com.sincere.lapi.feign.ScFeign; import com.sincere.lapi.feign.XaFeign; +import com.sincere.lapi.pojo.LAPIResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.Map; + @Service("attendanceService") public class AttendanceService { @@ -19,6 +29,20 @@ public class AttendanceService { @Autowired XaFeign xaFeign ; + private static Map resultCodeMap = new HashMap<>(); + + static { + resultCodeMap.put(1,"通用执行失败"); + resultCodeMap.put(2,"初始化检测失败"); + resultCodeMap.put(3,"人脸检测失败"); + resultCodeMap.put(4,"图片未检测到人脸"); + resultCodeMap.put(5,"jpeg 照片解码失败"); + resultCodeMap.put(6,"人脸图片质量分数不满足"); + resultCodeMap.put(7,"图片缩放失败"); + resultCodeMap.put(8,"未启用智能"); + resultCodeMap.put(9,"图片不存在或过大/过小"); + } + public void addAttendance(String clientId){ SZ_AttendanceDto dto = new SZ_AttendanceDto(); dto.setClint_id(clientId); @@ -26,27 +50,106 @@ public class AttendanceService { scFeign.addAttendance(dto); } - - public void insertRecode(String customerId , String deviceCode , String time){ + public void insertRecode(String customerId , String deviceCode , String time , BigDecimal temperature ,int userType){ + //1 老师 2 学生 SZ_AttendanceDto attendanceDto = scFeign.selectAttendaceWithId(deviceCode); FaceRecoder faceRecoder = new FaceRecoder(); faceRecoder.setDeviceid(deviceCode); faceRecoder.setInorout(attendanceDto.getOutOrIn()); faceRecoder.setTime(DateUtils.getByLong(time)); - SzVSchoolTeacher teacher = scFeign.selectByTeacherId(Integer.valueOf(customerId)); - if(teacher == null){ - SzVSchoolStudent student = scFeign.selectByStudentId(Integer.valueOf(customerId)); - faceRecoder.setName(student.getName()); - faceRecoder.setImgurl(student.getPhoto()); - faceRecoder.setUserId(customerId); - faceRecoder.setCardnum(student.getStudentNum()); - }else { + if(userType == 1){ + SzVSchoolTeacher teacher = scFeign.selectByTeacherId(Integer.valueOf(customerId)); faceRecoder.setCardnum(teacher.getTeacherNum()); faceRecoder.setUserId(customerId); faceRecoder.setImgurl(teacher.getFace()); faceRecoder.setName(teacher.getName()); + }else { + SzVSchoolStudent student = scFeign.selectByStudentId(Integer.valueOf(customerId)); + faceRecoder.setName(student.getName()); + faceRecoder.setImgurl(student.getPhoto()); + faceRecoder.setUserId(customerId); + faceRecoder.setCardnum(student.getStudentNum()); + CwStutemperaturereocrd record = new CwStutemperaturereocrd(); + record.setClassid(student.getClassId()); + record.setClassname(student.getClassName()); + record.setIntime(DateUtils.getByLong(time)); + record.setName(student.getName()); + record.setStudentid(student.getStudentId()); + record.setTemperature(temperature); + record.setUserid(student.getUserId()); + record.setSchoolid(student.getSchoolId()); + scFeign.insertTemperature(record); } xaFeign.insertRecode(faceRecoder); } + public void insertSend(LAPIResponse response , String deviceCode){ + try{ + if(response.getStatusString().equals("Succeed")){ + JSONObject data = JSONObject.parseObject(response.getData()); + JSONArray personList = (JSONArray)data.get("PersonList") ; + JSONObject person = (JSONObject)personList.get(0) ; + int personId = (Integer) person.get("PersonID"); + + JSONArray faceList = (JSONArray) person.get("FaceList"); + JSONObject face = (JSONObject) faceList.get(0); + int code = (Integer) face.get("ResultCode") ; + int userType = (Integer)face.get("FaceID"); + String num , photo , name ; + int schoolId ; + if(userType == 1){ + SzVSchoolTeacher teacher = scFeign.selectByTeacherId(personId); + num = teacher.getTeacherNum(); + photo = teacher.getFace(); + name = teacher.getName(); + schoolId = teacher.getSchoolId(); + }else { + SzVSchoolStudent student = scFeign.selectByStudentId(personId); + num = student.getStudentNum(); + photo = student.getPhoto() ; + name = student.getName(); + schoolId = student.getSchoolId(); + } + if(code == 0){ + insertSuccess(deviceCode,personId,num,name,photo,schoolId,userType); + }else { + insertFail(deviceCode,personId,num,name,photo,schoolId,userType,code,resultCodeMap.get(code)); + } + }else { + // insertFail(deviceCode,teacher.getTeacherId(),teacher.getTeacherNum(),teacher.getName(),teacher.getFace(),teacher.getSchoolId(),1,response.getStatusCode(),response.getStatusString()); + } + }catch (Exception e){ + + } + + } + + private void insertSuccess(String deviceId , int customerId , String num , String name , String imgPath , int schoolId ,int userType){ + FaceSendsuccess send = new FaceSendsuccess(); + send.setDeviceid(deviceId); + send.setCustomerid(customerId+""); + send.setDevicetype(25); + send.setImgpath(imgPath); + send.setSchoolid(schoolId); + send.setUsertype(userType); + send.setName(name); + send.setNum(num); + xaFeign.insertFaceSuccess(send); + } + + private void insertFail(String deviceId , int customerId , String num , String name , String imgPath , int schoolId ,int userType , int failType ,String failContent){ + FaceSendfail send = new FaceSendfail(); + send.setDeviceid(deviceId); + send.setCustomerid(customerId+""); + send.setDevicetype(25); + send.setImgpath(imgPath); + send.setSchoolid(schoolId); + send.setUsertype(userType); + send.setName(name); + send.setNum(num); + send.setFailtype(failType); + send.setFailcontent(failContent); + xaFeign.insertFaceFail(send); + } + } diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/service/request/TerminalHttpCall.java b/cloud/lapi/src/main/java/com/sincere/lapi/service/request/TerminalHttpCall.java index b3a0496..58a066d 100644 --- a/cloud/lapi/src/main/java/com/sincere/lapi/service/request/TerminalHttpCall.java +++ b/cloud/lapi/src/main/java/com/sincere/lapi/service/request/TerminalHttpCall.java @@ -14,42 +14,31 @@ import java.net.URI; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +/** + * faceId == userType + */ @Component("terminalHttpCall") public class TerminalHttpCall { //设备号 对应 通道 private Map channelMap = new ConcurrentHashMap(); - //通道 对应 设备 private Map channelCodeMap = new ConcurrentHashMap(); - //key=deviceCode - private Map responseMap = new ConcurrentHashMap<>(); - //设备刷脸时间 - private Map device2TimeMap = new ConcurrentHashMap<>(); - - public void setDeviceTime(String deviceCode , String time){ - //给的是s 转ms - device2TimeMap.put(deviceCode,time+"000"); - } - - public String getDeviceTime(String deviceCode){ - String time = device2TimeMap.get(deviceCode); - device2TimeMap.remove(deviceCode); - return time ; - } - - public void putResponse(String key , LAPIResponse lapiResponse){ - responseMap.put(key,lapiResponse); - } + //设备--上报数据 + private Map deviceDataMap = new ConcurrentHashMap<>(); - public LAPIResponse getResponse(String key){ - return responseMap.get(key); + public void setDeviceDataMap(String deviceCode , StringBuffer data){ + deviceDataMap.put(deviceCode,data); } - public void removeKey(String key){ - responseMap.remove(key); + public StringBuffer getDeviceDataMap(String deviceCode){ + StringBuffer data = deviceDataMap.get(deviceCode); + if(data == null){ + data = new StringBuffer(); + } + return data ; } public void addChannel(String deviceCode , ChannelHandlerContext channelHandlerContext){ @@ -73,11 +62,6 @@ public class TerminalHttpCall { return add(deviceCode, UrlParam.person_add,personInfoList); } - public boolean keepAlive(String deviceCode){ - return get(deviceCode,UrlParam.keep_alive); - } - - private boolean put(String deviceCode , String prefixUrl) { try { URI url = new URI(prefixUrl); diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/UserController.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/UserController.java index 5b095ba..d3b7d9d 100644 --- a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/UserController.java +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/UserController.java @@ -1,14 +1,12 @@ package com.sincere.smartSearch.controller; +import com.sincere.common.dto.smartCampus.CwStutemperaturereocrd; import com.sincere.common.dto.smartCampus.StudentBean; import com.sincere.common.dto.smartCampus.SzVSchoolStudent; import com.sincere.common.dto.smartCampus.SzVSchoolTeacher; import com.sincere.smartSearch.service.UserService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -24,6 +22,11 @@ public class UserController { @Autowired UserService userService; + @RequestMapping(value = "insertTemperature",method = RequestMethod.POST) + int insertTemperature(@RequestBody CwStutemperaturereocrd record){ + return userService.insertTemperature(record); + } + @RequestMapping(value = "selectStudentNumByStudentId",method = RequestMethod.GET) String selectStudentNumByStudentId(@RequestParam("studentId") int studentId){ return userService.selectStudentNumByStudentId(studentId); diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/CwCheckMapper.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/CwCheckMapper.java new file mode 100644 index 0000000..d61b7b8 --- /dev/null +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/CwCheckMapper.java @@ -0,0 +1,10 @@ +package com.sincere.smartSearch.mapper; + +import com.sincere.smartSearch.model.CwCheck; + +import java.util.List; + +public interface CwCheckMapper { + + List selectBySchoolId(int schoolId); +} \ No newline at end of file diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/CwStutemperaturereocrdMapper.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/CwStutemperaturereocrdMapper.java new file mode 100644 index 0000000..c8d64fa --- /dev/null +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/CwStutemperaturereocrdMapper.java @@ -0,0 +1,9 @@ +package com.sincere.smartSearch.mapper; + +import com.sincere.common.dto.smartCampus.CwStutemperaturereocrd; + +public interface CwStutemperaturereocrdMapper { + int insert(CwStutemperaturereocrd record); + + int insertSelective(CwStutemperaturereocrd record); +} \ No newline at end of file diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/model/CwCheck.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/model/CwCheck.java new file mode 100644 index 0000000..0ae6f56 --- /dev/null +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/model/CwCheck.java @@ -0,0 +1,85 @@ +package com.sincere.smartSearch.model; + +import java.util.Date; + +public class CwCheck { + private Integer id; + + private String checkname; + + private String begintime; + + private String endtime; + + private Integer templateid; + + private Integer schoolid; + + private Integer state; + + private Date intime; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getCheckname() { + return checkname; + } + + public void setCheckname(String checkname) { + this.checkname = checkname; + } + + public String getBegintime() { + return begintime; + } + + public void setBegintime(String begintime) { + this.begintime = begintime; + } + + public String getEndtime() { + return endtime; + } + + public void setEndtime(String endtime) { + this.endtime = endtime; + } + + public Integer getTemplateid() { + return templateid; + } + + public void setTemplateid(Integer templateid) { + this.templateid = templateid; + } + + public Integer getSchoolid() { + return schoolid; + } + + public void setSchoolid(Integer schoolid) { + this.schoolid = schoolid; + } + + public Integer getState() { + return state; + } + + public void setState(Integer state) { + this.state = state; + } + + public Date getIntime() { + return intime; + } + + public void setIntime(Date intime) { + this.intime = intime; + } +} \ No newline at end of file diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/UserService.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/UserService.java index e47068b..5633655 100644 --- a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/UserService.java +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/UserService.java @@ -1,5 +1,6 @@ package com.sincere.smartSearch.service; +import com.sincere.common.dto.smartCampus.CwStutemperaturereocrd; import com.sincere.common.dto.smartCampus.StudentBean; import com.sincere.common.dto.smartCampus.SzVSchoolStudent; import com.sincere.common.dto.smartCampus.SzVSchoolTeacher; @@ -27,4 +28,6 @@ public interface UserService { SzVSchoolStudent selectByStudentId(int studentId); + int insertTemperature(CwStutemperaturereocrd record); + } diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/UserServiceImpl.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/UserServiceImpl.java index 77a9973..b69d5b5 100644 --- a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/UserServiceImpl.java +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/UserServiceImpl.java @@ -1,15 +1,17 @@ package com.sincere.smartSearch.service.impl; +import com.sincere.common.dto.smartCampus.CwStutemperaturereocrd; import com.sincere.common.dto.smartCampus.SzVSchoolStudent; import com.sincere.common.dto.smartCampus.SzVSchoolTeacher; -import com.sincere.smartSearch.mapper.SzVSchoolStudentMapper; -import com.sincere.smartSearch.mapper.SzVSchoolTeacherMapper; -import com.sincere.smartSearch.mapper.UserMapper; +import com.sincere.common.util.DateUtils; +import com.sincere.smartSearch.mapper.*; import com.sincere.common.dto.smartCampus.StudentBean; +import com.sincere.smartSearch.model.CwCheck; import com.sincere.smartSearch.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; import java.util.List; /** @@ -29,6 +31,12 @@ public class UserServiceImpl implements UserService { @Autowired SzVSchoolTeacherMapper szVSchoolTeacherMapper; + @Autowired + CwStutemperaturereocrdMapper cwStutemperaturereocrdMapper ; + + @Autowired + CwCheckMapper cwCheckMapper; + @Override public String selectStudentNumByStudentId(int studentId) { return userMapper.selectStudentNumByStudentId(studentId); @@ -65,4 +73,24 @@ public class UserServiceImpl implements UserService { public SzVSchoolStudent selectByStudentId(int studentId) { return szVSchoolStudentMapper.selectByStudentId(studentId); } + + @Override + public int insertTemperature(CwStutemperaturereocrd record) { + List list = cwCheckMapper.selectBySchoolId(record.getSchoolid()); + try{ + String today = DateUtils.getToday(DateUtils.format1); + record.setType(1); + for(CwCheck cwCheck : list){ + Date begin = DateUtils.string2Date(today+cwCheck.getBegintime()+":00",DateUtils.format2); + Date end = DateUtils.string2Date(today+cwCheck.getEndtime()+":00",DateUtils.format2); + if(end.compareTo(record.getIntime()) > 1 && record.getIntime().compareTo(begin) > 1){ + record.setType(cwCheck.getCheckname().equals("晨检")?1:2); + } + } + return cwStutemperaturereocrdMapper.insert(record); + }catch (Exception e){ + + } + return 0 ; + } } diff --git a/cloud/search_smartCampus/src/main/resources/mapper/CwCheckMapper.xml b/cloud/search_smartCampus/src/main/resources/mapper/CwCheckMapper.xml new file mode 100644 index 0000000..13e0f7d --- /dev/null +++ b/cloud/search_smartCampus/src/main/resources/mapper/CwCheckMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cloud/search_smartCampus/src/main/resources/mapper/CwStutemperaturereocrdMapper.xml b/cloud/search_smartCampus/src/main/resources/mapper/CwStutemperaturereocrdMapper.xml new file mode 100644 index 0000000..49e7d38 --- /dev/null +++ b/cloud/search_smartCampus/src/main/resources/mapper/CwStutemperaturereocrdMapper.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + insert into CW_StuTemperatureReocrd ( UserId, StudentId, + Name, ClassId, ClassName, + Temperature, Type, SchoolId, + Intime) + values ( #{userid,jdbcType=VARCHAR}, #{studentid,jdbcType=INTEGER}, + #{name,jdbcType=VARCHAR}, #{classid,jdbcType=INTEGER}, #{classname,jdbcType=VARCHAR}, + #{temperature,jdbcType=DECIMAL}, #{type,jdbcType=INTEGER}, #{schoolid,jdbcType=INTEGER}, + #{intime,jdbcType=TIMESTAMP}) + + + insert into CW_StuTemperatureReocrd + + + Id, + + + UserId, + + + StudentId, + + + Name, + + + ClassId, + + + ClassName, + + + Temperature, + + + Type, + + + SchoolId, + + + Intime, + + + + + #{id,jdbcType=INTEGER}, + + + #{userid,jdbcType=VARCHAR}, + + + #{studentid,jdbcType=INTEGER}, + + + #{name,jdbcType=VARCHAR}, + + + #{classid,jdbcType=INTEGER}, + + + #{classname,jdbcType=VARCHAR}, + + + #{temperature,jdbcType=DECIMAL}, + + + #{type,jdbcType=INTEGER}, + + + #{schoolid,jdbcType=INTEGER}, + + + #{intime,jdbcType=TIMESTAMP}, + + + + \ No newline at end of file -- libgit2 0.21.0