개선작업

This commit is contained in:
DanielLee
2026-01-02 21:20:46 +09:00
parent 3a458225c9
commit 358d932e96
13 changed files with 95 additions and 146 deletions

View File

@@ -107,7 +107,11 @@ public class LabelAllocateApiController {
@PostMapping("/allocate")
public ApiResponseDto<Void> labelAllocate(@RequestBody LabelAllocateDto.AllocateDto dto) {
labelAllocateService.allocateAsc(
dto.getAutoType(), dto.getStage(), dto.getLabelers(), dto.getInspectors());
dto.getAutoType(),
dto.getStage(),
dto.getLabelers(),
dto.getInspectors(),
dto.getAnalUid());
return ApiResponseDto.ok(null);
}

View File

@@ -2,14 +2,9 @@ package com.kamco.cd.kamcoback.label;
import com.kamco.cd.kamcoback.code.dto.CommonCodeDto;
import com.kamco.cd.kamcoback.config.api.ApiResponseDto;
import com.kamco.cd.kamcoback.label.dto.LabelAllocateDto;
import com.kamco.cd.kamcoback.label.dto.LabelAllocateDto.TargetInspector;
import com.kamco.cd.kamcoback.label.dto.LabelAllocateDto.TargetUser;
import com.kamco.cd.kamcoback.label.dto.LabelWorkDto;
import com.kamco.cd.kamcoback.label.dto.LabelWorkDto.LabelWorkMng;
import com.kamco.cd.kamcoback.label.service.LabelAllocateService;
import com.kamco.cd.kamcoback.label.service.LabelWorkService;
import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
@@ -17,15 +12,12 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import java.util.List;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@@ -52,9 +44,7 @@ public class LabelWorkerApiController {
})
@PostMapping("/label-work-mng-list")
public ApiResponseDto<Page<LabelWorkMng>> labelWorkMngList(
@RequestBody @Valid LabelWorkDto.LabelWorkMngSearchReq searchReq) {
@RequestBody @Valid LabelWorkDto.LabelWorkMngSearchReq searchReq) {
return ApiResponseDto.ok(labelWorkService.labelWorkMngList(searchReq));
}
}

View File

@@ -87,6 +87,9 @@ public class LabelAllocateDto {
@AllArgsConstructor
public static class AllocateDto {
@Schema(description = "분석 ID", example = "3", required = true)
private Long analUid;
@Schema(description = "자동/수동여부(AUTO/MANUAL)", example = "AUTO")
private String autoType;

View File

@@ -1,26 +1,19 @@
package com.kamco.cd.kamcoback.label.dto;
import com.kamco.cd.kamcoback.common.enums.MngStateType;
import com.kamco.cd.kamcoback.common.utils.enums.CodeExpose;
import com.kamco.cd.kamcoback.common.utils.enums.EnumType;
import com.kamco.cd.kamcoback.common.utils.enums.Enums;
import com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm;
import com.kamco.cd.kamcoback.label.dto.LabelAllocateDto.LabelMngState;
import io.swagger.v3.oas.annotations.media.Schema;
import java.time.ZonedDateTime;
import java.util.UUID;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
public class LabelWorkDto {
@Schema(name = "LabelWorkMng", description = "라벨작업관리")
@Getter
@Setter
@@ -39,7 +32,6 @@ public class LabelWorkDto {
private Long labelCompleteTotCnt;
@JsonFormatDttm private ZonedDateTime labelStartDttm;
public String getLabelState() {
String mngState = "PENDING";
@@ -69,7 +61,6 @@ public class LabelWorkDto {
}
}
@Schema(name = "LabelWorkMngSearchReq", description = "라벨작업관리 검색 요청")
@Getter
@Setter
@@ -98,5 +89,4 @@ public class LabelWorkDto {
return PageRequest.of(page, size);
}
}
}

View File

@@ -37,17 +37,19 @@ public class LabelAllocateService {
* @param stage 회차
* @param targetUsers 라벨러 목록
* @param targetInspectors 검수자 목록
* @param analUid 분석 ID
*/
@Transactional
public void allocateAsc(
String autoType,
Integer stage,
List<TargetUser> targetUsers,
List<TargetInspector> targetInspectors) {
List<TargetInspector> targetInspectors,
Long analUid) {
Long lastId = null;
// geom 잔여건수 != 프론트에서 넘어 온 총 건수 -> return
Long chargeCnt = labelAllocateCoreService.findLabelUnAssignedCnt(3L); // TODO
// geom 잔여건수 조회
Long chargeCnt = labelAllocateCoreService.findLabelUnAssignedCnt(analUid, stage);
// Long totalDemand = targetUsers.stream().mapToLong(TargetUser::getDemand).sum();
// if (!Objects.equals(chargeCnt, totalDemand)) {
// log.info("chargeCnt != totalDemand");
@@ -58,18 +60,18 @@ public class LabelAllocateService {
return;
}
List<Long> allIds = labelAllocateCoreService.fetchNextIds(lastId, chargeCnt);
List<Long> allIds = labelAllocateCoreService.fetchNextIds(lastId, chargeCnt, analUid);
int index = 0;
for (TargetUser target : targetUsers) {
int end = index + target.getDemand();
List<Long> sub = allIds.subList(index, end);
labelAllocateCoreService.assignOwner(sub, target.getUserId());
labelAllocateCoreService.assignOwner(sub, target.getUserId(), analUid);
index = end;
}
// 검수자에게 userCount명 만큼 할당
List<LabelAllocateDto.Basic> list = labelAllocateCoreService.findAssignedLabelerList(3L);
List<LabelAllocateDto.Basic> list = labelAllocateCoreService.findAssignedLabelerList(analUid);
int from = 0;
for (TargetInspector inspector : targetInspectors) {

View File

@@ -1,16 +1,8 @@
package com.kamco.cd.kamcoback.label.service;
import com.kamco.cd.kamcoback.label.dto.LabelAllocateDto;
import com.kamco.cd.kamcoback.label.dto.LabelAllocateDto.TargetInspector;
import com.kamco.cd.kamcoback.label.dto.LabelAllocateDto.TargetUser;
import com.kamco.cd.kamcoback.label.dto.LabelAllocateDto.UserList;
import com.kamco.cd.kamcoback.label.dto.LabelWorkDto;
import com.kamco.cd.kamcoback.label.dto.LabelWorkDto.LabelWorkMng;
import com.kamco.cd.kamcoback.postgres.core.LabelAllocateCoreService;
import com.kamco.cd.kamcoback.postgres.core.LabelWorkCoreService;
import jakarta.transaction.Transactional;
import java.util.List;
import java.util.Objects;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;
@@ -25,8 +17,6 @@ public class LabelWorkService {
this.labelWorkCoreService = labelWorkCoreService;
}
public Page<LabelWorkMng> labelWorkMngList(LabelWorkDto.LabelWorkMngSearchReq searchReq) {
return labelWorkCoreService.labelWorkMngList(searchReq);