| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- package com.xjrsoft.module.student.service.impl;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.github.yulichang.base.MPJBaseServiceImpl;
- import com.google.gson.JsonArray;
- import com.google.gson.JsonElement;
- import com.google.gson.JsonObject;
- import com.google.gson.JsonParser;
- import com.xjrsoft.module.hikvision.entity.HikvisionData;
- import com.xjrsoft.module.hikvision.mapper.HikvisionDataMapper;
- import com.xjrsoft.module.hikvision.util.ApiUtil;
- import com.xjrsoft.module.outint.vo.IdCountVo;
- import com.xjrsoft.module.student.entity.StudentLeave;
- import com.xjrsoft.module.student.mapper.StudentLeaveMapper;
- import com.xjrsoft.module.student.service.IStudentLeaveService;
- import lombok.AllArgsConstructor;
- import org.springframework.stereotype.Service;
- import java.time.LocalDateTime;
- import java.time.format.DateTimeFormatter;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * @title: 学生请假
- * @Author dzx
- * @Date: 2024年5月21日
- * @Version 1.0
- */
- @Service
- @AllArgsConstructor
- public class StudentLeaveServiceImpl extends MPJBaseServiceImpl<StudentLeaveMapper, StudentLeave> implements IStudentLeaveService {
- private final HikvisionDataMapper hikvisionDataMapper;
- @Override
- public Boolean hikvisionLeave(Long id) {
- StudentLeave studentLeave = this.getById(id);
- //查询学生在海康的id
- HikvisionData hikvisionData = hikvisionDataMapper.selectOne(
- new QueryWrapper<HikvisionData>().lambda()
- .eq(HikvisionData::getSourceId, studentLeave.getStudentUserId())
- .eq(HikvisionData::getTableName, "base_student")
- );
- ApiUtil apiUtil = new ApiUtil();
- String apiPath = "/api/acps/v1/auth_config/add";
- String outputFormat = "yyyy-MM-dd'T'HH:mm:ss+08:00";
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern(outputFormat);
- JsonObject paramJson = new JsonObject();
- paramJson.addProperty("startTime", studentLeave.getStartDate().atStartOfDay().format(formatter));
- paramJson.addProperty("endTime", studentLeave.getEndDate().atTime(23,59,59).format(formatter));
- //组装人员数据
- JsonArray personDatas = new JsonArray();
- JsonObject personData = new JsonObject();
- personData.addProperty("personDataType", "person");
- JsonArray indexCodes = new JsonArray();
- indexCodes.add(hikvisionData.getHikvisionId());
- personData.add("indexCodes", indexCodes);
- personDatas.add(personData);
- paramJson.add("personDatas", personDatas);
- JsonArray resourceInfos = selectResource(apiUtil);
- paramJson.add("resourceInfos", resourceInfos);
- Map<String, String> header = new HashMap<>();
- header.put("tagId", "studentleave");
- //调用接口获取到返回内容,并将其存到数据库中
- String result = apiUtil.doPost(apiPath, paramJson.toString(), null, header);
- studentLeave.setHikvisionResult(result);
- this.updateById(studentLeave);
- return true;
- }
- @Override
- public Long getLeaveCount(LocalDateTime startTime, LocalDateTime endTime) {
- return this.baseMapper.getLeaveCount(startTime, endTime);
- }
- @Override
- public Map<Long, Integer> getClassLeaveCount(LocalDateTime startTime, LocalDateTime endTime) {
- List<IdCountVo> classLeaveCount = this.baseMapper.getClassLeaveCount(startTime, endTime);
- Map<Long, Integer> result = new HashMap<>();
- for (IdCountVo idCountVo : classLeaveCount) {
- result.put(idCountVo.getId(), idCountVo.getCount());
- }
- return result;
- }
- JsonArray selectResource(ApiUtil apiUtil){
- String apiPath = "/api/irds/v2/resource/resourcesByParams";
- JsonObject jsonObject = new JsonObject();
- jsonObject.addProperty("pageNo", 1);
- jsonObject.addProperty("pageSize", 500);
- jsonObject.addProperty("resourceType", "door");
- String result = apiUtil.doPost(apiPath, jsonObject.toString(), null, null);
- JsonParser parser = new JsonParser();
- JsonObject resultJson = parser.parse(result).getAsJsonObject();
- JsonArray resourceInfos = new JsonArray();
- if("0".equals(resultJson.get("code").getAsString()) && "success".equals(resultJson.get("msg").getAsString())){
- JsonArray list = resultJson.get("data").getAsJsonObject().get("list").getAsJsonArray();
- for (JsonElement jsonElement : list) {
- JsonObject listOne = jsonElement.getAsJsonObject();
- JsonObject resourceInfo = new JsonObject();
- resourceInfo.add("resourceIndexCode", listOne.get("indexCode"));
- resourceInfo.add("resourceType", listOne.get("resourceType"));
- JsonArray channelNos = new JsonArray();
- channelNos.add(listOne.get("channelNo"));
- resourceInfo.add("channelNos", channelNos);
- resourceInfos.add(resourceInfo);
- }
- }
- return resourceInfos;
- }
- }
|