ReservationSchoolServiceImpl.java 6.9 KB

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