영상관리 > 오류 데이터 처리 변경

This commit is contained in:
Moon
2025-12-16 18:38:56 +09:00
parent d8aff03665
commit 280954a78d
3 changed files with 154 additions and 145 deletions

View File

@@ -253,8 +253,8 @@ public class FIleChecker {
List<Basic> fileList = new ArrayList<>(); List<Basic> fileList = new ArrayList<>();
SimpleDateFormat dttmFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat dttmFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//int fileTotCnt = 0; // int fileTotCnt = 0;
//long fileTotSize = 0; // long fileTotSize = 0;
try (Stream<Path> stream = Files.walk(startPath, maxDepth)) { try (Stream<Path> stream = Files.walk(startPath, maxDepth)) {

View File

@@ -2,7 +2,6 @@ package com.kamco.cd.kamcoback.mapsheet.dto;
import com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm; import com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm;
import com.kamco.cd.kamcoback.config.enums.EnumType; import com.kamco.cd.kamcoback.config.enums.EnumType;
import com.kamco.cd.kamcoback.mapsheet.dto.FileDto.FolderDto;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import java.time.ZonedDateTime; import java.time.ZonedDateTime;
import java.util.List; import java.util.List;
@@ -154,7 +153,7 @@ public class MapSheetMngDto {
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public static class ErrorDataDto { public static class ErrorDataDto {
//private Integer rowNum; // private Integer rowNum;
private Long hstUid; private Long hstUid;
private String map50kName; private String map50kName;
private String map5kName; private String map5kName;
@@ -170,14 +169,14 @@ public class MapSheetMngDto {
private List<MngFIleDto> fileArray; private List<MngFIleDto> fileArray;
public ErrorDataDto( public ErrorDataDto(
Long hstUid, Long hstUid,
String map50kName, String map50kName,
String map5kName, String map5kName,
String mapSrcName, String mapSrcName,
Integer mapCodeSrc, Integer mapCodeSrc,
ZonedDateTime createdDttm, ZonedDateTime createdDttm,
String syncState, String syncState,
String syncCheckState) { String syncCheckState) {
this.hstUid = hstUid; this.hstUid = hstUid;
this.map50kName = map50kName; this.map50kName = map50kName;
this.map5kName = map5kName; this.map5kName = map5kName;
@@ -187,7 +186,6 @@ public class MapSheetMngDto {
this.syncState = syncState; this.syncState = syncState;
this.syncCheckState = syncCheckState; this.syncCheckState = syncCheckState;
} }
} }
@Schema(name = "MngFIleDto", description = "관리파일정보") @Schema(name = "MngFIleDto", description = "관리파일정보")

View File

@@ -7,8 +7,6 @@ import static com.kamco.cd.kamcoback.postgres.entity.QMapSheetMngFileEntity.mapS
import static com.kamco.cd.kamcoback.postgres.entity.QMapSheetMngHstEntity.mapSheetMngHstEntity; import static com.kamco.cd.kamcoback.postgres.entity.QMapSheetMngHstEntity.mapSheetMngHstEntity;
import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto; import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto;
import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto.MngFIleDto;
import com.kamco.cd.kamcoback.postgres.entity.MapSheetMngFileEntity;
import com.kamco.cd.kamcoback.postgres.entity.MapSheetMngHstEntity; import com.kamco.cd.kamcoback.postgres.entity.MapSheetMngHstEntity;
import com.querydsl.core.BooleanBuilder; import com.querydsl.core.BooleanBuilder;
import com.querydsl.core.Tuple; import com.querydsl.core.Tuple;
@@ -23,13 +21,11 @@ import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext; import jakarta.persistence.PersistenceContext;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Collectors;
import org.hibernate.query.Query; import org.hibernate.query.Query;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageImpl;
@@ -62,12 +58,13 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport
NumberExpression<Long> totalCount = mapSheetMngHstEntity.count().as("syncTotCnt"); NumberExpression<Long> totalCount = mapSheetMngHstEntity.count().as("syncTotCnt");
NumberExpression<Long> doneCount = new CaseBuilder() NumberExpression<Long> doneCount =
.when(mapSheetMngHstEntity.dataState.eq("DONE")) new CaseBuilder()
.then(1L) .when(mapSheetMngHstEntity.dataState.eq("DONE"))
.otherwise(0L) .then(1L)
.sum() .otherwise(0L)
.as("syncStateDoneCnt"); .sum()
.as("syncStateDoneCnt");
List<MapSheetMngDto.MngDto> foundContent = List<MapSheetMngDto.MngDto> foundContent =
queryFactory queryFactory
@@ -95,46 +92,63 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport
.otherwise(0L) .otherwise(0L)
.sum(), .sum(),
new CaseBuilder() new CaseBuilder()
.when(mapSheetMngHstEntity.syncState.eq("NOFILE") .when(
.or( mapSheetMngHstEntity.syncState.eq("NOTPAIR"))) mapSheetMngHstEntity
.syncState
.eq("NOFILE")
.or(mapSheetMngHstEntity.syncState.eq("NOTPAIR")))
.then(1L) .then(1L)
.otherwise(0L) .otherwise(0L)
.sum(), .sum(),
new CaseBuilder() new CaseBuilder()
.when(mapSheetMngHstEntity.syncCheckState.eq("DONE") .when(
.and( mapSheetMngHstEntity.syncState.eq("NOFILE") mapSheetMngHstEntity
.or(mapSheetMngHstEntity.syncState.eq("NOTPAIR")) ) .syncCheckState
) .eq("DONE")
.then(1L) .and(
.otherwise(0L) mapSheetMngHstEntity
.sum(), .syncState
.eq("NOFILE")
.or(mapSheetMngHstEntity.syncState.eq("NOTPAIR"))))
.then(1L)
.otherwise(0L)
.sum(),
new CaseBuilder() new CaseBuilder()
.when(mapSheetMngHstEntity.syncState.eq("DUPLICATE")) .when(mapSheetMngHstEntity.syncState.eq("DUPLICATE"))
.then(1L) .then(1L)
.otherwise(0L) .otherwise(0L)
.sum(), .sum(),
new CaseBuilder() new CaseBuilder()
.when(mapSheetMngHstEntity.syncCheckState.eq("DONE") .when(
.and(mapSheetMngHstEntity.syncState.eq("DUPLICATE")) ) mapSheetMngHstEntity
.then(1L) .syncCheckState
.otherwise(0L) .eq("DONE")
.sum(), .and(mapSheetMngHstEntity.syncState.eq("DUPLICATE")))
.then(1L)
.otherwise(0L)
.sum(),
new CaseBuilder() new CaseBuilder()
.when(mapSheetMngHstEntity.syncState.eq("TYPEERROR") .when(
.or( mapSheetMngHstEntity.syncState.eq("SIZEERROR"))) mapSheetMngHstEntity
.then(1L) .syncState
.otherwise(0L) .eq("TYPEERROR")
.sum(), .or(mapSheetMngHstEntity.syncState.eq("SIZEERROR")))
.then(1L)
.otherwise(0L)
.sum(),
new CaseBuilder() new CaseBuilder()
.when(mapSheetMngHstEntity.syncCheckState.eq("DONE") .when(
.and(mapSheetMngHstEntity.syncState.eq("TYPEERROR") mapSheetMngHstEntity
.or( mapSheetMngHstEntity.syncState.eq("SIZEERROR"))) ) .syncCheckState
.then(1L) .eq("DONE")
.otherwise(0L) .and(
.sum(), mapSheetMngHstEntity
.syncState
.eq("TYPEERROR")
.or(mapSheetMngHstEntity.syncState.eq("SIZEERROR"))))
.then(1L)
.otherwise(0L)
.sum(),
mapSheetMngEntity.createdDttm, mapSheetMngEntity.createdDttm,
mapSheetMngHstEntity.syncEndDttm.max())) mapSheetMngHstEntity.syncEndDttm.max()))
.from(mapSheetMngEntity) .from(mapSheetMngEntity)
@@ -165,74 +179,75 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport
BooleanBuilder whereBuilder = new BooleanBuilder(); BooleanBuilder whereBuilder = new BooleanBuilder();
whereBuilder.and(mapSheetMngHstEntity.mngYyyy.eq(searchReq.getMngYyyy())); whereBuilder.and(mapSheetMngHstEntity.mngYyyy.eq(searchReq.getMngYyyy()));
whereBuilder.and(mapSheetMngHstEntity.syncState.ne("DONE").and(mapSheetMngHstEntity.syncState.ne("NOTYET"))); whereBuilder.and(
mapSheetMngHstEntity.syncState.ne("DONE").and(mapSheetMngHstEntity.syncState.ne("NOTYET")));
if (searchReq.getSyncState() != null && ! searchReq.getSyncState().isEmpty()) { if (searchReq.getSyncState() != null && !searchReq.getSyncState().isEmpty()) {
if( searchReq.getSyncState().equals("NOTPAIR") ) if (searchReq.getSyncState().equals("NOTPAIR")) {
{ whereBuilder.and(
whereBuilder.and(mapSheetMngHstEntity.syncState.eq("NOTPAIR") mapSheetMngHstEntity
.or(mapSheetMngHstEntity.syncState.eq("NOFILE"))); .syncState
} .eq("NOTPAIR")
else if( searchReq.getSyncState().equals("FAULT") ) .or(mapSheetMngHstEntity.syncState.eq("NOFILE")));
{ } else if (searchReq.getSyncState().equals("FAULT")) {
whereBuilder.and(mapSheetMngHstEntity.syncState.eq("SIZEERROR") whereBuilder.and(
.or(mapSheetMngHstEntity.syncState.eq("TYPEERROR"))); mapSheetMngHstEntity
} .syncState
else .eq("SIZEERROR")
{ .or(mapSheetMngHstEntity.syncState.eq("TYPEERROR")));
whereBuilder.and(mapSheetMngHstEntity.syncState.eq(searchReq.getSyncState())); } else {
} whereBuilder.and(mapSheetMngHstEntity.syncState.eq(searchReq.getSyncState()));
} }
}
if (searchReq.getSyncCheckState() != null && ! searchReq.getSyncCheckState().isEmpty()) { if (searchReq.getSyncCheckState() != null && !searchReq.getSyncCheckState().isEmpty()) {
whereBuilder.and(mapSheetMngHstEntity.syncCheckState.eq(searchReq.getSyncCheckState())); whereBuilder.and(mapSheetMngHstEntity.syncCheckState.eq(searchReq.getSyncCheckState()));
} }
if (searchReq.getSearchValue() != null && ! searchReq.getSearchValue().isEmpty()) { if (searchReq.getSearchValue() != null && !searchReq.getSearchValue().isEmpty()) {
whereBuilder.and(mapSheetMngHstEntity.mapSheetNum.eq(searchReq.getSearchValue()) whereBuilder.and(
.or(mapSheetMngHstEntity.refMapSheetNum.eq(searchReq.getSearchValue())) mapSheetMngHstEntity
.or(Expressions.stringTemplate( .mapSheetNum
"concat({0},substring({1}, 0, 6))", .eq(searchReq.getSearchValue())
mapInkx5kEntity.mapidNm, .or(mapSheetMngHstEntity.refMapSheetNum.eq(searchReq.getSearchValue()))
mapSheetMngHstEntity.mapSheetNum .or(
).likeIgnoreCase(searchReq.getSearchValue())) Expressions.stringTemplate(
.or(Expressions.stringTemplate( "concat({0},substring({1}, 0, 6))",
"concat({0},substring({1}, 6, 8))", mapInkx5kEntity.mapidNm, mapSheetMngHstEntity.mapSheetNum)
mapInkx5kEntity.mapidNm, .likeIgnoreCase(searchReq.getSearchValue()))
mapSheetMngHstEntity.mapSheetNum .or(
).likeIgnoreCase(searchReq.getSearchValue())) Expressions.stringTemplate(
); "concat({0},substring({1}, 6, 8))",
mapInkx5kEntity.mapidNm, mapSheetMngHstEntity.mapSheetNum)
.likeIgnoreCase(searchReq.getSearchValue())));
} }
List<Tuple> tuples =
queryFactory
List<Tuple> tuples = queryFactory .select(
.select( mapSheetMngHstEntity.hstUid,
mapSheetMngHstEntity.hstUid, mapSheetMngHstEntity.mapSheetName,
mapSheetMngHstEntity.mapSheetName, mapInkx5kEntity.mapidNm,
mapInkx5kEntity.mapidNm, mapSheetMngHstEntity.mapSheetNum,
mapSheetMngHstEntity.mapSheetNum, mapSheetMngHstEntity.mapSheetCodeSrc,
mapSheetMngHstEntity.mapSheetCodeSrc, mapSheetMngHstEntity.createdDate,
mapSheetMngHstEntity.createdDate, mapSheetMngHstEntity.syncState,
mapSheetMngHstEntity.syncState, mapSheetMngHstEntity.syncCheckState,
mapSheetMngHstEntity.syncCheckState, mapSheetMngFileEntity.fileUid,
mapSheetMngFileEntity.fileUid, mapSheetMngFileEntity.filePath,
mapSheetMngFileEntity.filePath, mapSheetMngFileEntity.fileName,
mapSheetMngFileEntity.fileName, mapSheetMngFileEntity.fileSize,
mapSheetMngFileEntity.fileSize, mapSheetMngFileEntity.fileState)
mapSheetMngFileEntity.fileState .from(mapSheetMngHstEntity)
) .innerJoin(mapInkx5kEntity)
.from(mapSheetMngHstEntity) .on(mapSheetMngHstEntity.mapSheetNum.eq(mapInkx5kEntity.mapidcdNo))
.innerJoin(mapInkx5kEntity) .leftJoin(mapSheetMngFileEntity)
.on(mapSheetMngHstEntity.mapSheetNum.eq(mapInkx5kEntity.mapidcdNo)) .on(mapSheetMngFileEntity.hstUid.eq(mapSheetMngHstEntity.hstUid))
.leftJoin(mapSheetMngFileEntity) .where(whereBuilder)
.on(mapSheetMngFileEntity.hstUid.eq(mapSheetMngHstEntity.hstUid)) .orderBy(mapSheetMngHstEntity.createdDate.desc())
.where(whereBuilder) .offset(pageable.getOffset())
.orderBy(mapSheetMngHstEntity.createdDate.desc()) .limit(pageable.getPageSize())
.offset(pageable.getOffset()) .fetch();
.limit(pageable.getPageSize())
.fetch();
Map<Long, MapSheetMngDto.ErrorDataDto> resultMap = new LinkedHashMap<>(); Map<Long, MapSheetMngDto.ErrorDataDto> resultMap = new LinkedHashMap<>();
@@ -241,38 +256,35 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport
Long hstUid = t.get(mapSheetMngHstEntity.hstUid); Long hstUid = t.get(mapSheetMngHstEntity.hstUid);
MapSheetMngDto.ErrorDataDto dto = MapSheetMngDto.ErrorDataDto dto =
resultMap.computeIfAbsent(hstUid, id -> { resultMap.computeIfAbsent(
hstUid,
id -> {
String map50kName =
t.get(mapSheetMngHstEntity.mapSheetName)
+ t.get(mapSheetMngHstEntity.mapSheetNum).substring(0, 5);
String map5kName =
t.get(mapSheetMngHstEntity.mapSheetName)
+ t.get(mapSheetMngHstEntity.mapSheetNum).substring(5, 8);
String map50kName = String mapSrcName =
t.get(mapSheetMngHstEntity.mapSheetName) t.get(mapSheetMngHstEntity.mapSheetName)
+ t.get(mapSheetMngHstEntity.mapSheetNum).substring(0, 5); + t.get(mapSheetMngHstEntity.mapSheetNum).substring(5, 8);
String map5kName = MapSheetMngDto.ErrorDataDto newDto =
t.get(mapSheetMngHstEntity.mapSheetName) new MapSheetMngDto.ErrorDataDto(
+ t.get(mapSheetMngHstEntity.mapSheetNum).substring(5, 8); id,
map50kName,
map5kName,
mapSrcName,
t.get(mapSheetMngHstEntity.mapSheetCodeSrc),
t.get(mapSheetMngHstEntity.createdDate),
t.get(mapSheetMngHstEntity.syncState),
t.get(mapSheetMngHstEntity.syncCheckState));
String mapSrcName = newDto.setFileArray(new ArrayList<>());
t.get(mapSheetMngHstEntity.mapSheetName) return newDto;
+ t.get(mapSheetMngHstEntity.mapSheetNum).substring(5, 8); });
MapSheetMngDto.ErrorDataDto newDto =
new MapSheetMngDto.ErrorDataDto(
id,
map50kName,
map5kName,
mapSrcName,
t.get(mapSheetMngHstEntity.mapSheetCodeSrc),
t.get(mapSheetMngHstEntity.createdDate),
t.get(mapSheetMngHstEntity.syncState),
t.get(mapSheetMngHstEntity.syncCheckState)
);
newDto.setFileArray(new ArrayList<>());
return newDto;
});
// 파일 정보가 있는 경우만 추가 // 파일 정보가 있는 경우만 추가
Long fileUid = t.get(mapSheetMngFileEntity.fileUid); Long fileUid = t.get(mapSheetMngFileEntity.fileUid);
@@ -291,7 +303,6 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport
List<MapSheetMngDto.ErrorDataDto> foundContent = new ArrayList<>(resultMap.values()); List<MapSheetMngDto.ErrorDataDto> foundContent = new ArrayList<>(resultMap.values());
Long countQuery = Long countQuery =
queryFactory queryFactory
.select(mapSheetMngHstEntity.hstUid.count()) .select(mapSheetMngHstEntity.hstUid.count())