| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- package com.izouma.nineth.service;
- import com.izouma.nineth.domain.MetaSpatialInfo;
- import com.izouma.nineth.domain.SpaceObjectsInfo;
- import com.izouma.nineth.dto.PageQuery;
- import com.izouma.nineth.exception.BusinessException;
- import com.izouma.nineth.repo.MetaSpatialInfoRepo;
- import com.izouma.nineth.repo.SpaceObjectsInfoRepo;
- import com.izouma.nineth.utils.JpaUtils;
- import com.izouma.nineth.utils.ObjUtils;
- import jodd.util.StringUtil;
- import lombok.AllArgsConstructor;
- import org.springframework.data.domain.Page;
- import org.springframework.stereotype.Service;
- import javax.transaction.Transactional;
- import java.util.Objects;
- @Service
- @AllArgsConstructor
- public class MetaSpatialInfoService {
- private MetaSpatialInfoRepo metaSpatialInfoRepo;
- private SpaceObjectsInfoRepo spaceObjectsInfoRepo;
- public Page<MetaSpatialInfo> all(PageQuery pageQuery) {
- return metaSpatialInfoRepo.findAll(JpaUtils.toSpecification(pageQuery, MetaSpatialInfo.class), JpaUtils.toPageRequest(pageQuery));
- }
- @Transactional
- public MetaSpatialInfo save(MetaSpatialInfo record) {
- if (Objects.nonNull(record.getAssetId())) {
- MetaSpatialInfo metaSpatialInfo = metaSpatialInfoRepo.findByAssetIdAndDel(record.getAssetId(), false);
- if (Objects.nonNull(metaSpatialInfo) && !Objects.equals(metaSpatialInfo.getId(), record.getId())) {
- throw new BusinessException("当前资产id已经存在");
- }
- }
- if (StringUtil.isNotBlank(record.getHcTxHash())) {
- MetaSpatialInfo metaSpatialInfo = metaSpatialInfoRepo.findByHcTxHashAndDel(record.getHcTxHash(), false);
- if (Objects.nonNull(metaSpatialInfo) && !Objects.equals(metaSpatialInfo.getId(), record.getId())) {
- throw new BusinessException("当前hash已经存在");
- }
- }
- MetaSpatialInfo metaSpatialInfo = metaSpatialInfoRepo.findByRegionAndCoordinateAndDel(record.getRegion(), record.getCoordinate(), false);
- if (Objects.nonNull(metaSpatialInfo) && !Objects.equals(metaSpatialInfo.getId(), record.getId())) {
- throw new BusinessException("当前区域内已经存在该坐标的空间");
- }
- if (record.getId() != null) {
- MetaSpatialInfo orig = metaSpatialInfoRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
- ObjUtils.merge(orig, record);
- if (Objects.isNull(record.getAssetId())) {
- orig.setAssetId(null);
- }
- if (Objects.isNull(record.getUserId())) {
- orig.setUserId(null);
- }
- MetaSpatialInfo save = metaSpatialInfoRepo.save(orig);
- SpaceObjectsInfo spaceObjectsInfo = spaceObjectsInfoRepo.findBySpaceIdAndDel(save.getId(), false);
- if (Objects.isNull(spaceObjectsInfo)) {
- spaceObjectsInfo = new SpaceObjectsInfo();
- }
- spaceObjectsInfo.setSpaceId(save.getId());
- if (Objects.isNull(spaceObjectsInfo.getUserId()) || Objects.isNull(save.getUserId()) || !spaceObjectsInfo.getUserId().equals(save.getUserId())) {
- spaceObjectsInfo.setBuildingPosList(null);
- spaceObjectsInfo.setUserId(Objects.isNull(save.getUserId()) ? null : save.getUserId());
- spaceObjectsInfoRepo.save(spaceObjectsInfo);
- }
- return save;
- }
- MetaSpatialInfo save = metaSpatialInfoRepo.save(record);
- SpaceObjectsInfo spaceObjectsInfo = new SpaceObjectsInfo();
- spaceObjectsInfo.setSpaceId(save.getId());
- spaceObjectsInfo.setBuildingPosList(null);
- spaceObjectsInfo.setUserId(Objects.isNull(save.getUserId()) ? null : save.getUserId());
- spaceObjectsInfoRepo.save(spaceObjectsInfo);
- return save;
- }
- @Transactional
- public void del(Long id) {
- metaSpatialInfoRepo.softDelete(id);
- spaceObjectsInfoRepo.softDelete(id);
- }
- }
|