diff --git a/SCM/backend/src/main/java/error/pirate/backend/common/Pagination.java b/SCM/backend/src/main/java/error/pirate/backend/common/Pagination.java index d5631297..3b2aa197 100644 --- a/SCM/backend/src/main/java/error/pirate/backend/common/Pagination.java +++ b/SCM/backend/src/main/java/error/pirate/backend/common/Pagination.java @@ -1,5 +1,6 @@ package error.pirate.backend.common; +import io.micrometer.common.util.StringUtils; import lombok.Data; import lombok.RequiredArgsConstructor; @@ -25,6 +26,13 @@ public class Pagination { private int totalPageNo; + public String getSearchEndDate() { + if(StringUtils.isNotEmpty(searchEndDate)) { + return searchEndDate + " 23:59:59"; + } + return null; + } + public int getOffset() { return (pageNo - 1) * limit; } diff --git a/SCM/backend/src/main/java/error/pirate/backend/purchase/query/dto/PurchaseItemResponse.java b/SCM/backend/src/main/java/error/pirate/backend/purchase/query/dto/PurchaseItemResponse.java index 3fe53b5c..3e0a6ae5 100644 --- a/SCM/backend/src/main/java/error/pirate/backend/purchase/query/dto/PurchaseItemResponse.java +++ b/SCM/backend/src/main/java/error/pirate/backend/purchase/query/dto/PurchaseItemResponse.java @@ -12,6 +12,8 @@ public class PurchaseItemResponse { private Long itemSeq; // 품목 번호 + private String warehouseName; // 입고창고명 + private String itemName; // 품목 이름 private String itemImageUrl; // 품목 사진 url diff --git a/SCM/backend/src/main/java/error/pirate/backend/purchase/query/dto/PurchaseRequest.java b/SCM/backend/src/main/java/error/pirate/backend/purchase/query/dto/PurchaseRequest.java index 54f2760e..06b3af4c 100644 --- a/SCM/backend/src/main/java/error/pirate/backend/purchase/query/dto/PurchaseRequest.java +++ b/SCM/backend/src/main/java/error/pirate/backend/purchase/query/dto/PurchaseRequest.java @@ -5,7 +5,7 @@ public class PurchaseRequest extends Pagination { - private String clientName; // 거래처명 + private String clientName; private PurchaseStatus purchaseStatus; diff --git a/SCM/backend/src/main/java/error/pirate/backend/purchase/query/dto/PurchaseResponse.java b/SCM/backend/src/main/java/error/pirate/backend/purchase/query/dto/PurchaseResponse.java index b4b2c5bc..0412e5a1 100644 --- a/SCM/backend/src/main/java/error/pirate/backend/purchase/query/dto/PurchaseResponse.java +++ b/SCM/backend/src/main/java/error/pirate/backend/purchase/query/dto/PurchaseResponse.java @@ -18,12 +18,13 @@ public class PurchaseResponse { private String clientName; // 거래처 이름 - private String warehouseName; // 입고창고명 - private String purchaseName; // 구매처명 private PurchaseStatus purchaseStatus; // 상태 + @Setter + private String purchaseStatusValue; + private LocalDateTime purchaseContractDate; // 계약일 private LocalDateTime purchaseRegDate; diff --git a/SCM/backend/src/main/java/error/pirate/backend/purchase/query/service/PurchaseService.java b/SCM/backend/src/main/java/error/pirate/backend/purchase/query/service/PurchaseService.java index a0780913..ae7abd66 100644 --- a/SCM/backend/src/main/java/error/pirate/backend/purchase/query/service/PurchaseService.java +++ b/SCM/backend/src/main/java/error/pirate/backend/purchase/query/service/PurchaseService.java @@ -33,6 +33,8 @@ public PurchaseResponsePagination readPurchaseList(PurchaseRequest request) { int totalCount = purchaseMapper.readPurchaseListCount(request); + purchaseResponseList.forEach(order -> order.setPurchaseStatusValue(order.getPurchaseStatus().getValue())); + Pagination pagination = new Pagination(); pagination.responsePaging(request.getPageNo(), totalCount); @@ -48,7 +50,7 @@ public byte[] purchaseExcelDown(PurchaseRequest request) { request.setOffset(null); List purchaseResponseList = purchaseMapper.readPurchaseList(request); - String[] headers = {"구매서명", "구매서 품목", "거래처명", "입고 창고명", "계약일", "상태"}; + String[] headers = {"구매서명", "구매서 품목", "거래처명", "계약일", "상태"}; String[][] excel = new String[purchaseResponseList.size()][headers.length]; for(int i=0 ; i order.setPurchaseOrderStatusValue(order.getPurchaseOrderStatus().getValue())); + Pagination pagination = new Pagination(); pagination.responsePaging(purchaseOrderRequest.getPageNo(), totalCount); diff --git a/SCM/backend/src/main/resources/mappers/purchase/PurchaseMapper.xml b/SCM/backend/src/main/resources/mappers/purchase/PurchaseMapper.xml index bda2d6dd..c30f45ab 100644 --- a/SCM/backend/src/main/resources/mappers/purchase/PurchaseMapper.xml +++ b/SCM/backend/src/main/resources/mappers/purchase/PurchaseMapper.xml @@ -13,28 +13,27 @@ tp.purchase_extended_price, tp.purchase_note, tu.user_name, - tc.client_name, - tw.warehouse_name + tc.client_name FROM tb_purchase tp JOIN tb_user tu USING (user_seq) - JOIN tb_warehouse tw USING (warehouse_seq) - JOIN tb_client tc ON (tu.user_seq = tc.user_seq) + JOIN tb_purchase_order tpo USING (purchase_order_seq) + JOIN tb_client tc ON (tpo.client_seq = tc.client_seq) = tpo.purchase_order_target_due_date + AND #{searchEndDate} >= tp.purchase_contract_date ]]> - - AND tc.client_name LIKE CONCAT('%', #{clientName}, '%') + + AND tc.client_name LIKE CONCAT('%', #{searchName}, '%') - - AND tp.purchase_status = #{purchaseStatus} + + AND tp.purchase_status = #{searchStatus} ORDER BY tp.purchase_seq @@ -52,9 +51,11 @@ tpi.purchase_item_status, tpi.purchase_item_note, ti.item_name, - ti.item_image_url + ti.item_image_url, + tw.warehouse_name FROM tb_purchase_item tpi JOIN tb_item ti USING (item_seq) + JOIN tb_warehouse tw ON (ti.warehouse_seq = tw.warehouse_seq) WHERE tpi.purchase_seq = #{purchaseSeq} ORDER BY tpi.purchase_item_seq @@ -64,24 +65,24 @@ COUNT(*) FROM tb_purchase tp JOIN tb_user tu USING (user_seq) - JOIN tb_warehouse tw USING (warehouse_seq) - JOIN tb_client tc ON (tu.user_seq = tc.user_seq) + JOIN tb_purchase_order tpo USING (purchase_order_seq) + JOIN tb_client tc ON (tpo.client_seq = tc.client_seq) = tpo.purchase_order_target_due_date + AND #{searchEndDate} >= tp.purchase_contract_date ]]> - - AND tc.client_name LIKE CONCAT('%', #{clientName}, '%') + + AND tc.client_name LIKE CONCAT('%', #{searchName}, '%') - - AND tp.purchase_status = #{purchaseStatus} + + AND tp.purchase_status = #{searchStatus} diff --git a/SCM/frontend/src/components/common/Header.vue b/SCM/frontend/src/components/common/Header.vue index 63140455..6c8a9848 100644 --- a/SCM/frontend/src/components/common/Header.vue +++ b/SCM/frontend/src/components/common/Header.vue @@ -36,7 +36,7 @@ import statisticsIcon from '@/assets/statisticsIcon.svg' 발주서 관리 - 구매서 관리 + 구매서 관리 diff --git a/SCM/frontend/src/components/purchase/PurchaseInputForm.vue b/SCM/frontend/src/components/purchase/PurchaseInputForm.vue new file mode 100644 index 00000000..4abd5878 --- /dev/null +++ b/SCM/frontend/src/components/purchase/PurchaseInputForm.vue @@ -0,0 +1,216 @@ + + + + + \ No newline at end of file diff --git a/SCM/frontend/src/components/purchase/PurchaseInputItems.vue b/SCM/frontend/src/components/purchase/PurchaseInputItems.vue new file mode 100644 index 00000000..86a50ec3 --- /dev/null +++ b/SCM/frontend/src/components/purchase/PurchaseInputItems.vue @@ -0,0 +1,89 @@ + + + + + \ No newline at end of file diff --git a/SCM/frontend/src/components/purchase/PurchaseList.vue b/SCM/frontend/src/components/purchase/PurchaseList.vue new file mode 100644 index 00000000..3b930caa --- /dev/null +++ b/SCM/frontend/src/components/purchase/PurchaseList.vue @@ -0,0 +1,372 @@ + + + + + diff --git a/SCM/frontend/src/components/purchaseOrder/PurchaseOrderList.vue b/SCM/frontend/src/components/purchaseOrder/PurchaseOrderList.vue index 440f492f..b927a19b 100644 --- a/SCM/frontend/src/components/purchaseOrder/PurchaseOrderList.vue +++ b/SCM/frontend/src/components/purchaseOrder/PurchaseOrderList.vue @@ -254,7 +254,7 @@ const printItem = (index) => {
{{ dayjs(purchaseOrder.purchaseOrderTargetDueDate).format('YYYY-MM-DD HH:mm:ss') }}
-
{{ purchaseOrder.purchaseOrderStatus }}
+
{{ purchaseOrder.purchaseOrderStatusValue }}
diff --git a/SCM/frontend/src/router/index.js b/SCM/frontend/src/router/index.js index 71c1c350..751d5e24 100644 --- a/SCM/frontend/src/router/index.js +++ b/SCM/frontend/src/router/index.js @@ -29,6 +29,14 @@ const routes = [ path: "/purchaseOrder/input", component: () => import("@/views/purchaseOrder/PurchaseOrderInputView.vue") }, + { + path: "/purchase", + component: () => import("@/views/purchase/PurchaseListView.vue") + }, + { + path: "/purchase/input", + component: () => import("@/views/purchase/PurchaseInputView.vue") + }, ...shippingInstructionRoutes, ...productionReceivingRoutes, diff --git a/SCM/frontend/src/views/purchase/PurchaseInputView.vue b/SCM/frontend/src/views/purchase/PurchaseInputView.vue new file mode 100644 index 00000000..761766aa --- /dev/null +++ b/SCM/frontend/src/views/purchase/PurchaseInputView.vue @@ -0,0 +1,180 @@ + + + + + \ No newline at end of file diff --git a/SCM/frontend/src/views/purchase/PurchaseListView.vue b/SCM/frontend/src/views/purchase/PurchaseListView.vue new file mode 100644 index 00000000..d7290f36 --- /dev/null +++ b/SCM/frontend/src/views/purchase/PurchaseListView.vue @@ -0,0 +1,14 @@ + + + + +