ReservationSchoolServiceImpl.java 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. package com.xjrsoft.module.personnel.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.github.yulichang.base.MPJBaseServiceImpl;
  4. import com.google.gson.JsonObject;
  5. import com.xjrsoft.common.enums.GenderIntEnum;
  6. import com.xjrsoft.module.attendance.vo.VisitorInfoVo;
  7. import com.xjrsoft.module.hikvision.entity.HikvisionData;
  8. import com.xjrsoft.module.hikvision.mapper.HikvisionDataMapper;
  9. import com.xjrsoft.module.hikvision.util.ApiUtil;
  10. import com.xjrsoft.module.personnel.entity.ReservationSchoolPeople;
  11. import com.xjrsoft.module.personnel.mapper.ReservationSchoolPeopleMapper;
  12. import com.xjrsoft.module.personnel.entity.ReservationSchool;
  13. import com.xjrsoft.module.personnel.mapper.ReservationSchoolMapper;
  14. import com.xjrsoft.module.personnel.service.IReservationSchoolService;
  15. import lombok.AllArgsConstructor;
  16. import org.springframework.stereotype.Service;
  17. import org.springframework.transaction.annotation.Transactional;
  18. import java.text.SimpleDateFormat;
  19. import java.util.List;
  20. import java.util.Objects;
  21. import java.util.stream.Collectors;
  22. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  23. /**
  24. * @title: 预约进校
  25. * @Author dzx
  26. * @Date: 2024-05-11
  27. * @Version 1.0
  28. */
  29. @Service
  30. @AllArgsConstructor
  31. public class ReservationSchoolServiceImpl extends MPJBaseServiceImpl<ReservationSchoolMapper, ReservationSchool> implements IReservationSchoolService {
  32. private final ReservationSchoolMapper reservationSchoolMapper;
  33. private final ReservationSchoolPeopleMapper reservationSchoolPeopleMapper;
  34. private final HikvisionDataMapper hikvisionDataMapper;
  35. @Override
  36. @Transactional(rollbackFor = Exception.class)
  37. public Boolean add(ReservationSchool reservationSchool) {
  38. reservationSchoolMapper.insert(reservationSchool);
  39. for (ReservationSchoolPeople reservationSchoolPeople : reservationSchool.getReservationSchoolPeopleList()) {
  40. reservationSchoolPeople.setReservationSchooId(reservationSchool.getId());
  41. reservationSchoolPeopleMapper.insert(reservationSchoolPeople);
  42. }
  43. return true;
  44. }
  45. @Override
  46. @Transactional(rollbackFor = Exception.class)
  47. public Boolean update(ReservationSchool reservationSchool) {
  48. reservationSchoolMapper.updateById(reservationSchool);
  49. //********************************* ReservationSchoolPeople 增删改 开始 *******************************************/
  50. {
  51. // 查出所有子级的id
  52. List<ReservationSchoolPeople> reservationSchoolPeopleList = reservationSchoolPeopleMapper.selectList(Wrappers.lambdaQuery(ReservationSchoolPeople.class).eq(ReservationSchoolPeople::getReservationSchooId, reservationSchool.getId()).select(ReservationSchoolPeople::getId));
  53. List<Long> reservationSchoolPeopleIds = reservationSchoolPeopleList.stream().map(ReservationSchoolPeople::getId).collect(Collectors.toList());
  54. //原有子表单 没有被删除的主键
  55. List<Long> reservationSchoolPeopleOldIds = reservationSchool.getReservationSchoolPeopleList().stream().map(ReservationSchoolPeople::getId).filter(Objects::nonNull).collect(Collectors.toList());
  56. //找到需要删除的id
  57. List<Long> reservationSchoolPeopleRemoveIds = reservationSchoolPeopleIds.stream().filter(item -> !reservationSchoolPeopleOldIds.contains(item)).collect(Collectors.toList());
  58. for (ReservationSchoolPeople reservationSchoolPeople : reservationSchool.getReservationSchoolPeopleList()) {
  59. //如果不等于空则修改
  60. if (reservationSchoolPeople.getId() != null) {
  61. reservationSchoolPeopleMapper.updateById(reservationSchoolPeople);
  62. }
  63. //如果等于空 则新增
  64. else {
  65. //已经不存在的id 删除
  66. reservationSchoolPeople.setReservationSchooId(reservationSchool.getId());
  67. reservationSchoolPeopleMapper.insert(reservationSchoolPeople);
  68. }
  69. }
  70. //已经不存在的id 删除
  71. if(reservationSchoolPeopleRemoveIds.size() > 0){
  72. reservationSchoolPeopleMapper.deleteBatchIds(reservationSchoolPeopleRemoveIds);
  73. }
  74. }
  75. //********************************* ReservationSchoolPeople 增删改 结束 *******************************************/
  76. return true;
  77. }
  78. @Override
  79. @Transactional(rollbackFor = Exception.class)
  80. public Boolean delete(List<Long> ids) {
  81. reservationSchoolMapper.deleteBatchIds(ids);
  82. reservationSchoolPeopleMapper.delete(Wrappers.lambdaQuery(ReservationSchoolPeople.class).in(ReservationSchoolPeople::getReservationSchooId, ids));
  83. return true;
  84. }
  85. /**
  86. * 预约免登记
  87. * @param dataObj
  88. * @return
  89. */
  90. @Override
  91. public Boolean registration(ReservationSchool dataObj) {
  92. String apiPath = "/api/visitor/v1/appointment/registration";
  93. ApiUtil apiUtil = new ApiUtil();
  94. //查询被访人id
  95. HikvisionData hikvisionData = hikvisionDataMapper.selectOne(
  96. new QueryWrapper<HikvisionData>().lambda()
  97. .eq(HikvisionData::getSourceId, dataObj.getRespondentUserId())
  98. .eq(HikvisionData::getTableName, "base_teacher")
  99. );
  100. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss+08:00");
  101. List<ReservationSchoolPeople> peopleList = dataObj.getReservationSchoolPeopleList();
  102. for (ReservationSchoolPeople people : peopleList) {
  103. JsonObject paramJson = new JsonObject();
  104. paramJson.addProperty("receptionistId", hikvisionData.getHikvisionId());
  105. paramJson.addProperty("visitStartTime", sdf.format(dataObj.getStartTime()));
  106. paramJson.addProperty("visitEndTime", sdf.format(dataObj.getEndTime()));
  107. //查询来访人数
  108. paramJson.addProperty("personNum", dataObj.getReservationSchoolPeopleList().size());
  109. paramJson.addProperty("visitorInfo", dataObj.getReservationSchoolPeopleList().size());
  110. paramJson.addProperty("personNum", dataObj.getReservationSchoolPeopleList().size());
  111. JsonObject visitorInfo = new JsonObject();
  112. visitorInfo.addProperty("visitorName", people.getName());
  113. visitorInfo.addProperty("gender", GenderIntEnum.getValue(people.getGender()));
  114. visitorInfo.addProperty("phoneNo", people.getPhone());
  115. if("是".equals(people.getIsCar())){
  116. visitorInfo.addProperty("plateNo", people.getPlateNumber());
  117. }
  118. visitorInfo.addProperty("certificateNo", people.getIdentityCard());
  119. visitorInfo.addProperty("certificateType", "111");
  120. paramJson.add("visitorInfo", visitorInfo);
  121. String result = apiUtil.doPost(apiPath, paramJson.toString(), null);
  122. people.setRegistrationResult(result);
  123. reservationSchoolPeopleMapper.updateById(people);
  124. }
  125. return true;
  126. }
  127. @Override
  128. public List<VisitorInfoVo> getVisionList(String date) {
  129. return reservationSchoolMapper.getVisionList(date);
  130. }
  131. }