Skip to content

Commit

Permalink
feat: 재고 정보 CRUD
Browse files Browse the repository at this point in the history
  • Loading branch information
shinheekim committed Jun 17, 2024
1 parent 9b82730 commit 953054b
Show file tree
Hide file tree
Showing 7 changed files with 121 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,18 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.skhu.tastyinventory_be.common.dto.BaseResponse;
import net.skhu.tastyinventory_be.controller.inventoryRecord.dto.request.InventoryRecordDto;
import net.skhu.tastyinventory_be.controller.inventoryRecord.dto.request.InventoryRecordRequestDto;
import net.skhu.tastyinventory_be.controller.inventoryRecord.dto.request.InventoryRecordUpdateRequestDto;
import net.skhu.tastyinventory_be.controller.inventoryRecord.dto.response.InventoryRecordResponseDto;
import net.skhu.tastyinventory_be.domain.inventoryRecord.InventoryRecord;
import net.skhu.tastyinventory_be.exception.SuccessCode;
import net.skhu.tastyinventory_be.service.InventoryRecordService;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Slf4j
@RequiredArgsConstructor
@RequestMapping("/inventory-records")
Expand All @@ -23,4 +29,21 @@ public BaseResponse<?> createRecord(@RequestBody @Valid InventoryRecordRequestDt
inventoryRecordService.createInventoryRecord(requestDto);
return BaseResponse.success(SuccessCode.INVENTORY_RECORD_CREATE_SUCCESS);
}
@GetMapping
public BaseResponse<List<InventoryRecordResponseDto>> getAllRecords() {
return BaseResponse.success(SuccessCode.INVENTORY_RECORD_GET_SUCCESS, inventoryRecordService.getAllInventoryRecords());
}
@PatchMapping("/{id}")
public BaseResponse<?> updateRecord(@PathVariable Long id, @RequestBody @Valid InventoryRecordUpdateRequestDto requestDto) {
inventoryRecordService.updateInventoryRecord(id, requestDto);
return BaseResponse.success(SuccessCode.INVENTORY_RECORD_PATCH_SUCCESS);
}

@DeleteMapping("/{id}")
@ResponseStatus(HttpStatus.NO_CONTENT)
public BaseResponse<?> deleteRecord(@PathVariable Long id) {
inventoryRecordService.deleteInventoryRecord(id);
return BaseResponse.success(SuccessCode.INVENTORY_RECORD_DELETE_SUCCESS);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package net.skhu.tastyinventory_be.controller.inventoryRecord.dto.request;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@AllArgsConstructor
@NoArgsConstructor
public class InventoryRecordUpdateRequestDto {
@NotBlank(message = "날짜를 입력하세요")
@Pattern(
regexp="^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$",
message = "YYYY-MM-DD 형식으로 입력하세요"
)
private String date;

@NotNull(message = "현 재고량을 입력하세요")
private Long currentVolume;

@NotNull(message = "발주량을 입력하세요")
private Long orderVolume;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package net.skhu.tastyinventory_be.controller.inventoryRecord.dto.response;

import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import net.skhu.tastyinventory_be.domain.inventoryRecord.InventoryRecord;

@Getter
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class InventoryRecordResponseDto {
private Long id;
private String date;
private Long inventoryId;
private Long currentVolume;
private Long orderVolume;

public InventoryRecordResponseDto(InventoryRecord inventoryRecord) {
this.id = inventoryRecord.getId();
this.date = inventoryRecord.getDate().toString();
this.inventoryId = inventoryRecord.getInventory().getId();
this.currentVolume = inventoryRecord.getCurrentVolume();
this.orderVolume = inventoryRecord.getOrderVolume();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,9 @@ public InventoryRecord(LocalDate date, Inventory inventory, Long currentVolume,
this.currentVolume = currentVolume;
this.orderVolume = orderVolume;
}
public void update(LocalDate date, Long currentVolume, Long orderVolume) {
this.date = date;
this.currentVolume = currentVolume;
this.orderVolume = orderVolume;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ public enum ErrorCode {
NOT_FOUND_EMPLOYEE_EXCEPTION(HttpStatus.NOT_FOUND, "존재하지 않는 직원입니다"),
NOT_FOUND_SCHEDULE_EXCEPTION(HttpStatus.NOT_FOUND, "존재하지 않는 스케줄입니다"),
NOT_FOUND_SOLD_EXCEPTION(HttpStatus.NOT_FOUND, "재고량이 존재하지 않습니다"),
NOT_FOUND_INVENTORY_RECORD_EXCEPTION(HttpStatus.NOT_FOUND, "재고기록이 존재하지 않습니다"),

/**
* 500 INTERNAL SERVER ERROR
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ public enum SuccessCode {
MENU_PATCH_SUCCESS(HttpStatus.OK, "메뉴 수정이 완료되었습니다"),
MENU_DELETE_SUCCESS(HttpStatus.OK, "메뉴 삭제에 성공했습니다"),
SOLD_DELETE_SUCCESSCODE(HttpStatus.OK, "메뉴 판매량 삭제에 성공했습니다"),
INVENTORY_RECORD_GET_SUCCESS(HttpStatus.OK, "재고량 정보 조회에 성공했습니다"),
INVENTORY_RECORD_PATCH_SUCCESS(HttpStatus.OK, "재고량 정보 수정이 완료되었습니다"),
INVENTORY_RECORD_DELETE_SUCCESS(HttpStatus.OK, "재고량 정보 삭제에 성공했습니다"),


/**
* 201 CREATED
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import lombok.RequiredArgsConstructor;
import net.skhu.tastyinventory_be.controller.inventoryRecord.dto.request.InventoryRecordRequestDto;
import net.skhu.tastyinventory_be.controller.inventoryRecord.dto.request.InventoryRecordUpdateRequestDto;
import net.skhu.tastyinventory_be.controller.inventoryRecord.dto.response.InventoryRecordResponseDto;
import net.skhu.tastyinventory_be.domain.inventory.Inventory;
import net.skhu.tastyinventory_be.domain.inventory.InventoryRepository;
import net.skhu.tastyinventory_be.domain.inventoryRecord.InventoryRecord;
Expand All @@ -12,6 +14,8 @@
import org.springframework.transaction.annotation.Transactional;

import java.time.LocalDate;
import java.util.List;
import java.util.stream.Collectors;

@RequiredArgsConstructor
@Transactional(readOnly = true)
Expand Down Expand Up @@ -43,4 +47,36 @@ public void createInventoryRecord(InventoryRecordRequestDto requestDto) {
inventoryRecordRepository.save(inventoryRecord);
}
}
public List<InventoryRecordResponseDto> getAllInventoryRecords() {
return inventoryRecordRepository.findAll().stream()
.map(InventoryRecordResponseDto::new)
.collect(Collectors.toList());
}

@Transactional
public void updateInventoryRecord(Long id, InventoryRecordUpdateRequestDto requestDto) {
InventoryRecord inventoryRecord = inventoryRecordRepository.findById(id).orElseThrow(
() -> new NotFoundException(
ErrorCode.NOT_FOUND_INVENTORY_RECORD_EXCEPTION,
ErrorCode.NOT_FOUND_INVENTORY_RECORD_EXCEPTION.getMessage() + id
));

inventoryRecord.update(
LocalDate.parse(requestDto.getDate()),
requestDto.getCurrentVolume(),
requestDto.getOrderVolume()
);

inventoryRecordRepository.save(inventoryRecord);
}

@Transactional
public void deleteInventoryRecord(Long id) {
InventoryRecord inventoryRecord = inventoryRecordRepository.findById(id).orElseThrow(
() -> new NotFoundException(
ErrorCode.NOT_FOUND_INVENTORY_RECORD_EXCEPTION,
ErrorCode.NOT_FOUND_INVENTORY_RECORD_EXCEPTION.getMessage() + id
));
inventoryRecordRepository.delete(inventoryRecord);
}
}

0 comments on commit 953054b

Please sign in to comment.