diff --git a/src/main/java/com/ssginc/nojam/stock/controller/StockController.java b/src/main/java/com/ssginc/nojam/stock/controller/StockController.java new file mode 100644 index 0000000..f2fe03b --- /dev/null +++ b/src/main/java/com/ssginc/nojam/stock/controller/StockController.java @@ -0,0 +1,87 @@ +package com.ssginc.nojam.stock.controller; + +import com.ssginc.nojam.stock.dto.HeadStockViewDTO; +import com.ssginc.nojam.stock.mapper.StockMapper; +import com.ssginc.nojam.stock.service.StockService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +import java.util.List; + +/** + * @author Queue-ri + */ + +@Controller +@RequiredArgsConstructor +@RequestMapping("stock") +public class StockController { + private final StockMapper stockMapper; + + private final StockService stockService; + + @GetMapping("/head/view") + public String viewHeadStockDefault(RedirectAttributes redirectAttributes) { + redirectAttributes.addAttribute("pdx", 1); + return "redirect:/stock/head/view/{pdx}"; + } + + @GetMapping("/head/view/{pdx}") + public String viewHeadStock(@PathVariable("pdx") int pdx, Model model) { + int pageIdx = (pdx-1) * 50; + + int totalRow = stockMapper.countAllHeadStock(); // 총 totalRow개의 검색 결과 + int pageBlockSize = 5; // 1 2 3 4 5 + int pageNavSize = (int)Math.ceil((double)totalRow / pageBlockSize); // << >> 를 몇 번 할 수 있는지 + + List hsList = stockMapper.get50HeadStock(pageIdx); + + model.addAttribute("hsList", hsList); + model.addAttribute("totalRow", totalRow); + model.addAttribute("pageBlockSize", pageBlockSize); + model.addAttribute("pageNavSize", pageNavSize); + + return "stock/head-view"; + } + + @GetMapping("/head/view/query") + public String viewHeadStockQueryDefault(RedirectAttributes redirectAttributes) { + redirectAttributes.addAttribute("pdx", 1); + return "redirect:/stock/head/view/{pdx}"; + } + + @GetMapping("/head/view/query/{pdx}") + public String viewHeadStockQuery(@PathVariable("pdx") int pdx, @RequestParam("category") String category, @RequestParam("value") String value, Model model) { + int pageIdx = (pdx-1) * 50; + + List hsList = null; + int totalRow = -1; + if (category.isEmpty()) { + hsList = stockMapper.get50HeadStock(pageIdx); + totalRow = stockMapper.countAllHeadStock(); // 총 totalRow개의 검색 결과 + } + else { + hsList = stockMapper.get50FilteredHeadStock(category, value, pageIdx); + totalRow = stockMapper.countFilteredHeadStock(category, value); // 총 totalRow개의 검색 결과 + } + int pageBlockSize = 5; // 1 2 3 4 5 + int pageNavSize = (int)Math.ceil((double)totalRow / pageBlockSize); // << >> 를 몇 번 할 수 있는지 + + model.addAttribute("hsList", hsList); + + model.addAttribute("totalRow", totalRow); + model.addAttribute("pageBlockSize", pageBlockSize); + model.addAttribute("pageNavSize", pageNavSize); + + model.addAttribute("category", category); + model.addAttribute("value", value); + + return "stock/head-view-query"; + } +} diff --git a/src/main/java/com/ssginc/nojam/stock/dto/HeadStockViewDTO.java b/src/main/java/com/ssginc/nojam/stock/dto/HeadStockViewDTO.java new file mode 100644 index 0000000..b2d2fe4 --- /dev/null +++ b/src/main/java/com/ssginc/nojam/stock/dto/HeadStockViewDTO.java @@ -0,0 +1,28 @@ +package com.ssginc.nojam.stock.dto; + +import com.ssginc.nojam.crawl.vo.ItemVO; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +/** + * @author Queue-ri + */ + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class HeadStockViewDTO { + private String stockId; + private Long itemId; + private String name; + private String category1; + private String category2; + private int price; + private Integer stock; + private LocalDateTime lastModifiedAt; +} diff --git a/src/main/java/com/ssginc/nojam/stock/mapper/StockMapper.java b/src/main/java/com/ssginc/nojam/stock/mapper/StockMapper.java index 7ad6f23..8a3ca52 100644 --- a/src/main/java/com/ssginc/nojam/stock/mapper/StockMapper.java +++ b/src/main/java/com/ssginc/nojam/stock/mapper/StockMapper.java @@ -1,9 +1,12 @@ package com.ssginc.nojam.stock.mapper; import com.ssginc.nojam.crawl.vo.ItemVO; +import com.ssginc.nojam.stock.dto.HeadStockViewDTO; import com.ssginc.nojam.stock.vo.BranchStockVO; import com.ssginc.nojam.stock.vo.HeadStockVO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -17,4 +20,8 @@ public interface StockMapper { List getAllItem(); int insertHeadStockList(List headStockList); int insertBranchStockList(List branchStockList); + List get50HeadStock(int startIdx); + int countAllHeadStock(); + int countFilteredHeadStock(@Param("category") String category, @Param("value") String value); + List get50FilteredHeadStock(@Param("category") String category, @Param("value") String value, @Param("startIdx") int startIdx); } diff --git a/src/main/java/com/ssginc/nojam/stock/vo/HeadStockVO.java b/src/main/java/com/ssginc/nojam/stock/vo/HeadStockVO.java index 18387e3..8439c3a 100644 --- a/src/main/java/com/ssginc/nojam/stock/vo/HeadStockVO.java +++ b/src/main/java/com/ssginc/nojam/stock/vo/HeadStockVO.java @@ -1,5 +1,6 @@ package com.ssginc.nojam.stock.vo; +import com.ssginc.nojam.crawl.vo.ItemVO; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/src/main/resources/mapper/stockMapper.xml b/src/main/resources/mapper/stockMapper.xml index bd17b3b..71f9cd8 100644 --- a/src/main/resources/mapper/stockMapper.xml +++ b/src/main/resources/mapper/stockMapper.xml @@ -31,4 +31,43 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/img/dropdown-arrow.svg b/src/main/resources/static/img/dropdown-arrow.svg new file mode 100644 index 0000000..4ab099f --- /dev/null +++ b/src/main/resources/static/img/dropdown-arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/main/resources/static/img/search-icon.svg b/src/main/resources/static/img/search-icon.svg new file mode 100644 index 0000000..665730b --- /dev/null +++ b/src/main/resources/static/img/search-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/main/resources/templates/stock/head-view-query.html b/src/main/resources/templates/stock/head-view-query.html new file mode 100644 index 0000000..3fcc710 --- /dev/null +++ b/src/main/resources/templates/stock/head-view-query.html @@ -0,0 +1,505 @@ + + + + + + + 재고 관리 - 재고 조회 + + + + + + + +
+
+
+ 상품 재고 관리 + 본사 창고 +
+
+
+
+ 카테고리 선택 + +
    +
  • 상품ID
  • +
  • 상품명
  • +
  • 대분류
  • +
  • 소분류
  • +
+
+
+
검색
+
+
+ [[${totalRow}]]건이 검색되었습니다. +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
재고ID상품ID상품명대분류소분류가격재고최종수정일
+
+ +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/src/main/resources/templates/stock/head-view.html b/src/main/resources/templates/stock/head-view.html new file mode 100644 index 0000000..58297d1 --- /dev/null +++ b/src/main/resources/templates/stock/head-view.html @@ -0,0 +1,339 @@ + + + + + + + 재고 관리 - 재고 조회 + + + + + + + +
+
+
+ 상품 재고 관리 + 본사 창고 +
+
+ +
+ [[${totalRow}]]건이 검색되었습니다. +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
재고ID상품ID상품명대분류소분류가격재고최종수정일
+
+ +
+ +
+ +
+
+
+ + + + \ No newline at end of file