Commit 191a8018cfea466624f86907b0df5ce41fb96082
1 parent
3009e2ac
Exists in
master
无感考勤
Showing
21 changed files
with
564 additions
and
102 deletions
Show diff stats
cloud/dahua/src/main/java/com/example/dahua/MyTask.java
| ... | ... | @@ -66,9 +66,9 @@ public class MyTask implements ApplicationRunner { |
| 66 | 66 | public void run(ApplicationArguments args) throws Exception { |
| 67 | 67 | // 121.40.109.21 |
| 68 | 68 | |
| 69 | - LoginModule.init(disConnect, haveReConnect); // 打开工程,初始化 | |
| 69 | +// LoginModule.init(disConnect, haveReConnect); // 打开工程,初始化 | |
| 70 | 70 | |
| 71 | - autoRegister();//自注册 | |
| 71 | +// autoRegister();//自注册 | |
| 72 | 72 | |
| 73 | 73 | // System.out.println(" sendRecordDao:"+sendRecordDao.getSenSuccess()); |
| 74 | 74 | } | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/Test.java
| ... | ... | @@ -16,8 +16,13 @@ public class Test { |
| 16 | 16 | |
| 17 | 17 | public static void main(String[] args) { |
| 18 | 18 | |
| 19 | + String url = "E:\\wwwhtdocs\\SmartCampus\\face17e5\\School112\\Student\\saa.png"; | |
| 19 | 20 | |
| 20 | - Test test = new Test(); | |
| 21 | + url = url.substring(url.indexOf("School")+6,url.indexOf("\\Student")); | |
| 22 | + | |
| 23 | + System.out.println("url:"+url); | |
| 24 | + | |
| 25 | + /*Test test = new Test(); | |
| 21 | 26 | |
| 22 | 27 | File file = new File("C:\\Users\\Administrator\\Documents\\专业.txt"); |
| 23 | 28 | |
| ... | ... | @@ -37,7 +42,7 @@ public class Test { |
| 37 | 42 | e.printStackTrace(); |
| 38 | 43 | } catch (IOException e) { |
| 39 | 44 | e.printStackTrace(); |
| 40 | - } | |
| 45 | + }*/ | |
| 41 | 46 | |
| 42 | 47 | |
| 43 | 48 | } | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/control/UserControl.java
| ... | ... | @@ -62,7 +62,7 @@ public class UserControl { |
| 62 | 62 | @RequestMapping(value = "sendPermission", method = RequestMethod.POST) |
| 63 | 63 | @ApiOperation(value = "设置权限") |
| 64 | 64 | public boolean sendPermission(@RequestBody PermissionBean permissionBean) { |
| 65 | - return HttpUtils.sendPermission(permissionBean); | |
| 65 | + return HttpUtils.sendPermission(permissionBean); | |
| 66 | 66 | } |
| 67 | 67 | |
| 68 | 68 | @RequestMapping(value = "imgsSend", method = RequestMethod.GET) |
| ... | ... | @@ -116,7 +116,29 @@ public class UserControl { |
| 116 | 116 | @ApiOperation("在线活体检测") |
| 117 | 117 | public boolean checkFace(@RequestParam("url") String httpurl) { |
| 118 | 118 | |
| 119 | - return BaiduUtils.getBaiduUtils().checkImg(httpurl); | |
| 119 | + boolean check = BaiduUtils.getBaiduUtils().checkImg(httpurl); | |
| 120 | + | |
| 121 | + if (check) { | |
| 122 | + File file = new File(httpurl); | |
| 123 | + | |
| 124 | + String userCode = file.getName().split("\\.")[0]; | |
| 125 | + | |
| 126 | + String schoolId = ""; | |
| 127 | + | |
| 128 | + if (httpurl.contains("Student")) { | |
| 129 | + schoolId = httpurl.substring(httpurl.indexOf("School") + 6, httpurl.indexOf("\\Student")); | |
| 130 | + } else if (httpurl.contains("Teacher")) { | |
| 131 | + schoolId = httpurl.substring(httpurl.indexOf("School") + 6, httpurl.indexOf("\\Teacher")); | |
| 132 | + } | |
| 133 | + System.out.println("choolId:" + schoolId + "userCode:" + userCode); | |
| 134 | + if (!StringUtils.isEmpty(schoolId) && !StringUtils.isEmpty(userCode)) { | |
| 135 | + String userId = userService.getUserId(userCode, schoolId); | |
| 136 | + BaiduUtils.getBaiduUtils().addFace(new File(httpurl), schoolId, userId, userId); | |
| 137 | + FileUtils.getInstance().writeLogs("人脸添加成功:" + userId, "人脸添加成功.txt"); | |
| 138 | + } | |
| 139 | + } | |
| 140 | + | |
| 141 | + return check; | |
| 120 | 142 | |
| 121 | 143 | } |
| 122 | 144 | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/dao/UserDao.java
| ... | ... | @@ -133,4 +133,8 @@ public interface UserDao { |
| 133 | 133 | |
| 134 | 134 | @Select("select * from SZ_V_School_Teacher where user_id = #{userId}") |
| 135 | 135 | List<TeacherBean> getTeaWithUserId(@Param("userId")String userId); |
| 136 | + | |
| 137 | + @Select("select Top(1) user_id from SZ_V_School_Student where studentcode = #{studentcode}") | |
| 138 | + String getStuWithCode(@Param("studentcode") String code); | |
| 139 | + | |
| 136 | 140 | } | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/service/UserService.java
| ... | ... | @@ -3,10 +3,7 @@ package com.example.dahua.service; |
| 3 | 3 | import com.example.dahua.bean.AttendanceBean; |
| 4 | 4 | import com.example.dahua.bean.PermissionBean; |
| 5 | 5 | import com.example.dahua.bean.UserInfoBean; |
| 6 | -import org.springframework.scheduling.annotation.Async; | |
| 7 | -import org.springframework.web.multipart.MultipartFile; | |
| 8 | 6 | |
| 9 | -import java.io.File; | |
| 10 | 7 | import java.util.List; |
| 11 | 8 | |
| 12 | 9 | public interface UserService { |
| ... | ... | @@ -57,4 +54,7 @@ public interface UserService { |
| 57 | 54 | */ |
| 58 | 55 | boolean sendPermission(PermissionBean permissionBean); |
| 59 | 56 | |
| 57 | + String getUserId(String code,String schoolId); | |
| 58 | + | |
| 59 | + | |
| 60 | 60 | } | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/service/imp/UserServiceImp.java
| ... | ... | @@ -117,4 +117,23 @@ public class UserServiceImp implements UserService { |
| 117 | 117 | return false; |
| 118 | 118 | } |
| 119 | 119 | |
| 120 | + @Override | |
| 121 | + public String getUserId(String code,String schoolId) { | |
| 122 | + | |
| 123 | + String userId = ""; | |
| 124 | + | |
| 125 | + | |
| 126 | + userId = userDao.getStuWithCode(code); | |
| 127 | + | |
| 128 | + if (StringUtils.isEmpty(userId)){ | |
| 129 | + | |
| 130 | + TeacherBean teacherBean = userDao.getTeacher(schoolId,code); | |
| 131 | + userId = teacherBean.getUser_id(); | |
| 132 | + | |
| 133 | + } | |
| 134 | + | |
| 135 | + return userId; | |
| 136 | + } | |
| 137 | + | |
| 138 | + | |
| 120 | 139 | } | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/utils/BaiduUtils.java
| 1 | 1 | package com.example.dahua.utils; |
| 2 | 2 | |
| 3 | +import com.alibaba.fastjson.JSON; | |
| 3 | 4 | import com.example.dahua.async.ImageUtils; |
| 4 | 5 | import com.example.dahua.lib.CompressPic; |
| 5 | 6 | import org.json.JSONArray; |
| ... | ... | @@ -9,10 +10,7 @@ import javax.imageio.stream.FileImageInputStream; |
| 9 | 10 | import java.io.*; |
| 10 | 11 | import java.net.HttpURLConnection; |
| 11 | 12 | import java.net.URL; |
| 12 | -import java.util.ArrayList; | |
| 13 | -import java.util.HashMap; | |
| 14 | -import java.util.List; | |
| 15 | -import java.util.Map; | |
| 13 | +import java.util.*; | |
| 16 | 14 | |
| 17 | 15 | public class BaiduUtils { |
| 18 | 16 | |
| ... | ... | @@ -107,6 +105,21 @@ public class BaiduUtils { |
| 107 | 105 | return true; |
| 108 | 106 | } |
| 109 | 107 | |
| 108 | + /** | |
| 109 | + * 注册人脸到百度 | |
| 110 | + * @param file | |
| 111 | + */ | |
| 112 | + private void addToBaidu(File file) { | |
| 113 | + | |
| 114 | + //学籍号或者教职工编号 | |
| 115 | + String userCode = file.getName().split("\\.")[0]; | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | +// BaiduUtils.getBaiduUtils().addFace(file,) | |
| 120 | + | |
| 121 | + } | |
| 122 | + | |
| 110 | 123 | //图片到byte数组 |
| 111 | 124 | public byte[] image2byte(String path) { |
| 112 | 125 | byte[] data = null; |
| ... | ... | @@ -208,4 +221,71 @@ public class BaiduUtils { |
| 208 | 221 | return null; |
| 209 | 222 | } |
| 210 | 223 | |
| 224 | + | |
| 225 | + //注册人脸 | |
| 226 | + public String addFace(File img, String group_id, String user_id, String userInfo) { | |
| 227 | + | |
| 228 | + String url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add"; | |
| 229 | + | |
| 230 | + | |
| 231 | + try { | |
| 232 | + Map<String, Object> map = new HashMap<>(); | |
| 233 | + map.put("image", Base64Util.encode(InputStream2ByteArray(img.getAbsolutePath()))); | |
| 234 | + map.put("group_id", group_id); | |
| 235 | + map.put("user_id", user_id); | |
| 236 | + map.put("user_info", userInfo); | |
| 237 | +// map.put("liveness_control", "NORMAL"); | |
| 238 | + map.put("image_type", "BASE64"); | |
| 239 | + map.put("quality_control", "NORMAL"); | |
| 240 | + | |
| 241 | + String param = GsonUtils.toJson(map); | |
| 242 | + | |
| 243 | + // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。 | |
| 244 | + | |
| 245 | + String result = HttpUtil.post(url, getAuth(), "application/json", param); | |
| 246 | + System.out.println(result); | |
| 247 | + com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(result); | |
| 248 | + String error_msg = jsonObject.getString("error_msg"); | |
| 249 | + if (error_msg.equals("SUCCESS")) { | |
| 250 | + | |
| 251 | +// com.alibaba.fastjson.JSONObject faceResult = jsonObject.getJSONObject("result"); | |
| 252 | + | |
| 253 | +// FacerecordBean facerecordBean = new FacerecordBean(); | |
| 254 | +// | |
| 255 | +// facerecordBean.setFace_token(faceResult.getString("face_token")); | |
| 256 | +// facerecordBean.setGroup_id(group_id); | |
| 257 | +// facerecordBean.setIntime(simpleDateFormat.format(new Date())); | |
| 258 | +// facerecordBean.setUser_id(user_id); | |
| 259 | +// | |
| 260 | +// facerecordService.addFacerecord(facerecordBean); | |
| 261 | + return "注册成功"; | |
| 262 | + } else { | |
| 263 | + return error_msg; | |
| 264 | + } | |
| 265 | + | |
| 266 | + } catch (Exception e) { | |
| 267 | + e.printStackTrace(); | |
| 268 | + } | |
| 269 | + return ""; | |
| 270 | + } | |
| 271 | + | |
| 272 | + private byte[] InputStream2ByteArray(String filePath) throws IOException { | |
| 273 | + | |
| 274 | + InputStream in = new FileInputStream(filePath); | |
| 275 | + byte[] data = toByteArray(in); | |
| 276 | + in.close(); | |
| 277 | + | |
| 278 | + return data; | |
| 279 | + } | |
| 280 | + | |
| 281 | + private byte[] toByteArray(InputStream in) throws IOException { | |
| 282 | + | |
| 283 | + ByteArrayOutputStream out = new ByteArrayOutputStream(); | |
| 284 | + byte[] buffer = new byte[1024 * 4]; | |
| 285 | + int n = 0; | |
| 286 | + while ((n = in.read(buffer)) != -1) { | |
| 287 | + out.write(buffer, 0, n); | |
| 288 | + } | |
| 289 | + return out.toByteArray(); | |
| 290 | + } | |
| 211 | 291 | } | ... | ... |
cloud/dahua/src/main/resources/mapper/usermapper.xml
cloud/haikang/src/main/java/com/sincere/haikang/SchduleTask.java
| ... | ... | @@ -2,6 +2,7 @@ package com.sincere.haikang; |
| 2 | 2 | |
| 3 | 3 | import com.sincere.haikang.async.SendUserAsync; |
| 4 | 4 | import com.sincere.haikang.bean.AttendanceBean; |
| 5 | +import com.sincere.haikang.bean.SIngleCardBean; | |
| 5 | 6 | import com.sincere.haikang.bean.StudentBean; |
| 6 | 7 | import com.sincere.haikang.dao.DeviceDao; |
| 7 | 8 | import com.sincere.haikang.dao.UserDao; |
| ... | ... | @@ -22,7 +23,9 @@ import org.springframework.util.StringUtils; |
| 22 | 23 | import org.springframework.web.client.RestTemplate; |
| 23 | 24 | |
| 24 | 25 | import java.io.*; |
| 26 | +import java.text.SimpleDateFormat; | |
| 25 | 27 | import java.util.ArrayList; |
| 28 | +import java.util.Date; | |
| 26 | 29 | import java.util.List; |
| 27 | 30 | |
| 28 | 31 | @Component |
| ... | ... | @@ -129,10 +132,13 @@ public class SchduleTask { |
| 129 | 132 | String clientIds = ""; |
| 130 | 133 | for (int i = 0; i < attendanceBeans.size(); i++) { |
| 131 | 134 | if (i < attendanceBeans.size() - 1) { |
| 132 | - if (attendanceBeans.get(i).getClint_type().equals("22")) { | |
| 135 | + AttendanceBean attendanceBean = attendanceBeans.get(i); | |
| 136 | + System.out.println("attendanceBean:"+attendanceBean.toString()); | |
| 137 | + String clint_type = attendanceBean.getClint_type(); | |
| 138 | + if (null!=clint_type&&clint_type.equals("22")) { | |
| 133 | 139 | type = 22; |
| 134 | 140 | clientIds += attendanceBeans.get(i).getClint_id() + ","; |
| 135 | - } else if (attendanceBeans.get(i).getClint_type().equals("18")) { | |
| 141 | + } else if (null!=clint_type&&clint_type.equals("18")) { | |
| 136 | 142 | type = 18; |
| 137 | 143 | clientIds += attendanceBeans.get(i).getClint_id(); |
| 138 | 144 | } |
| ... | ... | @@ -167,13 +173,46 @@ public class SchduleTask { |
| 167 | 173 | int SchoolId = studentBean.getSchoolId(); |
| 168 | 174 | String card = TextUtils.isEmpty(studentBean.getCard()) ? studentBean.getOldCard() : studentBean.getCard(); |
| 169 | 175 | if (!TextUtils.isEmpty(card)) { |
| 170 | - RestTemplate restTemplate = new RestTemplate(); | |
| 171 | - HttpHeaders headers = new HttpHeaders(); | |
| 172 | - headers.setContentType(MediaType.APPLICATION_JSON_UTF8); | |
| 173 | - String url = "http://campus.myjxt.com/api/OneCard/SendSingle?SchoolId=" + SchoolId + "&Card=" + card + "&ClassId=" + studentBean.getClassId(); | |
| 174 | - System.out.println("下发卡号url:" + url); | |
| 175 | - ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class); | |
| 176 | - System.out.println("下发卡号:" + responseEntity.getBody()); | |
| 176 | + | |
| 177 | + List<AttendanceBean> attendanceBeans = deviceDao.getAttendancesWithSchoolId(SchoolId); | |
| 178 | + | |
| 179 | + for (int i = 0; i < attendanceBeans.size(); i++) { | |
| 180 | + | |
| 181 | + AttendanceBean attendanceBean = attendanceBeans.get(i); | |
| 182 | + | |
| 183 | + String clint_type = attendanceBean.getClint_type(); | |
| 184 | + | |
| 185 | + if (null!=clint_type&&clint_type.equals("6")){ | |
| 186 | + | |
| 187 | + SIngleCardBean sIngleCardBean = new SIngleCardBean(); | |
| 188 | + | |
| 189 | + sIngleCardBean.setCardNo(card); | |
| 190 | + sIngleCardBean.setEndTime("2050-09-04T00:52:22.510Z"); | |
| 191 | + sIngleCardBean.setId("5"); | |
| 192 | + sIngleCardBean.setShiduan("2"); | |
| 193 | + sIngleCardBean.setSn(attendanceBean.getClint_id()); | |
| 194 | + sIngleCardBean.setStartTime(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").format(new Date())); | |
| 195 | + sIngleCardBean.setType("1"); | |
| 196 | + | |
| 197 | + RestTemplate restTemplate = new RestTemplate(); | |
| 198 | + HttpHeaders headers = new HttpHeaders(); | |
| 199 | + MediaType mediaType = MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE); | |
| 200 | + headers.setContentType(mediaType); | |
| 201 | +// String url = "http://campus.myjxt.com/api/OneCard/SendSingle?SchoolId=" + SchoolId + "&Card=" + card + "&ClassId=" + studentBean.getClassId(); | |
| 202 | +// System.out.println("下发卡号url:" + url); | |
| 203 | +// ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class); | |
| 204 | +// System.out.println("下发卡号:" + responseEntity.getBody()); | |
| 205 | + System.out.println("sIngleCardBean:"+sIngleCardBean.toString()); | |
| 206 | + String url = "http://121.40.109.21:9000/setSignalCardInfo"; | |
| 207 | + HttpEntity<SIngleCardBean> httpEntity = new HttpEntity<>(sIngleCardBean,headers); | |
| 208 | + ResponseEntity<String> responseEntity = restTemplate.postForEntity(url,httpEntity,String.class); | |
| 209 | + System.out.println("下发卡号:" + responseEntity.getBody()); | |
| 210 | + | |
| 211 | + | |
| 212 | + } | |
| 213 | + | |
| 214 | + } | |
| 215 | + | |
| 177 | 216 | } |
| 178 | 217 | |
| 179 | 218 | ... | ... |
cloud/haikang/src/main/java/com/sincere/haikang/Test.java
0 → 100644
| ... | ... | @@ -0,0 +1,17 @@ |
| 1 | +package com.sincere.haikang; | |
| 2 | + | |
| 3 | +import java.text.SimpleDateFormat; | |
| 4 | +import java.util.Date; | |
| 5 | + | |
| 6 | +public class Test { | |
| 7 | + static int i ; | |
| 8 | + | |
| 9 | + public static void main(String[] args) { | |
| 10 | + | |
| 11 | + int num = 2147483647 ; | |
| 12 | + long temp = num + 2L ; | |
| 13 | + System.out.println(num) ; | |
| 14 | + | |
| 15 | + } | |
| 16 | + | |
| 17 | +} | ... | ... |
cloud/haikang/src/main/java/com/sincere/haikang/bean/SIngleCardBean.java
0 → 100644
| ... | ... | @@ -0,0 +1,89 @@ |
| 1 | +package com.sincere.haikang.bean; | |
| 2 | + | |
| 3 | +import java.io.Serializable; | |
| 4 | + | |
| 5 | +public class SIngleCardBean implements Serializable { | |
| 6 | + | |
| 7 | + private String cardNo; | |
| 8 | + | |
| 9 | + private String endTime; | |
| 10 | + | |
| 11 | + private String id; | |
| 12 | + | |
| 13 | + private String shiduan; | |
| 14 | + | |
| 15 | + private String sn; | |
| 16 | + | |
| 17 | + private String startTime; | |
| 18 | + | |
| 19 | + private String type; | |
| 20 | + | |
| 21 | + public String getCardNo() { | |
| 22 | + return cardNo; | |
| 23 | + } | |
| 24 | + | |
| 25 | + public void setCardNo(String cardNo) { | |
| 26 | + this.cardNo = cardNo; | |
| 27 | + } | |
| 28 | + | |
| 29 | + public String getEndTime() { | |
| 30 | + return endTime; | |
| 31 | + } | |
| 32 | + | |
| 33 | + public void setEndTime(String endTime) { | |
| 34 | + this.endTime = endTime; | |
| 35 | + } | |
| 36 | + | |
| 37 | + public String getId() { | |
| 38 | + return id; | |
| 39 | + } | |
| 40 | + | |
| 41 | + public void setId(String id) { | |
| 42 | + this.id = id; | |
| 43 | + } | |
| 44 | + | |
| 45 | + public String getShiduan() { | |
| 46 | + return shiduan; | |
| 47 | + } | |
| 48 | + | |
| 49 | + public void setShiduan(String shiduan) { | |
| 50 | + this.shiduan = shiduan; | |
| 51 | + } | |
| 52 | + | |
| 53 | + public String getSn() { | |
| 54 | + return sn; | |
| 55 | + } | |
| 56 | + | |
| 57 | + public void setSn(String sn) { | |
| 58 | + this.sn = sn; | |
| 59 | + } | |
| 60 | + | |
| 61 | + public String getStartTime() { | |
| 62 | + return startTime; | |
| 63 | + } | |
| 64 | + | |
| 65 | + public void setStartTime(String startTime) { | |
| 66 | + this.startTime = startTime; | |
| 67 | + } | |
| 68 | + | |
| 69 | + public String getType() { | |
| 70 | + return type; | |
| 71 | + } | |
| 72 | + | |
| 73 | + public void setType(String type) { | |
| 74 | + this.type = type; | |
| 75 | + } | |
| 76 | + | |
| 77 | + @Override | |
| 78 | + public String toString() { | |
| 79 | + return "SIngleCardBean{" + | |
| 80 | + "cardNo='" + cardNo + '\'' + | |
| 81 | + ", endTime='" + endTime + '\'' + | |
| 82 | + ", id='" + id + '\'' + | |
| 83 | + ", shiduan='" + shiduan + '\'' + | |
| 84 | + ", sn='" + sn + '\'' + | |
| 85 | + ", startTime='" + startTime + '\'' + | |
| 86 | + ", type='" + type + '\'' + | |
| 87 | + '}'; | |
| 88 | + } | |
| 89 | +} | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java
| ... | ... | @@ -57,20 +57,24 @@ public class CMSServer implements ApplicationRunner { |
| 57 | 57 | @Autowired |
| 58 | 58 | UserDao userDao; |
| 59 | 59 | |
| 60 | - | |
| 61 | 60 | @Autowired |
| 62 | 61 | SendRecordDao sendRecordDao; |
| 63 | 62 | |
| 64 | 63 | //114.55.30.100 |
| 65 | 64 | //120.26.116.253 |
| 66 | -// private String ip_cloud = "120.26.116.253"; | |
| 67 | -// private String ip_cloud = "192.168.71.242"; | |
| 68 | - private String ip_cloud = "114.55.30.100"; | |
| 65 | + private String ip_cloud = "120.26.116.253"; | |
| 66 | +// private String ip_cloud = "172.16.2.43"; | |
| 67 | +// private String ip_cloudQJ = "120.27.221.31";//枪机的图片和报警监听地址 | |
| 68 | +// private String ip_cloud = "114.55.30.100"; | |
| 69 | +// private String ip_cloud = "120.27.221.31"; | |
| 70 | +// private String ip_cloud = "121.40.109.21"; | |
| 71 | + | |
| 69 | 72 | private String ip; |
| 70 | 73 | |
| 71 | 74 | { |
| 72 | 75 | try { |
| 73 | 76 | ip = InetAddress.getLocalHost().getHostAddress(); |
| 77 | +// ip=ip_cloud; | |
| 74 | 78 | // ip_cloud = ip; |
| 75 | 79 | } catch (UnknownHostException e) { |
| 76 | 80 | e.printStackTrace(); |
| ... | ... | @@ -91,6 +95,15 @@ public class CMSServer implements ApplicationRunner { |
| 91 | 95 | //初始化报警监听 |
| 92 | 96 | initAlarm(); |
| 93 | 97 | |
| 98 | + /* String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); | |
| 99 | + BaiduFaceRecorder baiduFaceRecorder = new BaiduFaceRecorder(); | |
| 100 | + baiduFaceRecorder.setName("name"); | |
| 101 | + baiduFaceRecorder.setScore("11"); | |
| 102 | + baiduFaceRecorder.setTime(time); | |
| 103 | + baiduFaceRecorder.setUserImgUrl("22"); | |
| 104 | + baiduFaceRecorder.setUploadImgUrl("22"); | |
| 105 | + userDao.insertBaiduFaceRecorder(baiduFaceRecorder);*/ | |
| 106 | + | |
| 94 | 107 | } |
| 95 | 108 | |
| 96 | 109 | static HCEHomeCMS hCEhomeCMS = HCEHomeCMS.INSTANCE; |
| ... | ... | @@ -112,8 +125,8 @@ public class CMSServer implements ApplicationRunner { |
| 112 | 125 | fRegisterCallBack = new FRegisterCallBack(); |
| 113 | 126 | } |
| 114 | 127 | hCEhomeCMS.NET_ECMS_SetLogToFile(3, "C:/Ehomejavademo/EHomeSDKLog", false); |
| 115 | - | |
| 116 | 128 | struCMSListenPara.struAddress.szIP = ip.getBytes(); |
| 129 | +// System.out.println("ip--------------------------------------------:"+ip); | |
| 117 | 130 | struCMSListenPara.struAddress.wPort = 7660; |
| 118 | 131 | struCMSListenPara.fnCB = fRegisterCallBack; |
| 119 | 132 | |
| ... | ... | @@ -182,6 +195,9 @@ public class CMSServer implements ApplicationRunner { |
| 182 | 195 | |
| 183 | 196 | // byte[] byIP = ip.getBytes(); |
| 184 | 197 | byte[] byIP = ip_cloud.getBytes(); |
| 198 | + | |
| 199 | +// if (deviceId.startsWith("qj")) byIP = ip_cloudQJ.getBytes(); | |
| 200 | + | |
| 185 | 201 | System.arraycopy(byIP, 0, pInBuffer.struUDPAlarmSever.szIP, 0, byIP.length); |
| 186 | 202 | // TODO: 2020/8/27 人脸机类型为0 |
| 187 | 203 | pInBuffer.dwAlarmServerType = 0; //报警服务器类型:0- 只支持UDP协议上报,1- 支持UDP、TCP两种协议上报 |
| ... | ... | @@ -302,9 +318,10 @@ public class CMSServer implements ApplicationRunner { |
| 302 | 318 | public class PSS_Storage_Callback implements HCEHomeSS.EHomeSSStorageCallBack { |
| 303 | 319 | |
| 304 | 320 | public boolean invoke(NativeLong iHandle, String pFileName, Pointer pFileBuf, int dwFileLen, Pointer pFilePath, Pointer pUser) { |
| 305 | - log.error("图片进来:{}" , pFileName); | |
| 321 | +// log.error("图片进来:{}", pFileName); | |
| 306 | 322 | String strPath = "C://EhomePicServer/"; |
| 307 | 323 | // System.out.println("pFileName:" + pFileName); |
| 324 | + FileUtils.getInstance().writeLogs("文件名:" + pFileName, FileUtils.fileName); | |
| 308 | 325 | pFileName = pFileName.replace("_", ""); |
| 309 | 326 | boolean isZhuaPai = false; |
| 310 | 327 | if (pFileName.contains("-")) {//人脸抓拍机抓拍到的图片 |
| ... | ... | @@ -315,7 +332,6 @@ public class CMSServer implements ApplicationRunner { |
| 315 | 332 | } |
| 316 | 333 | |
| 317 | 334 | String strFilePath = strPath + pFileName; |
| 318 | - FileUtils.getInstance().writeLogs("文件名:" + pFileName, FileUtils.fileName); | |
| 319 | 335 | //保存抓拍到的人脸图片,比对通过后的图片资源 |
| 320 | 336 | |
| 321 | 337 | // System.out.println("文件保存回调函数:" + strFilePath); |
| ... | ... | @@ -348,6 +364,7 @@ public class CMSServer implements ApplicationRunner { |
| 348 | 364 | fout.write(bytes); |
| 349 | 365 | fout.close(); |
| 350 | 366 | |
| 367 | +// if (ip_cloud.equals(ip_cloudQJ)) | |
| 351 | 368 | sendToKB(strFilePathFile); |
| 352 | 369 | |
| 353 | 370 | } catch (FileNotFoundException e) { |
| ... | ... | @@ -369,6 +386,8 @@ public class CMSServer implements ApplicationRunner { |
| 369 | 386 | } |
| 370 | 387 | } |
| 371 | 388 | |
| 389 | + Map<String, Long> userMap = new HashMap<>(); | |
| 390 | + | |
| 372 | 391 | /** |
| 373 | 392 | * 发送人脸到看板 |
| 374 | 393 | * |
| ... | ... | @@ -377,69 +396,109 @@ public class CMSServer implements ApplicationRunner { |
| 377 | 396 | public void sendToKB(File strFilePathFile) { |
| 378 | 397 | try { |
| 379 | 398 | |
| 380 | - log.error("开始识别....."); | |
| 381 | - String url = "http://120.26.116.253:9214/baiduapi/search/16"; | |
| 382 | - | |
| 383 | - RestTemplate restTemplate = new RestTemplate(); | |
| 384 | - | |
| 385 | - HttpHeaders headers = new HttpHeaders(); | |
| 386 | - MediaType mediaType = MediaType.parseMediaType(MediaType.MULTIPART_FORM_DATA_VALUE); | |
| 387 | - headers.setContentType(mediaType); | |
| 388 | - MultiValueMap<String, Object> multiValueMap = new LinkedMultiValueMap<>(); | |
| 389 | - FileSystemResource fileSystemResource = new FileSystemResource(strFilePathFile); | |
| 390 | - | |
| 391 | - multiValueMap.add("file ", fileSystemResource); | |
| 392 | - HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<>(multiValueMap, headers); | |
| 393 | - | |
| 394 | - ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, httpEntity, String.class); | |
| 395 | - log.error("识别结果:{}" , responseEntity.getBody()); | |
| 396 | - JSONObject jsonObject = JSON.parseObject(responseEntity.getBody()); | |
| 397 | - | |
| 398 | - String face = jsonObject.getString("data"); | |
| 399 | - if (face.startsWith("face"))return; | |
| 400 | - | |
| 401 | - JSONObject data = jsonObject.getJSONObject("data"); | |
| 402 | - String error_msg = data.getString("error_msg"); | |
| 403 | - | |
| 404 | - if (error_msg.equals("SUCCESS")) {//识别成功 | |
| 405 | - JSONObject result = data.getJSONObject("result"); | |
| 406 | - JSONArray user_list = result.getJSONArray("user_list"); | |
| 407 | - | |
| 408 | - if (user_list != null && user_list.size() > 0) { | |
| 409 | - | |
| 410 | - for (int i = 0; i < user_list.size(); i++) { | |
| 411 | - JSONObject user = user_list.getJSONObject(i); | |
| 412 | - | |
| 413 | - String user_id = user.getString("user_id"); | |
| 414 | - String score = user.getString("score"); | |
| 415 | - double sc = Double.valueOf(score.split("\\.")[0]); | |
| 416 | - if (sc >= 60) { | |
| 417 | - System.out.println("user_id:" + user_id); | |
| 418 | - TeacherBean teacherBean = userDao.getTeacherWithUserId1(user_id); | |
| 419 | - if (null != teacherBean) { | |
| 420 | - if (TextUtils.isEmpty(teacherBean.getTeacer_num()))teacherBean.setTeacer_num(user_id); | |
| 421 | - MqtUtils.getInstance().sendMsg("09EA8EB5142F2964", 1, teacherBean.toString()); | |
| 399 | + log.error("开始识别....."); | |
| 400 | + String url = "http://120.26.116.253:9214/baiduapi/search/16"; | |
| 401 | + | |
| 402 | + RestTemplate restTemplate = new RestTemplate(); | |
| 403 | + | |
| 404 | + HttpHeaders headers = new HttpHeaders(); | |
| 405 | + MediaType mediaType = MediaType.parseMediaType(MediaType.MULTIPART_FORM_DATA_VALUE); | |
| 406 | + headers.setContentType(mediaType); | |
| 407 | + MultiValueMap<String, Object> multiValueMap = new LinkedMultiValueMap<>(); | |
| 408 | + FileSystemResource fileSystemResource = new FileSystemResource(strFilePathFile); | |
| 409 | + | |
| 410 | + multiValueMap.add("file ", fileSystemResource); | |
| 411 | + HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<>(multiValueMap, headers); | |
| 412 | + | |
| 413 | + ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, httpEntity, String.class); | |
| 414 | +// log.error("识别结果:{}", responseEntity.getBody()); | |
| 415 | + JSONObject jsonObject = JSON.parseObject(responseEntity.getBody()); | |
| 416 | + | |
| 417 | + String face = jsonObject.getString("data"); | |
| 418 | + if (face.startsWith("face")||face.startsWith("pic")) return; | |
| 419 | + | |
| 420 | + JSONObject data = jsonObject.getJSONObject("data"); | |
| 421 | + String error_msg = data.getString("error_msg"); | |
| 422 | + | |
| 423 | + if (error_msg.equals("SUCCESS")) {//识别成功 | |
| 424 | + JSONObject result = data.getJSONObject("result"); | |
| 425 | + JSONArray user_list = result.getJSONArray("user_list"); | |
| 426 | + | |
| 427 | + if (user_list != null && user_list.size() > 0) { | |
| 428 | + | |
| 429 | + for (int i = 0; i < user_list.size(); i++) { | |
| 430 | + JSONObject user = user_list.getJSONObject(i); | |
| 431 | + | |
| 432 | + String user_id = user.getString("user_id"); | |
| 433 | + String score = user.getString("score"); | |
| 434 | + double sc = Double.valueOf(score.split("\\.")[0]); | |
| 435 | + if (sc >= 60) { | |
| 436 | + System.out.println("user_id:" + user_id); | |
| 437 | + TeacherBean teacherBean = userDao.getTeacherWithUserId1(user_id); | |
| 438 | + | |
| 439 | + if (null != teacherBean) { | |
| 440 | + String date = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); | |
| 441 | + String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); | |
| 442 | + BaiduFaceRecorder baiduFaceRecorder = new BaiduFaceRecorder(); | |
| 443 | + baiduFaceRecorder.setName(teacherBean.getName()); | |
| 444 | + baiduFaceRecorder.setScore(sc+""); | |
| 445 | + baiduFaceRecorder.setTime(time); | |
| 446 | + baiduFaceRecorder.setUserImgUrl(teacherBean.getFace()); | |
| 447 | + baiduFaceRecorder.setUploadImgUrl(strFilePathFile.getAbsolutePath().contains(date)? | |
| 448 | + "http://" + ip_cloud + ":8081/kms/services/rest/dataInfoService/downloadFile?id="+strFilePathFile.getName().substring(0,strFilePathFile.getName().indexOf(date)):strFilePathFile.getAbsolutePath()); | |
| 449 | + baiduFaceRecorder.setUserId(user_id); | |
| 450 | + userDao.insertBaiduFaceRecorder(baiduFaceRecorder); | |
| 451 | + | |
| 452 | + if (TextUtils.isEmpty(teacherBean.getTeacer_num())) teacherBean.setTeacer_num(user_id); | |
| 453 | + teacherBean.setTime(time); | |
| 454 | + | |
| 455 | + if (userMap.containsKey(user_id)) { | |
| 456 | + | |
| 457 | + long value = userMap.get(user_id); | |
| 458 | + if ((System.currentTimeMillis() - value) / 1000 > 6) { | |
| 459 | + userMap.put(user_id, System.currentTimeMillis()); | |
| 460 | + MqtUtils.getInstance().sendMsg("09EA8EB5142F2964", 1, teacherBean.toString()); | |
| 461 | + log.error("发送成功....."); | |
| 462 | + } | |
| 463 | + | |
| 464 | + } else { | |
| 465 | + userMap.put(user_id, System.currentTimeMillis()); | |
| 466 | + MqtUtils.getInstance().sendMsg("09EA8EB5142F2964", 1, teacherBean.toString()); | |
| 467 | + log.error("发送成功....."); | |
| 468 | + } | |
| 469 | + | |
| 470 | +// strFilePathFile.deleteOnExit(); | |
| 471 | + } else { | |
| 472 | + System.out.println("用户身份信息不存在"); | |
| 473 | + sendNoPersonImg(strFilePathFile); | |
| 474 | + } | |
| 422 | 475 | } else { |
| 423 | - System.out.println("用户身份信息不存在"); | |
| 476 | + System.out.println("用户身份信息不存在" + score); | |
| 477 | + sendNoPersonImg(strFilePathFile); | |
| 424 | 478 | } |
| 425 | - }else { | |
| 426 | - System.out.println("用户身份信息不存在"+score); | |
| 479 | + | |
| 427 | 480 | } |
| 428 | 481 | |
| 429 | 482 | } |
| 430 | - | |
| 483 | + } else { | |
| 484 | + System.out.println("识别失败:" + error_msg); | |
| 431 | 485 | } |
| 432 | - } else { | |
| 433 | - System.out.println("识别失败:" + error_msg); | |
| 434 | - } | |
| 435 | - log.error("发送成功....."); | |
| 436 | 486 | // System.out.println("responseEntity:"+responseEntity.getBody()); |
| 437 | - }catch (Exception e){ | |
| 487 | + } catch (Exception e) { | |
| 438 | 488 | e.printStackTrace(); |
| 439 | 489 | } |
| 440 | 490 | |
| 441 | 491 | } |
| 442 | 492 | |
| 493 | + private void sendNoPersonImg(File strFilePathFile) { | |
| 494 | + String imgName = strFilePathFile.getName(); | |
| 495 | + String date = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); | |
| 496 | + if (imgName.contains(date)) { | |
| 497 | + String imgId = imgName.substring(0, imgName.indexOf(date)); | |
| 498 | + MqtUtils.getInstance().sendMsg("09EA8EB5142F2964", 2, "http://" + ip_cloud + ":8081/kms/services/rest/dataInfoService/downloadFile?id=" + imgId); | |
| 499 | + } | |
| 500 | + } | |
| 501 | + | |
| 443 | 502 | HCEHomeAlarm.NET_EHOME_ALARM_LISTEN_PARAM net_ehome_alarm_listen_param = new HCEHomeAlarm.NET_EHOME_ALARM_LISTEN_PARAM(); |
| 444 | 503 | EHomeMsgCallBack cbEHomeMsgCallBack; |
| 445 | 504 | ;//报警监听回调函数实现 |
| ... | ... | @@ -507,9 +566,9 @@ public class CMSServer implements ApplicationRunner { |
| 507 | 566 | |
| 508 | 567 | String strXML = new String(strXMLData.byValue); |
| 509 | 568 | // System.out.println(strXML); |
| 510 | -// log.error("报警监听:{}",strXML); | |
| 569 | +// log.error("报警监听:{}", strXML); | |
| 511 | 570 | if (null == alarmUtils) { |
| 512 | - alarmUtils = new AlarmUtils(deviceDao); | |
| 571 | + alarmUtils = new AlarmUtils(deviceDao,userDao); | |
| 513 | 572 | alarmUtils.setCallBack(new AlarmUtils.AlarmCallBack() { |
| 514 | 573 | @Override |
| 515 | 574 | public void callBack(String minorType, String deviceID, String cardNo, String time, String picDataUrlId, String currTemperature) { |
| ... | ... | @@ -563,7 +622,7 @@ public class CMSServer implements ApplicationRunner { |
| 563 | 622 | cardNo = sendRecoderUtils.getCard(card); |
| 564 | 623 | |
| 565 | 624 | StudentBean studentBean = userDao.getStudentWithCard(cardNo); |
| 566 | - log.error("studentBean:{}",studentBean); | |
| 625 | + log.error("studentBean:{}", studentBean); | |
| 567 | 626 | if (null != studentBean) { |
| 568 | 627 | FileUtils.getInstance().writeLogs(studentBean.getName() + " " + cardNo, FileUtils.facerecoder); |
| 569 | 628 | |
| ... | ... | @@ -589,9 +648,9 @@ public class CMSServer implements ApplicationRunner { |
| 589 | 648 | isTeacher(cardNo, deviceID); |
| 590 | 649 | } |
| 591 | 650 | |
| 592 | - if (deviceID.startsWith("qj")) {//枪击 用来抓拍人脸考勤用 | |
| 593 | - initQJ(deviceID, cardNo, studentBean == null); | |
| 594 | - } | |
| 651 | +// if (deviceID.startsWith("qj")) {//枪击 用来抓拍人脸考勤用 | |
| 652 | +// initQJ(deviceID, cardNo, studentBean == null); | |
| 653 | +// } | |
| 595 | 654 | |
| 596 | 655 | } |
| 597 | 656 | |
| ... | ... | @@ -614,12 +673,12 @@ public class CMSServer implements ApplicationRunner { |
| 614 | 673 | public void isTeacher(String cardNo, String deviceID) { |
| 615 | 674 | |
| 616 | 675 | List<String> devLists = userDao.getDeviceRoomRelation(deviceID); |
| 617 | - log.error("cardNo:{},devLists{}",cardNo,devLists); | |
| 676 | + log.error("cardNo:{},devLists{}", cardNo, devLists); | |
| 618 | 677 | |
| 619 | 678 | if (null != devLists && devLists.size() > 0) { |
| 620 | 679 | |
| 621 | 680 | StudentBean teacher = userDao.getTeacherWithCard(cardNo); |
| 622 | - FileUtils.getInstance().writeLogs("teacher:" + teacher+"----"+cardNo, "教师点名.txt"); | |
| 681 | + FileUtils.getInstance().writeLogs("teacher:" + teacher + "----" + cardNo, "教师点名.txt"); | |
| 623 | 682 | if (null != teacher) { |
| 624 | 683 | String url = String.format("http://campus.myjxt.com/api/RollCall/AddRollCallPersonnelRecord?userId=%s&deviceId=%s", teacher.getUser_id(), deviceID); |
| 625 | 684 | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/QieTuClass.java
| 1 | 1 | package com.sincere.haikangface; |
| 2 | 2 | |
| 3 | +import com.sincere.haikangface.mqtt.MqtUtils; | |
| 3 | 4 | import com.sincere.haikangface.utils.ApiUtil; |
| 4 | 5 | import com.sun.imageio.plugins.common.ImageUtil; |
| 5 | 6 | import org.json.JSONArray; |
| ... | ... | @@ -11,13 +12,21 @@ import java.awt.image.FilteredImageSource; |
| 11 | 12 | import java.awt.image.ImageFilter; |
| 12 | 13 | import java.io.File; |
| 13 | 14 | import java.io.IOException; |
| 15 | +import java.text.SimpleDateFormat; | |
| 16 | +import java.util.Date; | |
| 14 | 17 | |
| 15 | 18 | public class QieTuClass extends JFrame { |
| 16 | 19 | |
| 17 | 20 | |
| 18 | 21 | public static void main(String[] args) { |
| 22 | + String imgName = "43539917634D4EED364DEC87D8DEC2462020-09-01.jpg"; | |
| 23 | + String date = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); | |
| 24 | + if (imgName.contains(date)) { | |
| 25 | + String imgId = imgName.substring(0, imgName.indexOf(date)); | |
| 26 | + System.out.println("imgId:"+imgId); | |
| 27 | + } | |
| 19 | 28 | |
| 20 | - new QieTuClass(); | |
| 29 | +// new QieTuClass(); | |
| 21 | 30 | |
| 22 | 31 | } |
| 23 | 32 | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/async/SendUserAsync.java
| ... | ... | @@ -48,6 +48,7 @@ public class SendUserAsync { |
| 48 | 48 | if (check) {//合格 |
| 49 | 49 | //根据设备是5603 还是新设备 |
| 50 | 50 | String employeeNo = ""; |
| 51 | + boolean result = cmsServer.createImgPath(srcFile, picUrl, card, startTime, endTime, validTimeEnabled, name, deviceId, userType, employeeNo); | |
| 51 | 52 | if (deviceId.contains("ymzx") || deviceId.contains("5607") || deviceId.contains("5671") || deviceId.contains("5604")) { |
| 52 | 53 | long lon = Long.parseLong(card); |
| 53 | 54 | //十六进制卡号 |
| ... | ... | @@ -67,15 +68,14 @@ public class SendUserAsync { |
| 67 | 68 | } else |
| 68 | 69 | employeeNo = studentBean.getStudent_id(); |
| 69 | 70 | } |
| 70 | -// cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardTemplate(), "设置卡权限计划模板"); | |
| 71 | -// cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardWeekPlan(), "卡权限周计划"); | |
| 72 | -// for (int i = 0; i < 7; i++) { | |
| 73 | -// cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardWeekPlanTime(HKXmlUtils.getInstance().SetCardWeekPlanTimes("00:00:00", "23:00:00"), "" + i), "设置卡权限周计划时间"); | |
| 74 | -// } | |
| 75 | -// cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardRightCfg(card), "设置卡权限"); | |
| 71 | + cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardTemplate(), "设置卡权限计划模板"); | |
| 72 | + cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardWeekPlan(), "卡权限周计划"); | |
| 73 | + for (int i = 0; i < 7; i++) { | |
| 74 | + cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardWeekPlanTime(HKXmlUtils.getInstance().SetCardWeekPlanTimes("00:00:00", "23:00:00"), "" + i), "设置卡权限周计划时间"); | |
| 75 | + } | |
| 76 | + cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardRightCfg(card), "设置卡权限"); | |
| 76 | 77 | } |
| 77 | 78 | |
| 78 | - boolean result = cmsServer.createImgPath(srcFile, picUrl, card, startTime, endTime, validTimeEnabled, name, deviceId, userType, employeeNo); | |
| 79 | 79 | } else {//不合格 |
| 80 | 80 | sendRecoderUtils.sendFail(sendRecordDao, card, srcFile, deviceId, userDao, "人脸照片不合格", userType); |
| 81 | 81 | } | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/bean/BaiduFaceRecorder.java
0 → 100644
| ... | ... | @@ -0,0 +1,78 @@ |
| 1 | +package com.sincere.haikangface.bean; | |
| 2 | + | |
| 3 | +import java.io.Serializable; | |
| 4 | + | |
| 5 | +public class BaiduFaceRecorder implements Serializable { | |
| 6 | + | |
| 7 | + private String name; | |
| 8 | + | |
| 9 | + private String userId; | |
| 10 | + | |
| 11 | + private String score; | |
| 12 | + | |
| 13 | + private String time; | |
| 14 | + | |
| 15 | + private String uploadImgUrl; | |
| 16 | + | |
| 17 | + private String userImgUrl; | |
| 18 | + | |
| 19 | + public String getName() { | |
| 20 | + return name; | |
| 21 | + } | |
| 22 | + | |
| 23 | + public void setName(String name) { | |
| 24 | + this.name = name; | |
| 25 | + } | |
| 26 | + | |
| 27 | + public String getUserId() { | |
| 28 | + return userId; | |
| 29 | + } | |
| 30 | + | |
| 31 | + public void setUserId(String userId) { | |
| 32 | + this.userId = userId; | |
| 33 | + } | |
| 34 | + | |
| 35 | + public String getScore() { | |
| 36 | + return score; | |
| 37 | + } | |
| 38 | + | |
| 39 | + public void setScore(String score) { | |
| 40 | + this.score = score; | |
| 41 | + } | |
| 42 | + | |
| 43 | + public String getTime() { | |
| 44 | + return time; | |
| 45 | + } | |
| 46 | + | |
| 47 | + public void setTime(String time) { | |
| 48 | + this.time = time; | |
| 49 | + } | |
| 50 | + | |
| 51 | + public String getUploadImgUrl() { | |
| 52 | + return uploadImgUrl; | |
| 53 | + } | |
| 54 | + | |
| 55 | + public void setUploadImgUrl(String uploadImgUrl) { | |
| 56 | + this.uploadImgUrl = uploadImgUrl; | |
| 57 | + } | |
| 58 | + | |
| 59 | + public String getUserImgUrl() { | |
| 60 | + return userImgUrl; | |
| 61 | + } | |
| 62 | + | |
| 63 | + public void setUserImgUrl(String userImgUrl) { | |
| 64 | + this.userImgUrl = userImgUrl; | |
| 65 | + } | |
| 66 | + | |
| 67 | + @Override | |
| 68 | + public String toString() { | |
| 69 | + return "BaiduFaceRecorder{" + | |
| 70 | + "name='" + name + '\'' + | |
| 71 | + ", userId='" + userId + '\'' + | |
| 72 | + ", score='" + score + '\'' + | |
| 73 | + ", time='" + time + '\'' + | |
| 74 | + ", uploadImgUrl='" + uploadImgUrl + '\'' + | |
| 75 | + ", userImgUrl='" + userImgUrl + '\'' + | |
| 76 | + '}'; | |
| 77 | + } | |
| 78 | +} | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/bean/TeacherBean.java
| ... | ... | @@ -12,6 +12,16 @@ public class TeacherBean implements Serializable { |
| 12 | 12 | |
| 13 | 13 | private String face; |
| 14 | 14 | |
| 15 | + private String time; | |
| 16 | + | |
| 17 | + public String getTime() { | |
| 18 | + return time; | |
| 19 | + } | |
| 20 | + | |
| 21 | + public void setTime(String time) { | |
| 22 | + this.time = time; | |
| 23 | + } | |
| 24 | + | |
| 15 | 25 | public String getTeacher_num() { |
| 16 | 26 | return teacher_num; |
| 17 | 27 | } |
| ... | ... | @@ -57,6 +67,7 @@ public class TeacherBean implements Serializable { |
| 57 | 67 | return "{\"name\":\"" + name + '\"' + |
| 58 | 68 | ", \"teacher_num\":\"" + teacher_num + '\"' + |
| 59 | 69 | ", \"num\":\"" + num + '\"' + |
| 70 | + ",\"time\":\""+time+'\"'+ | |
| 60 | 71 | ", \"face\":\"" + face + '\"' +"}"; |
| 61 | 72 | } |
| 62 | 73 | } | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserControl.java
| ... | ... | @@ -348,9 +348,8 @@ public class UserControl { |
| 348 | 348 | @RequestMapping(value = "getCard", method = RequestMethod.GET) |
| 349 | 349 | @ApiOperation("获取设备人脸是否存在") |
| 350 | 350 | public boolean getCard(@RequestParam("deviceId") String deviceId, @RequestParam("card") String card) { |
| 351 | - cmsServer.getFace(deviceId, Long.parseLong(getCard(card), 16) + ""); | |
| 352 | 351 | // HttpUtil.getCard(deviceId,card); |
| 353 | - return true; | |
| 352 | + return cmsServer.getFace(deviceId, Long.parseLong(getCard(card), 16) + ""); | |
| 354 | 353 | } |
| 355 | 354 | |
| 356 | 355 | @RequestMapping(value = "IsDeviceOnline", method = RequestMethod.GET) | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/dao/UserDao.java
cloud/haikangface/src/main/java/com/sincere/haikangface/mqtt/MqttManager.java
| ... | ... | @@ -3,6 +3,7 @@ package com.sincere.haikangface.mqtt; |
| 3 | 3 | import org.eclipse.paho.client.mqttv3.*; |
| 4 | 4 | import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; |
| 5 | 5 | |
| 6 | +import java.io.UnsupportedEncodingException; | |
| 6 | 7 | import java.security.InvalidKeyException; |
| 7 | 8 | import java.security.NoSuchAlgorithmException; |
| 8 | 9 | |
| ... | ... | @@ -112,7 +113,12 @@ public class MqttManager { |
| 112 | 113 | String recvClientId = groupId + "@@@" + deviceId; |
| 113 | 114 | final String p2pSendTopic = topic + "/p2p/" + recvClientId; |
| 114 | 115 | String content = "{\"cmd\":\"" + cmd + "\",\"clientId\":\"\",\"data\": " + msg + "}"; |
| 115 | - MqttMessage message = new MqttMessage(content.getBytes()); | |
| 116 | + MqttMessage message = null; | |
| 117 | + try { | |
| 118 | + message = new MqttMessage(content.getBytes("GB2312")); | |
| 119 | + } catch (UnsupportedEncodingException e) { | |
| 120 | + e.printStackTrace(); | |
| 121 | + } | |
| 116 | 122 | message.setQos(qosLevel); |
| 117 | 123 | System.out.println("发送内容:" + p2pSendTopic + " msg:---------" + msg); |
| 118 | 124 | if (null != mqttClient) { | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/utils/AlarmUtils.java
| 1 | 1 | package com.sincere.haikangface.utils; |
| 2 | 2 | |
| 3 | +import com.sincere.haikangface.bean.BaiduFaceRecorder; | |
| 3 | 4 | import com.sincere.haikangface.bean.FaceWaterRecoder; |
| 4 | 5 | import com.sincere.haikangface.dao.DeviceDao; |
| 6 | +import com.sincere.haikangface.dao.UserDao; | |
| 5 | 7 | import org.springframework.stereotype.Component; |
| 6 | 8 | import org.springframework.util.StringUtils; |
| 7 | 9 | |
| ... | ... | @@ -17,6 +19,8 @@ public class AlarmUtils { |
| 17 | 19 | |
| 18 | 20 | private DeviceDao deviceDao; |
| 19 | 21 | |
| 22 | + private UserDao userDao; | |
| 23 | + | |
| 20 | 24 | private AlarmCallBack alarmCallBack; |
| 21 | 25 | |
| 22 | 26 | // public static AlarmUtils getInstance(DeviceDao deviceDao) { |
| ... | ... | @@ -28,8 +32,9 @@ public class AlarmUtils { |
| 28 | 32 | // return alarmUtils; |
| 29 | 33 | // } |
| 30 | 34 | |
| 31 | - public AlarmUtils(DeviceDao deviceDao) { | |
| 35 | + public AlarmUtils(DeviceDao deviceDao, UserDao userDao) { | |
| 32 | 36 | this.deviceDao = deviceDao; |
| 37 | + this.userDao = userDao; | |
| 33 | 38 | } |
| 34 | 39 | |
| 35 | 40 | public void setCallBack(AlarmCallBack alarmCallBack) { |
| ... | ... | @@ -41,9 +46,22 @@ public class AlarmUtils { |
| 41 | 46 | } |
| 42 | 47 | |
| 43 | 48 | public void deleAlarm(String strXML) { |
| 44 | - | |
| 49 | + System.out.println("人脸抓拍机:" + strXML); | |
| 45 | 50 | if (strXML.contains("FACESNAPREPORT")) {//人脸抓拍机器 |
| 46 | 51 | |
| 52 | +// System.out.println("人脸抓拍机:" + strXML); | |
| 53 | + BaiduFaceRecorder baiduFaceRecorder = new BaiduFaceRecorder(); | |
| 54 | + baiduFaceRecorder.setUploadImgUrl(strXML); | |
| 55 | + baiduFaceRecorder.setTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); | |
| 56 | + userDao.insertBaiduFaceRecorder(baiduFaceRecorder); | |
| 57 | + | |
| 58 | + String deviceId = strXML.substring(strXML.indexOf("DeviceID"),strXML.lastIndexOf("DeviceID")).trim(); | |
| 59 | + deviceId = deviceId.replace("DeviceID>",""); | |
| 60 | + deviceId = deviceId.replace("</",""); | |
| 61 | + | |
| 62 | +// if (null != alarmCallBack) | |
| 63 | +// alarmCallBack.callBack(minorType, deviceID, cardNo, time, picDataUrlId, currTemperature); | |
| 64 | + | |
| 47 | 65 | } else {//人脸识别 |
| 48 | 66 | |
| 49 | 67 | //主类型 | ... | ... |
cloud/haikangface/src/main/resources/mapper/usermapper.xml
| ... | ... | @@ -22,4 +22,9 @@ |
| 22 | 22 | select clint_id from SZ_DeviceRoomRelation where clint_id = #{clint_id} and state = 1; |
| 23 | 23 | </select> |
| 24 | 24 | |
| 25 | + <insert id="insertBaiduFaceRecorder" parameterType="com.sincere.haikangface.bean.BaiduFaceRecorder"> | |
| 26 | + | |
| 27 | + insert into BaiduFaceRecorder values (#{name},#{userId},#{score},#{time},#{uploadImgUrl},#{userImgUrl}) | |
| 28 | + | |
| 29 | + </insert> | |
| 25 | 30 | </mapper> | ... | ... |