OutInController.java 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. package com.xjrsoft.module.hikvision.controller;
  2. import cn.dev33.satoken.annotation.SaCheckPermission;
  3. import cn.dev33.satoken.stp.StpUtil;
  4. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5. import com.google.gson.*;
  6. import com.xjrsoft.common.annotation.XjrLog;
  7. import com.xjrsoft.common.exception.MyException;
  8. import com.xjrsoft.common.model.result.RT;
  9. import com.xjrsoft.common.page.PageOutput;
  10. import com.xjrsoft.module.hikvision.dto.HikvisionCarOutinPageDto;
  11. import com.xjrsoft.module.hikvision.dto.HikvisionOutinPageDto;
  12. import com.xjrsoft.module.hikvision.service.IHikvisionDataService;
  13. import com.xjrsoft.module.hikvision.util.ApiUtil;
  14. import com.xjrsoft.module.hikvision.vo.HikvisionCarListVo;
  15. import com.xjrsoft.module.hikvision.vo.HikvisionCarOutinPageVo;
  16. import com.xjrsoft.module.hikvision.vo.HikvisionOutinPageVo;
  17. import com.xjrsoft.module.personnel.entity.CarMessageApply;
  18. import com.xjrsoft.module.personnel.service.ICarMessageApplyService;
  19. import io.swagger.annotations.Api;
  20. import io.swagger.annotations.ApiOperation;
  21. import lombok.AllArgsConstructor;
  22. import lombok.extern.slf4j.Slf4j;
  23. import org.springframework.web.bind.annotation.GetMapping;
  24. import org.springframework.web.bind.annotation.RequestMapping;
  25. import org.springframework.web.bind.annotation.RestController;
  26. import javax.validation.Valid;
  27. import java.util.ArrayList;
  28. import java.util.List;
  29. @RestController
  30. @RequestMapping("/hikvision/outin")
  31. @Api(value = "/hikvision/outin", tags = "海康出入记录")
  32. @AllArgsConstructor
  33. @Slf4j
  34. public class OutInController {
  35. private final IHikvisionDataService hkvisionDataService;
  36. private final ICarMessageApplyService carApplyService;
  37. @GetMapping("/page")
  38. @ApiOperation(value = "海康记录查询(分页)")
  39. @SaCheckPermission("outin:detail")
  40. @XjrLog(value = "海康记录查询(分页)")
  41. public RT<PageOutput<HikvisionOutinPageVo>> page(@Valid HikvisionOutinPageDto dto) {
  42. ApiUtil apiUtil = new ApiUtil();
  43. String apiPath = "/api/acs/v2/door/events";
  44. JsonObject paramJson = new JsonObject();
  45. JsonArray eventList = new JsonArray();
  46. eventList.add(196893); // 只获取人脸通过的
  47. paramJson.addProperty("pageNo", dto.getLimit());
  48. paramJson.addProperty("pageSize", dto.getSize());
  49. paramJson.add("eventTypes", eventList);
  50. String hikvisionId = hkvisionDataService.getHikvisionIdBySourceId(dto.getUserId().toString());
  51. JsonArray personIds = new JsonArray();
  52. personIds.add(hikvisionId);
  53. paramJson.add("personIds", personIds);
  54. paramJson.addProperty("sort", "eventTime");
  55. paramJson.addProperty("order", "desc");
  56. String doPost = apiUtil.doPost(apiPath, paramJson.toString(), null);
  57. JsonParser parser = new JsonParser();
  58. JsonObject resultJson = parser.parse(doPost).getAsJsonObject();
  59. if(!"0".equals(resultJson.get("code").getAsString())){
  60. throw new MyException(resultJson.get("msg").getAsString());
  61. }
  62. JsonObject data = resultJson.get("data").getAsJsonObject();
  63. JsonArray list = data.get("list").getAsJsonArray();
  64. List<HikvisionOutinPageVo> result = new ArrayList<>();
  65. Gson gson = new Gson();
  66. for (JsonElement jsonElement : list) {
  67. result.add(gson.fromJson(jsonElement.getAsJsonObject(), HikvisionOutinPageVo.class));
  68. }
  69. PageOutput<HikvisionOutinPageVo> output = new PageOutput<>();
  70. output.setCurrentPage(dto.getLimit());
  71. output.setPageSize(dto.getSize());
  72. output.setTotalPage(data.get("totalPage").getAsInt());
  73. output.setTotal(data.get("total").getAsInt());
  74. output.setList(result);
  75. return RT.ok(output);
  76. }
  77. @GetMapping("/car-list")
  78. @ApiOperation(value = "根据用户id查询车牌号")
  79. @SaCheckPermission("outin:detail")
  80. @XjrLog(value = "根据用户id查询车牌号")
  81. public RT<List<HikvisionCarListVo>> carList(@Valid HikvisionCarOutinPageDto dto) {
  82. if (dto.getUserId() == null) {
  83. dto.setUserId(StpUtil.getLoginIdAsLong());
  84. }
  85. List<CarMessageApply> list = carApplyService.list(new QueryWrapper<CarMessageApply>().lambda().eq(CarMessageApply::getUserId, dto.getUserId()));
  86. List<HikvisionCarListVo> result = new ArrayList<>();
  87. for (CarMessageApply el : list) {
  88. result.add(
  89. new HikvisionCarListVo() {{
  90. setPlateNo(el.getCarNumber());
  91. }}
  92. );
  93. }
  94. return RT.ok(result);
  95. }
  96. @GetMapping("/car-page")
  97. @ApiOperation(value = "海康车辆出入记录查询(分页)")
  98. @SaCheckPermission("outin:detail")
  99. @XjrLog(value = "海康车辆出入记录查询(分页)")
  100. public RT<PageOutput<HikvisionCarOutinPageVo>> carPage(@Valid HikvisionCarOutinPageDto dto) {
  101. ApiUtil apiUtil = new ApiUtil();
  102. String apiPath = "/api/pms/v1/crossRecords/page";
  103. JsonObject paramJson = new JsonObject();
  104. paramJson.addProperty("pageNo", dto.getLimit());
  105. paramJson.addProperty("pageSize", dto.getSize());
  106. paramJson.addProperty("sort", "crossTime");
  107. paramJson.addProperty("order", "desc");
  108. paramJson.addProperty("plateNo", dto.getPlateNo());
  109. String doPost = apiUtil.doPost(apiPath, paramJson.toString(), null);
  110. JsonParser parser = new JsonParser();
  111. JsonObject resultJson = parser.parse(doPost).getAsJsonObject();
  112. if(!"0".equals(resultJson.get("code").getAsString())){
  113. throw new MyException(resultJson.get("msg").getAsString());
  114. }
  115. JsonObject data = resultJson.get("data").getAsJsonObject();
  116. JsonArray list = data.get("list").getAsJsonArray();
  117. List<HikvisionCarOutinPageVo> result = new ArrayList<>();
  118. Gson gson = new Gson();
  119. for (JsonElement jsonElement : list) {
  120. result.add(gson.fromJson(jsonElement.getAsJsonObject(), HikvisionCarOutinPageVo.class));
  121. }
  122. PageOutput<HikvisionCarOutinPageVo> output = new PageOutput<>();
  123. output.setCurrentPage(dto.getLimit());
  124. output.setPageSize(dto.getSize());
  125. // output.setTotalPage(data.get("totalPage").getAsInt());
  126. output.setTotal(data.get("total").getAsInt());
  127. output.setList(result);
  128. return RT.ok(output);
  129. }
  130. }