diff --git a/cloud/dahua/src/main/java/com/example/dahua/MyTask.java b/cloud/dahua/src/main/java/com/example/dahua/MyTask.java index ddba9a9..d4a3fd7 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/MyTask.java +++ b/cloud/dahua/src/main/java/com/example/dahua/MyTask.java @@ -800,7 +800,7 @@ public class MyTask implements ApplicationRunner { public static void sendRecordToSXYX(String name,String userId,int intOrOut,String eventTime,String scene) { try { - String api = "http://yixiao.198.hmkj.com.cn/index.php/Attend/send"; + String api = "https://yixiao.198.hmkj.com.cn/index.php/Attend/send"; RestTemplate restTemplate = new RestTemplate(); MultiValueMap map = new LinkedMultiValueMap<>(); map.add("name", name); @@ -813,7 +813,7 @@ public class MyTask implements ApplicationRunner { HttpEntity> param = new HttpEntity<>(map, headers); ResponseEntity response = restTemplate.postForEntity(api, param, String.class); String body = response.getBody(); - log.info("请求艺校OA,用户名称【{}】,返回信息【{}】 ",name,body); + log.info("请求艺校OA >>> api: {}, 入参: {} , 响应数据:{} ",api,JSON.toJSONString(map),body); } catch (Exception e) { sendRecordToSXYX(name,userId,intOrOut,eventTime,scene); } diff --git a/cloud/dahua/src/main/resources/logback-spring.xml b/cloud/dahua/src/main/resources/logback-spring.xml index fe4ef93..c6d3d52 100644 --- a/cloud/dahua/src/main/resources/logback-spring.xml +++ b/cloud/dahua/src/main/resources/logback-spring.xml @@ -9,9 +9,9 @@ - + - + diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserOperateController.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserOperateController.java index 5335f15..8c4e8d1 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserOperateController.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserOperateController.java @@ -67,7 +67,8 @@ public class UserOperateController { @ApiOperation(value = "照片下发2.0") @RequestMapping(value = "sendFaceByThread", method = RequestMethod.POST) - public Result sendFaceByThread(@RequestBody SendFaceDto sendFaceDto,@RequestParam(value = "groupId",required = false) Integer groupId) { + public Result sendFaceByThread(@RequestBody SendFaceDto sendFaceDto, + @RequestParam(value = "groupId",required = false) Integer groupId) { return userOperateService.sendUserFaceByThread(sendFaceDto,groupId); } @@ -85,7 +86,8 @@ public class UserOperateController { @RequestMapping(value = "sendFailFace2", method = RequestMethod.POST) @ApiOperation(value = "重新下发失败人脸2.1") - public Result sendFailFace(@RequestParam("schoolId") Integer schoolId,@RequestParam(value = "deviceIds",required = false) String deviceIds) { + public Result sendFailFace(@RequestParam("schoolId") Integer schoolId, + @RequestParam(value = "deviceIds",required = false) String deviceIds) { return userOperateService.sendFailFace2(schoolId,deviceIds); } @@ -131,7 +133,7 @@ public class UserOperateController { @ApiOperation(value = "按班级指定下发") @RequestMapping(value = "sendFaceByClassId", method = RequestMethod.POST) - public Result exportFace(@RequestParam("schoolId") Integer schoolId, + public Result sendFaceByClassId(@RequestParam("schoolId") Integer schoolId, @RequestParam(value = "classIds",required = false) String classIds, @RequestParam(value = "deviceIds",required = false) String deviceIds, @RequestParam(value = "studentType",required = false) Integer studentType, @@ -140,17 +142,28 @@ public class UserOperateController { return userOperateService.sendFaceByClassId(schoolId,classIds,deviceIds,studentType,sex,isCheck); } + @ApiOperation(value = "按班级指定下发") + @RequestMapping(value = "sendFaceByKeyword", method = RequestMethod.POST) + public Result sendFaceByKeyword(@RequestParam("schoolId") Integer schoolId, + @RequestParam(value = "deviceIds",required = false) String deviceIds, + @RequestParam(value = "keyword",required = false) String keyword, + @RequestParam(value = "studentType",required = false) Integer studentType, + @RequestParam(value = "sex",required = false) String sex, + @RequestParam(value = "isCheck",required = false) Integer isCheck){ + return userOperateService.sendFaceByKeyword(schoolId,deviceIds,keyword,studentType,sex,isCheck); + } + @ApiOperation(value = "根据宿舍分组下发") - @RequestMapping(value = "sendFaceByGroupId", method = RequestMethod.POST) - public Result sendFaceByThread(@RequestParam("schoolId") Integer schoolId, - @RequestParam("groupId") Integer groupId, + @RequestMapping(value = "sendFaceByRoomId", method = RequestMethod.POST) + public Result sendFaceByRoomId(@RequestParam("schoolId") Integer schoolId, + @RequestParam("roomId") Integer roomId, @RequestParam(value = "deviceIds",required = false) String deviceIds) { - return userOperateService.sendFaceByGroupId(schoolId,groupId,deviceIds); + return userOperateService.sendFaceByRoomId(schoolId,roomId,deviceIds); } @ApiOperation(value = "删除指定学校下人脸照片") @RequestMapping(value = "deleteBySchoolId", method = RequestMethod.POST) - public Result exportFace(@RequestParam("schoolId") Integer schoolId, + public Result deleteBySchoolId(@RequestParam("schoolId") Integer schoolId, @RequestParam(value = "deviceIds",required = false) String deviceIds){ return userOperateService.deleteFaceBySchoolId(schoolId,deviceIds); } @@ -159,4 +172,12 @@ public class UserOperateController { public void checkFaceSend(){ userOperateService.checkFaceSend(); } + + @ApiOperation(value = "按班级指定下发") + @RequestMapping(value = "replaceFaceByKeyword", method = RequestMethod.POST) + public Result replaceFaceByKeyword(@RequestParam("schoolId") Integer schoolId, + @RequestParam("deviceIds") String deviceIds, + @RequestParam("keyword") String keyword){ + return userOperateService.replaceFaceByKeyword(schoolId,deviceIds,keyword); + } } diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/dao/UserDao.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/dao/UserDao.java index ab8818c..19fbd57 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/dao/UserDao.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/dao/UserDao.java @@ -262,13 +262,26 @@ public interface UserDao { List getStudentBySchoolId(@Param("schoolId") Integer schoolId); - List getStudentList(@Param("schoolId") Integer schoolId,@Param("studentType")Integer studentType,@Param("sex") List sex); + List getTeacherBySchoolId(@Param("schoolId") Integer schoolId); - List getStudentCardGroup(@Param("schoolId") Integer schoolId,@Param("studentType")Integer studentType,@Param("sexList") List sexList,@Param("groupId")Integer groupId); + List getStudentList(@Param("schoolId") Integer schoolId, + @Param("studentType")Integer studentType, + @Param("sex") List sex); - List getTeacherList(@Param("schoolId") Integer schoolId); + List getStudentCardGroup(@Param("schoolId") Integer schoolId, + @Param("studentType")Integer studentType, + @Param("sexList") List sexList, + @Param("groupId")Integer groupId); - List getStudentByClassId(@Param("schoolId") int schoolId,@Param("classIds") List classIds,@Param("sexList") List sexList,@Param("studentType")int studentType); + List getStudentByClassId(@Param("schoolId") int schoolId, + @Param("classIds") List classIds, + @Param("sexList") List sexList, + @Param("studentType")Integer studentType); + + List getStudentByKeyword(@Param("schoolId") int schoolId, + @Param("keyword") String keyword, + @Param("sexList") List sexList, + @Param("studentType")Integer studentType); List getDeviceIds(@Param("schoolId") Integer schoolId,@Param("deviceId") String deviceId); @@ -298,4 +311,9 @@ public interface UserDao { List getRoomBySchoolId(@Param("schoolId") Integer schoolId,@Param("groupId") Integer groupId); List getStudentByRoomIds(@Param("schoolId") Integer schoolId,@Param("pIdList") List pIdList); + + List getTestVsByKeyword(@Param("schoolId") int schoolId, + @Param("keyword") String keyword, + @Param("sexList") List sexList, + @Param("studentType")Integer studentType); } diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/service/UserOperateService.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/service/UserOperateService.java index 81e55d4..22138eb 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/service/UserOperateService.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/service/UserOperateService.java @@ -131,7 +131,19 @@ public interface UserOperateService { */ Result sendFaceByClassId(Integer schoolId,String classIds,String deviceIds,Integer studentType,String sex,Integer isCheck); - Result sendFaceByGroupId(Integer schoolId,Integer groupId,String deviceIds); + /** + * 根据班级新生班级关键字下发 + * @param schoolId + * @param deviceIds + * @param keyword + * @param studentType + * @param sex + * @param isCheck + * @return + */ + Result sendFaceByKeyword(Integer schoolId,String deviceIds,String keyword,Integer studentType,String sex,Integer isCheck); + + Result sendFaceByRoomId(Integer schoolId,Integer groupId,String deviceIds); /** * 删除指定学校下的人脸 @@ -142,4 +154,6 @@ public interface UserOperateService { Result deleteFaceBySchoolId(Integer schoolId,String deviceIds); void checkFaceSend(); + + Result replaceFaceByKeyword(Integer schoolId,String deviceIds,String keyword); } diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/service/impl/BaseService.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/service/impl/BaseService.java index 4ac211b..b3b28d9 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/service/impl/BaseService.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/service/impl/BaseService.java @@ -485,19 +485,15 @@ public class BaseService { * @return */ public List getStudentByClassId(Integer schoolId,String classIds,Integer studentType,String sex) { - List classList = new ArrayList<>(); + List classList = null; if(StringUtils.isNotBlank(classIds)){ - String[] msg = classIds.split(","); - for(String s : msg){ - classList.add(Integer.valueOf(s)); - } + classList = Arrays.asList(classIds.split(",")) + .stream().map(Integer::parseInt).collect(Collectors.toList()); } - List sexList = new ArrayList<>(); + List sexList = null; if(StringUtils.isNotBlank(sex)){ - String[] msg = sex.split(","); - for(String s : msg){ - sexList.add(Integer.valueOf(s)); - } + sexList = Arrays.asList(sex.split(",")) + .stream().map(Integer::parseInt).collect(Collectors.toList()); } List students = userDao.getStudentByClassId(schoolId,classList,sexList,studentType); //去重重复数据 @@ -507,6 +503,27 @@ public class BaseService { } /** + * 根据班级关键字获取学生数据信息 + * @param schoolId + * @param keyword + * @param studentType + * @param sex + * @return + */ + public List getStudentByKeyword(Integer schoolId,String keyword,Integer studentType,String sex) { + List sexList = null; + if(StringUtils.isNotBlank(sex)){ + sexList = Arrays.asList(sex.split(",")) + .stream().map(Integer::parseInt).collect(Collectors.toList()); + } + List students = userDao.getStudentByKeyword(schoolId,keyword,sexList,studentType); + //去重重复数据 + List studentList = students.stream().collect(Collectors.collectingAndThen( + Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(StudentBean::getStudent_num))), ArrayList::new)); + return studentList; + } + + /** * 根据学生群组获取学校下对应群组的学生数据信息 * @param schoolId * @param studentType @@ -514,12 +531,10 @@ public class BaseService { * @return */ public List getStudentListByGroup(Integer schoolId,Integer studentType,String sex,Integer groupId) { - List sexList = new ArrayList<>(); + List sexList = null; if(StringUtils.isNotBlank(sex)){ - String[] msg = sex.split(","); - for(String s : msg){ - sexList.add(Integer.valueOf(s)); - } + sexList = Arrays.asList(sex.split(",")) + .stream().map(Integer::parseInt).collect(Collectors.toList()); } List students = userDao.getStudentCardGroup(schoolId,studentType,sexList,groupId); //去重重复数据 @@ -528,9 +543,14 @@ public class BaseService { return studentList; } - - public List getStudentListByGroupId(Integer schoolId,Integer groupId) { - List rooms = userDao.getRoomBySchoolId(schoolId,groupId); + /** + * 获取宿舍分组管理学生 + * @param schoolId + * @param roomId + * @return + */ + public List getStudentListByRoomId(Integer schoolId,Integer roomId) { + List rooms = userDao.getRoomBySchoolId(schoolId,roomId); if(!CollectionUtils.isEmpty(rooms)) { List pIdlIst = rooms.stream().distinct().collect(Collectors.toList()); List studentBeans = userDao.getStudentByRoomIds(schoolId,pIdlIst); @@ -549,7 +569,7 @@ public class BaseService { * @return */ public List getTeacherList(Integer schoolId) { - List teachers = userDao.getTeacherList(schoolId); + List teachers = userDao.getTeacherBySchoolId(schoolId); //去重重复数据 List teacherist = teachers.stream().collect(Collectors.collectingAndThen( Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(StudentBean::getTeacher_num))), ArrayList::new)); @@ -646,4 +666,15 @@ public class BaseService { attendanceBean.getSchool_id(), attendanceBean.getState() + "", attendanceBean.getIsConnection() + ""); } } + + public List getReplaceByKeyword(Integer schoolId,String keyword) { + List students = userDao.getTestVsByKeyword(schoolId,keyword,null,null); + //去重重复数据 + List studentList = students.stream().collect(Collectors.collectingAndThen( + Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(StudentBean::getStudent_num))), ArrayList::new)); + return studentList; + } + + + } diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/service/impl/UserOperateServiceImpl.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/service/impl/UserOperateServiceImpl.java index 73cbbc7..f058a1b 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/service/impl/UserOperateServiceImpl.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/service/impl/UserOperateServiceImpl.java @@ -25,7 +25,7 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; -import java.nio.file.Files; +import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -950,12 +950,11 @@ public class UserOperateServiceImpl implements UserOperateService { @Override public Result sendFaceByClassId(Integer schoolId,String classIds,String deviceIds,Integer studentType,String sex,Integer isCheck) { //下发设备集合 - List deviceList = new ArrayList<>(); + List deviceList = null; if(StringUtils.isBlank(deviceIds)){ deviceList = deviceDao.selectDeviceBySchoolId(schoolId); }else{ - String[] deviceArr = deviceIds.split(","); - deviceList= new ArrayList<>(Arrays.asList(deviceArr)); + deviceList= new ArrayList<>(Arrays.asList(deviceIds.split(","))); } List resultCard = new ArrayList<>(); List resultDevices = new ArrayList<>(); @@ -1011,7 +1010,71 @@ public class UserOperateServiceImpl implements UserOperateService { } @Override - public Result sendFaceByGroupId(Integer schoolId,Integer groupId,String deviceIds) { + public Result sendFaceByKeyword(Integer schoolId,String keyword,String deviceIds,Integer studentType,String sex,Integer isCheck) { + //下发设备集合 + List deviceList = null; + if(StringUtils.isBlank(deviceIds)){ + deviceList = deviceDao.selectDeviceBySchoolId(schoolId); + }else{ + deviceList= Arrays.asList(deviceIds.split(",")); + } + List resultCard = new ArrayList<>(); + List resultDevices = new ArrayList<>(); + //根据类型获取下发用户信息 + List studentBeanList = baseService.getStudentByKeyword(schoolId,keyword,studentType,sex); + log.info("统计共有下发用户数量:{}",studentBeanList.size()); + if(isCheck !=null){ + for(StudentBean studentBean : studentBeanList){ + String cardNum = studentBean.getStudent_num(); + boolean isOk = true; + for(String deviceId : deviceList){ + if (cmsServer.getIsDeviceOnline(deviceId)) { + String cardNo = Long.parseLong(baseService.getCard(cardNum), 16) + ""; + isOk = cmsServer.getFace(deviceId,cardNo,null); + }else{ + isOk = HttpUtil.getCard(deviceId, cardNum); + } + if(!isOk){ + resultCard.add(studentBean); + resultCard.add(studentBean); + resultDevices.add(deviceId); + } + } + } + //去重重复数据 + studentBeanList = resultCard.stream().collect(Collectors.collectingAndThen( + Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(StudentBean::getStudent_num))), ArrayList::new)); + //去重重复数据 + deviceList = resultDevices.stream().distinct().collect(Collectors.toList()); + } + log.info("统计共有下发用户数量:{}",studentBeanList.size()); + //设备类型 + Integer clintType = userDao.getClintTypeByDeviceId(deviceList.get(0)); + if(clintType.intValue()== 22 || clintType.intValue()== 29){ + //发送大华设备 + HttpUtil.uploadDHImgByClassId(String.valueOf(schoolId),deviceIds,keyword); + } + if(clintType.intValue()== 18 || clintType.intValue()== 28){ + //发送海康设备:异步执行 + baseService.sendUserFaceByAsyncThread(schoolId,2,studentBeanList,deviceList); + } + int fileSize = studentBeanList.size(); + int clintNum = deviceList.size(); + //下发所用时长 + int timeLength = new Double(clintNum * fileSize * 0.06).intValue(); + //下发截止时间 + String dateStr = baseService.getTime(fileSize,clintNum,timeLength); + Map map = new HashMap(); + map.put("timeLength",timeLength); + map.put("afterDate",dateStr); + map.put("fileSize",fileSize); + return ResultGenerator.genSuccessResult(objectMapper.toJson(map)); + } + + + + @Override + public Result sendFaceByRoomId(Integer schoolId,Integer roomId,String deviceIds) { //下发设备集合 List deviceList = new ArrayList<>(); if(StringUtils.isBlank(deviceIds)){ @@ -1021,7 +1084,7 @@ public class UserOperateServiceImpl implements UserOperateService { deviceList= new ArrayList<>(Arrays.asList(deviceArr)); } //根据类型获取下发用户信息 - List studentBeanList = baseService.getStudentListByGroupId(schoolId,groupId); + List studentBeanList = baseService.getStudentListByRoomId(schoolId,roomId); log.info("统计共有下发用户数量:{}",studentBeanList.size()); //设备类型 Integer clintType = userDao.getClintTypeByDeviceId(deviceList.get(0)); @@ -1171,4 +1234,55 @@ public class UserOperateServiceImpl implements UserOperateService { }); } } + + @Override + public Result replaceFaceByKeyword(Integer schoolId,String deviceIds,String keyword) { + //下发设备集合 + List deviceList = null; + if(StringUtils.isBlank(deviceIds)){ + deviceList = deviceDao.selectDeviceBySchoolId(schoolId); + }else{ + deviceList= Arrays.asList(deviceIds.split(",")); + } + //根据类型获取下发用户信息 + List studentBeanList = baseService.getReplaceByKeyword(schoolId,keyword); + log.info("统计共有下发用户数量:{}",studentBeanList.size()); + + //发送海康设备:异步执行 + this.deleteReplaceFace(schoolId,studentBeanList,deviceList); + + int fileSize = studentBeanList.size(); + int clintNum = deviceList.size(); + //下发所用时长 + int timeLength = new Double(clintNum * fileSize * 0.06).intValue(); + //下发截止时间 + String dateStr = baseService.getTime(fileSize,clintNum,timeLength); + Map map = new HashMap(); + map.put("timeLength",timeLength); + map.put("afterDate",dateStr); + map.put("fileSize",fileSize); + return ResultGenerator.genSuccessResult(objectMapper.toJson(map)); + } + + @Async + public void deleteReplaceFace(Integer schoolId,List studentBeanList,List deviceList){ + //100服务器; + studentBeanList.stream().forEach(s->{ + String cardNum = s.getStudent_num(); + deviceList.stream().forEach(c->{ + boolean isOk = false; + if (cmsServer.getIsDeviceOnline(c)) { + String cardNo = Long.parseLong(baseService.getCard(cardNum), 16) + ""; + isOk = HttpUtil.deleteCard100(c,cardNo); + }else{ + isOk = HttpUtil.deleteCard(c, cardNum); + } + if(isOk){ + //删除成功记录 + sendRecordDao.deleteUserFaceSuccess(schoolId,cardNum,c); + sendRecordDao.deleteRecord(schoolId,c,cardNum); + } + }); + }); + } } diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/HttpUtil.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/HttpUtil.java index a39dd90..87b459a 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/HttpUtil.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/HttpUtil.java @@ -158,6 +158,13 @@ public class HttpUtil { return res.equals("1"); } + public static boolean deleteCard100(String deviceId, String card) { + String url = "http://114.55.30.100:8089/file/DeleteCard?deviceId=" + deviceId + "&card=" + card; + RestTemplate restTemplate = new RestTemplate(); + String res = restTemplate.getForObject(url, String.class); + return res.equals("1"); + } + /** * 获取海康设备卡信息 * @param deviceId diff --git a/cloud/haikangface/src/main/resources/mapper/usermapper.xml b/cloud/haikangface/src/main/resources/mapper/usermapper.xml index a2e4a67..5b65d40 100644 --- a/cloud/haikangface/src/main/resources/mapper/usermapper.xml +++ b/cloud/haikangface/src/main/resources/mapper/usermapper.xml @@ -64,7 +64,11 @@ + + + + - - + + diff --git a/cloud/quartz/src/main/resources/logback.xml b/cloud/quartz/src/main/resources/logback.xml index 80fff7c..c392876 100644 --- a/cloud/quartz/src/main/resources/logback.xml +++ b/cloud/quartz/src/main/resources/logback.xml @@ -4,7 +4,7 @@ - + -- libgit2 0.21.0