Commit d2ddaeb8a2bc083e8cddd9b71b27bee606cf1593

Authored by 邱一成
1 parent f2531697
Exists in master

考勤和下发优化完成

cloud/dahua/src/main/java/com/example/dahua/MyTask.java
@@ -2,6 +2,8 @@ package com.example.dahua; @@ -2,6 +2,8 @@ package com.example.dahua;
2 2
3 import com.example.dahua.bean.*; 3 import com.example.dahua.bean.*;
4 import com.example.dahua.dao.UserDao; 4 import com.example.dahua.dao.UserDao;
  5 +import com.example.dahua.enums.EnumSendFaceType;
  6 +import com.example.dahua.enums.EnumSzBusinessType;
5 import com.example.dahua.lib.NetSDKLib; 7 import com.example.dahua.lib.NetSDKLib;
6 import com.example.dahua.lib.ToolKits; 8 import com.example.dahua.lib.ToolKits;
7 import com.example.dahua.lib.Utils; 9 import com.example.dahua.lib.Utils;
@@ -242,8 +244,7 @@ public class MyTask implements ApplicationRunner { @@ -242,8 +244,7 @@ public class MyTask implements ApplicationRunner {
242 if (null != deviceInfoBeans && deviceInfoBeans.size() > 0) { 244 if (null != deviceInfoBeans && deviceInfoBeans.size() > 0) {
243 for (DeviceInfoBean dev : 245 for (DeviceInfoBean dev :
244 deviceInfoBeans) { 246 deviceInfoBeans) {
245 - if (lLongMap.get(dev.getDevcieId()).intValue() > 0) {  
246 - NetSDKLib.LLong lLong = GateModule.realLoadPic2(0, analyzerCallback, lLongMap.get(dev.getDevcieId()),dev.getDevcieId()); 247 + if (lLongMap.get(dev.getDevcieId()).intValue() > 0) { NetSDKLib.LLong lLong = GateModule.realLoadPic2(0, analyzerCallback, lLongMap.get(dev.getDevcieId()),dev.getDevcieId());
247 // System.out.println("监听成功:"+dev.getDevcieId()); 248 // System.out.println("监听成功:"+dev.getDevcieId());
248 // if (lLong.intValue() != -1) { 249 // if (lLong.intValue() != -1) {
249 // //deviceInfoBeans.remove(dev); 250 // //deviceInfoBeans.remove(dev);
@@ -290,7 +291,8 @@ public class MyTask implements ApplicationRunner { @@ -290,7 +291,8 @@ public class MyTask implements ApplicationRunner {
290 ToolKits.GetPointerData(pAlarmInfo, msg); 291 ToolKits.GetPointerData(pAlarmInfo, msg);
291 //卡号 292 //卡号
292 String card = new String(msg.szCardNo).trim(); 293 String card = new String(msg.szCardNo).trim();
293 - 294 + //开门错误码
  295 + int messageCode = msg.nErrorCode;
294 System.out.println("sda:" + card + " 抓拍照片存储地址:"); 296 System.out.println("sda:" + card + " 抓拍照片存储地址:");
295 297
296 try { 298 try {
@@ -304,8 +306,11 @@ public class MyTask implements ApplicationRunner { @@ -304,8 +306,11 @@ public class MyTask implements ApplicationRunner {
304 if (gateBufferedImage != null) { 306 if (gateBufferedImage != null) {
305 ImageIO.write(gateBufferedImage, "png", new File(snapPicPath)); 307 ImageIO.write(gateBufferedImage, "png", new File(snapPicPath));
306 } 308 }
  309 + int schoolId=userDao.getSchoolIdbyClint_id(szSn);
307 //卡号取反(大写) 310 //卡号取反(大写)
308 - card = cardNo(card); 311 + if(!szSn.startsWith("ytj")&&schoolId==126&&schoolId==393){
  312 + card = cardNo(card);
  313 + }
309 //根据卡号获取卡身份信息 314 //根据卡号获取卡身份信息
310 CardBean cardBean = userDao.getCards(card); 315 CardBean cardBean = userDao.getCards(card);
311 String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); 316 String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
@@ -314,11 +319,13 @@ public class MyTask implements ApplicationRunner { @@ -314,11 +319,13 @@ public class MyTask implements ApplicationRunner {
314 if (null != cardBean && cardBean.getType() == 0) { 319 if (null != cardBean && cardBean.getType() == 0) {
315 //老师人脸信息,保存人脸记录表 320 //老师人脸信息,保存人脸记录表
316 TeacherBean teacherBean = userDao.getTeacherWithId(cardBean.getUser_id()); 321 TeacherBean teacherBean = userDao.getTeacherWithId(cardBean.getUser_id());
317 - sendRecordDao.addFaceRecoder(szSn, teacherBean.getUser_id(), teacherBean.getName(), snapPicPath, 1, time, card,""); 322 + sendRecordDao.addFaceRecoder(szSn, teacherBean.getUser_id(), teacherBean.getName(), snapPicPath, 1,
  323 + time, card,messageCode ==32?EnumSendFaceType.TIME_INTERVAL_ERROR.message:"");
318 } else if (null != cardBean && cardBean.getType() == 2) { 324 } else if (null != cardBean && cardBean.getType() == 2) {
319 //学生人脸信息,保存人脸记录表 325 //学生人脸信息,保存人脸记录表
320 UserInfoBean userInfoBean = userDao.getStudentWithid(cardBean.getUser_id()); 326 UserInfoBean userInfoBean = userDao.getStudentWithid(cardBean.getUser_id());
321 - sendRecordDao.addFaceRecoder(szSn, userInfoBean.getUser_id(), userInfoBean.getName(), snapPicPath, 1, time, card,""); 327 + sendRecordDao.addFaceRecoder(szSn, userInfoBean.getUser_id(), userInfoBean.getName(), snapPicPath, 1,
  328 + time, card,messageCode ==32?EnumSendFaceType.TIME_INTERVAL_ERROR.message:"");
322 } 329 }
323 330
324 // TODO 考勤记录 331 // TODO 考勤记录
@@ -327,9 +334,10 @@ public class MyTask implements ApplicationRunner { @@ -327,9 +334,10 @@ public class MyTask implements ApplicationRunner {
327 //门禁事件类型:1进2出 334 //门禁事件类型:1进2出
328 int eventType = msg.emEventType; 335 int eventType = msg.emEventType;
329 //刷卡时间 336 //刷卡时间
330 - String eventTime = msg.UTC.toStringTime(); 337 + String eventTime = DateUtils.date2String(new Date(), DateUtils.format2);
  338 +
331 //保存考勤记录 339 //保存考勤记录
332 - kaoQinRecord(status,eventType,card,szSn,eventTime,snapPicPath); 340 + kaoQinRecord(status,eventType,card,szSn,eventTime,snapPicPath,messageCode);
333 } 341 }
334 342
335 } catch (IOException e2) { 343 } catch (IOException e2) {
@@ -382,7 +390,7 @@ public class MyTask implements ApplicationRunner { @@ -382,7 +390,7 @@ public class MyTask implements ApplicationRunner {
382 * @param eventTime 390 * @param eventTime
383 * @param imageUrl 391 * @param imageUrl
384 */ 392 */
385 - public void kaoQinRecord(int status,int eventType,String cardNo,String deviceId,String eventTime,String imageUrl) { 393 + public void kaoQinRecord(int status,int eventType,String cardNo,String deviceId,String eventTime,String imageUrl,int messageCode) {
386 if (status == 1) { 394 if (status == 1) {
387 //有效刷卡调考勤存储过程 395 //有效刷卡调考勤存储过程
388 CheckIn checkIn = new CheckIn(); 396 CheckIn checkIn = new CheckIn();
@@ -426,27 +434,32 @@ public class MyTask implements ApplicationRunner { @@ -426,27 +434,32 @@ public class MyTask implements ApplicationRunner {
426 } 434 }
427 } else { 435 } else {
428 //若即不成功,也不是请假,则按刷卡异常处理 436 //若即不成功,也不是请假,则按刷卡异常处理
429 - User user = userDao.selectUserByCardNum(cardNo).get(0);  
430 - if(user ==null ){  
431 - System.out.println("卡号"+cardNo+"没找到对应学生或老师"); 437 + List<User> users = userDao.selectUserByCardNum(cardNo);
  438 + if(users.size()<1){
  439 + log.warn("考勤记录:卡号: {}没找到对应学生或老师,考勤时间: {}",cardNo,DateUtils.date2String(new Date(), DateUtils.format2));
  440 + return;
432 } 441 }
  442 + User user = users.get(0);
433 int deviceType; 443 int deviceType;
434 if (deviceId.startsWith("ytj")){ 444 if (deviceId.startsWith("ytj")){
435 deviceType = 29; 445 deviceType = 29;
436 }else { 446 }else {
437 deviceType = 22; 447 deviceType = 22;
438 } 448 }
  449 + if(messageCode==32){
  450 + return;
  451 + }
439 //失败记录 452 //失败记录
440 SendRecordBean sendRecordBean = new SendRecordBean(); 453 SendRecordBean sendRecordBean = new SendRecordBean();
441 sendRecordBean.setSchoolId(user.getSchoolId()); 454 sendRecordBean.setSchoolId(user.getSchoolId());
442 sendRecordBean.setSchoolName(userDao.getSchoolName(String.valueOf(user.getSchoolId()))); 455 sendRecordBean.setSchoolName(userDao.getSchoolName(String.valueOf(user.getSchoolId())));
443 sendRecordBean.setTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); 456 sendRecordBean.setTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
444 - sendRecordBean.setUserType(2); 457 + sendRecordBean.setUserType(EnumSzBusinessType.EnumUserType.STUDENT.code);
445 sendRecordBean.setNum(cardNo); 458 sendRecordBean.setNum(cardNo);
446 sendRecordBean.setName(user.getName()); 459 sendRecordBean.setName(user.getName());
447 sendRecordBean.setImgPath(imageUrl); 460 sendRecordBean.setImgPath(imageUrl);
448 sendRecordBean.setCustomerid(String.valueOf(user.getStudentId())); 461 sendRecordBean.setCustomerid(String.valueOf(user.getStudentId()));
449 - sendRecordBean.setFailType(8); 462 + sendRecordBean.setFailType(messageCode);
450 sendRecordBean.setFailContent("人脸认证失败"); 463 sendRecordBean.setFailContent("人脸认证失败");
451 sendRecordBean.setDeviceID(deviceId); 464 sendRecordBean.setDeviceID(deviceId);
452 sendRecordDao.addFaceFail(sendRecordBean.getCustomerid(), sendRecordBean.getDeviceID(), sendRecordBean.getNum(), sendRecordBean.getName(), sendRecordBean.getTime(), 465 sendRecordDao.addFaceFail(sendRecordBean.getCustomerid(), sendRecordBean.getDeviceID(), sendRecordBean.getNum(), sendRecordBean.getName(), sendRecordBean.getTime(),
cloud/dahua/src/main/java/com/example/dahua/async/SendUserInfoTask.java
@@ -336,20 +336,16 @@ public class SendUserInfoTask { @@ -336,20 +336,16 @@ public class SendUserInfoTask {
336 * 若存在记录集编号,则表示用户已下发过,执行修改用户信息,反之,则新增下发用户人脸、卡信息 336 * 若存在记录集编号,则表示用户已下发过,执行修改用户信息,反之,则新增下发用户人脸、卡信息
337 */ 337 */
338 338
339 - //人脸下发成功标识:false:失败 true:成功  
340 - boolean bFaceFalgs = false;  
341 - //卡下发成功标识:false:失败 true:成功  
342 - boolean bCardFlags = false;  
343 - //卡操作错误号  
344 - String cardErrNum ="";  
345 - //人脸操作错误号  
346 - String faceErrNum =""; 339 + //人脸操作错误号:1 为成功,其他为相应错误号
  340 + int bFaceFalgs = 0;
  341 + //卡操作错误号 :1 为成功,其他为相应错误号
  342 + int bCardFlags = 0;
347 //新的记录集编号 343 //新的记录集编号
348 int newRecordNo = 0; 344 int newRecordNo = 0;
349 //获取记录集编号 345 //获取记录集编号
350 String recordNo = userDao.getRecordNo(user_id, attendanceBean.getClint_id()); 346 String recordNo = userDao.getRecordNo(user_id, attendanceBean.getClint_id());
351 if(!StringUtils.isEmpty(recordNo)){ 347 if(!StringUtils.isEmpty(recordNo)){
352 - bCardFlags = true; 348 + bCardFlags = 1;
353 } 349 }
354 //登录设备 350 //登录设备
355 NetSDKLib.LLong loginHandleLong = MyTask.lLongMap.get(attendanceBean.getClint_id()); 351 NetSDKLib.LLong loginHandleLong = MyTask.lLongMap.get(attendanceBean.getClint_id());
@@ -373,55 +369,79 @@ public class SendUserInfoTask { @@ -373,55 +369,79 @@ public class SendUserInfoTask {
373 } else { 369 } else {
374 log.info("=================开始执行下发人脸及卡号任务================="); 370 log.info("=================开始执行下发人脸及卡号任务=================");
375 //卡号取反 371 //卡号取反
376 - String cardNum = cardNo(student_num); 372 + String cardNum ="";
  373 + if(attendanceBean.getClint_id().startsWith("ytj")&&Integer.parseInt(attendanceBean.getSchool_id())!=126&&Integer.parseInt(attendanceBean.getSchool_id())!=393)
  374 + {cardNum = student_num;}
  375 + else
  376 + {cardNum = cardNo(student_num);}
377 //bCardFlags = true, 存在下发记录,则存在下发记录集编号,执行修改卡、人脸信息 377 //bCardFlags = true, 存在下发记录,则存在下发记录集编号,执行修改卡、人脸信息
378 - if (bCardFlags) { 378 + if (bCardFlags ==1) {
379 //修改设备卡信息 379 //修改设备卡信息
380 - boolean isEditCard = GateModule.modifyCard(Integer.parseInt(recordNo),cardNum, user_id, name, "123456", Res.string().getCardStatusInt(1),  
381 - Res.string().getCardTypeInt(1), 0, 0, 1, startTime, endTime, loginHandleLong, userType,cardErrNum,channel); 380 + bCardFlags = GateModule.modifyCard(Integer.parseInt(recordNo),cardNum, user_id, name, "123456", Res.string().getCardStatusInt(1),
  381 + Res.string().getCardTypeInt(1), 0, 0, 1, startTime, endTime, loginHandleLong, userType,channel);
382 382
383 - if (isEditCard) { 383 + if (bCardFlags ==1) {
384 //修改卡成功, 更新下发记录集编号表 384 //修改卡成功, 更新下发记录集编号表
385 userDao.updateRecordNo(user_id, Integer.parseInt(recordNo), attendanceBean.getClint_id()); 385 userDao.updateRecordNo(user_id, Integer.parseInt(recordNo), attendanceBean.getClint_id());
386 //修改卡成功, 更新设备用户人脸信息 386 //修改卡成功, 更新设备用户人脸信息
387 - boolean isEditFace = GateModule.modifyFaceInfo(user_id, memory, loginHandleLong,faceErrNum); 387 + bFaceFalgs = GateModule.modifyFaceInfo(user_id, memory, loginHandleLong);
388 //修改卡信息成功,但是人脸修改不成功的话,就需要新增人脸 388 //修改卡信息成功,但是人脸修改不成功的话,就需要新增人脸
389 - if (!isEditFace) {  
390 - bFaceFalgs = GateModule.addFaceInfo(user_id, memory, loginHandleLong,faceErrNum); 389 + if (bFaceFalgs !=1) {
  390 + bFaceFalgs = GateModule.addFaceInfo(user_id, memory, loginHandleLong);
  391 + //添加人脸失败,且错误号为1029 用户ID不存在,则删除下发记录集编号表记录:SZ_Student_RecoderNo,重新下发.
  392 + if(bFaceFalgs !=1 && String.valueOf(bFaceFalgs).equals(EnumSendFaceErrorType.NOT_EXIST_USER_1029.code)){
  393 + //删除记录
  394 + userDao.deleteRecordNo(user_id, Integer.parseInt(recordNo));
  395 + //重新下发卡号至设备
  396 + newRecordNo = GateModule.insertCard(cardNum, user_id, name, "123456", Res.string().getCardStatusInt(1),
  397 + Res.string().getCardTypeInt(1), 0, 1, 1, startTime, endTime, loginHandleLong,userType,channel);
  398 + //下发卡至设备,返回值不为-1为下发成功,保存下发记录集编号表
  399 + if (newRecordNo > 0) {
  400 + userDao.saveRecordNo(user_id, newRecordNo, name, attendanceBean.getClint_id());//存储记录集编号
  401 + }else{
  402 + bCardFlags = newRecordNo;
  403 + }
  404 + //添加人脸
  405 + bFaceFalgs = GateModule.addFaceInfo(user_id, memory, loginHandleLong);
  406 + }
391 } 407 }
392 }else{ 408 }else{
393 //设备修改卡信息失败,则删除下发记录集编号表记录:SZ_Student_RecoderNo,重新下发. 409 //设备修改卡信息失败,则删除下发记录集编号表记录:SZ_Student_RecoderNo,重新下发.
394 userDao.deleteRecordNo(user_id, Integer.parseInt(recordNo)); 410 userDao.deleteRecordNo(user_id, Integer.parseInt(recordNo));
395 //重新下发卡号至设备 411 //重新下发卡号至设备
396 newRecordNo = GateModule.insertCard(cardNum, user_id, name, "123456", Res.string().getCardStatusInt(1), 412 newRecordNo = GateModule.insertCard(cardNum, user_id, name, "123456", Res.string().getCardStatusInt(1),
397 - Res.string().getCardTypeInt(1), 0, 1, 1, startTime, endTime, loginHandleLong,userType,cardErrNum,channel); 413 + Res.string().getCardTypeInt(1), 0, 1, 1, startTime, endTime, loginHandleLong,userType,channel);
398 414
399 //下发卡至设备,返回值不为-1为下发成功,保存下发记录集编号表 415 //下发卡至设备,返回值不为-1为下发成功,保存下发记录集编号表
400 - if (newRecordNo != -1) { 416 + if (newRecordNo > 0) {
401 userDao.saveRecordNo(user_id, newRecordNo, name, attendanceBean.getClint_id());//存储记录集编号 417 userDao.saveRecordNo(user_id, newRecordNo, name, attendanceBean.getClint_id());//存储记录集编号
  418 + }else{
  419 + bCardFlags = newRecordNo;
402 } 420 }
403 //添加人脸 421 //添加人脸
404 - bFaceFalgs = GateModule.addFaceInfo(user_id, memory, loginHandleLong,faceErrNum); 422 + bFaceFalgs = GateModule.addFaceInfo(user_id, memory, loginHandleLong);
405 } 423 }
406 424
407 } else { 425 } else {
408 //新增卡信息, 新增人脸信息至设备 426 //新增卡信息, 新增人脸信息至设备
409 newRecordNo = GateModule.insertCard(cardNum, user_id, name, "123456" 427 newRecordNo = GateModule.insertCard(cardNum, user_id, name, "123456"
410 , Res.string().getCardStatusInt(1), Res.string().getCardTypeInt(1), 0, 1 428 , Res.string().getCardStatusInt(1), Res.string().getCardTypeInt(1), 0, 1
411 - , 1, startTime, endTime, loginHandleLong,userType,cardErrNum,channel); 429 + , 1, startTime, endTime, loginHandleLong,userType,channel);
412 430
413 //下发卡至设备,返回值不为-1为下发成功,保存下发记录集编号表 431 //下发卡至设备,返回值不为-1为下发成功,保存下发记录集编号表
414 - if (newRecordNo != -1) { 432 + if (newRecordNo >0) {
  433 + bCardFlags = newRecordNo;
415 userDao.saveRecordNo(user_id, newRecordNo, name, attendanceBean.getClint_id()); 434 userDao.saveRecordNo(user_id, newRecordNo, name, attendanceBean.getClint_id());
416 } 435 }
  436 +
417 //添加人脸 437 //添加人脸
418 - bFaceFalgs = GateModule.addFaceInfo(user_id, memory, loginHandleLong,faceErrNum); 438 + bFaceFalgs = GateModule.addFaceInfo(user_id, memory, loginHandleLong);
419 439
420 } 440 }
421 /** 441 /**
422 * 人脸和卡都下发成功 442 * 人脸和卡都下发成功
423 */ 443 */
424 - if (bCardFlags && bFaceFalgs) { 444 + if (bCardFlags > 0 && bFaceFalgs==1) {
425 FileUtils.getInstance().writeLogs("下发人脸和卡号成功:" + cardNum + " " + attendanceBean.getClint_id(), FileUtils.sendUserSucTxt); 445 FileUtils.getInstance().writeLogs("下发人脸和卡号成功:" + cardNum + " " + attendanceBean.getClint_id(), FileUtils.sendUserSucTxt);
426 log.info("下发人脸和卡号成功, sendRecordBean: "+ JSON.toJSONString(sendRecordBean)); 446 log.info("下发人脸和卡号成功, sendRecordBean: "+ JSON.toJSONString(sendRecordBean));
427 447
@@ -445,11 +465,11 @@ public class SendUserInfoTask { @@ -445,11 +465,11 @@ public class SendUserInfoTask {
445 /** 465 /**
446 * 人脸和卡都下发失败 466 * 人脸和卡都下发失败
447 */ 467 */
448 - if (!bCardFlags && !bFaceFalgs) { 468 + if (bCardFlags < 0 && bFaceFalgs!=1) {
449 FileUtils.getInstance().writeLogs("下发人脸和卡号失败:" + cardNum + " user_id: " + user_id + " loginHandleLong: " + loginHandleLong, FileUtils.sendUserErrTxt); 469 FileUtils.getInstance().writeLogs("下发人脸和卡号失败:" + cardNum + " user_id: " + user_id + " loginHandleLong: " + loginHandleLong, FileUtils.sendUserErrTxt);
450 log.info("下发人脸和卡号失败, sendRecordBean: "+ JSON.toJSONString(sendRecordBean)); 470 log.info("下发人脸和卡号失败, sendRecordBean: "+ JSON.toJSONString(sendRecordBean));
451 //失败信息 471 //失败信息
452 - String failContent = analysisErrorMsg(cardErrNum,faceErrNum); 472 + String failContent = analysisErrorMsg(String.valueOf(Math.abs(bCardFlags)),String.valueOf(bFaceFalgs));
453 sendRecordBean.setFailType(EnumSendFaceType.FACE_AND_CARD_FAIL.code); 473 sendRecordBean.setFailType(EnumSendFaceType.FACE_AND_CARD_FAIL.code);
454 sendRecordBean.setFailContent(failContent); 474 sendRecordBean.setFailContent(failContent);
455 sendRecordDao.updateFace(sendRecordBean.getNum(), sendRecordBean.getDeviceID(), sendRecordBean.getFailType(), EnumSendFaceType.FACE_AND_CARD_FAIL.code); 475 sendRecordDao.updateFace(sendRecordBean.getNum(), sendRecordBean.getDeviceID(), sendRecordBean.getFailType(), EnumSendFaceType.FACE_AND_CARD_FAIL.code);
@@ -458,11 +478,11 @@ public class SendUserInfoTask { @@ -458,11 +478,11 @@ public class SendUserInfoTask {
458 /** 478 /**
459 * 下发卡号成功,下发人脸失败, 479 * 下发卡号成功,下发人脸失败,
460 */ 480 */
461 - if (bCardFlags && !bFaceFalgs) { 481 + if (bCardFlags >0 && bFaceFalgs !=1) {
462 FileUtils.getInstance().writeLogs("下发卡号成功,下发人脸失败:" + cardNum + " " + attendanceBean.getClint_id(), FileUtils.sendUserErrTxt); 482 FileUtils.getInstance().writeLogs("下发卡号成功,下发人脸失败:" + cardNum + " " + attendanceBean.getClint_id(), FileUtils.sendUserErrTxt);
463 log.info("下发卡号成功,下发人脸失败, sendRecordBean: " + JSON.toJSONString(sendRecordBean)); 483 log.info("下发卡号成功,下发人脸失败, sendRecordBean: " + JSON.toJSONString(sendRecordBean));
464 //失败信息 484 //失败信息
465 - String failContent = analysisErrorMsg(cardErrNum,faceErrNum); 485 + String failContent = analysisErrorMsg(String.valueOf(bCardFlags),String.valueOf(bFaceFalgs));
466 sendRecordBean.setFailType(EnumSendFaceType.FACE_FAIL_CARD_SUCCESS.code); 486 sendRecordBean.setFailType(EnumSendFaceType.FACE_FAIL_CARD_SUCCESS.code);
467 sendRecordBean.setFailContent(failContent); 487 sendRecordBean.setFailContent(failContent);
468 sendRecordDao.updateFace(sendRecordBean.getNum(), sendRecordBean.getDeviceID(), sendRecordBean.getFailType(), EnumSendFaceType.FACE_FAIL_CARD_SUCCESS.code); 488 sendRecordDao.updateFace(sendRecordBean.getNum(), sendRecordBean.getDeviceID(), sendRecordBean.getFailType(), EnumSendFaceType.FACE_FAIL_CARD_SUCCESS.code);
@@ -472,7 +492,7 @@ public class SendUserInfoTask { @@ -472,7 +492,7 @@ public class SendUserInfoTask {
472 * 下发卡号失败,下发人脸成功, 492 * 下发卡号失败,下发人脸成功,
473 * 注:此一般不存在 493 * 注:此一般不存在
474 */ 494 */
475 - if (!bCardFlags && bFaceFalgs) { 495 + if (bCardFlags !=1 && bFaceFalgs !=1) {
476 FileUtils.getInstance().writeLogs("卡信息已存在,下发人脸成功:" + cardNum + " " + attendanceBean.getClint_id(), FileUtils.sendUserSucTxt); 496 FileUtils.getInstance().writeLogs("卡信息已存在,下发人脸成功:" + cardNum + " " + attendanceBean.getClint_id(), FileUtils.sendUserSucTxt);
477 log.info("-----------卡信息已存在,添加人脸成功----------"); 497 log.info("-----------卡信息已存在,添加人脸成功----------");
478 } 498 }
@@ -504,6 +524,10 @@ public class SendUserInfoTask { @@ -504,6 +524,10 @@ public class SendUserInfoTask {
504 } 524 }
505 } 525 }
506 } 526 }
  527 + if(StringUtils.isEmpty(channel)){
  528 + log.warn("未获取到学校权限通道号!");
  529 + return 0;
  530 + }
507 return Integer.parseInt(channel); 531 return Integer.parseInt(channel);
508 } 532 }
509 533
cloud/dahua/src/main/java/com/example/dahua/dao/UserDao.java
@@ -13,6 +13,8 @@ public interface UserDao { @@ -13,6 +13,8 @@ public interface UserDao {
13 @Select(" select student_num from SZ_V_School_Student where school_id = #{school_id} and studentcode = #{studentcode}") 13 @Select(" select student_num from SZ_V_School_Student where school_id = #{school_id} and studentcode = #{studentcode}")
14 public String getStudentNum(@Param("school_id") String school_id, @Param("studentcode") String studentcode); 14 public String getStudentNum(@Param("school_id") String school_id, @Param("studentcode") String studentcode);
15 15
  16 + @Select("select school_id from SZ_Attendance where clint_id = #{clint_id} ")
  17 + int getSchoolIdbyClint_id( @Param("clint_id") String clint_id);
16 18
17 @Select("select * from SZ_Attendance where school_id = #{school_id} and clint_type = #{clint_type}") 19 @Select("select * from SZ_Attendance where school_id = #{school_id} and clint_type = #{clint_type}")
18 List<AttendanceBean> getAttendanceBeans(@Param("school_id") String school_id, @Param("clint_type") String clint_type); 20 List<AttendanceBean> getAttendanceBeans(@Param("school_id") String school_id, @Param("clint_type") String clint_type);
@@ -50,7 +52,7 @@ public interface UserDao { @@ -50,7 +52,7 @@ public interface UserDao {
50 * @param customerid 52 * @param customerid
51 * @return 53 * @return
52 */ 54 */
53 - @Select(" select Top(1)* student_type from SZ_V_School_Student where school_id = #{school_id} and student_id = #{customerid}") 55 + @Select(" select Top(1) student_type from SZ_V_School_Student where school_id = #{school_id} and student_id = #{customerid}")
54 String getStudentType(@Param("school_id") String school_id, @Param("customerid") String customerid); 56 String getStudentType(@Param("school_id") String school_id, @Param("customerid") String customerid);
55 57
56 @Insert("insert into SZ_Student_RecoderNo values(#{user_id},#{recordNo},#{student_name},#{deviceId})") 58 @Insert("insert into SZ_Student_RecoderNo values(#{user_id},#{recordNo},#{student_name},#{deviceId})")
@@ -184,7 +186,7 @@ public interface UserDao { @@ -184,7 +186,7 @@ public interface UserDao {
184 * @param cardNum 186 * @param cardNum
185 * @return 187 * @return
186 */ 188 */
187 - @Select(" select school_id , class_id ,name ,student_id from\n" + 189 + @Select(" select school_id as schoolId , class_id as classId ,name ,student_id as studentId from\n" +
188 " (select top 1 b.school_id, b.class_id, b.name, student_id from SZ_V_Card a\n" + 190 " (select top 1 b.school_id, b.class_id, b.name, student_id from SZ_V_Card a\n" +
189 " inner join SZ_V_School_Student b on a.user_id = b.student_id\n" + 191 " inner join SZ_V_School_Student b on a.user_id = b.student_id\n" +
190 " and b.role_state = 1 where a.type = 2 and a.num = #{cardNum}\n" + 192 " and b.role_state = 1 where a.type = 2 and a.num = #{cardNum}\n" +
@@ -193,14 +195,14 @@ public interface UserDao { @@ -193,14 +195,14 @@ public interface UserDao {
193 " inner join SZ_V_School_Teacher b on a.user_id = b.teacher_id\n" + 195 " inner join SZ_V_School_Teacher b on a.user_id = b.teacher_id\n" +
194 " and b.role_state = 1 where a.type = 0 and a.num = #{cardNum}\n" + 196 " and b.role_state = 1 where a.type = 0 and a.num = #{cardNum}\n" +
195 " ) x ") 197 " ) x ")
196 - List<User> selectUserByCardNum(@Param("studentcode") String cardNum); 198 + List<User> selectUserByCardNum(@Param("cardNum") String cardNum);
197 199
198 /** 200 /**
199 * 获取卡号 201 * 获取卡号
200 * @param cardNo 202 * @param cardNo
201 * @return 203 * @return
202 */ 204 */
203 - @Select("select Top(1) StudentNum from HS_LeaveExaminePassList where StudentNum= #{cardNo} and GETDATE() <![CDATA[ > ]]> LeaveTime and GETDATE() <![CDATA[ < ]]> ReturnTime") 205 + @Select("select Top(1) StudentNum from HS_LeaveExaminePassList where StudentNum= #{cardNo} and GETDATE() > LeaveTime and GETDATE() < ReturnTime")
204 String checkLeave(@Param("cardNo") String cardNo); 206 String checkLeave(@Param("cardNo") String cardNo);
205 207
206 /** 208 /**
cloud/dahua/src/main/java/com/example/dahua/enums/EnumSendFaceType.java
@@ -12,7 +12,8 @@ public enum EnumSendFaceType { @@ -12,7 +12,8 @@ public enum EnumSendFaceType {
12 NOT_ONLINE_DEVICE(2, "设备不在线"), 12 NOT_ONLINE_DEVICE(2, "设备不在线"),
13 FACE_AND_CARD_FAIL(3, "人脸信息、卡信息下发失败"), 13 FACE_AND_CARD_FAIL(3, "人脸信息、卡信息下发失败"),
14 FACE_FAIL_CARD_SUCCESS(4, "人脸信息下发失败,卡信息下发成功"), 14 FACE_FAIL_CARD_SUCCESS(4, "人脸信息下发失败,卡信息下发成功"),
15 - FACE_SUCCESS_CARD_FAIl(5, "人脸信息下发成功,卡信息下发失败"); 15 + FACE_SUCCESS_CARD_FAIl(5, "人脸信息下发成功,卡信息下发失败"),
  16 + TIME_INTERVAL_ERROR(6, "刷卡时段验证错误");
16 17
17 public final int code; 18 public final int code;
18 public final String message; 19 public final String message;
cloud/dahua/src/main/java/com/example/dahua/module/GateModule.java
@@ -204,7 +204,7 @@ public class GateModule { @@ -204,7 +204,7 @@ public class GateModule {
204 public static synchronized int insertCard(String cardNo, String userId, String cardName, String cardPwd, 204 public static synchronized int insertCard(String cardNo, String userId, String cardName, String cardPwd,
205 int cardStatus, int cardType, int useTimes, int isFirstEnter, 205 int cardStatus, int cardType, int useTimes, int isFirstEnter,
206 int isValid, String startValidTime, String endValidTime, LLong lLong, 206 int isValid, String startValidTime, String endValidTime, LLong lLong,
207 - String userType,String cardErrNum,int channel) { 207 + String userType,int channel) {
208 /** 208 /**
209 * 门禁卡记录集信息 209 * 门禁卡记录集信息
210 */ 210 */
@@ -290,18 +290,17 @@ public class GateModule { @@ -290,18 +290,17 @@ public class GateModule {
290 String ret=ToolKits.getErrorCodePrint(); 290 String ret=ToolKits.getErrorCodePrint();
291 String number = ret.substring(ret.indexOf("|") + 1, ret.indexOf(")")); 291 String number = ret.substring(ret.indexOf("|") + 1, ret.indexOf(")"));
292 log.info("添加卡信息失败,错误信息:{} ,错误码:{} ",ret,number); 292 log.info("添加卡信息失败,错误信息:{} ,错误码:{} ",ret,number);
293 - cardErrNum = number;  
294 //146用户已存在,21对返回数据的校验出错,1162未知错误 293 //146用户已存在,21对返回数据的校验出错,1162未知错误
295 if(number.equals(EnumSendCardErrorType.CHECK_DATA_ERR_21.code)||number.equals(EnumSendCardErrorType.EXIST_USER_146.code)) { 294 if(number.equals(EnumSendCardErrorType.CHECK_DATA_ERR_21.code)||number.equals(EnumSendCardErrorType.EXIST_USER_146.code)) {
296 //用户已存在/返回数据校验出错时,执行删除用户 295 //用户已存在/返回数据校验出错时,执行删除用户
297 deleteUser( userId, lLong); 296 deleteUser( userId, lLong);
298 //重新下发卡至设备 297 //重新下发卡至设备
299 - cardErrNum = "";  
300 return insertCard(cardNo, userId, cardName, cardPwd, cardStatus, cardType, useTimes, isFirstEnter, 298 return insertCard(cardNo, userId, cardName, cardPwd, cardStatus, cardType, useTimes, isFirstEnter,
301 - isValid, startValidTime, endValidTime, lLong, userType,cardErrNum,channel); 299 + isValid, startValidTime, endValidTime, lLong, userType,channel);
302 } 300 }
303 //新增卡失败,错误码,返回-1 301 //新增卡失败,错误码,返回-1
304 - return -1; 302 + int result = 0- Integer.parseInt(number);
  303 + return result;
305 } else { 304 } else {
306 log.info("添加卡信息成功,卡信息记录集编号 : "+ insert.stuCtrlRecordSetResult.nRecNo); 305 log.info("添加卡信息成功,卡信息记录集编号 : "+ insert.stuCtrlRecordSetResult.nRecNo);
307 return insert.stuCtrlRecordSetResult.nRecNo; 306 return insert.stuCtrlRecordSetResult.nRecNo;
@@ -310,6 +309,14 @@ public class GateModule { @@ -310,6 +309,14 @@ public class GateModule {
310 // return true; 309 // return true;
311 } 310 }
312 311
  312 + public static void main(String[] args) {
  313 + int i =200;
  314 + int a = 0-i;
  315 + int b = Math.abs(a);
  316 + System.out.println(b);
  317 + System.out.println(a);
  318 + }
  319 +
313 /* public static synchronized int insertCard(String cardNo, String userId, String cardName, String cardPwd, 320 /* public static synchronized int insertCard(String cardNo, String userId, String cardName, String cardPwd,
314 int cardStatus, int cardType, int useTimes, int isFirstEnter, 321 int cardStatus, int cardType, int useTimes, int isFirstEnter,
315 int isValid, String startValidTime, String endValidTime, LLong lLong,String userType) { 322 int isValid, String startValidTime, String endValidTime, LLong lLong,String userType) {
@@ -687,10 +694,10 @@ public class GateModule { @@ -687,10 +694,10 @@ public class GateModule {
687 * @param userType 694 * @param userType
688 * @return 695 * @return
689 */ 696 */
690 - public static boolean modifyCard(int recordNo, String cardNo, String userId, String cardName, String cardPwd, 697 + public static int modifyCard(int recordNo, String cardNo, String userId, String cardName, String cardPwd,
691 int cardStatus, int cardType, int useTimes, int isFirstEnter, 698 int cardStatus, int cardType, int useTimes, int isFirstEnter,
692 int isValid, String startValidTime, String endValidTime, LLong lLong, 699 int isValid, String startValidTime, String endValidTime, LLong lLong,
693 - String userType,String cardErrNum,int channel) { 700 + String userType,int channel) {
694 /** 701 /**
695 * 门禁卡记录集信息 702 * 门禁卡记录集信息
696 */ 703 */
@@ -779,13 +786,12 @@ public class GateModule { @@ -779,13 +786,12 @@ public class GateModule {
779 String ret=ToolKits.getErrorCodePrint(); 786 String ret=ToolKits.getErrorCodePrint();
780 //结果码 787 //结果码
781 String number = ret.substring(ret.indexOf("|") + 1, ret.indexOf(")")); 788 String number = ret.substring(ret.indexOf("|") + 1, ret.indexOf(")"));
782 - cardErrNum = number;  
783 log.error("修改卡信息失败,错误信息:{} ,错误码:{} ",ret,number); 789 log.error("修改卡信息失败,错误信息:{} ,错误码:{} ",ret,number);
784 790
785 - return false; 791 + return Integer.parseInt(number);
786 } 792 }
787 log.info("修改卡信息成功!"); 793 log.info("修改卡信息成功!");
788 - return true; 794 + return 1;
789 } 795 }
790 796
791 /** 797 /**
@@ -1141,7 +1147,7 @@ public class GateModule { @@ -1141,7 +1147,7 @@ public class GateModule {
1141 return true; 1147 return true;
1142 } 1148 }
1143 1149
1144 - public static synchronized boolean addFaceInfo(String userId, Memory memory, LLong lLong,String faceErrNum) { 1150 + public static synchronized int addFaceInfo(String userId, Memory memory, LLong lLong) {
1145 int emType = EM_FACEINFO_OPREATE_TYPE.EM_FACEINFO_OPREATE_ADD; // 添加 1151 int emType = EM_FACEINFO_OPREATE_TYPE.EM_FACEINFO_OPREATE_ADD; // 添加
1146 1152
1147 /** 1153 /**
@@ -1176,21 +1182,18 @@ public class GateModule { @@ -1176,21 +1182,18 @@ public class GateModule {
1176 } else { 1182 } else {
1177 String ret=ToolKits.getErrorCodePrint(); 1183 String ret=ToolKits.getErrorCodePrint();
1178 String number = ret.substring(ret.indexOf("|") + 1, ret.indexOf(")")); 1184 String number = ret.substring(ret.indexOf("|") + 1, ret.indexOf(")"));
1179 - faceErrNum = number;  
1180 log.error("添加信息失败,错误信息:{} ,错误码:{} ",ret,number); 1185 log.error("添加信息失败,错误信息:{} ,错误码:{} ",ret,number);
1181 //照片已存在 1186 //照片已存在
1182 if(number.equals(EnumSendFaceErrorType.EXIST_IMG_1031.code)){ 1187 if(number.equals(EnumSendFaceErrorType.EXIST_IMG_1031.code)){
1183 - faceErrNum = "";  
1184 - return modifyFaceInfo(userId, memory, lLong,faceErrNum); 1188 + return modifyFaceInfo(userId, memory, lLong);
1185 } 1189 }
1186 //用户Id不存在 1190 //用户Id不存在
1187 if(number.equals(EnumSendFaceErrorType.NOT_EXIST_USER_1029.code)) { 1191 if(number.equals(EnumSendFaceErrorType.NOT_EXIST_USER_1029.code)) {
1188 - faceErrNum = "";  
1189 - return addFaceInfo( userId, memory, lLong,faceErrNum); 1192 + return Integer.parseInt(number);
1190 } 1193 }
1191 - return false; 1194 + return Integer.parseInt(number);
1192 } 1195 }
1193 - return true; 1196 + return 1;
1194 } 1197 }
1195 1198
1196 /** 1199 /**
@@ -1244,7 +1247,7 @@ public class GateModule { @@ -1244,7 +1247,7 @@ public class GateModule {
1244 } 1247 }
1245 1248
1246 1249
1247 - public static boolean modifyFaceInfo(String userId, Memory memory, LLong lLong,String faceErrNum) { 1250 + public static int modifyFaceInfo(String userId, Memory memory, LLong lLong) {
1248 int emType = EM_FACEINFO_OPREATE_TYPE.EM_FACEINFO_OPREATE_UPDATE; // 修改 1251 int emType = EM_FACEINFO_OPREATE_TYPE.EM_FACEINFO_OPREATE_UPDATE; // 修改
1249 1252
1250 /** 1253 /**
@@ -1274,17 +1277,16 @@ public class GateModule { @@ -1274,17 +1277,16 @@ public class GateModule {
1274 boolean bRet = LoginModule.netsdk.CLIENT_FaceInfoOpreate(lLong, emType, stIn.getPointer(), stOut.getPointer(), 5000); 1277 boolean bRet = LoginModule.netsdk.CLIENT_FaceInfoOpreate(lLong, emType, stIn.getPointer(), stOut.getPointer(), 5000);
1275 stIn.read(); 1278 stIn.read();
1276 stOut.read(); 1279 stOut.read();
1277 - 1280 + Map<String,String> map = new HashMap();
1278 if (bRet) { 1281 if (bRet) {
1279 log.info("修改人脸成功!"); 1282 log.info("修改人脸成功!");
1280 } else { 1283 } else {
1281 String ret=ToolKits.getErrorCodePrint(); 1284 String ret=ToolKits.getErrorCodePrint();
1282 String number = ret.substring(ret.indexOf("|") + 1, ret.indexOf(")")); 1285 String number = ret.substring(ret.indexOf("|") + 1, ret.indexOf(")"));
1283 - faceErrNum = number;  
1284 log.error("修改人脸失败,错误信息:{} ,错误码:{} ",ret,number); 1286 log.error("修改人脸失败,错误信息:{} ,错误码:{} ",ret,number);
1285 - return false; 1287 + return Integer.parseInt(number);
1286 } 1288 }
1287 - return true; 1289 + return 1;
1288 } 1290 }
1289 1291
1290 /** 1292 /**
cloud/dahua/src/main/java/com/example/dahua/utils/HttpUtils.java
@@ -105,7 +105,8 @@ public class HttpUtils { @@ -105,7 +105,8 @@ public class HttpUtils {
105 * @return 105 * @return
106 */ 106 */
107 public static boolean sendPermission(PermissionBean permissionBean) { 107 public static boolean sendPermission(PermissionBean permissionBean) {
108 - String url = "http://121.40.109.21:8991/file/sendPermission"; 108 +// String url = "http://121.40.109.21:8991/file/sendPermission";
  109 + String url = "http://localhost:8991/file/sendPermission";
109 RestTemplate restTemplate = new RestTemplate(); 110 RestTemplate restTemplate = new RestTemplate();
110 111
111 HttpHeaders headers = new HttpHeaders(); 112 HttpHeaders headers = new HttpHeaders();
cloud/dahua/src/main/resources/mapper/PermissionFaceMapper.xml
@@ -18,6 +18,8 @@ @@ -18,6 +18,8 @@
18 <result column="perrmissName" property="perrmissName"/> 18 <result column="perrmissName" property="perrmissName"/>
19 <result column="createTime" property="createTime"/> 19 <result column="createTime" property="createTime"/>
20 <result column="updateTime" property="updateTime"/> 20 <result column="updateTime" property="updateTime"/>
  21 + <result column="updateTime" property="updateTime"/>
  22 + <result column="nChannel" property="channel"/>
21 23
22 </resultMap> 24 </resultMap>
23 25