Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ public ResponseEntity<ApiResponse<PageResponseDto<PartOrderResponseDto>>> 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<ApiResponse<PageResponseDto<PartOrderResponseDto>>> getProductionPlans(
@PathVariable Long factoryId,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -580,8 +580,10 @@ public PageResponseDto<PartOrderResponseDto> 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<PartOrder> partOrderPage;

Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down