diff --git a/cloud/dahua/src/main/java/com/example/dahua/async/SendUserInfoTask.java b/cloud/dahua/src/main/java/com/example/dahua/async/SendUserInfoTask.java index ee23450..13de833 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/async/SendUserInfoTask.java +++ b/cloud/dahua/src/main/java/com/example/dahua/async/SendUserInfoTask.java @@ -1,10 +1,16 @@ package com.example.dahua.async; //import com.example.dahua.Gate.Gate; + +import com.alibaba.fastjson.JSON; import com.example.dahua.MyTask; -import com.example.dahua.bean.*; +import com.example.dahua.bean.AttendanceBean; +import com.example.dahua.bean.SendRecordBean; +import com.example.dahua.bean.TeacherBean; +import com.example.dahua.bean.UserInfoBean; import com.example.dahua.common.Res; import com.example.dahua.dao.UserDao; +import com.example.dahua.enums.*; import com.example.dahua.lib.CompressPic; import com.example.dahua.lib.FilePath; import com.example.dahua.lib.NetSDKLib; @@ -14,15 +20,11 @@ import com.example.dahua.utils.FileUtils; import com.example.dahua.utils.HttpUtils; import com.example.dahua.xiananDao.SendRecordDao; import com.sun.jna.Memory; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; -import org.springframework.util.LinkedMultiValueMap; -import org.springframework.util.MultiValueMap; import org.springframework.util.StringUtils; import org.springframework.web.client.RestTemplate; @@ -34,6 +36,7 @@ import java.util.*; * 下发卡号的异步操作 */ @Component +@Slf4j public class SendUserInfoTask { @Autowired @@ -42,21 +45,32 @@ public class SendUserInfoTask { @Autowired SendRecordDao sendRecordDao; + /** + * 下发单个用户人脸任务 + * @param file + * @param attendanceBeans + * @param userInfoBean + * @param schoolId + * @param failType + * @param userType + * @throws Exception + */ // @Async("taskExecutor") public void doTaskOne(String file, List attendanceBeans, UserInfoBean userInfoBean, String schoolId, int failType, int userType) throws Exception { File studentFile = new File(file); + //学籍号 String studentCode = studentFile.getName().split("\\.")[0]; //判断是否是副卡 String[] studentCodes = studentCode.split("_"); - - if (studentCodes.length > 1) {//副卡 - + //副卡 + if (studentCodes.length > 1) { String cardType = studentCodes[1]; + //获取卡号 String cardNum = userDao.getCardNum(userInfoBean.getStudent_id(), cardType); userInfoBean.setStudent_num(cardNum); - } + //设置下发记录 SendRecordBean sendRecordBean = new SendRecordBean(); sendRecordBean.setSchoolId(Integer.parseInt(schoolId)); sendRecordBean.setSchoolName(userDao.getSchoolName(schoolId)); @@ -65,9 +79,11 @@ public class SendUserInfoTask { sendRecordBean.setNum(userInfoBean.getStudent_num()); sendRecordBean.setName(userInfoBean.getName()); sendRecordBean.setImgPath(file); + //用户id(即学生ID) sendRecordBean.setCustomerid(userInfoBean.getStudent_id()); sendRecordBean.setFailType(failType); - sendUserInfoToDev(file, attendanceBeans, userInfoBean, userType + "", sendRecordBean); + //下发至设备 + sendUserInfoToDev(file, attendanceBeans, userInfoBean, String.valueOf(userType), sendRecordBean); } // @Async("taskExecutor") @@ -215,26 +231,30 @@ public class SendUserInfoTask { private synchronized boolean sendUserInfoToDev(String file, List attendanceBeans, UserInfoBean userInfoBean, String userType, SendRecordBean sendRecordBean) { try { + //用户信息 if (userInfoBean == null) { - System.out.println("学生用户不存在"); + log.warn("学生用户信息不存在"); return false; } - if (attendanceBeans.size() == 0) {//"该学校下没有人脸设备" - System.out.println("该学校下没有人脸设备:"); - sendRecordBean.setFailType(2); - sendRecordBean.setFailContent("图片目录不存在"); - String schoolName = sendRecordDao.getSchoolDevice(sendRecordBean.getSchoolId(), 2);//判断是否已经记录改学校没有设备 - if (StringUtils.isEmpty(schoolName)) {//不存在记录则添加,保证没有设备的学校记录只有一条 - sendRecordDao.updateFace(sendRecordBean.getNum(), sendRecordBean.getDeviceID(), sendRecordBean.getFailType(), 2);//更新下发失败状态 - addFailDace(sendRecordBean); - } - return false; - } - + //卡号 String cardNum = userInfoBean.getStudent_num(); - System.out.println("cardNum:" + cardNum); if (StringUtils.isEmpty(cardNum) || cardNum.equals("null")) { - System.out.println("卡号为空"); + log.warn("下发卡号为空"); + return false; + } + //该学校下没有人脸设备 + if (attendanceBeans.size() == 0) { + sendRecordBean.setFailType(EnumSendFaceType.NOT_EXIST_DEVICE.code); + sendRecordBean.setFailContent(EnumSendFaceType.NOT_EXIST_DEVICE.message); + //获取学校下发失败记录,判断是否已经记录该学校没有设备 + String schoolName = sendRecordDao.getSchoolDevice(sendRecordBean.getSchoolId(), EnumSendFaceType.NOT_EXIST_DEVICE.code); + //不存在记录则添加,保证没有设备的学校记录只有一条 + if (StringUtils.isEmpty(schoolName)) { + //更新下发失败状态 + sendRecordDao.updateFace(sendRecordBean.getNum(), sendRecordBean.getDeviceID(), sendRecordBean.getFailType(), EnumSendFaceType.NOT_EXIST_DEVICE.code); + addFailDace(sendRecordBean); + } + log.warn("该学校下没有人脸设备"); return false; } @@ -274,174 +294,235 @@ public class SendUserInfoTask { } catch (Exception e) { e.printStackTrace(); } - - for (AttendanceBean attendanceBean : - attendanceBeans) { + //下发至所有设备 + for (AttendanceBean attendanceBean : attendanceBeans) { pushCardAndFace(attendanceBean, userInfoBean.getUser_id(), userInfoBean.getStudent_num(), userInfoBean.getName(), memory, sendRecordBean,userType); } } + /** + * 下发人脸/卡信息 + * @param attendanceBean + * @param user_id + * @param student_num + * @param name + * @param memory + * @param sendRecordBean + * @param userType + */ private synchronized void pushCardAndFace(AttendanceBean attendanceBean, String user_id, String student_num, String name, Memory memory, SendRecordBean sendRecordBean,String userType) { try{ - sendRecordBean.setDeviceID(attendanceBean.getClint_id()); - sendRecordBean.setSchoolId(Integer.parseInt(attendanceBean.getSchool_id())); - sendRecordBean.setTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); - sendRecordBean.setSchoolName(userDao.getSchoolName(attendanceBean.getSchool_id())); - String startTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.YEAR, 4); - String endTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime()); - int bCardFlags = -1;//记录集编号,存在于设备的 - bCardFlags = userDao.getRecordNo(user_id, attendanceBean.getClint_id()) == null ? -1 : Integer.parseInt(userDao.getRecordNo(user_id, attendanceBean.getClint_id())); - - NetSDKLib.LLong loginHandleLong = MyTask.lLongMap.get(attendanceBean.getClint_id()); -// System.out.println("loginHandleLong:" + loginHandleLong + MyTask.lLongMap.toString() + " 设备ID:" + attendanceBean.getClint_id()); -// System.out.println("loginHandleLong:" +loginHandleLong); - if (loginHandleLong == null) { - System.out.println("设备不在线:" + attendanceBean.getClint_id()); - FileUtils.getInstance().writeLogs("设备不在线:" + attendanceBean.getClint_id(), FileUtils.devices); - String deviceId = sendRecordDao.getFailIsExit(attendanceBean.getClint_id(), attendanceBean.getSchool_id()); - sendRecordBean.setFailType(2); - sendRecordBean.setFailContent("设备不在线"); - if (!StringUtils.isEmpty(deviceId)) { - sendRecordDao.updateFace(sendRecordBean.getNum(), sendRecordBean.getDeviceID(), sendRecordBean.getFailType(), 2);//更新下发失败状态 - addFailDace(sendRecordBean); - } + sendRecordBean.setDeviceID(attendanceBean.getClint_id()); + sendRecordBean.setSchoolId(Integer.parseInt(attendanceBean.getSchool_id())); + sendRecordBean.setTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + sendRecordBean.setSchoolName(userDao.getSchoolName(attendanceBean.getSchool_id())); - } else { - boolean bFaceFalgs = false; + String startTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.YEAR, 4); + String endTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime()); - String cardNum = cardNo(student_num); -// GateModule.getFace(user_id, loginHandleLong); -// GateModule.getUser(user_id, loginHandleLong); -// GateModule.getCard(cardNum, loginHandleLong); - if (bCardFlags != -1) {//修改卡信息 - int newRecordNo=0; - int bFaceFalgsInt=0; - - newRecordNo=GateModule.modifyCard(bCardFlags, cardNum, user_id, name, "123456", Res.string().getCardStatusInt(1), Res.string().getCardTypeInt(1), - 0, 0, 1, startTime, endTime, loginHandleLong, userType); - if(newRecordNo==1){ - userDao.updateRecordNo(user_id, bCardFlags, attendanceBean.getClint_id());} - - bFaceFalgsInt = GateModule.modifyFaceInfo(user_id, memory, loginHandleLong); - if(bFaceFalgsInt==1) {//1照片修改成功 - bFaceFalgs=true; + /** + * 注:用户下发逻辑 + * 下发时,先从下发记录表:SZ_Student_RecoderNo 获取当前用户下发记录集编号,存在于设备的,新增卡号时返回, + * 若存在记录集编号,则表示用户已下发过,执行修改用户信息,反之,则新增下发用户人脸、卡信息 + */ + + //人脸下发成功标识:false:失败 true:成功 + boolean bFaceFalgs = false; + //卡下发成功标识:false:失败 true:成功 + boolean bCardFlags = false; + //卡操作错误号 + String cardErrNum =""; + //人脸操作错误号 + String faceErrNum =""; + //新的记录集编号 + int newRecordNo = 0; + //获取记录集编号 + String recordNo = userDao.getRecordNo(user_id, attendanceBean.getClint_id()); + if(!StringUtils.isEmpty(recordNo)){ + bCardFlags = true; + } + //登录设备 + NetSDKLib.LLong loginHandleLong = MyTask.lLongMap.get(attendanceBean.getClint_id()); + log.info("设备ID: {},设备登录句柄: {}",loginHandleLong,attendanceBean.getClint_id() ); + + //若设备不在线时,且人脸下发失败表中存在记录,则执行修改下发失败状态为:设备不在线 + if (loginHandleLong == null) { + log.info("设备不在线, 设备ID: {} ",attendanceBean.getClint_id() ); + FileUtils.getInstance().writeLogs("设备不在线:" + attendanceBean.getClint_id(), FileUtils.devices); + //设备不在线 + sendRecordBean.setFailType(EnumSendFaceType.NOT_ONLINE_DEVICE.code); + sendRecordBean.setFailContent(EnumSendFaceType.NOT_ONLINE_DEVICE.message); + //判断该学校设备ID对应失败记录是否存在:Face_SendFail + String deviceId = sendRecordDao.getFailIsExit(attendanceBean.getClint_id(), attendanceBean.getSchool_id()); + if (!StringUtils.isEmpty(deviceId)) { + //更新下发失败状态 + sendRecordDao.updateFace(sendRecordBean.getNum(), sendRecordBean.getDeviceID(), sendRecordBean.getFailType(), EnumSendFaceType.NOT_ONLINE_DEVICE.code); + //添加下发失败记录 + addFailDace(sendRecordBean); + } + } else { + log.info("=================开始执行下发人脸及卡号任务================="); + //卡号取反 + String cardNum = cardNo(student_num); + //bCardFlags = true, 存在下发记录,则存在下发记录集编号,执行修改卡、人脸信息 + if (bCardFlags) { + //修改设备卡信息 + boolean isEditCard = GateModule.modifyCard(Integer.parseInt(recordNo),cardNum, user_id, name, "123456", Res.string().getCardStatusInt(1), + Res.string().getCardTypeInt(1), 0, 0, 1, startTime, endTime, loginHandleLong, userType,cardErrNum); + + if (isEditCard) { + //修改卡成功, 更新下发记录集编号表 + userDao.updateRecordNo(user_id, Integer.parseInt(recordNo), attendanceBean.getClint_id()); + //修改卡成功, 更新设备用户人脸信息 + boolean isEditFace = GateModule.modifyFaceInfo(user_id, memory, loginHandleLong,faceErrNum); + //修改卡信息成功,但是人脸修改不成功的话,就需要新增人脸 + if (!isEditFace) { + bFaceFalgs = GateModule.addFaceInfo(user_id, memory, loginHandleLong,faceErrNum); + } + }else{ + //设备修改卡信息失败,则删除下发记录集编号表记录:SZ_Student_RecoderNo,重新下发. + userDao.deleteRecordNo(user_id, Integer.parseInt(recordNo)); + //重新下发卡号至设备 + newRecordNo = GateModule.insertCard(cardNum, user_id, name, "123456", Res.string().getCardStatusInt(1), + Res.string().getCardTypeInt(1), 0, 1, 1, startTime, endTime, loginHandleLong,userType,cardErrNum); + + //下发卡至设备,返回值不为-1为下发成功,保存下发记录集编号表 + if (newRecordNo != -1) { + userDao.saveRecordNo(user_id, newRecordNo, name, attendanceBean.getClint_id());//存储记录集编号 + } + //添加人脸 + bFaceFalgs = GateModule.addFaceInfo(user_id, memory, loginHandleLong,faceErrNum); } - else{bFaceFalgs=false;} - //卡号添加成功,但是人脸不成功的话,就需要新增人脸 - if (!bFaceFalgs) - bFaceFalgs = GateModule.addFaceInfo(user_id, memory, loginHandleLong); - else{ - userDao.deleteRecordNo(user_id, bCardFlags); - bCardFlags = GateModule.insertCard(cardNum, user_id, name, "123456" + + } else { + //新增卡信息, 新增人脸信息至设备 + newRecordNo = GateModule.insertCard(cardNum, user_id, name, "123456" , Res.string().getCardStatusInt(1), Res.string().getCardTypeInt(1), 0, 1 - , 1, startTime, endTime, loginHandleLong,userType); - if (bCardFlags != -1) { - int index = userDao.saveRecordNo(user_id, bCardFlags, name, attendanceBean.getClint_id());//存储记录集编号 + , 1, startTime, endTime, loginHandleLong,userType,cardErrNum); + + //下发卡至设备,返回值不为-1为下发成功,保存下发记录集编号表 + if (newRecordNo != -1) { + userDao.saveRecordNo(user_id, newRecordNo, name, attendanceBean.getClint_id()); } //添加人脸 - bFaceFalgs = GateModule.addFaceInfo(user_id, memory, loginHandleLong); - } + bFaceFalgs = GateModule.addFaceInfo(user_id, memory, loginHandleLong,faceErrNum); - } else {//新增卡信息 - - bCardFlags = GateModule.insertCard(cardNum, user_id, name, "123456" - , Res.string().getCardStatusInt(1), Res.string().getCardTypeInt(1), 0, 1 - , 1, startTime, endTime, loginHandleLong,userType); - - if (bCardFlags != -1) { - int index = userDao.saveRecordNo(user_id, bCardFlags, name, attendanceBean.getClint_id());//存储记录集编号 } - - //添加人脸 - bFaceFalgs = GateModule.addFaceInfo(user_id, memory, loginHandleLong); - - } - - if (bCardFlags != -1 && bFaceFalgs) { - FileUtils.getInstance().writeLogs("下发人脸和卡号成功:" + cardNum + " " + attendanceBean.getClint_id(), FileUtils.sendUserSucTxt); - System.out.println("人脸下发成功" + "sendRecordBean:" + sendRecordBean); - - //先判断是否已经存在了 - List sendRecordBeanList = sendRecordDao.getFaceSucceIsexit(sendRecordBean.getDeviceID(), String.valueOf(sendRecordBean.getSchoolId()), sendRecordBean.getCustomerid()); - if (sendRecordBeanList.size() > 0) { - - //删除重复数据 - for (int i = 0; i < sendRecordBeanList.size(); i++) { - sendRecordDao.deleteFaceSuccess(sendRecordBeanList.get(i).getDeviceID(), sendRecordBeanList.get(i).getNum()); + /** + * 人脸和卡都下发成功 + */ + if (bCardFlags && bFaceFalgs) { + FileUtils.getInstance().writeLogs("下发人脸和卡号成功:" + cardNum + " " + attendanceBean.getClint_id(), FileUtils.sendUserSucTxt); + log.info("下发人脸和卡号成功, sendRecordBean: "+ JSON.toJSONString(sendRecordBean)); + + //人脸下发成功记录, 先判断是否已经存在了 + List sendRecordBeanList = sendRecordDao.getFaceSucceIsexit(sendRecordBean.getDeviceID(), String.valueOf(sendRecordBean.getSchoolId()), sendRecordBean.getCustomerid()); + if (sendRecordBeanList.size() > 0) { + //删除重复数据 + for (int i = 0; i < sendRecordBeanList.size(); i++) { + sendRecordDao.deleteFaceSuccess(sendRecordBeanList.get(i).getDeviceID(), sendRecordBeanList.get(i).getNum()); + } } + //重新添加人脸下发记录 + sendRecordDao.addFaceSuccess(sendRecordBean.getCustomerid(), sendRecordBean.getDeviceID(), sendRecordBean.getNum(), sendRecordBean.getName(), sendRecordBean.getTime(), + sendRecordBean.getSchoolName(), sendRecordBean.getImgPath(), sendRecordBean.getSchoolId(), sendRecordBean.getUserType(), 22); -// //更新数据 -// sendRecordDao.updateFaceSuccess(sendRecordBean.getTime(), sendRecordBean.getDeviceID(), sendRecordBean.getNum()); - } else { + //重新下发时,删除之前失败记录 + if (sendRecordBean.getFailType() != 0){ + sendRecordDao.deleteFaceFail(sendRecordBean.getNum(), sendRecordBean.getDeviceID()); + } + } + /** + * 人脸和卡都下发失败 + */ + if (!bCardFlags && !bFaceFalgs) { + FileUtils.getInstance().writeLogs("下发人脸和卡号失败:" + cardNum + " user_id: " + user_id + " loginHandleLong: " + loginHandleLong, FileUtils.sendUserErrTxt); + log.info("下发人脸和卡号失败, sendRecordBean: "+ JSON.toJSONString(sendRecordBean)); + //失败信息 + String failContent = analysisErrorMsg(cardErrNum,faceErrNum); + sendRecordBean.setFailType(EnumSendFaceType.FACE_AND_CARD_FAIL.code); + sendRecordBean.setFailContent(failContent); + sendRecordDao.updateFace(sendRecordBean.getNum(), sendRecordBean.getDeviceID(), sendRecordBean.getFailType(), EnumSendFaceType.FACE_AND_CARD_FAIL.code); + addFailDace(sendRecordBean); + } + /** + * 下发卡号成功,下发人脸失败, + */ + if (bCardFlags && !bFaceFalgs) { + FileUtils.getInstance().writeLogs("下发卡号成功,下发人脸失败:" + cardNum + " " + attendanceBean.getClint_id(), FileUtils.sendUserErrTxt); + log.info("下发卡号成功,下发人脸失败, sendRecordBean: " + JSON.toJSONString(sendRecordBean)); + //失败信息 + String failContent = analysisErrorMsg(cardErrNum,faceErrNum); + sendRecordBean.setFailType(EnumSendFaceType.FACE_FAIL_CARD_SUCCESS.code); + sendRecordBean.setFailContent(failContent); + sendRecordDao.updateFace(sendRecordBean.getNum(), sendRecordBean.getDeviceID(), sendRecordBean.getFailType(), EnumSendFaceType.FACE_FAIL_CARD_SUCCESS.code); + addFailDace(sendRecordBean); + } + /** + * 下发卡号失败,下发人脸成功, + * 注:此一般不存在 + */ + if (!bCardFlags && bFaceFalgs) { + FileUtils.getInstance().writeLogs("卡信息已存在,下发人脸成功:" + cardNum + " " + attendanceBean.getClint_id(), FileUtils.sendUserSucTxt); + log.info("-----------卡信息已存在,添加人脸成功----------"); } - int index = sendRecordDao.addFaceSuccess(sendRecordBean.getCustomerid(), sendRecordBean.getDeviceID(), sendRecordBean.getNum(), sendRecordBean.getName(), sendRecordBean.getTime(), - sendRecordBean.getSchoolName(), sendRecordBean.getImgPath(), sendRecordBean.getSchoolId(), sendRecordBean.getUserType(), 22); -// File imgFile = new File(sendRecordBean.getImgPath()); -// imgFile.deleteOnExit(); - //删除成功 - if (sendRecordBean.getFailType() != 0) - sendRecordDao.deleteFaceFail(sendRecordBean.getNum(), sendRecordBean.getDeviceID()); - - } - - // 添加卡信息和人脸失败 - if (bCardFlags == -1 && !bFaceFalgs) { - FileUtils.getInstance().writeLogs("下发人脸和卡号失败:" + cardNum + " user_id: " + user_id + " loginHandleLong: " + loginHandleLong, FileUtils.sendUserErrTxt); -// System.out.println("添加卡信息和人脸失败"); - System.out.println("下发人脸和卡号失败" + "sendRecordBean:" + sendRecordBean.getDeviceID() + " ," + sendRecordBean.getNum() + "," + loginHandleLong + ",bCardFlags:" + bCardFlags + "\r\n"); - sendRecordBean.setFailContent("下发人脸和卡号失败"); - sendRecordDao.updateFace(sendRecordBean.getNum(), sendRecordBean.getDeviceID(), sendRecordBean.getFailType(), 7);//更新下发失败状态 - sendRecordBean.setFailType(8); - addFailDace(sendRecordBean); - } - - // 添加卡信息成功,添加人脸失败 - if (bCardFlags != -1 && !bFaceFalgs) { - FileUtils.getInstance().writeLogs("下发卡号成功,人脸失败:" + cardNum + " " + attendanceBean.getClint_id(), FileUtils.sendUserErrTxt); -// System.out.println("添加卡信息成功,添加人脸失败"); - System.out.println("customerId:" + sendRecordBean.getCustomerid() + " deviceId:" + sendRecordBean.getDeviceID() + " failType:" + sendRecordBean.getFailType() + "\r\n"); - sendRecordDao.updateFace(sendRecordBean.getNum(), sendRecordBean.getDeviceID(), sendRecordBean.getFailType(), 5);//更新下发失败状态 - sendRecordBean.setFailContent("下发卡号成功,人脸失败:照片特征值提取失败"); - sendRecordBean.setFailType(5); - addFailDace(sendRecordBean); - } - - // 卡信息已存在,添加人脸成功 - if (bCardFlags == -1 && bFaceFalgs) { - FileUtils.getInstance().writeLogs("下发人脸成功:" + cardNum + " " + attendanceBean.getClint_id(), FileUtils.sendUserSucTxt); - System.out.println("卡信息已存在,添加人脸成功-----------\n"); } - } } catch (Exception e) { e.printStackTrace(); } } - //人脸发送失败信息添加 + /** + * 解析下发异常信息 + * @param cardErrNum + * @param faceErrNum + * @return + */ + private String analysisErrorMsg(String cardErrNum,String faceErrNum){ + StringBuffer sb = new StringBuffer(); + //卡异常信息 + if(!StringUtils.isEmpty(cardErrNum)){ + String message = EnumSendCardErrorType.getByCode(cardErrNum).getMessage(); + sb.append("卡:").append(message).append("+"); + } + //人脸异常信息 + if(!StringUtils.isEmpty(faceErrNum)){ + String message = EnumSendFaceErrorType.getByCode(faceErrNum).getMessage(); + sb.append("人脸:").append(message); + } + return sb.toString(); + } + + + /** + * 添加人脸下发失败记录 + * @param sendRecordBean + */ private void addFailDace(SendRecordBean sendRecordBean) { -// System.out.println("sendRecordBean:" + sendRecordBean != null ? sendRecordBean.toString() : "不存在"); + //获取指定设备指定用户的人脸失败记录 List sendRecordBeanList = sendRecordDao.getFaceFailIsExit(sendRecordBean.getDeviceID(), sendRecordBean.getCustomerid()); - + if(sendRecordBeanList.size() ==0){ + return; + } + //删除失败记录 for (int i = 0; i < sendRecordBeanList.size(); i++) { sendRecordDao.deleteFaceFail(sendRecordBeanList.get(i).getNum(), sendRecordBeanList.get(i).getDeviceID()); } - -// String name = sendRecordDao.getFailNameIsExit(sendRecordBean.getDeviceID(), sendRecordBean.getNum(), sendRecordBean.getFailType()); - -// if (StringUtils.isEmpty(name)) { - + //TODO 不明含义 if (sendRecordBean.getFailType() == 5) sendRecordBean.setFailType(8); + // + String rootPath = sendRecordBean.getUserType() == EnumSzBusinessType.EnumUserType.TEACHER.code ? "Teacher" : "Student" ; + //人脸路径 + String imagePath = sendRecordBean.getImgPath().replace("C:/imgCom", String.format("E:\\wwwhtdocs\\smartcampus\\face17e5\\School%s\\%s", sendRecordBean.getSchoolId(), rootPath)); - String imagePath = sendRecordBean.getImgPath().replace("C:/imgCom", - String.format("E:\\wwwhtdocs\\smartcampus\\face17e5\\School%s\\%s", sendRecordBean.getSchoolId(), sendRecordBean.getUserType() == 1 ? "Teacher" : "Student")); - + //添加失败记录 sendRecordDao.addFaceFail(sendRecordBean.getCustomerid(), sendRecordBean.getDeviceID(), sendRecordBean.getNum(), sendRecordBean.getName(), sendRecordBean.getTime(), - sendRecordBean.getSchoolName(), imagePath, sendRecordBean.getSchoolId(), sendRecordBean.getFailContent(), sendRecordBean.getFailType(), sendRecordBean.getUserType(), 22); -// } + sendRecordBean.getSchoolName(), imagePath, sendRecordBean.getSchoolId(), sendRecordBean.getFailContent(), sendRecordBean.getFailType(), sendRecordBean.getUserType(), EnumDeviceType.DH_FACE.deviceType); } + public String cardNo(String cardDex) { String cardR = ""; diff --git a/cloud/dahua/src/main/java/com/example/dahua/bean/SendRecordBean.java b/cloud/dahua/src/main/java/com/example/dahua/bean/SendRecordBean.java index 7cdf00a..7634253 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/bean/SendRecordBean.java +++ b/cloud/dahua/src/main/java/com/example/dahua/bean/SendRecordBean.java @@ -7,27 +7,27 @@ import java.io.Serializable; */ public class SendRecordBean implements Serializable { - - private String customerid;//用户编号 - + //用户编号:学生student_id;老师teacher_id + private String customerid; + //卡号 private String Num; - + //用户姓名 private String Name; - + //学校ID private int schoolId; - - private String schoolName;//下发结果 - + //学校名 + private String schoolName; + //设备iD private String deviceID; - - private String imgPath;//下发的图片路径 - + //下发的图片路径 + private String imgPath; + //用户类型 private int userType; - + //下发时间 private String time; - + //下发失败原因 private String failContent; - + //下发失败类型:详情见枚举:EnumSendFaceType private int failType; diff --git a/cloud/dahua/src/main/java/com/example/dahua/control/FileControl.java b/cloud/dahua/src/main/java/com/example/dahua/control/FileControl.java index 0e2d551..65cd8f4 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/control/FileControl.java +++ b/cloud/dahua/src/main/java/com/example/dahua/control/FileControl.java @@ -42,6 +42,16 @@ public class FileControl { @Autowired UserDao userDao; + /** + * 单个人脸下发至设备 + * @param file + * @param schoolId + * @param studentCode + * @param clint_type + * @param userType + * @param deviceId + * @return + */ @RequestMapping(method = RequestMethod.POST, value = "uploadImg") public String uploadImg(@RequestParam("file") MultipartFile file, @RequestParam("schoolId") String schoolId, @RequestParam("studentCode") String studentCode, @RequestParam("clint_type") String clint_type, @@ -67,6 +77,11 @@ public class FileControl { return "0"; } + /** + * 权限下发至设备 + * @param permissionBean + * @return + */ @RequestMapping(value = "sendPermission", method = RequestMethod.POST) @ApiOperation(value = "设置权限") public boolean sendPermission(@RequestBody PermissionBean permissionBean) { 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 8a8c2a3..409a9a7 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 @@ -48,7 +48,14 @@ public class UserControl { @Autowired UserDao userDao; - + /** + * 单个人脸下发至设备 + * @param file + * @param schoolId + * @param studentCode + * @param clint_type + * @return + */ @RequestMapping(value = "uploadImgAndUserInfo", method = RequestMethod.GET) @ApiOperation(value = "上传用户信息") public boolean uploadImgAndUserInfo(@RequestParam("file") String file, @RequestParam("schoolId") String schoolId, @RequestParam("studentCode") String studentCode, @RequestParam("clint_type") String clint_type) { @@ -56,6 +63,11 @@ public class UserControl { return HttpUtils.uploadImgs(new File(file), schoolId, studentCode, clint_type, file.contains("Teacher") ? 1 : 2,""); } + /** + * 权限下发至设备 + * @param permissionBean + * @return + */ @RequestMapping(value = "sendPermission", method = RequestMethod.POST) @ApiOperation(value = "设置权限") public boolean sendPermission(@RequestBody PermissionBean permissionBean) { @@ -69,6 +81,12 @@ public class UserControl { return true; } + /** + * 批量下发人脸 + * @param deviceIds + * @param schoolId + * @param userType + */ @RequestMapping(value = "sendFaces", method = RequestMethod.GET) @ApiOperation(value = "下发学校下所有人脸给指定设备", notes = "下发所有人脸给指定设备") public void sendFaces(@RequestParam("deviceIds") String deviceIds, @RequestParam("schoolId") String schoolId, @RequestParam("userType") String userType) { diff --git a/cloud/dahua/src/main/java/com/example/dahua/enums/EnumDeviceType.java b/cloud/dahua/src/main/java/com/example/dahua/enums/EnumDeviceType.java new file mode 100644 index 0000000..a102b25 --- /dev/null +++ b/cloud/dahua/src/main/java/com/example/dahua/enums/EnumDeviceType.java @@ -0,0 +1,36 @@ +package com.example.dahua.enums; + +/** + * 设备类型枚举 + * + * @author xuquan + * @date 2020/11/11 16:06 + */ + +public enum EnumDeviceType { + + SCHOOL_CARD(1, "校牌"), + CLASS_CARD(2, "班牌"), + CLOUD_WINDOW(4, "云视窗"), + ZJ_CONTROL(6, "闸机控制器"), + LOAN_PERIOD(7, "话机"), + HK_FACE(18, "海康人脸设备"), + FACE(19, "人脸设备"), + DH_FACE(22, "大华人脸设备"), + HK_ZW(23, "海康指纹机"), + ZK_ZW(24, "中控指纹机"), + BG_FACE_WG(25, "博观人脸带温感"), + BG_FACE_CG(26, "博观人脸常规"), + LQ_QS(27, "乐清寝室看板"), + HK_FACE_YTJ(28, "海康人脸权限一体机"), + DH_FACE_YTJ(29, "大华人脸权限一体机"); + + public final int deviceType; + public final String deviceName; + + EnumDeviceType(int deviceType, String deviceName) { + this.deviceType = deviceType; + this.deviceName = deviceName; + } + +} diff --git a/cloud/dahua/src/main/java/com/example/dahua/enums/EnumSendCardErrorType.java b/cloud/dahua/src/main/java/com/example/dahua/enums/EnumSendCardErrorType.java new file mode 100644 index 0000000..26da290 --- /dev/null +++ b/cloud/dahua/src/main/java/com/example/dahua/enums/EnumSendCardErrorType.java @@ -0,0 +1,51 @@ +package com.example.dahua.enums; + +import org.apache.commons.lang.StringUtils; + +/** + *下发卡常见异常码、异常描述枚举 + * @author xuquan + * @date 2020/11/11 15:19 + */ + +public enum EnumSendCardErrorType { + + CHECK_DATA_ERR_21("21", "对返回数据的校验出错"), + EXIST_USER_146("146", "用户已存在"), + NOT_ONLINE_USER_147("147", "用户不存在"), + UNKNOWN_1091("1091" , "未知错误"), + UNKNOWN_1147("1147" , "未知错误"), + UNKNOWN_1162("1162", "未知错误"); + + public final String code; + public final String message; + + public String getCode() { + return code; + } + + public String getMessage() { + return message; + } + + EnumSendCardErrorType(String code, String message) { + this.code = code; + this.message = message; + } + + /** + * 根据key获得具体的值 + */ + public static EnumSendCardErrorType getByCode(String code){ + if(StringUtils.isBlank(code)){ + return null; + } + for(EnumSendCardErrorType enums: EnumSendCardErrorType.values()){ + if(enums.getCode().equals(code)){ + return enums; + } + } + return null; + } + +} diff --git a/cloud/dahua/src/main/java/com/example/dahua/enums/EnumSendFaceErrorType.java b/cloud/dahua/src/main/java/com/example/dahua/enums/EnumSendFaceErrorType.java new file mode 100644 index 0000000..5a2ee04 --- /dev/null +++ b/cloud/dahua/src/main/java/com/example/dahua/enums/EnumSendFaceErrorType.java @@ -0,0 +1,49 @@ +package com.example.dahua.enums; + +import org.apache.commons.lang.StringUtils; + +/** + * 下发人脸常见异常码、异常描述枚举 + * @author xuquan + * @date 2020/11/11 15:23 + */ +public enum EnumSendFaceErrorType { + + EXCEED_SIZE_1028("1028", "图片大小超限"), + NOT_EXIST_USER_1029("1029", "用户ID不存在"), + EXTRACT_ERROR_1030("1030", "照片特征值提取失败"), + EXIST_IMG_1031("1031", "照片已存在"), + UPPER_LIMIT_1032("1032", "照片数量超过上限"); + + public final String code; + public final String message; + + public String getCode() { + return code; + } + + public String getMessage() { + return message; + } + + EnumSendFaceErrorType(String code, String message) { + this.code = code; + this.message = message; + } + + /** + * 根据key获得具体的值 + */ + public static EnumSendFaceErrorType getByCode(String code){ + if(StringUtils.isBlank(code)){ + return null; + } + for(EnumSendFaceErrorType enums: EnumSendFaceErrorType.values()){ + if(enums.getCode().equals(code)){ + return enums; + } + } + return null; + } + +} diff --git a/cloud/dahua/src/main/java/com/example/dahua/enums/EnumSendFaceType.java b/cloud/dahua/src/main/java/com/example/dahua/enums/EnumSendFaceType.java new file mode 100644 index 0000000..16e7b37 --- /dev/null +++ b/cloud/dahua/src/main/java/com/example/dahua/enums/EnumSendFaceType.java @@ -0,0 +1,25 @@ +package com.example.dahua.enums; + +/** + * 下发人脸枚举配置中心 + * + * @Author: xuquan + * @Date: 2020/11/1 14:59 + */ +public enum EnumSendFaceType { + + NOT_EXIST_DEVICE(1, "设备不存在"), + NOT_ONLINE_DEVICE(2, "设备不在线"), + FACE_AND_CARD_FAIL(3, "人脸信息、卡信息下发失败"), + FACE_FAIL_CARD_SUCCESS(4, "人脸信息下发失败,卡信息下发成功"), + FACE_SUCCESS_CARD_FAIl(5, "人脸信息下发成功,卡信息下发失败"); + + public final int code; + public final String message; + + EnumSendFaceType(int code, String message) { + this.code = code; + this.message = message; + } + +} diff --git a/cloud/dahua/src/main/java/com/example/dahua/enums/EnumSzBusinessType.java b/cloud/dahua/src/main/java/com/example/dahua/enums/EnumSzBusinessType.java new file mode 100644 index 0000000..ff7dd3b --- /dev/null +++ b/cloud/dahua/src/main/java/com/example/dahua/enums/EnumSzBusinessType.java @@ -0,0 +1,49 @@ +package com.example.dahua.enums; + +/** + * 顺治科技智能校卫业务枚举配置中心 + * + * @author xuquan + * @date 2020/11/11 14:43 + */ + +public interface EnumSzBusinessType { + + /** + * 用户类型 + */ + public enum EnumUserType { + + TEACHER(1, "teacher","老师"), + STUDENT(2, "student","学生"); +// PARENT(3, "parent","家长"); + + public final int code; + public final String enName; + public final String cnName; + + EnumUserType(int code, String enName,String cnName) { + this.code = code; + this.enName = enName; + this.cnName = cnName; + } + } + +// public enum EnumCardType { +// +// STUDENT(1, "student","学生"), +// TEACHER(2, "teacher","老师"); +//// PARENT(3, "parent","家长"); +// +// public final int code; +// public final String enName; +// public final String cnName; +// +// EnumUserType(int code, String enName,String cnName) { +// this.code = code; +// this.enName = enName; +// this.cnName = cnName; +// } +// } + +} diff --git a/cloud/dahua/src/main/java/com/example/dahua/module/GateModule.java b/cloud/dahua/src/main/java/com/example/dahua/module/GateModule.java index a5aaf61..eacb451 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/module/GateModule.java +++ b/cloud/dahua/src/main/java/com/example/dahua/module/GateModule.java @@ -1,18 +1,10 @@ package com.example.dahua.module; -import java.awt.image.BufferedImage; -import java.io.ByteArrayInputStream; -import java.io.File; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - import com.example.dahua.bean.PermissionBean; import com.example.dahua.bean.WeekDay; import com.example.dahua.bean.WeekTime; +import com.example.dahua.enums.EnumSendCardErrorType; +import com.example.dahua.enums.EnumSendFaceErrorType; import com.example.dahua.lib.NetSDKLib; import com.example.dahua.lib.NetSDKLib.*; import com.example.dahua.lib.ToolKits; @@ -21,6 +13,15 @@ import com.sun.jna.ptr.IntByReference; import lombok.extern.slf4j.Slf4j; import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; @Slf4j @@ -201,7 +202,8 @@ public class GateModule { public static synchronized int insertCard(String cardNo, String userId, String cardName, String cardPwd, int cardStatus, int cardType, int useTimes, int isFirstEnter, - int isValid, String startValidTime, String endValidTime, LLong lLong,String userType) { + int isValid, String startValidTime, String endValidTime, LLong lLong, + String userType,String cardErrNum) { /** * 门禁卡记录集信息 */ @@ -287,16 +289,18 @@ public class GateModule { String ret=ToolKits.getErrorCodePrint(); String number = ret.substring(ret.indexOf("|") + 1, ret.indexOf(")")); log.info("添加卡信息失败,错误信息:{} ,错误码:{} ",ret,number); - //146用户已存在,21对返回数据的校验出错,1162未知错误 number.equals("1162")|| - if(number.equals("21")||number.equals("146")) { + cardErrNum = number; + //146用户已存在,21对返回数据的校验出错,1162未知错误 + if(number.equals(EnumSendCardErrorType.CHECK_DATA_ERR_21.code)|| number.equals(EnumSendCardErrorType.EXIST_USER_146.code)|| + number.equals(EnumSendCardErrorType.UNKNOWN_1162.code)) { //用户已存在/返回数据校验出错时,执行删除用户 deleteUser( userId, lLong); //重新下发卡至设备 - return insertCard( cardNo, userId, cardName, cardPwd, - cardStatus, cardType, useTimes, isFirstEnter, - isValid, startValidTime, endValidTime, lLong, userType); + cardErrNum = ""; + return insertCard(cardNo, userId, cardName, cardPwd, cardStatus, cardType, useTimes, isFirstEnter, + isValid, startValidTime, endValidTime, lLong, userType,cardErrNum); } - //其他错误码,返回-1 + //新增卡失败,错误码,返回-1 return -1; } else { log.info("添加卡信息成功,卡信息记录集编号 : "+ insert.stuCtrlRecordSetResult.nRecNo); @@ -682,7 +686,8 @@ public class GateModule { */ public static boolean modifyCard(int recordNo, String cardNo, String userId, String cardName, String cardPwd, int cardStatus, int cardType, int useTimes, int isFirstEnter, - int isValid, String startValidTime, String endValidTime, LLong lLong,String userType) { + int isValid, String startValidTime, String endValidTime, LLong lLong, + String userType,String cardErrNum) { /** * 门禁卡记录集信息 */ @@ -770,21 +775,20 @@ public class GateModule { String ret=ToolKits.getErrorCodePrint(); //结果码 String number = ret.substring(ret.indexOf("|") + 1, ret.indexOf(")")); - //147用户不存在,21对返回数据的校验出错 -// if(number.equals("21")||number.equals("147")) { -// -// } -// if(number.equals("1091")||number.equals("1147"))//未知错误 -// { -// return Integer.parseInt(number); -// } + cardErrNum = number; log.error("修改卡信息失败,错误信息:{} ,错误码:{} ",ret,number); + return false; } log.info("修改卡信息成功!"); return true; } + public static void main(String[] args) { + String s = "(0x80000000|147)"; + System.out.println(s.substring(s.indexOf("|") + 1, s.indexOf(")"))); + } + /** * 删除卡信息(单个删除) * @@ -1081,7 +1085,7 @@ public class GateModule { log.info("[" + i + "]删除用户结果:" + failCodes[i].nFailCode); } } else { - log.error("添加卡信息失败"+ ToolKits.getErrorCodePrint()); + log.error("删除用户失败"+ ToolKits.getErrorCodePrint()); } stIn.read(); @@ -1138,7 +1142,7 @@ public class GateModule { return true; } - public static synchronized boolean addFaceInfo(String userId, Memory memory, LLong lLong) { + public static synchronized boolean addFaceInfo(String userId, Memory memory, LLong lLong,String faceErrNum) { int emType = EM_FACEINFO_OPREATE_TYPE.EM_FACEINFO_OPREATE_ADD; // 添加 /** @@ -1173,14 +1177,17 @@ public class GateModule { } else { String ret=ToolKits.getErrorCodePrint(); String number = ret.substring(ret.indexOf("|") + 1, ret.indexOf(")")); - log.error("修改卡信息失败,错误信息:{} ,错误码:{} ",ret,number); - //number = 1031:照片已存在;number = 1029 :用户ID不存在 - if(number.equals("1031")){ - return modifyFaceInfo( userId, memory, lLong); + faceErrNum = number; + log.error("添加信息失败,错误信息:{} ,错误码:{} ",ret,number); + //照片已存在 + if(number.equals(EnumSendFaceErrorType.EXIST_IMG_1031.code)){ + faceErrNum = ""; + return modifyFaceInfo(userId, memory, lLong,faceErrNum); } - if(number.equals("1029")) - { - return addFaceInfo( userId, memory, lLong); + //用户Id不存在 + if(number.equals(EnumSendFaceErrorType.NOT_EXIST_USER_1029.code)) { + faceErrNum = ""; + return addFaceInfo( userId, memory, lLong,faceErrNum); } return false; } @@ -1238,7 +1245,7 @@ public class GateModule { } - public static boolean modifyFaceInfo(String userId, Memory memory, LLong lLong) { + public static boolean modifyFaceInfo(String userId, Memory memory, LLong lLong,String faceErrNum) { int emType = EM_FACEINFO_OPREATE_TYPE.EM_FACEINFO_OPREATE_UPDATE; // 修改 /** @@ -1274,6 +1281,7 @@ public class GateModule { } else { String ret=ToolKits.getErrorCodePrint(); String number = ret.substring(ret.indexOf("|") + 1, ret.indexOf(")")); + faceErrNum = number; log.error("修改人脸失败,错误信息:{} ,错误码:{} ",ret,number); return false; } 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 ee8689e..38b75f5 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 @@ -4,9 +4,11 @@ import com.example.dahua.MyTask; import com.example.dahua.async.SendUserInfoTask; import com.example.dahua.bean.*; import com.example.dahua.dao.UserDao; +import com.example.dahua.enums.EnumDeviceType; import com.example.dahua.lib.NetSDKLib; import com.example.dahua.module.GateModule; import com.example.dahua.service.UserService; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; @@ -16,6 +18,7 @@ import java.util.List; @Repository @Service +@Slf4j public class UserServiceImp implements UserService { @Autowired @@ -26,13 +29,16 @@ public class UserServiceImp implements UserService { @Override public List getAttendanceBeans(String schoolId, String clint_type, String devid) { - - if (!StringUtils.isEmpty(devid)) return userDao.getAttendanceBeanWithId(schoolId, clint_type, devid); + //如果设备ID未传,则返回该学校下所有设备,反之,查询对应设备 + if (!StringUtils.isEmpty(devid)) { + return userDao.getAttendanceBeanWithId(schoolId, clint_type, devid); + } List attendanceBeanList = userDao.getAttendanceBeans(schoolId, clint_type); - - if (attendanceBeanList.size()==0)attendanceBeanList = userDao.getAttendanceBeans(schoolId,"29"); - + if (attendanceBeanList.size()==0){ + //若未查询到结果,则查询大华人脸一体机 29 + attendanceBeanList = userDao.getAttendanceBeans(schoolId,String.valueOf(EnumDeviceType.DH_FACE_YTJ.deviceType)); + } return attendanceBeanList; } @@ -52,10 +58,12 @@ public class UserServiceImp implements UserService { */ @Override public boolean uploadImgAndUserInfo(String file, String schoolId, String studentCode, String clint_type, int userType, String devid) { - List attendanceBeans = getAttendanceBeans(schoolId, clint_type, devid);//获取学校下的大华设备 - - System.out.println("设备数量:" + attendanceBeans.size()); - + //获取学校下的大华设备 + List attendanceBeans = getAttendanceBeans(schoolId, clint_type, devid); + if(attendanceBeans.size()<1){ + log.info("下发用户人脸信息失败,学校ID: {},该学校下无设备!设备类型:{}",schoolId,clint_type); + } + log.info("设备数量:" + attendanceBeans.size()); UserInfoBean userInfoBean = null; try { if (userType == 2) { @@ -87,7 +95,7 @@ public class UserServiceImp implements UserService { userInfoBean.setStudent_id(teacher.getTeacher_id()); } } - + //下发任务 myTask.doTaskOne(file, attendanceBeans, userInfoBean, schoolId, -1, userType); } catch (Exception e) { e.printStackTrace(); @@ -107,14 +115,20 @@ public class UserServiceImp implements UserService { myTask.doTaskSendUserInfos(schoolId, clint_type, type, -1); } + /** + * 下发权限至设备 + * @param permissionBean + * @return + */ @Override public boolean sendPermission(PermissionBean permissionBean) { - + //下发权限对应设备集合 List deviceIds = permissionBean.getDeviceIds(); if (null != deviceIds) - for (String deviceId : - deviceIds) { + for (String deviceId : deviceIds) { + // 句柄 NetSDKLib.LLong loginHandleLong = MyTask.lLongMap.get(deviceId); + //下发权限 GateModule.setAccessTimeSchedule(loginHandleLong, permissionBean); GateModule.getAccessTimeSchedule1(loginHandleLong); } diff --git a/cloud/dahua/src/main/java/com/example/dahua/utils/HttpUtils.java b/cloud/dahua/src/main/java/com/example/dahua/utils/HttpUtils.java index 64afc30..2c4cbee 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/utils/HttpUtils.java +++ b/cloud/dahua/src/main/java/com/example/dahua/utils/HttpUtils.java @@ -22,6 +22,17 @@ import java.util.Map; public class HttpUtils { + /** + * 单个人脸下发至设备 + * 文件先由文件服务上传至100服务上,在21服务进行下发动作 + * @param file + * @param schoolId + * @param studentCode + * @param clint_type + * @param userType + * @param deviceId + * @return + */ public static boolean uploadImgs(File file, String schoolId, String studentCode, String clint_type, int userType,String deviceId) { if (!file.exists()) { @@ -88,7 +99,11 @@ public class HttpUtils { return result.getBody(); } - + /** + * 权限下发至设备 + * @param permissionBean + * @return + */ public static boolean sendPermission(PermissionBean permissionBean) { String url = "http://121.40.109.21:8991/file/sendPermission"; RestTemplate restTemplate = new RestTemplate(); @@ -107,6 +122,10 @@ public class HttpUtils { return responseEntity.getBody().equals("1"); } + /** + * 权限下发至海康设备 + * @param permissionFaceBean + */ public static void sendPermission2HK(PermissionFaceBean permissionFaceBean) { String url = "http://114.55.30.100:8089/facereco/sendPermiss"; PermissionBean permissionBean = permissionFaceBean.getPermissionBean(); -- libgit2 0.21.0