StudentAdmissionApplicationServiceImpl.java 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package com.xjrsoft.module.student.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.github.yulichang.base.MPJBaseServiceImpl;
  4. import com.google.gson.JsonArray;
  5. import com.google.gson.JsonElement;
  6. import com.google.gson.JsonObject;
  7. import com.google.gson.JsonParser;
  8. import com.xjrsoft.module.hikvision.entity.HikvisionData;
  9. import com.xjrsoft.module.hikvision.mapper.HikvisionDataMapper;
  10. import com.xjrsoft.module.hikvision.util.ApiUtil;
  11. import com.xjrsoft.module.student.entity.StudentAdmissionApplication;
  12. import com.xjrsoft.module.student.mapper.StudentAdmissionApplicationMapper;
  13. import com.xjrsoft.module.student.service.IStudentAdmissionApplicationService;
  14. import lombok.AllArgsConstructor;
  15. import org.springframework.stereotype.Service;
  16. import java.time.format.DateTimeFormatter;
  17. import java.util.HashMap;
  18. import java.util.Map;
  19. /**
  20. * @title: 学生进校申请
  21. * @Author dzx
  22. * @Date: 2024年5月17日
  23. * @Version 1.0
  24. */
  25. @Service
  26. @AllArgsConstructor
  27. public class StudentAdmissionApplicationServiceImpl extends MPJBaseServiceImpl<StudentAdmissionApplicationMapper, StudentAdmissionApplication> implements IStudentAdmissionApplicationService {
  28. private final HikvisionDataMapper hikvisionDataMapper;
  29. @Override
  30. public Boolean toHikvision(Long id) {
  31. StudentAdmissionApplication application = this.getById(id);
  32. //查询学生在海康的id
  33. HikvisionData hikvisionData = hikvisionDataMapper.selectOne(
  34. new QueryWrapper<HikvisionData>().lambda()
  35. .eq(HikvisionData::getSourceId, application.getStudentUserId())
  36. .eq(HikvisionData::getTableName, "base_student")
  37. );
  38. ApiUtil apiUtil = new ApiUtil();
  39. String apiPath = "/api/acps/v1/auth_config/add";
  40. String outputFormat = "yyyy-MM-dd'T'HH:mm:ss+08:00";
  41. DateTimeFormatter formatter = DateTimeFormatter.ofPattern(outputFormat);
  42. JsonObject paramJson = new JsonObject();
  43. paramJson.addProperty("startTime", application.getStartTime().format(formatter));
  44. paramJson.addProperty("endTime", application.getEndTime().format(formatter));
  45. //组装人员数据
  46. JsonArray personDatas = new JsonArray();
  47. JsonObject personData = new JsonObject();
  48. personData.addProperty("personDataType", "person");
  49. JsonArray indexCodes = new JsonArray();
  50. indexCodes.add(hikvisionData.getHikvisionId());
  51. personData.add("indexCodes", indexCodes);
  52. personDatas.add(personData);
  53. paramJson.add("personDatas", personDatas);
  54. JsonArray resourceInfos = selectResource(apiUtil);
  55. paramJson.add("resourceInfos", resourceInfos);
  56. Map<String, String> header = new HashMap<>();
  57. header.put("tagId", "studentleave");
  58. //调用接口获取到返回内容,并将其存到数据库中
  59. String result = apiUtil.doPost(apiPath, paramJson.toString(), null, header);
  60. application.setHikvisionResult(result);
  61. application.setStatus(1);
  62. this.updateById(application);
  63. return true;
  64. }
  65. JsonArray selectResource(ApiUtil apiUtil){
  66. String apiPath = "/api/irds/v2/resource/resourcesByParams";
  67. JsonObject jsonObject = new JsonObject();
  68. jsonObject.addProperty("pageNo", 1);
  69. jsonObject.addProperty("pageSize", 500);
  70. jsonObject.addProperty("resourceType", "door");
  71. String result = apiUtil.doPost(apiPath, jsonObject.toString(), null, null);
  72. JsonParser parser = new JsonParser();
  73. JsonObject resultJson = parser.parse(result).getAsJsonObject();
  74. JsonArray resourceInfos = new JsonArray();
  75. if("0".equals(resultJson.get("code").getAsString()) && "success".equals(resultJson.get("msg").getAsString())){
  76. JsonArray list = resultJson.get("data").getAsJsonObject().get("list").getAsJsonArray();
  77. for (JsonElement jsonElement : list) {
  78. JsonObject listOne = jsonElement.getAsJsonObject();
  79. JsonObject resourceInfo = new JsonObject();
  80. resourceInfo.add("resourceIndexCode", listOne.get("indexCode"));
  81. resourceInfo.add("resourceType", listOne.get("resourceType"));
  82. JsonArray channelNos = new JsonArray();
  83. channelNos.add(listOne.get("channelNo"));
  84. resourceInfo.add("channelNos", channelNos);
  85. resourceInfos.add(resourceInfo);
  86. }
  87. }
  88. return resourceInfos;
  89. }
  90. }