HikvisionLeaveTask.java 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package com.xjrsoft.module.job;
  2. import cn.hutool.extra.spring.SpringUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.google.gson.JsonArray;
  5. import com.google.gson.JsonObject;
  6. import com.xjrsoft.module.hikvision.entity.HikvisionData;
  7. import com.xjrsoft.module.hikvision.mapper.HikvisionDataMapper;
  8. import com.xjrsoft.module.hikvision.util.ApiUtil;
  9. import com.xjrsoft.module.student.entity.StudentLeave;
  10. import com.xjrsoft.module.student.service.IStudentLeaveService;
  11. import com.xjrsoft.module.teacher.entity.WfTeacherleave;
  12. import com.xjrsoft.module.teacher.service.IWfTeacherleaveService;
  13. import lombok.extern.slf4j.Slf4j;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.scheduling.annotation.Scheduled;
  16. import org.springframework.stereotype.Component;
  17. import java.time.LocalDate;
  18. import java.util.ArrayList;
  19. import java.util.Arrays;
  20. import java.util.Date;
  21. import java.util.HashMap;
  22. import java.util.List;
  23. import java.util.Map;
  24. /**
  25. * 请假结束之后,删除下发到海康的一卡通权限
  26. * @author dzx
  27. * @date 2024/5/8
  28. */
  29. @Component
  30. @Slf4j
  31. public class HikvisionLeaveTask {
  32. @Autowired
  33. private IStudentLeaveService studentLeaveService;
  34. @Autowired
  35. private IWfTeacherleaveService teacherleaveService;
  36. @Autowired
  37. private HikvisionDataMapper hikvisionDataMapper;
  38. @Scheduled(cron = "0 */15 * * * ?")
  39. public void execute() {
  40. doExecute();
  41. }
  42. public void doExecute() {
  43. String active = SpringUtil.getActiveProfile();
  44. if(!"prod".equals(active)){
  45. log.info("非正式环境,无法执行数据推送");
  46. return;
  47. }
  48. List<String> sourceIds = new ArrayList<>();
  49. List<StudentLeave> studentList = studentLeaveService.list(
  50. new QueryWrapper<StudentLeave>().lambda()
  51. .isNotNull(StudentLeave::getHikvisionResult)
  52. .lt(StudentLeave::getEndDate, LocalDate.now())
  53. );
  54. for (StudentLeave studentLeave : studentList) {
  55. sourceIds.add(studentLeave.getStudentUserId().toString());
  56. }
  57. List<WfTeacherleave> teacherList = teacherleaveService.list(
  58. new QueryWrapper<WfTeacherleave>().lambda()
  59. .isNotNull(WfTeacherleave::getHikvisionResult)
  60. .lt(WfTeacherleave::getLeaveEndTime, new Date())
  61. );
  62. for (WfTeacherleave teacherleave : teacherList) {
  63. String[] split = teacherleave.getUserId().split(",");
  64. sourceIds.addAll( Arrays.asList(split));
  65. }
  66. if(sourceIds.isEmpty()){
  67. return;
  68. }
  69. List<HikvisionData> hikvisionData = hikvisionDataMapper.selectList(
  70. new QueryWrapper<HikvisionData>().lambda()
  71. .in(HikvisionData::getSourceId, sourceIds)
  72. );
  73. ApiUtil apiUtil = new ApiUtil();
  74. String apiPath = "/api/acps/v1/auth_config/delete";
  75. JsonObject paramJson = new JsonObject();
  76. JsonArray personDatas = new JsonArray();
  77. JsonObject personData = new JsonObject();
  78. JsonArray indexCodes = new JsonArray();
  79. for (HikvisionData el : hikvisionData) {
  80. indexCodes.add(el.getHikvisionId());
  81. }
  82. personData.addProperty("personDataType","personGroup");
  83. personData.add("indexCodes", indexCodes);
  84. personDatas.add(personData);
  85. paramJson.add("personDatas", personDatas);
  86. Map<String, String> header = new HashMap<>();
  87. header.put("tagId", "deltoken");
  88. //调用接口获取到返回内容,并将其存到数据库中
  89. String result = apiUtil.doPost(apiPath, paramJson.toString(), null, header);
  90. System.out.println(result);
  91. }
  92. }