MetaSpatialInfoService.java 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package com.izouma.nineth.service;
  2. import com.izouma.nineth.domain.MetaSpatialInfo;
  3. import com.izouma.nineth.domain.SpaceObjectsInfo;
  4. import com.izouma.nineth.dto.PageQuery;
  5. import com.izouma.nineth.exception.BusinessException;
  6. import com.izouma.nineth.repo.MetaSpatialInfoRepo;
  7. import com.izouma.nineth.repo.SpaceObjectsInfoRepo;
  8. import com.izouma.nineth.utils.JpaUtils;
  9. import com.izouma.nineth.utils.ObjUtils;
  10. import jodd.util.StringUtil;
  11. import lombok.AllArgsConstructor;
  12. import org.springframework.data.domain.Page;
  13. import org.springframework.stereotype.Service;
  14. import javax.transaction.Transactional;
  15. import java.util.Objects;
  16. @Service
  17. @AllArgsConstructor
  18. public class MetaSpatialInfoService {
  19. private MetaSpatialInfoRepo metaSpatialInfoRepo;
  20. private SpaceObjectsInfoRepo spaceObjectsInfoRepo;
  21. public Page<MetaSpatialInfo> all(PageQuery pageQuery) {
  22. return metaSpatialInfoRepo.findAll(JpaUtils.toSpecification(pageQuery, MetaSpatialInfo.class), JpaUtils.toPageRequest(pageQuery));
  23. }
  24. @Transactional
  25. public MetaSpatialInfo save(MetaSpatialInfo record) {
  26. if (Objects.nonNull(record.getAssetId())) {
  27. MetaSpatialInfo metaSpatialInfo = metaSpatialInfoRepo.findByAssetIdAndDel(record.getAssetId(), false);
  28. if (Objects.nonNull(metaSpatialInfo) && !Objects.equals(metaSpatialInfo.getId(), record.getId())) {
  29. throw new BusinessException("当前资产id已经存在");
  30. }
  31. }
  32. if (StringUtil.isNotBlank(record.getHcTxHash())) {
  33. MetaSpatialInfo metaSpatialInfo = metaSpatialInfoRepo.findByHcTxHashAndDel(record.getHcTxHash(), false);
  34. if (Objects.nonNull(metaSpatialInfo) && !Objects.equals(metaSpatialInfo.getId(), record.getId())) {
  35. throw new BusinessException("当前hash已经存在");
  36. }
  37. }
  38. MetaSpatialInfo metaSpatialInfo = metaSpatialInfoRepo.findByRegionAndCoordinateAndDel(record.getRegion(), record.getCoordinate(), false);
  39. if (Objects.nonNull(metaSpatialInfo) && !Objects.equals(metaSpatialInfo.getId(), record.getId())) {
  40. throw new BusinessException("当前区域内已经存在该坐标的空间");
  41. }
  42. if (record.getId() != null) {
  43. MetaSpatialInfo orig = metaSpatialInfoRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
  44. ObjUtils.merge(orig, record);
  45. if (Objects.isNull(record.getAssetId())) {
  46. orig.setAssetId(null);
  47. }
  48. if (Objects.isNull(record.getUserId())) {
  49. orig.setUserId(null);
  50. }
  51. MetaSpatialInfo save = metaSpatialInfoRepo.save(orig);
  52. SpaceObjectsInfo spaceObjectsInfo = spaceObjectsInfoRepo.findBySpaceIdAndDel(save.getId(), false);
  53. if (Objects.isNull(spaceObjectsInfo)) {
  54. spaceObjectsInfo = new SpaceObjectsInfo();
  55. }
  56. spaceObjectsInfo.setSpaceId(save.getId());
  57. if (Objects.isNull(spaceObjectsInfo.getUserId()) || Objects.isNull(save.getUserId()) || !spaceObjectsInfo.getUserId().equals(save.getUserId())) {
  58. spaceObjectsInfo.setBuildingPosList(null);
  59. spaceObjectsInfo.setUserId(Objects.isNull(save.getUserId()) ? null : save.getUserId());
  60. spaceObjectsInfoRepo.save(spaceObjectsInfo);
  61. }
  62. return save;
  63. }
  64. MetaSpatialInfo save = metaSpatialInfoRepo.save(record);
  65. SpaceObjectsInfo spaceObjectsInfo = new SpaceObjectsInfo();
  66. spaceObjectsInfo.setSpaceId(save.getId());
  67. spaceObjectsInfo.setBuildingPosList(null);
  68. spaceObjectsInfo.setUserId(Objects.isNull(save.getUserId()) ? null : save.getUserId());
  69. spaceObjectsInfoRepo.save(spaceObjectsInfo);
  70. return save;
  71. }
  72. @Transactional
  73. public void del(Long id) {
  74. metaSpatialInfoRepo.softDelete(id);
  75. spaceObjectsInfoRepo.softDelete(id);
  76. }
  77. }