공통코드 코드기반 조회 추가

This commit is contained in:
2025-11-19 11:40:33 +09:00
parent 3053b0552e
commit ad471df3e8
7 changed files with 168 additions and 7 deletions

View File

@@ -8,7 +8,7 @@ import com.kamco.cd.kamcoback.postgres.repository.CommonCodeRepository;
import com.kamco.cd.kamcoback.zoo.dto.AnimalDto.SearchReq;
import jakarta.persistence.EntityNotFoundException;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.Optional;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;
@@ -40,13 +40,21 @@ public class CommonCodeCoreService implements BaseCoreService<CommonCodeDto.Basi
public CommonCodeDto.Basic update(Long id, CommonCodeDto.ModifyReq req) {
CommonCodeEntity found = commonCodeRepository.findByCodeId(id)
.orElseThrow(()->new NoSuchElementException("common code 를 찾을 수 없습니다. id : " + id));
.orElseThrow(()->new EntityNotFoundException("common code 를 찾을 수 없습니다. id : " + id));
CommonCodeEntity entity = new CommonCodeEntity( id, req.getName(), req.getDescription(), req.getOrder(), req.isUsed(), found.getDeleted());
return commonCodeRepository.save(entity).toDto();
}
public void updateOrder(CommonCodeDto.OrderReq req) {
commonCodeRepository.updateOrder(req);
}
public List<CommonCodeDto.Basic> findByCode(String code) {
return commonCodeRepository.findByCode(code).stream().map(CommonCodeEntity::toDto).toList();
}
@Override
public void remove(Long id) {
CommonCodeEntity entity = commonCodeRepository.findByCodeId(id)

View File

@@ -104,4 +104,8 @@ public class CommonCodeEntity extends CommonDateEntity {
public void deleted() {
this.deleted = true;
}
public void updateOrder(int order) {
this.order = order;
}
}

View File

@@ -1,10 +1,13 @@
package com.kamco.cd.kamcoback.postgres.repository;
import com.kamco.cd.kamcoback.code.dto.CommonCodeDto;
import com.kamco.cd.kamcoback.postgres.entity.CommonCodeEntity;
import java.util.List;
import java.util.Optional;
public interface CommonCodeRepositoryCustom {
Optional<CommonCodeEntity> findByCodeId(Long id);
Optional<CommonCodeEntity> findByCode(String code);
List<CommonCodeEntity> findByAll();
void updateOrder(CommonCodeDto.OrderReq req);
}

View File

@@ -2,11 +2,19 @@ package com.kamco.cd.kamcoback.postgres.repository;
import static com.kamco.cd.kamcoback.postgres.entity.QCommonCodeEntity.commonCodeEntity;
import com.kamco.cd.kamcoback.code.dto.CommonCodeDto;
import com.kamco.cd.kamcoback.code.dto.CommonCodeDto.OrderReqDetail;
import com.kamco.cd.kamcoback.postgres.entity.CommonCodeEntity;
import com.kamco.cd.kamcoback.postgres.entity.QCommonCodeEntity;
import com.querydsl.core.types.dsl.Expressions;
import com.querydsl.jpa.impl.JPAQueryFactory;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import org.springframework.data.jpa.repository.support.QuerydslRepositorySupport;
public class CommonCodeRepositoryImpl extends QuerydslRepositorySupport implements CommonCodeRepositoryCustom {
@@ -35,6 +43,25 @@ public class CommonCodeRepositoryImpl extends QuerydslRepositorySupport implemen
);
}
@Override
public Optional<CommonCodeEntity> findByCode(String code) {
QCommonCodeEntity child = new QCommonCodeEntity("child");
return Optional.ofNullable(
queryFactory
.selectFrom(commonCodeEntity)
.leftJoin(commonCodeEntity.children, child)
.fetchJoin()
.where(
commonCodeEntity.parent.isNull(),
commonCodeEntity.code.eq(code),
commonCodeEntity.used.isTrue(),
commonCodeEntity.deleted.isFalse()
)
.orderBy(child.order.asc())
.fetchOne()
);
}
@Override
public List<CommonCodeEntity> findByAll() {
QCommonCodeEntity child = new QCommonCodeEntity("child");
@@ -49,4 +76,29 @@ public class CommonCodeRepositoryImpl extends QuerydslRepositorySupport implemen
.orderBy(commonCodeEntity.order.asc(), child.order.asc())
.fetch();
}
@Override
public void updateOrder(CommonCodeDto.OrderReq req) {
Map<Long, Integer> orderMap = req.getOrders().stream().
collect(Collectors.toMap(OrderReqDetail::getId, OrderReqDetail::getOrder));
List<CommonCodeEntity> entity = findAllByIds(orderMap.keySet());
entity.forEach(commonCodeEntity -> {
Integer order = orderMap.get(commonCodeEntity.getId());
if(order != null) {
commonCodeEntity.updateOrder(order);
}
});
}
private List<CommonCodeEntity> findAllByIds(Set<Long> ids) {
return queryFactory
.selectFrom(commonCodeEntity)
.where(
commonCodeEntity.id.in(ids),
commonCodeEntity.deleted.isFalse()
)
.fetch();
}
}