| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- package com.its.api.op.service.node;
- import com.its.api.op.model.dto.node.TbNodeDto;
- import com.its.api.op.model.entity.node.TbNode;
- import com.its.api.op.repository.node.TbNodeRepository;
- import lombok.RequiredArgsConstructor;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.NoSuchElementException;
- import java.util.Optional;
- @Slf4j
- @RequiredArgsConstructor
- @Service
- public class TbNodeService {
- private final TbNodeRepository repo;
- // 데이터 1건 조회, 없으면 exception
- private TbNode requireOne(Long id) {
- return repo.findById(id)
- .orElseThrow(() -> new NoSuchElementException("데이터가 존재하지 않습니다: " + id));
- }
- // 전체 데이터 조회
- @Transactional(readOnly = true)
- public List<TbNodeDto> findAll() {
- List<TbNodeDto> result = new ArrayList<>();
- List<TbNode> data = this.repo.findAll();
- for (TbNode entity : data) {
- result.add(entity.toDto());
- }
- return result;
- }
- // 데이터 1건 조회(기존 데이터가 반드시 존재해야 함)
- @Transactional(readOnly = true)
- public TbNodeDto findById(Long id) {
- TbNode entity = requireOne(id);
- return entity.toDto();
- }
- // 데이터 변경
- @Transactional
- public TbNodeDto updateById(Long id, TbNodeDto.TbNodeUpdReq req) {
- TbNode entity = requireOne(id);
- entity.updateInfo(req);
- this.repo.save(entity);
- return entity.toDto();
- }
- // 노드명 변경
- @Transactional
- public TbNodeDto updateNameById(Long id, TbNodeDto.TbNodeNameUpdReq req) {
- TbNode entity = requireOne(id);
- entity.updateName(req);
- this.repo.save(entity);
- return entity.toDto();
- }
- // 데이터 변경 또는 생성-목록(데이터가 존재하면 업데이트 없으면 신규로 생성)
- @Transactional
- public List<TbNodeDto> mergeInfoList(List<TbNodeDto.TbNodeUpdReq> reqList) {
- List<TbNodeDto> result = new ArrayList<>();
- for (TbNodeDto.TbNodeUpdReq req : reqList) {
- TbNode obj = req.toEntity();
- this.repo.save(obj);
- result.add(obj.toDto());
- }
- return result;
- }
- // 데이터 변경 또는 생성-개별(데이터가 존재하면 업데이트 없으면 신규로 생성)
- @Transactional
- public TbNodeDto mergeInfo(TbNodeDto.TbNodeUpdReq req) {
- TbNode obj = req.toEntity();
- this.repo.save(obj);
- return obj.toDto();
- }
- // 정보 삭제-개별, 데이터 존재하지 않으면 Exception
- @Transactional
- public TbNodeDto deleteById(Long id) {
- TbNode entity = requireOne(id);
- this.repo.deleteById(id);
- return entity.toDto();
- }
- // 정보 삭제-목록, 존재하는 데이터 만 삭제
- @Transactional
- public List<TbNodeDto> deleteByIds(List<Long> ids) {
- List<TbNodeDto> result = new ArrayList<>();
- for (Long id : ids) {
- Optional<TbNode> obj = this.repo.findById(id);
- if (obj.isPresent()) {
- this.repo.deleteById(id);
- result.add(obj.get().toDto());
- }
- }
- return result;
- }
- /**
- * 지도검색
- * @param filter
- * @return
- */
- public List<TbNodeDto> findByFilter(String filter) {
- List<TbNodeDto> result = new ArrayList<>();
- List<TbNode> data = this.repo.findAll();
- data.forEach(obj -> {
- if (filter == null || filter.isEmpty()) {
- result.add(obj.toDto());
- }
- else {
- if ((obj.getNodeName() != null && obj.getNodeName().contains(filter)) || String.valueOf(obj.getNodeId()).contains(filter)) {
- result.add(obj.toDto());
- }
- }
- });
- return result;
- }
- }
|