diff --git a/cloud/dahua/src/main/java/com/example/dahua/MyTask.java b/cloud/dahua/src/main/java/com/example/dahua/MyTask.java index ba8086d..2261be1 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/MyTask.java +++ b/cloud/dahua/src/main/java/com/example/dahua/MyTask.java @@ -66,9 +66,9 @@ public class MyTask implements ApplicationRunner { public void run(ApplicationArguments args) throws Exception { // 121.40.109.21 - LoginModule.init(disConnect, haveReConnect); // 打开工程,初始化 +// LoginModule.init(disConnect, haveReConnect); // 打开工程,初始化 - autoRegister();//自注册 +// autoRegister();//自注册 // System.out.println(" sendRecordDao:"+sendRecordDao.getSenSuccess()); } diff --git a/cloud/dahua/src/main/java/com/example/dahua/Test.java b/cloud/dahua/src/main/java/com/example/dahua/Test.java index cded388..7c5b432 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/Test.java +++ b/cloud/dahua/src/main/java/com/example/dahua/Test.java @@ -16,8 +16,13 @@ public class Test { public static void main(String[] args) { + String url = "E:\\wwwhtdocs\\SmartCampus\\face17e5\\School112\\Student\\saa.png"; - Test test = new Test(); + url = url.substring(url.indexOf("School")+6,url.indexOf("\\Student")); + + System.out.println("url:"+url); + + /*Test test = new Test(); File file = new File("C:\\Users\\Administrator\\Documents\\专业.txt"); @@ -37,7 +42,7 @@ public class Test { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); - } + }*/ } diff --git a/cloud/dahua/src/main/java/com/example/dahua/control/UserControl.java b/cloud/dahua/src/main/java/com/example/dahua/control/UserControl.java index 3e50435..e9ba77f 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/control/UserControl.java +++ b/cloud/dahua/src/main/java/com/example/dahua/control/UserControl.java @@ -62,7 +62,7 @@ public class UserControl { @RequestMapping(value = "sendPermission", method = RequestMethod.POST) @ApiOperation(value = "设置权限") public boolean sendPermission(@RequestBody PermissionBean permissionBean) { - return HttpUtils.sendPermission(permissionBean); + return HttpUtils.sendPermission(permissionBean); } @RequestMapping(value = "imgsSend", method = RequestMethod.GET) @@ -116,7 +116,29 @@ public class UserControl { @ApiOperation("在线活体检测") public boolean checkFace(@RequestParam("url") String httpurl) { - return BaiduUtils.getBaiduUtils().checkImg(httpurl); + boolean check = BaiduUtils.getBaiduUtils().checkImg(httpurl); + + if (check) { + File file = new File(httpurl); + + String userCode = file.getName().split("\\.")[0]; + + String schoolId = ""; + + if (httpurl.contains("Student")) { + schoolId = httpurl.substring(httpurl.indexOf("School") + 6, httpurl.indexOf("\\Student")); + } else if (httpurl.contains("Teacher")) { + schoolId = httpurl.substring(httpurl.indexOf("School") + 6, httpurl.indexOf("\\Teacher")); + } + System.out.println("choolId:" + schoolId + "userCode:" + userCode); + if (!StringUtils.isEmpty(schoolId) && !StringUtils.isEmpty(userCode)) { + String userId = userService.getUserId(userCode, schoolId); + BaiduUtils.getBaiduUtils().addFace(new File(httpurl), schoolId, userId, userId); + FileUtils.getInstance().writeLogs("人脸添加成功:" + userId, "人脸添加成功.txt"); + } + } + + return check; } diff --git a/cloud/dahua/src/main/java/com/example/dahua/dao/UserDao.java b/cloud/dahua/src/main/java/com/example/dahua/dao/UserDao.java index 8e639d2..287408a 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/dao/UserDao.java +++ b/cloud/dahua/src/main/java/com/example/dahua/dao/UserDao.java @@ -133,4 +133,8 @@ public interface UserDao { @Select("select * from SZ_V_School_Teacher where user_id = #{userId}") List getTeaWithUserId(@Param("userId")String userId); + + @Select("select Top(1) user_id from SZ_V_School_Student where studentcode = #{studentcode}") + String getStuWithCode(@Param("studentcode") String code); + } diff --git a/cloud/dahua/src/main/java/com/example/dahua/service/UserService.java b/cloud/dahua/src/main/java/com/example/dahua/service/UserService.java index a11d04e..0692b38 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/service/UserService.java +++ b/cloud/dahua/src/main/java/com/example/dahua/service/UserService.java @@ -3,10 +3,7 @@ package com.example.dahua.service; import com.example.dahua.bean.AttendanceBean; import com.example.dahua.bean.PermissionBean; import com.example.dahua.bean.UserInfoBean; -import org.springframework.scheduling.annotation.Async; -import org.springframework.web.multipart.MultipartFile; -import java.io.File; import java.util.List; public interface UserService { @@ -57,4 +54,7 @@ public interface UserService { */ boolean sendPermission(PermissionBean permissionBean); + String getUserId(String code,String schoolId); + + } diff --git a/cloud/dahua/src/main/java/com/example/dahua/service/imp/UserServiceImp.java b/cloud/dahua/src/main/java/com/example/dahua/service/imp/UserServiceImp.java index cc738bf..07cbc10 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/service/imp/UserServiceImp.java +++ b/cloud/dahua/src/main/java/com/example/dahua/service/imp/UserServiceImp.java @@ -117,4 +117,23 @@ public class UserServiceImp implements UserService { return false; } + @Override + public String getUserId(String code,String schoolId) { + + String userId = ""; + + + userId = userDao.getStuWithCode(code); + + if (StringUtils.isEmpty(userId)){ + + TeacherBean teacherBean = userDao.getTeacher(schoolId,code); + userId = teacherBean.getUser_id(); + + } + + return userId; + } + + } diff --git a/cloud/dahua/src/main/java/com/example/dahua/utils/BaiduUtils.java b/cloud/dahua/src/main/java/com/example/dahua/utils/BaiduUtils.java index 9ef0ac1..ff08ebc 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/utils/BaiduUtils.java +++ b/cloud/dahua/src/main/java/com/example/dahua/utils/BaiduUtils.java @@ -1,5 +1,6 @@ package com.example.dahua.utils; +import com.alibaba.fastjson.JSON; import com.example.dahua.async.ImageUtils; import com.example.dahua.lib.CompressPic; import org.json.JSONArray; @@ -9,10 +10,7 @@ import javax.imageio.stream.FileImageInputStream; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; public class BaiduUtils { @@ -107,6 +105,21 @@ public class BaiduUtils { return true; } + /** + * 注册人脸到百度 + * @param file + */ + private void addToBaidu(File file) { + + //学籍号或者教职工编号 + String userCode = file.getName().split("\\.")[0]; + + + +// BaiduUtils.getBaiduUtils().addFace(file,) + + } + //图片到byte数组 public byte[] image2byte(String path) { byte[] data = null; @@ -208,4 +221,71 @@ public class BaiduUtils { return null; } + + //注册人脸 + public String addFace(File img, String group_id, String user_id, String userInfo) { + + String url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add"; + + + try { + Map map = new HashMap<>(); + map.put("image", Base64Util.encode(InputStream2ByteArray(img.getAbsolutePath()))); + map.put("group_id", group_id); + map.put("user_id", user_id); + map.put("user_info", userInfo); +// map.put("liveness_control", "NORMAL"); + map.put("image_type", "BASE64"); + map.put("quality_control", "NORMAL"); + + String param = GsonUtils.toJson(map); + + // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。 + + String result = HttpUtil.post(url, getAuth(), "application/json", param); + System.out.println(result); + com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(result); + String error_msg = jsonObject.getString("error_msg"); + if (error_msg.equals("SUCCESS")) { + +// com.alibaba.fastjson.JSONObject faceResult = jsonObject.getJSONObject("result"); + +// FacerecordBean facerecordBean = new FacerecordBean(); +// +// facerecordBean.setFace_token(faceResult.getString("face_token")); +// facerecordBean.setGroup_id(group_id); +// facerecordBean.setIntime(simpleDateFormat.format(new Date())); +// facerecordBean.setUser_id(user_id); +// +// facerecordService.addFacerecord(facerecordBean); + return "注册成功"; + } else { + return error_msg; + } + + } catch (Exception e) { + e.printStackTrace(); + } + return ""; + } + + private byte[] InputStream2ByteArray(String filePath) throws IOException { + + InputStream in = new FileInputStream(filePath); + byte[] data = toByteArray(in); + in.close(); + + return data; + } + + private byte[] toByteArray(InputStream in) throws IOException { + + ByteArrayOutputStream out = new ByteArrayOutputStream(); + byte[] buffer = new byte[1024 * 4]; + int n = 0; + while ((n = in.read(buffer)) != -1) { + out.write(buffer, 0, n); + } + return out.toByteArray(); + } } diff --git a/cloud/dahua/src/main/resources/mapper/usermapper.xml b/cloud/dahua/src/main/resources/mapper/usermapper.xml index f714ed7..3e3fc2b 100644 --- a/cloud/dahua/src/main/resources/mapper/usermapper.xml +++ b/cloud/dahua/src/main/resources/mapper/usermapper.xml @@ -18,5 +18,6 @@ - + + \ No newline at end of file diff --git a/cloud/haikang/src/main/java/com/sincere/haikang/SchduleTask.java b/cloud/haikang/src/main/java/com/sincere/haikang/SchduleTask.java index 97347e6..4da451c 100644 --- a/cloud/haikang/src/main/java/com/sincere/haikang/SchduleTask.java +++ b/cloud/haikang/src/main/java/com/sincere/haikang/SchduleTask.java @@ -2,6 +2,7 @@ package com.sincere.haikang; import com.sincere.haikang.async.SendUserAsync; import com.sincere.haikang.bean.AttendanceBean; +import com.sincere.haikang.bean.SIngleCardBean; import com.sincere.haikang.bean.StudentBean; import com.sincere.haikang.dao.DeviceDao; import com.sincere.haikang.dao.UserDao; @@ -22,7 +23,9 @@ import org.springframework.util.StringUtils; import org.springframework.web.client.RestTemplate; import java.io.*; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.List; @Component @@ -129,10 +132,13 @@ public class SchduleTask { String clientIds = ""; for (int i = 0; i < attendanceBeans.size(); i++) { if (i < attendanceBeans.size() - 1) { - if (attendanceBeans.get(i).getClint_type().equals("22")) { + AttendanceBean attendanceBean = attendanceBeans.get(i); + System.out.println("attendanceBean:"+attendanceBean.toString()); + String clint_type = attendanceBean.getClint_type(); + if (null!=clint_type&&clint_type.equals("22")) { type = 22; clientIds += attendanceBeans.get(i).getClint_id() + ","; - } else if (attendanceBeans.get(i).getClint_type().equals("18")) { + } else if (null!=clint_type&&clint_type.equals("18")) { type = 18; clientIds += attendanceBeans.get(i).getClint_id(); } @@ -167,13 +173,46 @@ public class SchduleTask { int SchoolId = studentBean.getSchoolId(); String card = TextUtils.isEmpty(studentBean.getCard()) ? studentBean.getOldCard() : studentBean.getCard(); if (!TextUtils.isEmpty(card)) { - RestTemplate restTemplate = new RestTemplate(); - HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.APPLICATION_JSON_UTF8); - String url = "http://campus.myjxt.com/api/OneCard/SendSingle?SchoolId=" + SchoolId + "&Card=" + card + "&ClassId=" + studentBean.getClassId(); - System.out.println("下发卡号url:" + url); - ResponseEntity responseEntity = restTemplate.getForEntity(url, String.class); - System.out.println("下发卡号:" + responseEntity.getBody()); + + List attendanceBeans = deviceDao.getAttendancesWithSchoolId(SchoolId); + + for (int i = 0; i < attendanceBeans.size(); i++) { + + AttendanceBean attendanceBean = attendanceBeans.get(i); + + String clint_type = attendanceBean.getClint_type(); + + if (null!=clint_type&&clint_type.equals("6")){ + + SIngleCardBean sIngleCardBean = new SIngleCardBean(); + + sIngleCardBean.setCardNo(card); + sIngleCardBean.setEndTime("2050-09-04T00:52:22.510Z"); + sIngleCardBean.setId("5"); + sIngleCardBean.setShiduan("2"); + sIngleCardBean.setSn(attendanceBean.getClint_id()); + sIngleCardBean.setStartTime(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").format(new Date())); + sIngleCardBean.setType("1"); + + RestTemplate restTemplate = new RestTemplate(); + HttpHeaders headers = new HttpHeaders(); + MediaType mediaType = MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE); + headers.setContentType(mediaType); +// String url = "http://campus.myjxt.com/api/OneCard/SendSingle?SchoolId=" + SchoolId + "&Card=" + card + "&ClassId=" + studentBean.getClassId(); +// System.out.println("下发卡号url:" + url); +// ResponseEntity responseEntity = restTemplate.getForEntity(url, String.class); +// System.out.println("下发卡号:" + responseEntity.getBody()); + System.out.println("sIngleCardBean:"+sIngleCardBean.toString()); + String url = "http://121.40.109.21:9000/setSignalCardInfo"; + HttpEntity httpEntity = new HttpEntity<>(sIngleCardBean,headers); + ResponseEntity responseEntity = restTemplate.postForEntity(url,httpEntity,String.class); + System.out.println("下发卡号:" + responseEntity.getBody()); + + + } + + } + } diff --git a/cloud/haikang/src/main/java/com/sincere/haikang/Test.java b/cloud/haikang/src/main/java/com/sincere/haikang/Test.java new file mode 100644 index 0000000..bef3c09 --- /dev/null +++ b/cloud/haikang/src/main/java/com/sincere/haikang/Test.java @@ -0,0 +1,17 @@ +package com.sincere.haikang; + +import java.text.SimpleDateFormat; +import java.util.Date; + +public class Test { + static int i ; + + public static void main(String[] args) { + + int num = 2147483647 ; + long temp = num + 2L ; + System.out.println(num) ; + + } + +} diff --git a/cloud/haikang/src/main/java/com/sincere/haikang/bean/SIngleCardBean.java b/cloud/haikang/src/main/java/com/sincere/haikang/bean/SIngleCardBean.java new file mode 100644 index 0000000..59b3bf8 --- /dev/null +++ b/cloud/haikang/src/main/java/com/sincere/haikang/bean/SIngleCardBean.java @@ -0,0 +1,89 @@ +package com.sincere.haikang.bean; + +import java.io.Serializable; + +public class SIngleCardBean implements Serializable { + + private String cardNo; + + private String endTime; + + private String id; + + private String shiduan; + + private String sn; + + private String startTime; + + private String type; + + public String getCardNo() { + return cardNo; + } + + public void setCardNo(String cardNo) { + this.cardNo = cardNo; + } + + public String getEndTime() { + return endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShiduan() { + return shiduan; + } + + public void setShiduan(String shiduan) { + this.shiduan = shiduan; + } + + public String getSn() { + return sn; + } + + public void setSn(String sn) { + this.sn = sn; + } + + public String getStartTime() { + return startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + @Override + public String toString() { + return "SIngleCardBean{" + + "cardNo='" + cardNo + '\'' + + ", endTime='" + endTime + '\'' + + ", id='" + id + '\'' + + ", shiduan='" + shiduan + '\'' + + ", sn='" + sn + '\'' + + ", startTime='" + startTime + '\'' + + ", type='" + type + '\'' + + '}'; + } +} diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java index 3f75ff4..3d4e7ef 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java @@ -57,20 +57,24 @@ public class CMSServer implements ApplicationRunner { @Autowired UserDao userDao; - @Autowired SendRecordDao sendRecordDao; //114.55.30.100 //120.26.116.253 -// private String ip_cloud = "120.26.116.253"; -// private String ip_cloud = "192.168.71.242"; - private String ip_cloud = "114.55.30.100"; + private String ip_cloud = "120.26.116.253"; +// private String ip_cloud = "172.16.2.43"; +// private String ip_cloudQJ = "120.27.221.31";//枪机的图片和报警监听地址 +// private String ip_cloud = "114.55.30.100"; +// private String ip_cloud = "120.27.221.31"; +// private String ip_cloud = "121.40.109.21"; + private String ip; { try { ip = InetAddress.getLocalHost().getHostAddress(); +// ip=ip_cloud; // ip_cloud = ip; } catch (UnknownHostException e) { e.printStackTrace(); @@ -91,6 +95,15 @@ public class CMSServer implements ApplicationRunner { //初始化报警监听 initAlarm(); + /* String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); + BaiduFaceRecorder baiduFaceRecorder = new BaiduFaceRecorder(); + baiduFaceRecorder.setName("name"); + baiduFaceRecorder.setScore("11"); + baiduFaceRecorder.setTime(time); + baiduFaceRecorder.setUserImgUrl("22"); + baiduFaceRecorder.setUploadImgUrl("22"); + userDao.insertBaiduFaceRecorder(baiduFaceRecorder);*/ + } static HCEHomeCMS hCEhomeCMS = HCEHomeCMS.INSTANCE; @@ -112,8 +125,8 @@ public class CMSServer implements ApplicationRunner { fRegisterCallBack = new FRegisterCallBack(); } hCEhomeCMS.NET_ECMS_SetLogToFile(3, "C:/Ehomejavademo/EHomeSDKLog", false); - struCMSListenPara.struAddress.szIP = ip.getBytes(); +// System.out.println("ip--------------------------------------------:"+ip); struCMSListenPara.struAddress.wPort = 7660; struCMSListenPara.fnCB = fRegisterCallBack; @@ -182,6 +195,9 @@ public class CMSServer implements ApplicationRunner { // byte[] byIP = ip.getBytes(); byte[] byIP = ip_cloud.getBytes(); + +// if (deviceId.startsWith("qj")) byIP = ip_cloudQJ.getBytes(); + System.arraycopy(byIP, 0, pInBuffer.struUDPAlarmSever.szIP, 0, byIP.length); // TODO: 2020/8/27 人脸机类型为0 pInBuffer.dwAlarmServerType = 0; //报警服务器类型:0- 只支持UDP协议上报,1- 支持UDP、TCP两种协议上报 @@ -302,9 +318,10 @@ public class CMSServer implements ApplicationRunner { public class PSS_Storage_Callback implements HCEHomeSS.EHomeSSStorageCallBack { public boolean invoke(NativeLong iHandle, String pFileName, Pointer pFileBuf, int dwFileLen, Pointer pFilePath, Pointer pUser) { - log.error("图片进来:{}" , pFileName); +// log.error("图片进来:{}", pFileName); String strPath = "C://EhomePicServer/"; // System.out.println("pFileName:" + pFileName); + FileUtils.getInstance().writeLogs("文件名:" + pFileName, FileUtils.fileName); pFileName = pFileName.replace("_", ""); boolean isZhuaPai = false; if (pFileName.contains("-")) {//人脸抓拍机抓拍到的图片 @@ -315,7 +332,6 @@ public class CMSServer implements ApplicationRunner { } String strFilePath = strPath + pFileName; - FileUtils.getInstance().writeLogs("文件名:" + pFileName, FileUtils.fileName); //保存抓拍到的人脸图片,比对通过后的图片资源 // System.out.println("文件保存回调函数:" + strFilePath); @@ -348,6 +364,7 @@ public class CMSServer implements ApplicationRunner { fout.write(bytes); fout.close(); +// if (ip_cloud.equals(ip_cloudQJ)) sendToKB(strFilePathFile); } catch (FileNotFoundException e) { @@ -369,6 +386,8 @@ public class CMSServer implements ApplicationRunner { } } + Map userMap = new HashMap<>(); + /** * 发送人脸到看板 * @@ -377,69 +396,109 @@ public class CMSServer implements ApplicationRunner { public void sendToKB(File strFilePathFile) { try { - log.error("开始识别....."); - String url = "http://120.26.116.253:9214/baiduapi/search/16"; - - RestTemplate restTemplate = new RestTemplate(); - - HttpHeaders headers = new HttpHeaders(); - MediaType mediaType = MediaType.parseMediaType(MediaType.MULTIPART_FORM_DATA_VALUE); - headers.setContentType(mediaType); - MultiValueMap multiValueMap = new LinkedMultiValueMap<>(); - FileSystemResource fileSystemResource = new FileSystemResource(strFilePathFile); - - multiValueMap.add("file ", fileSystemResource); - HttpEntity> httpEntity = new HttpEntity<>(multiValueMap, headers); - - ResponseEntity responseEntity = restTemplate.postForEntity(url, httpEntity, String.class); - log.error("识别结果:{}" , responseEntity.getBody()); - JSONObject jsonObject = JSON.parseObject(responseEntity.getBody()); - - String face = jsonObject.getString("data"); - if (face.startsWith("face"))return; - - JSONObject data = jsonObject.getJSONObject("data"); - String error_msg = data.getString("error_msg"); - - if (error_msg.equals("SUCCESS")) {//识别成功 - JSONObject result = data.getJSONObject("result"); - JSONArray user_list = result.getJSONArray("user_list"); - - if (user_list != null && user_list.size() > 0) { - - for (int i = 0; i < user_list.size(); i++) { - JSONObject user = user_list.getJSONObject(i); - - String user_id = user.getString("user_id"); - String score = user.getString("score"); - double sc = Double.valueOf(score.split("\\.")[0]); - if (sc >= 60) { - System.out.println("user_id:" + user_id); - TeacherBean teacherBean = userDao.getTeacherWithUserId1(user_id); - if (null != teacherBean) { - if (TextUtils.isEmpty(teacherBean.getTeacer_num()))teacherBean.setTeacer_num(user_id); - MqtUtils.getInstance().sendMsg("09EA8EB5142F2964", 1, teacherBean.toString()); + log.error("开始识别....."); + String url = "http://120.26.116.253:9214/baiduapi/search/16"; + + RestTemplate restTemplate = new RestTemplate(); + + HttpHeaders headers = new HttpHeaders(); + MediaType mediaType = MediaType.parseMediaType(MediaType.MULTIPART_FORM_DATA_VALUE); + headers.setContentType(mediaType); + MultiValueMap multiValueMap = new LinkedMultiValueMap<>(); + FileSystemResource fileSystemResource = new FileSystemResource(strFilePathFile); + + multiValueMap.add("file ", fileSystemResource); + HttpEntity> httpEntity = new HttpEntity<>(multiValueMap, headers); + + ResponseEntity responseEntity = restTemplate.postForEntity(url, httpEntity, String.class); +// log.error("识别结果:{}", responseEntity.getBody()); + JSONObject jsonObject = JSON.parseObject(responseEntity.getBody()); + + String face = jsonObject.getString("data"); + if (face.startsWith("face")||face.startsWith("pic")) return; + + JSONObject data = jsonObject.getJSONObject("data"); + String error_msg = data.getString("error_msg"); + + if (error_msg.equals("SUCCESS")) {//识别成功 + JSONObject result = data.getJSONObject("result"); + JSONArray user_list = result.getJSONArray("user_list"); + + if (user_list != null && user_list.size() > 0) { + + for (int i = 0; i < user_list.size(); i++) { + JSONObject user = user_list.getJSONObject(i); + + String user_id = user.getString("user_id"); + String score = user.getString("score"); + double sc = Double.valueOf(score.split("\\.")[0]); + if (sc >= 60) { + System.out.println("user_id:" + user_id); + TeacherBean teacherBean = userDao.getTeacherWithUserId1(user_id); + + if (null != teacherBean) { + String date = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); + String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); + BaiduFaceRecorder baiduFaceRecorder = new BaiduFaceRecorder(); + baiduFaceRecorder.setName(teacherBean.getName()); + baiduFaceRecorder.setScore(sc+""); + baiduFaceRecorder.setTime(time); + baiduFaceRecorder.setUserImgUrl(teacherBean.getFace()); + baiduFaceRecorder.setUploadImgUrl(strFilePathFile.getAbsolutePath().contains(date)? + "http://" + ip_cloud + ":8081/kms/services/rest/dataInfoService/downloadFile?id="+strFilePathFile.getName().substring(0,strFilePathFile.getName().indexOf(date)):strFilePathFile.getAbsolutePath()); + baiduFaceRecorder.setUserId(user_id); + userDao.insertBaiduFaceRecorder(baiduFaceRecorder); + + if (TextUtils.isEmpty(teacherBean.getTeacer_num())) teacherBean.setTeacer_num(user_id); + teacherBean.setTime(time); + + if (userMap.containsKey(user_id)) { + + long value = userMap.get(user_id); + if ((System.currentTimeMillis() - value) / 1000 > 6) { + userMap.put(user_id, System.currentTimeMillis()); + MqtUtils.getInstance().sendMsg("09EA8EB5142F2964", 1, teacherBean.toString()); + log.error("发送成功....."); + } + + } else { + userMap.put(user_id, System.currentTimeMillis()); + MqtUtils.getInstance().sendMsg("09EA8EB5142F2964", 1, teacherBean.toString()); + log.error("发送成功....."); + } + +// strFilePathFile.deleteOnExit(); + } else { + System.out.println("用户身份信息不存在"); + sendNoPersonImg(strFilePathFile); + } } else { - System.out.println("用户身份信息不存在"); + System.out.println("用户身份信息不存在" + score); + sendNoPersonImg(strFilePathFile); } - }else { - System.out.println("用户身份信息不存在"+score); + } } - + } else { + System.out.println("识别失败:" + error_msg); } - } else { - System.out.println("识别失败:" + error_msg); - } - log.error("发送成功....."); // System.out.println("responseEntity:"+responseEntity.getBody()); - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); } } + private void sendNoPersonImg(File strFilePathFile) { + String imgName = strFilePathFile.getName(); + String date = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); + if (imgName.contains(date)) { + String imgId = imgName.substring(0, imgName.indexOf(date)); + MqtUtils.getInstance().sendMsg("09EA8EB5142F2964", 2, "http://" + ip_cloud + ":8081/kms/services/rest/dataInfoService/downloadFile?id=" + imgId); + } + } + HCEHomeAlarm.NET_EHOME_ALARM_LISTEN_PARAM net_ehome_alarm_listen_param = new HCEHomeAlarm.NET_EHOME_ALARM_LISTEN_PARAM(); EHomeMsgCallBack cbEHomeMsgCallBack; ;//报警监听回调函数实现 @@ -507,9 +566,9 @@ public class CMSServer implements ApplicationRunner { String strXML = new String(strXMLData.byValue); // System.out.println(strXML); -// log.error("报警监听:{}",strXML); +// log.error("报警监听:{}", strXML); if (null == alarmUtils) { - alarmUtils = new AlarmUtils(deviceDao); + alarmUtils = new AlarmUtils(deviceDao,userDao); alarmUtils.setCallBack(new AlarmUtils.AlarmCallBack() { @Override public void callBack(String minorType, String deviceID, String cardNo, String time, String picDataUrlId, String currTemperature) { @@ -563,7 +622,7 @@ public class CMSServer implements ApplicationRunner { cardNo = sendRecoderUtils.getCard(card); StudentBean studentBean = userDao.getStudentWithCard(cardNo); - log.error("studentBean:{}",studentBean); + log.error("studentBean:{}", studentBean); if (null != studentBean) { FileUtils.getInstance().writeLogs(studentBean.getName() + " " + cardNo, FileUtils.facerecoder); @@ -589,9 +648,9 @@ public class CMSServer implements ApplicationRunner { isTeacher(cardNo, deviceID); } - if (deviceID.startsWith("qj")) {//枪击 用来抓拍人脸考勤用 - initQJ(deviceID, cardNo, studentBean == null); - } +// if (deviceID.startsWith("qj")) {//枪击 用来抓拍人脸考勤用 +// initQJ(deviceID, cardNo, studentBean == null); +// } } @@ -614,12 +673,12 @@ public class CMSServer implements ApplicationRunner { public void isTeacher(String cardNo, String deviceID) { List devLists = userDao.getDeviceRoomRelation(deviceID); - log.error("cardNo:{},devLists{}",cardNo,devLists); + log.error("cardNo:{},devLists{}", cardNo, devLists); if (null != devLists && devLists.size() > 0) { StudentBean teacher = userDao.getTeacherWithCard(cardNo); - FileUtils.getInstance().writeLogs("teacher:" + teacher+"----"+cardNo, "教师点名.txt"); + FileUtils.getInstance().writeLogs("teacher:" + teacher + "----" + cardNo, "教师点名.txt"); if (null != teacher) { String url = String.format("http://campus.myjxt.com/api/RollCall/AddRollCallPersonnelRecord?userId=%s&deviceId=%s", teacher.getUser_id(), deviceID); diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/QieTuClass.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/QieTuClass.java index afa4f84..2fc2c0f 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/QieTuClass.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/QieTuClass.java @@ -1,5 +1,6 @@ package com.sincere.haikangface; +import com.sincere.haikangface.mqtt.MqtUtils; import com.sincere.haikangface.utils.ApiUtil; import com.sun.imageio.plugins.common.ImageUtil; import org.json.JSONArray; @@ -11,13 +12,21 @@ import java.awt.image.FilteredImageSource; import java.awt.image.ImageFilter; import java.io.File; import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; public class QieTuClass extends JFrame { public static void main(String[] args) { + String imgName = "43539917634D4EED364DEC87D8DEC2462020-09-01.jpg"; + String date = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); + if (imgName.contains(date)) { + String imgId = imgName.substring(0, imgName.indexOf(date)); + System.out.println("imgId:"+imgId); + } - new QieTuClass(); +// new QieTuClass(); } diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/async/SendUserAsync.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/async/SendUserAsync.java index 9650fac..05f3762 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/async/SendUserAsync.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/async/SendUserAsync.java @@ -48,6 +48,7 @@ public class SendUserAsync { if (check) {//合格 //根据设备是5603 还是新设备 String employeeNo = ""; + boolean result = cmsServer.createImgPath(srcFile, picUrl, card, startTime, endTime, validTimeEnabled, name, deviceId, userType, employeeNo); if (deviceId.contains("ymzx") || deviceId.contains("5607") || deviceId.contains("5671") || deviceId.contains("5604")) { long lon = Long.parseLong(card); //十六进制卡号 @@ -67,15 +68,14 @@ public class SendUserAsync { } else employeeNo = studentBean.getStudent_id(); } -// cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardTemplate(), "设置卡权限计划模板"); -// cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardWeekPlan(), "卡权限周计划"); -// for (int i = 0; i < 7; i++) { -// cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardWeekPlanTime(HKXmlUtils.getInstance().SetCardWeekPlanTimes("00:00:00", "23:00:00"), "" + i), "设置卡权限周计划时间"); -// } -// cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardRightCfg(card), "设置卡权限"); + cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardTemplate(), "设置卡权限计划模板"); + cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardWeekPlan(), "卡权限周计划"); + for (int i = 0; i < 7; i++) { + cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardWeekPlanTime(HKXmlUtils.getInstance().SetCardWeekPlanTimes("00:00:00", "23:00:00"), "" + i), "设置卡权限周计划时间"); + } + cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardRightCfg(card), "设置卡权限"); } - boolean result = cmsServer.createImgPath(srcFile, picUrl, card, startTime, endTime, validTimeEnabled, name, deviceId, userType, employeeNo); } else {//不合格 sendRecoderUtils.sendFail(sendRecordDao, card, srcFile, deviceId, userDao, "人脸照片不合格", userType); } diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/BaiduFaceRecorder.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/BaiduFaceRecorder.java new file mode 100644 index 0000000..9c67991 --- /dev/null +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/BaiduFaceRecorder.java @@ -0,0 +1,78 @@ +package com.sincere.haikangface.bean; + +import java.io.Serializable; + +public class BaiduFaceRecorder implements Serializable { + + private String name; + + private String userId; + + private String score; + + private String time; + + private String uploadImgUrl; + + private String userImgUrl; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getScore() { + return score; + } + + public void setScore(String score) { + this.score = score; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + + public String getUploadImgUrl() { + return uploadImgUrl; + } + + public void setUploadImgUrl(String uploadImgUrl) { + this.uploadImgUrl = uploadImgUrl; + } + + public String getUserImgUrl() { + return userImgUrl; + } + + public void setUserImgUrl(String userImgUrl) { + this.userImgUrl = userImgUrl; + } + + @Override + public String toString() { + return "BaiduFaceRecorder{" + + "name='" + name + '\'' + + ", userId='" + userId + '\'' + + ", score='" + score + '\'' + + ", time='" + time + '\'' + + ", uploadImgUrl='" + uploadImgUrl + '\'' + + ", userImgUrl='" + userImgUrl + '\'' + + '}'; + } +} diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/TeacherBean.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/TeacherBean.java index b472248..fbc2664 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/TeacherBean.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/TeacherBean.java @@ -12,6 +12,16 @@ public class TeacherBean implements Serializable { private String face; + private String time; + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + public String getTeacher_num() { return teacher_num; } @@ -57,6 +67,7 @@ public class TeacherBean implements Serializable { return "{\"name\":\"" + name + '\"' + ", \"teacher_num\":\"" + teacher_num + '\"' + ", \"num\":\"" + num + '\"' + + ",\"time\":\""+time+'\"'+ ", \"face\":\"" + face + '\"' +"}"; } } diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserControl.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserControl.java index 00d34af..6964459 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserControl.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserControl.java @@ -348,9 +348,8 @@ public class UserControl { @RequestMapping(value = "getCard", method = RequestMethod.GET) @ApiOperation("获取设备人脸是否存在") public boolean getCard(@RequestParam("deviceId") String deviceId, @RequestParam("card") String card) { - cmsServer.getFace(deviceId, Long.parseLong(getCard(card), 16) + ""); // HttpUtil.getCard(deviceId,card); - return true; + return cmsServer.getFace(deviceId, Long.parseLong(getCard(card), 16) + ""); } @RequestMapping(value = "IsDeviceOnline", method = RequestMethod.GET) diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/dao/UserDao.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/dao/UserDao.java index 886f3b5..ab2628b 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/dao/UserDao.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/dao/UserDao.java @@ -248,5 +248,6 @@ public interface UserDao { List getDeviceRoomRelation(@Param("clint_id") String clint_id); + void insertBaiduFaceRecorder(BaiduFaceRecorder baiduFaceRecorder); } diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/mqtt/MqttManager.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/mqtt/MqttManager.java index f58239c..d3708d3 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/mqtt/MqttManager.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/mqtt/MqttManager.java @@ -3,6 +3,7 @@ package com.sincere.haikangface.mqtt; import org.eclipse.paho.client.mqttv3.*; import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; +import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; @@ -112,7 +113,12 @@ public class MqttManager { String recvClientId = groupId + "@@@" + deviceId; final String p2pSendTopic = topic + "/p2p/" + recvClientId; String content = "{\"cmd\":\"" + cmd + "\",\"clientId\":\"\",\"data\": " + msg + "}"; - MqttMessage message = new MqttMessage(content.getBytes()); + MqttMessage message = null; + try { + message = new MqttMessage(content.getBytes("GB2312")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } message.setQos(qosLevel); System.out.println("发送内容:" + p2pSendTopic + " msg:---------" + msg); if (null != mqttClient) { diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/AlarmUtils.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/AlarmUtils.java index e3332a4..3df3b0d 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/AlarmUtils.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/AlarmUtils.java @@ -1,7 +1,9 @@ package com.sincere.haikangface.utils; +import com.sincere.haikangface.bean.BaiduFaceRecorder; import com.sincere.haikangface.bean.FaceWaterRecoder; import com.sincere.haikangface.dao.DeviceDao; +import com.sincere.haikangface.dao.UserDao; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; @@ -17,6 +19,8 @@ public class AlarmUtils { private DeviceDao deviceDao; + private UserDao userDao; + private AlarmCallBack alarmCallBack; // public static AlarmUtils getInstance(DeviceDao deviceDao) { @@ -28,8 +32,9 @@ public class AlarmUtils { // return alarmUtils; // } - public AlarmUtils(DeviceDao deviceDao) { + public AlarmUtils(DeviceDao deviceDao, UserDao userDao) { this.deviceDao = deviceDao; + this.userDao = userDao; } public void setCallBack(AlarmCallBack alarmCallBack) { @@ -41,9 +46,22 @@ public class AlarmUtils { } public void deleAlarm(String strXML) { - + System.out.println("人脸抓拍机:" + strXML); if (strXML.contains("FACESNAPREPORT")) {//人脸抓拍机器 +// System.out.println("人脸抓拍机:" + strXML); + BaiduFaceRecorder baiduFaceRecorder = new BaiduFaceRecorder(); + baiduFaceRecorder.setUploadImgUrl(strXML); + baiduFaceRecorder.setTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + userDao.insertBaiduFaceRecorder(baiduFaceRecorder); + + String deviceId = strXML.substring(strXML.indexOf("DeviceID"),strXML.lastIndexOf("DeviceID")).trim(); + deviceId = deviceId.replace("DeviceID>",""); + deviceId = deviceId.replace(" + + + insert into BaiduFaceRecorder values (#{name},#{userId},#{score},#{time},#{uploadImgUrl},#{userImgUrl}) + + -- libgit2 0.21.0