spotless 적용

This commit is contained in:
2025-12-31 09:25:30 +09:00
parent 81cd69c99b
commit 0df6151777
3 changed files with 34 additions and 57 deletions

View File

@@ -26,51 +26,42 @@ public class LabelAllocateApiController {
@PostMapping("/allocate") @PostMapping("/allocate")
public ApiResponseDto<Void> labelAllocate(@RequestBody LabelAllocateDto dto) { public ApiResponseDto<Void> labelAllocate(@RequestBody LabelAllocateDto dto) {
//도엽별 카운트 쿼리 // 도엽별 카운트 쿼리
List<Sheet> sheets = List.of( List<Sheet> sheets =
new Sheet("1", 261), List.of(
new Sheet("2", 500), new Sheet("1", 261),
new Sheet("3", 350), new Sheet("2", 500),
new Sheet("4", 250), new Sheet("3", 350),
new Sheet("5", 380), new Sheet("4", 250),
new Sheet("6", 459) new Sheet("5", 380),
); new Sheet("6", 459));
//사용자별 할당 입력한 값 // 사용자별 할당 입력한 값
List<TargetUser> targets = List.of( List<TargetUser> targets =
new TargetUser("A", 1000), List.of(new TargetUser("A", 1000), new TargetUser("B", 500), new TargetUser("C", 700));
new TargetUser("B", 500),
new TargetUser("C", 700)
);
LabelAllocateService.allocate(new ArrayList<>(sheets), new ArrayList<>(targets)); LabelAllocateService.allocate(new ArrayList<>(sheets), new ArrayList<>(targets));
targets.forEach(t -> { targets.forEach(
log.info("[" + t.getUserId() + "]"); t -> {
t.getAssigned().forEach(u -> { log.info("[" + t.getUserId() + "]");
log.info(" - 도엽: " + u.getSheetId() + " (" + u.getCount() + ")"); t.getAssigned()
}); .forEach(
}); u -> {
log.info(" - 도엽: " + u.getSheetId() + " (" + u.getCount() + ")");
});
});
/** /**
* [A] 입력한 수 : 1000 * [A] 입력한 수 : 1000 - 도엽: 2 (500) - 도엽: 6 (459) - 도엽: 5 (41)
* - 도엽: 2 (500)
* - 도엽: 6 (459)
* - 도엽: 5 (41)
* *
* [B] 입력한 수 : 500 * <p>[B] 입력한 수 : 500 - 도엽: 5 (339) - 도엽: 3 (161)
* - 도엽: 5 (339)
* - 도엽: 3 (161)
* *
* [C] 입력한 수 : 700 * <p>[C] 입력한 수 : 700 - 도엽: 3 (189) - 도엽: 1 (261) - 도엽: 4 (250)
* - 도엽: 3 (189)
* - 도엽: 1 (261)
* - 도엽: 4 (250)
*/ */
//A 에게 도엽 2 asc 해서 500건 할당 -> 도엽 6 asc 해서 459 할당 -> 도엽 5 asc 해서 41건 할당 -> insert // A 에게 도엽 2 asc 해서 500건 할당 -> 도엽 6 asc 해서 459 할당 -> 도엽 5 asc 해서 41건 할당 -> insert
//B 에게 도엽 5 위에 41건 할당한 것 빼고 asc 해서 339건 할당 -> 도엽 3 asc 해서 161건 할당 -> insert // B 에게 도엽 5 위에 41건 할당한 것 빼고 asc 해서 339건 할당 -> 도엽 3 asc 해서 161건 할당 -> insert
//.... for문에서 할당한 것 빼고 asc 해서 건수만큼 할당 insert 하고 다음 으로 넘어가기 // .... for문에서 할당한 것 빼고 asc 해서 건수만큼 할당 insert 하고 다음 으로 넘어가기
return ApiResponseDto.ok(null); return ApiResponseDto.ok(null);
} }
} }

View File

@@ -27,8 +27,7 @@ public class LabelAllocateDto {
private final int demand; private final int demand;
private final List<Sheet> assigned = new ArrayList<>(); private final List<Sheet> assigned = new ArrayList<>();
private int allocated = 0; private int allocated = 0;
@Setter @Setter private int shortage = 0;
private int shortage = 0;
public TargetUser(String userId, int demand) { public TargetUser(String userId, int demand) {
this.userId = userId; this.userId = userId;
@@ -38,11 +37,10 @@ public class LabelAllocateDto {
public int getRemainDemand() { public int getRemainDemand() {
return demand - allocated; return demand - allocated;
} }
public void assign(String sheetId, int count) { public void assign(String sheetId, int count) {
assigned.add(new Sheet(sheetId, count)); assigned.add(new Sheet(sheetId, count));
allocated += count; allocated += count;
} }
} }
} }

View File

@@ -18,14 +18,10 @@ public class LabelAllocateService {
allocateSheets(sheets, targetUsers); allocateSheets(sheets, targetUsers);
// 2⃣ 전체 부족분 비율 계산 // 2⃣ 전체 부족분 비율 계산
distributeShortage(targetUsers); //항상 마지막에 한 번만 호출해야함 distributeShortage(targetUsers); // 항상 마지막에 한 번만 호출해야함
} }
public static void allocateSheets( public static void allocateSheets(List<Sheet> sheets, List<TargetUser> targets) {
List<Sheet> sheets,
List<TargetUser> targets
) {
// 도엽 큰 것부터 (선택 사항) // 도엽 큰 것부터 (선택 사항)
sheets.sort(Comparator.comparingInt(Sheet::getCount).reversed()); sheets.sort(Comparator.comparingInt(Sheet::getCount).reversed());
@@ -35,10 +31,7 @@ public class LabelAllocateService {
while (it.hasNext() && target.getRemainDemand() > 0) { while (it.hasNext() && target.getRemainDemand() > 0) {
Sheet sheet = it.next(); Sheet sheet = it.next();
int assignable = Math.min( int assignable = Math.min(sheet.getCount(), target.getRemainDemand());
sheet.getCount(),
target.getRemainDemand()
);
if (assignable > 0) { if (assignable > 0) {
target.assign(sheet.getSheetId(), assignable); target.assign(sheet.getSheetId(), assignable);
@@ -54,13 +47,9 @@ public class LabelAllocateService {
public static void distributeShortage(List<TargetUser> targets) { public static void distributeShortage(List<TargetUser> targets) {
int totalDemand = targets.stream() int totalDemand = targets.stream().mapToInt(TargetUser::getDemand).sum();
.mapToInt(TargetUser::getDemand)
.sum();
int totalAllocated = targets.stream() int totalAllocated = targets.stream().mapToInt(t -> t.getAllocated()).sum();
.mapToInt(t -> t.getAllocated())
.sum();
int shortage = totalDemand - totalAllocated; int shortage = totalDemand - totalAllocated;
@@ -86,5 +75,4 @@ public class LabelAllocateService {
t.setShortage(share); t.setShortage(share);
} }
} }
} }