diff --git a/.gitignore b/.gitignore index 47470ca0..72574faa 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ env.properties -.idea \ No newline at end of file +.env +.idea diff --git a/SCM/backend/src/main/java/error/pirate/backend/quotation/command/domain/aggregate/entity/QuotationStatus.java b/SCM/backend/src/main/java/error/pirate/backend/quotation/command/domain/aggregate/entity/QuotationStatus.java index 362047e6..9cbe010a 100644 --- a/SCM/backend/src/main/java/error/pirate/backend/quotation/command/domain/aggregate/entity/QuotationStatus.java +++ b/SCM/backend/src/main/java/error/pirate/backend/quotation/command/domain/aggregate/entity/QuotationStatus.java @@ -1,9 +1,34 @@ package error.pirate.backend.quotation.command.domain.aggregate.entity; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +import java.util.Arrays; +import java.util.List; + +@Getter +@RequiredArgsConstructor public enum QuotationStatus { - BEFORE, // 결재전 - AFTER, // 결재후 - REFUSAL, // 반려 - DELETE // 삭제 + BEFORE("결재 전"), + AFTER("결재 후"), + REFUSAL("반려"), + DELETE("삭제"); + + private final String value; + + @Getter + public static class QuotationStatusResponse { + private final String key; + private final String value; + + public QuotationStatusResponse(String key, QuotationStatus quotationStatus) { + this.key = key; + this.value = quotationStatus.getValue(); + } + } + public static List readQuotationStatusList() { + return Arrays.stream(QuotationStatus.class.getEnumConstants()).map(key -> + new QuotationStatusResponse(key.toString(), QuotationStatus.valueOf(key.toString()))).toList(); + } } diff --git a/SCM/backend/src/main/java/error/pirate/backend/quotation/query/controller/QuotationQueryController.java b/SCM/backend/src/main/java/error/pirate/backend/quotation/query/controller/QuotationQueryController.java index 49b92b6a..e5f2efc4 100644 --- a/SCM/backend/src/main/java/error/pirate/backend/quotation/query/controller/QuotationQueryController.java +++ b/SCM/backend/src/main/java/error/pirate/backend/quotation/query/controller/QuotationQueryController.java @@ -1,5 +1,6 @@ package error.pirate.backend.quotation.query.controller; +import error.pirate.backend.quotation.command.domain.aggregate.entity.QuotationStatus; import error.pirate.backend.quotation.query.dto.QuotationListResponse; import error.pirate.backend.quotation.query.dto.QuotationResponse; import error.pirate.backend.quotation.query.dto.QuotationSituationResponse; @@ -8,6 +9,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.format.annotation.DateTimeFormat; +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -30,7 +32,7 @@ public ResponseEntity readQuotationList( @RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate startDate, @RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate endDate, @RequestParam(required = false) String clientName, - @RequestParam(required = false) String quotationStatus) { + @RequestParam(required = false) List quotationStatus) { return ResponseEntity.ok(quotationQueryService.readQuotationList( page, size, startDate, endDate, clientName, quotationStatus)); @@ -54,4 +56,10 @@ public ResponseEntity readQuotationSituation( return ResponseEntity.ok(quotationQueryService.readQuotationSituation( startDate, endDate, clientName)); } + + @GetMapping("/status") + @Operation(summary = "견적서 상태 분류 조회") + public ResponseEntity> readQuotationStatus() { + return ResponseEntity.ok(QuotationStatus.readQuotationStatusList()); + } } diff --git a/SCM/backend/src/main/java/error/pirate/backend/quotation/query/mapper/QuotationMapper.java b/SCM/backend/src/main/java/error/pirate/backend/quotation/query/mapper/QuotationMapper.java index 61627ae1..427fe398 100644 --- a/SCM/backend/src/main/java/error/pirate/backend/quotation/query/mapper/QuotationMapper.java +++ b/SCM/backend/src/main/java/error/pirate/backend/quotation/query/mapper/QuotationMapper.java @@ -16,14 +16,14 @@ List selectQuotationList( @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate, @Param("clientName") String clientName, - @Param("quotationStatus") String quotationStatus); + @Param("quotationStatus") List quotationStatus); // 견적서 개수 목록 조회 int countQuotationList( @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate, @Param("clientName") String clientName, - @Param("quotationStatus") String quotationStatus); + @Param("quotationStatus") List quotationStatus); // 견적서 상세 조회 QuotationDTO selectQuotation( diff --git a/SCM/backend/src/main/java/error/pirate/backend/quotation/query/service/QuotationQueryService.java b/SCM/backend/src/main/java/error/pirate/backend/quotation/query/service/QuotationQueryService.java index fed3fae5..8a8147d7 100644 --- a/SCM/backend/src/main/java/error/pirate/backend/quotation/query/service/QuotationQueryService.java +++ b/SCM/backend/src/main/java/error/pirate/backend/quotation/query/service/QuotationQueryService.java @@ -20,7 +20,7 @@ public class QuotationQueryService { public QuotationListResponse readQuotationList( Integer page, Integer size, LocalDate startDate, LocalDate endDate, - String clientName, String quotationStatus) { + String clientName, List quotationStatus) { // 견적서 목록 조회 List quotationList = quotationMapper.selectQuotationList( diff --git a/SCM/backend/src/main/resources/mappers/quotation/QuotationMapper.xml b/SCM/backend/src/main/resources/mappers/quotation/QuotationMapper.xml index c4b8f98d..59fcec14 100644 --- a/SCM/backend/src/main/resources/mappers/quotation/QuotationMapper.xml +++ b/SCM/backend/src/main/resources/mappers/quotation/QuotationMapper.xml @@ -30,7 +30,8 @@ AND tb_client.client_name LIKE CONCAT('%', #{clientName}, '%') - AND tb_quotation.quotation_status LIKE #{quotationStatus} + AND tb_quotation.quotation_status IN + #{item} LIMIT #{limit} OFFSET #{offset} @@ -52,7 +53,8 @@ AND tb_client.client_name LIKE CONCAT('%', #{clientName}, '%') - AND tb_quotation.quotation_status LIKE #{quotationStatus} + AND tb_quotation.quotation_status IN + #{item} diff --git a/SCM/backend/src/test/java/error/pirate/backend/quotation/query/service/QuotationQueryServiceTest.java b/SCM/backend/src/test/java/error/pirate/backend/quotation/query/service/QuotationQueryServiceTest.java index 179c22f0..6c01bcc0 100644 --- a/SCM/backend/src/test/java/error/pirate/backend/quotation/query/service/QuotationQueryServiceTest.java +++ b/SCM/backend/src/test/java/error/pirate/backend/quotation/query/service/QuotationQueryServiceTest.java @@ -9,6 +9,7 @@ import org.springframework.boot.test.context.SpringBootTest; import java.time.LocalDate; +import java.util.List; import java.util.stream.Stream; import static org.junit.jupiter.api.Assertions.*; @@ -37,7 +38,7 @@ private static Stream readQuotationListParam() { @MethodSource("readQuotationListParam") void readQuotationList(Integer page, Integer size, LocalDate startDate, LocalDate endDate, - String clientName, String quotationStatus) { + String clientName, List quotationStatus) { assertDoesNotThrow(() -> quotationQueryService.readQuotationList( page, size, startDate, endDate, clientName, quotationStatus)); diff --git a/SCM/frontend/src/axios.js b/SCM/frontend/src/axios.js new file mode 100644 index 00000000..c3017359 --- /dev/null +++ b/SCM/frontend/src/axios.js @@ -0,0 +1,15 @@ +import axios from 'axios'; + +const instance = axios.create({ + baseURL: import.meta.env.VITE_API_URL, +// headers: { +// common: { +// 'Authorization': 'AUTH_TOKEN' +// }, +// post: { +// 'Content-Type': 'application/x-www-form-urlencoded' +// } +// } +}); + +export default instance; diff --git a/SCM/frontend/src/components/common/Header.vue b/SCM/frontend/src/components/common/Header.vue index adb0d745..8c9fc45a 100644 --- a/SCM/frontend/src/components/common/Header.vue +++ b/SCM/frontend/src/components/common/Header.vue @@ -25,7 +25,9 @@ import statisticsIcon from '@/assets/statisticsIcon.svg' - 견적 관리 + + 견적 관리 + 주문서 관리 판매 관리 출하지시서 관리 diff --git a/SCM/frontend/src/components/quotation/QuotationList.vue b/SCM/frontend/src/components/quotation/QuotationList.vue index a43d0375..57bc0467 100644 --- a/SCM/frontend/src/components/quotation/QuotationList.vue +++ b/SCM/frontend/src/components/quotation/QuotationList.vue @@ -1,22 +1,53 @@