diff --git a/src/main/java/com/kamco/cd/kamcoback/label/LabelAllocateApiController.java b/src/main/java/com/kamco/cd/kamcoback/label/LabelAllocateApiController.java index b3855573..02788cc2 100644 --- a/src/main/java/com/kamco/cd/kamcoback/label/LabelAllocateApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/label/LabelAllocateApiController.java @@ -119,13 +119,11 @@ public class LabelAllocateApiController { public ApiResponseDto labelAllocate( @RequestBody @Valid LabelAllocateDto.AllocateDto dto) { + int compareYyyy = Integer.parseInt(dto.getYyyy().split("-")[0]); + int targetYyyy = Integer.parseInt(dto.getYyyy().split("-")[1]); return ApiResponseDto.okObject( labelAllocateService.allocateAsc( - dto.getStage(), - dto.getLabelers(), - dto.getInspectors(), - dto.getCompareYyyy(), - dto.getTargetYyyy())); + dto.getStage(), dto.getLabelers(), dto.getInspectors(), compareYyyy, targetYyyy)); } @Operation(summary = "작업현황 관리 > 변화탐지 회차 정보", description = "작업현황 관리 > 변화탐지 회차 정보") @@ -193,13 +191,12 @@ public class LabelAllocateApiController { @RequestBody LabelAllocateDto.AllocateMoveDto dto) { + int compareYyyy = Integer.parseInt(dto.getYyyy().split("-")[0]); + int targetYyyy = Integer.parseInt(dto.getYyyy().split("-")[1]); + return ApiResponseDto.okObject( labelAllocateService.allocateMove( - dto.getStage(), - dto.getLabelers(), - dto.getCompareYyyy(), - dto.getTargetYyyy(), - dto.getUserId())); + dto.getStage(), dto.getLabelers(), compareYyyy, targetYyyy, dto.getUserId())); } @Operation( diff --git a/src/main/java/com/kamco/cd/kamcoback/label/dto/LabelAllocateDto.java b/src/main/java/com/kamco/cd/kamcoback/label/dto/LabelAllocateDto.java index 12c95bb7..3bbc7aab 100644 --- a/src/main/java/com/kamco/cd/kamcoback/label/dto/LabelAllocateDto.java +++ b/src/main/java/com/kamco/cd/kamcoback/label/dto/LabelAllocateDto.java @@ -91,11 +91,14 @@ public class LabelAllocateDto { @AllArgsConstructor public static class AllocateDto { - @Schema(description = "비교년도", example = "2022", required = true) - private Integer compareYyyy; + @Schema(description = "비교년도-기준년도", example = "2022-2024", required = true) + private String yyyy; - @Schema(description = "기준년도", example = "2024", required = true) - private Integer targetYyyy; + // @Schema(description = "비교년도", example = "2022", required = true) + // private Integer compareYyyy; + // + // @Schema(description = "기준년도", example = "2024", required = true) + // private Integer targetYyyy; @Schema(description = "회차", example = "4", required = true) private Integer stage; @@ -218,6 +221,7 @@ public class LabelAllocateDto { private Integer ranking; private ZonedDateTime createdDttm; private String ownerName; + private Long remainCnt; } @Getter @@ -245,11 +249,14 @@ public class LabelAllocateDto { """) private List labelers; - @Schema(description = "비교년도", example = "2022") - private Integer compareYyyy; + @Schema(description = "비교년도-기준년도", example = "2022-2024") + private String yyyy; - @Schema(description = "기준년도", example = "2024") - private Integer targetYyyy; + // @Schema(description = "비교년도", example = "2022") + // private Integer compareYyyy; + // + // @Schema(description = "기준년도", example = "2024") + // private Integer targetYyyy; @Schema(description = "대상 사번", example = "01022223333") private String userId; diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelAllocateRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelAllocateRepositoryImpl.java index fa94a7b5..03dd8859 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelAllocateRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelAllocateRepositoryImpl.java @@ -583,6 +583,11 @@ public class LabelAllocateRepositoryImpl implements LabelAllocateRepositoryCusto QMemberEntity worker = QMemberEntity.memberEntity; QMemberEntity inspector = new QMemberEntity("inspector"); + // remainCnt + Expression remainCnt = + Expressions.numberTemplate( + Long.class, "({0} - {1} - {2})", assignedCnt, skipCnt, completeCnt); + return queryFactory .select( Projections.constructor( @@ -596,7 +601,8 @@ public class LabelAllocateRepositoryImpl implements LabelAllocateRepositoryCusto percent, Expressions.constant(0), // TODO: 순위, 꼭 해야할지? labelingAssignmentEntity.workStatDttm.min(), - inspector.name.min())) + inspector.name.min(), + remainCnt)) .from(worker) .innerJoin(labelingAssignmentEntity) .on( @@ -945,6 +951,11 @@ public class LabelAllocateRepositoryImpl implements LabelAllocateRepositoryCusto QMemberEntity inspector = QMemberEntity.memberEntity; QMemberEntity worker = new QMemberEntity("worker"); + // remainCnt + Expression remainCnt = + Expressions.numberTemplate( + Long.class, "({0} - {1} - {2})", assignedCnt, skipCnt, completeCnt); + return queryFactory .select( Projections.constructor( @@ -958,7 +969,8 @@ public class LabelAllocateRepositoryImpl implements LabelAllocateRepositoryCusto percent, Expressions.constant(0), // TODO: 순위, 꼭 해야할지? labelingAssignmentEntity.inspectStatDttm.min(), - worker.name.min())) + worker.name.min(), + remainCnt)) .from(inspector) .innerJoin(labelingAssignmentEntity) .on( diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelWorkRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelWorkRepositoryImpl.java index 3509c8b4..5fa407e1 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelWorkRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelWorkRepositoryImpl.java @@ -23,6 +23,8 @@ import com.querydsl.jpa.impl.JPAQueryFactory; import jakarta.persistence.EntityManager; import jakarta.persistence.PersistenceContext; import java.time.LocalDate; +import java.time.ZoneId; +import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.List; import java.util.UUID; @@ -111,10 +113,23 @@ public class LabelWorkRepositoryImpl extends QuerydslRepositorySupport && !searchReq.getStrtDttm().isEmpty() && searchReq.getEndDttm() != null && !searchReq.getEndDttm().isEmpty()) { + + ZoneId zoneId = ZoneId.of("Asia/Seoul"); + + ZonedDateTime start = + LocalDate.parse(searchReq.getStrtDttm(), DateTimeFormatter.BASIC_ISO_DATE) + .atStartOfDay(zoneId); + + ZonedDateTime end = + LocalDate.parse(searchReq.getEndDttm(), DateTimeFormatter.BASIC_ISO_DATE) + .plusDays(1) + .atStartOfDay(zoneId); + whereSubBuilder.and( - Expressions.stringTemplate( - "to_char({0}, 'YYYYMMDD')", mapSheetAnalDataInferenceGeomEntity.labelStateDttm) - .between(searchReq.getStrtDttm(), searchReq.getEndDttm())); + mapSheetAnalDataInferenceGeomEntity + .labelStateDttm + .goe(start) + .and(mapSheetAnalDataInferenceGeomEntity.labelStateDttm.lt(end))); } List foundContent =