diff --git a/src/main/java/com/sampoom/factory/api/part/controller/PartOrderController.java b/src/main/java/com/sampoom/factory/api/part/controller/PartOrderController.java index de00402..af1bb92 100644 --- a/src/main/java/com/sampoom/factory/api/part/controller/PartOrderController.java +++ b/src/main/java/com/sampoom/factory/api/part/controller/PartOrderController.java @@ -91,7 +91,7 @@ public ResponseEntity>> getPar return ApiResponse.success(SuccessStatus.OK, response); } - @Operation(summary = "생산계획 목록 조회", description = "생산계획 탭용 조회 - 계획 상태와 최근 IN_PROGRESS로 전환된 데이터를 포함하여 조회합니다.") + @Operation(summary = "생산계획 목록 조회", description = "생산계획 탭용 조회 - 계획 상태와 최근 IN_PROGRESS로 전환된 데이터를 포함하여 조회합니다. includeRecentDays=-1로 전체 데이터 조회 가능합니다.") @GetMapping("/orders/production-plans") public ResponseEntity>> getProductionPlans( @PathVariable Long factoryId, diff --git a/src/main/java/com/sampoom/factory/api/part/service/PartOrderCodeGenerator.java b/src/main/java/com/sampoom/factory/api/part/service/PartOrderCodeGenerator.java index 58bf6aa..f85ee17 100644 --- a/src/main/java/com/sampoom/factory/api/part/service/PartOrderCodeGenerator.java +++ b/src/main/java/com/sampoom/factory/api/part/service/PartOrderCodeGenerator.java @@ -17,23 +17,23 @@ public class PartOrderCodeGenerator { private final PartOrderRepository partOrderRepository; /** - * WO-2025-001 형태의 주문 코드를 생성합니다. + * WO-251109-001 형태의 주문 코드를 생성합니다. * WO: Work Order의 약자 - * 2025: 현재 년도 - * 001: 해당 년도의 순차 번호 (3자리) + * 251109: YYMMDD 형태 (25년 11월 09일) + * 001: 해당 날짜의 순차 번호 (3자리) */ public String generateOrderCode() { LocalDateTime now = LocalDateTime.now(); - String year = now.format(DateTimeFormatter.ofPattern("yyyy")); + String dateCode = now.format(DateTimeFormatter.ofPattern("yyMMdd")); - // 해당 년도의 마지막 주문 코드 조회 - String lastOrderCode = partOrderRepository.findTopByOrderCodeStartingWithOrderByOrderCodeDesc("WO-" + year + "-") + // 해당 날짜의 마지막 주문 코드 조회 + String lastOrderCode = partOrderRepository.findTopByOrderCodeStartingWithOrderByOrderCodeDesc("WO-" + dateCode + "-") .map(PartOrder::getOrderCode) .orElse(null); int nextSequence = 1; if (lastOrderCode != null && !lastOrderCode.isEmpty()) { - // WO-2025-001에서 마지막 3자리 숫자 추출 + // WO-251109-001에서 마지막 3자리 숫자 추출 String[] parts = lastOrderCode.split("-"); if (parts.length == 3) { try { @@ -45,8 +45,8 @@ public String generateOrderCode() { } } - // WO-2025-001 형태로 생성 - String orderCode = String.format("WO-%s-%03d", year, nextSequence); + // WO-251109-001 형태로 생성 + String orderCode = String.format("WO-%s-%03d", dateCode, nextSequence); log.info("주문 코드 생성: {}", orderCode); return orderCode; diff --git a/src/main/java/com/sampoom/factory/api/part/service/PartOrderService.java b/src/main/java/com/sampoom/factory/api/part/service/PartOrderService.java index f9f8741..1ebf46d 100644 --- a/src/main/java/com/sampoom/factory/api/part/service/PartOrderService.java +++ b/src/main/java/com/sampoom/factory/api/part/service/PartOrderService.java @@ -580,8 +580,10 @@ public PageResponseDto getProductionPlans(Long factoryId, PartOrderStatus.DELAYED ); - // 최근 IN_PROGRESS로 전환된 데이터를 포함하기 위한 기준일 계산 - LocalDateTime cutoffDate = LocalDateTime.now().minusDays(includeRecentDays); + // includeRecentDays가 -1이면 모든 IN_PROGRESS 데이터 포함, 아니면 최근 며칠간만 + LocalDateTime cutoffDate = includeRecentDays == -1 ? + LocalDateTime.of(1900, 1, 1, 0, 0) : // 아주 오래된 날짜로 설정하여 모든 데이터 포함 + LocalDateTime.now().minusDays(includeRecentDays); Page partOrderPage; @@ -640,7 +642,7 @@ private PartOrderResponseDto toResponseDto(PartOrder partOrder) { .externalPartOrderId(partOrder.getExternalPartOrderId()) .requiredDate(partOrder.getRequiredDate()) .scheduledDate(partOrder.getScheduledDate()) - .progressRate(partOrder.getProgressRate()) + .progressRate(Math.round(partOrder.getProgressRate() * 100.0) / 100.0) .rejectionReason(partOrder.getRejectionReason()) .dDay(partOrder.getDDay()) .priority(partOrder.getPriority() != null ? partOrder.getPriority().name() : null) @@ -687,7 +689,7 @@ private PartOrderResponseDto toProductionPlanResponseDto(PartOrder partOrder) { .externalPartOrderId(partOrder.getExternalPartOrderId()) .requiredDate(partOrder.getRequiredDate()) .scheduledDate(partOrder.getScheduledDate()) - .progressRate(partOrder.getProgressRate()) + .progressRate(Math.round(partOrder.getProgressRate() * 100.0) / 100.0) .rejectionReason(partOrder.getRejectionReason()) .dDay(partOrder.getDDay()) .priority(partOrder.getPriority() != null ? partOrder.getPriority().name() : null)