mirror of
https://github.com/suhf/No1WMS.git
synced 2026-02-06 04:04:03 +09:00
#update
/stock/create.jsp /warehouse/create.jsp /stock/list.jsp /warehouse/list.jsp /warehouse/read.jsp StockController.java StockDto.java StockMapper.xml StockMapper.java StockService.java VendorDto.java WarehouseMapper.xml WarehouseController.java #insert /vendor/create.jsp /vendor/list.jsp product_category_company_search.jsp /stock/read.jsp /vendor/read.jsp /stock/update.jsp /vendor/update.jsp VendorController.java VendorMapper.java VendorMapper.xml VendorService.java warehouse_capacity_currentCapacity.jsp
This commit is contained in:
@@ -1,68 +1,186 @@
|
||||
<%@ page contentType="text/html; charset=UTF-8"%>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
|
||||
<%@ page contentType="text/html; charset=UTF-8" %>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>재고 생성</title>
|
||||
<style type="text/css">
|
||||
.header {
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class = "container" >
|
||||
<div class="header">
|
||||
<h1>재고 관리 생성</h1>
|
||||
</div>
|
||||
<hr>
|
||||
<div class = "row">
|
||||
<div class = "col-6">
|
||||
<form>
|
||||
<input type="text" name="search" maxlength="50" readonly/>
|
||||
<input type="submit" class="btn btn-primary" id = "search_modal_show_button" value="검색" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-5 mb-5 text-center">
|
||||
<h1>재고 생성</h1>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="container" style="text-align: center">
|
||||
<div class="ulTag">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
|
||||
|
||||
<input type='hidden' id="activation" value="1">
|
||||
|
||||
|
||||
<!--제품 관련 -->
|
||||
<div class="input-group mb-3 w-40 col-centered">
|
||||
<span id='Product_label' class="input-group-text">제품</span>
|
||||
<input readonly id="stock_pro_name" type="text" class="form-control" placeholder="제품 검색">
|
||||
<input hidden name="ProductName" id="product_id" value="${dto.product_id}">
|
||||
<button id="product_search_button" class="btn-primary btn" onclick="showSearchModals('제품 검색','product_category_company_search')">검색</button>
|
||||
</div>
|
||||
|
||||
<div class="input-group mb-3 w-40 col-centered">
|
||||
<span id='Category_label' class="input-group-text">카테고리</span>
|
||||
<input readonly id="stock_category_name" type="text" class="form-control" placeholder="">
|
||||
</div>
|
||||
|
||||
<div class="input-group mb-3 w-40 col-centered">
|
||||
<span id='Company_name_label' class="input-group-text">제조사</span>
|
||||
<input readonly id="stock_company_name_name" type="text" class="form-control" placeholder="">
|
||||
</div>
|
||||
|
||||
|
||||
<!--창고 관련 -->
|
||||
<div class="input-group mb-3 w-40 col-centered">
|
||||
<span id='Warehouse_label' class="input-group-text">창고</span>
|
||||
<input readonly id="warehouse_name" type="text" class="form-control" placeholder="창고 검색">
|
||||
<input hidden name="product_id" id="warehouse_id" value="${dto.warehouse_id}">
|
||||
<button id="Warehouse_search_button" class="btn-primary btn" onclick="showSearchModals('창고 검색','warehouse_capacity_currentCapacity')">검색</button>
|
||||
</div>
|
||||
|
||||
<div class="input-group mb-3 w-40 col-centered">
|
||||
<span id='Address_label' class="input-group-text">주소</span>
|
||||
<input readonly id="Address_name" type="text" class="form-control" placeholder="">
|
||||
</div>
|
||||
|
||||
<div class="input-group mb-3 w-40 col-centered">
|
||||
<span id='Capacity_label' class="input-group-text">용적</span>
|
||||
<input readonly id="Capacity_name" type="text" class="form-control" placeholder="">
|
||||
</div>
|
||||
|
||||
<div class="input-group mb-3 w-40 col-centered">
|
||||
<span id='RemainingCapacity_label' class="input-group-text">잔여 용량</span>
|
||||
<input readonly id="remainingcapacity" type="text" placeholder="" value="${dto.capacity - dto.current_capacity}" class="form-control">
|
||||
</div>
|
||||
|
||||
|
||||
<!--적재할 상품의 재고수-->
|
||||
<div class="input-group mb-3 w-40 col-centered">
|
||||
<span class="input-group-text" id="basic-addon4">재고량</span>
|
||||
<input type="text" name="quantity" id="quantity" class="form-control"
|
||||
placeholder="재고량을 입력하세요" aria-label="재고량" value="${dto.quantity }"
|
||||
aria-describedby="basic-addon1">
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="modal fade" id="search_modal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered modal-xl" >
|
||||
<div class="modal-content" id="search_modal_content">
|
||||
<div class="modal-header">
|
||||
<h1 class="modal-title fs-5" id="searchModalLabel">재고명 검색</h1>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body" id="search_modal_body">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12 ">
|
||||
<div class="w-40 col-centered" style="text-align: right">
|
||||
<button type="button" class="btn btn-success" id="submitBtn">생성</button>
|
||||
<button type="button" class="btn btn-secondary" id="cancelBtn">취소</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
<script src="utils.js" type="text/javascript"></script>
|
||||
<script>
|
||||
|
||||
|
||||
//검색 팝업 모달 관련
|
||||
const searchModalBootStrap = new bootstrap.Modal("#search_modal");
|
||||
$("#search_modal_show_button").on("click", function(){
|
||||
searchModalBootStrap.show();
|
||||
});
|
||||
|
||||
/*
|
||||
* 검색 팝업 모달 닫는 함수
|
||||
*/
|
||||
function hideSearchModal(){
|
||||
searchModalBootStrap.hide();
|
||||
function showSearchModals(title, val){
|
||||
$("#searchModalLabel").text(title);
|
||||
const data = { name : val};
|
||||
$.ajax({
|
||||
type : 'post', // 타입 (get, post, put 등등)
|
||||
url : '/stock/show_modal', // 요청할 서버url
|
||||
dataType : 'html', // 데이터 타입 (html, xml, json, text 등등)
|
||||
data : data,
|
||||
success : function(result) { // 결과 성공 콜백함수
|
||||
$("#search_modal_body").html(result);
|
||||
searchModalBootStrap.show();
|
||||
},
|
||||
error : function(request, status, error) {
|
||||
alert(error)
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
//검색 팝업 모달 관련 끝
|
||||
</script>
|
||||
$(document).ready(function () {
|
||||
|
||||
</html>
|
||||
|
||||
$("#submitBtn").on("click", function () {
|
||||
var product_id = $("#product_id").val();
|
||||
var warehouse_id = $("#warehouse_id").val();
|
||||
var quantity = $("#quantity").val();
|
||||
var activation = $("#activation").val();
|
||||
var remainingcapacity = $("#remainingcapacity").val();
|
||||
|
||||
if (!product_id) {
|
||||
alert("제품을 선택해야 합니다.");
|
||||
$("#product_id").focus();
|
||||
return false;
|
||||
}
|
||||
if (!warehouse_id) {
|
||||
alert("적재할 창고를 선택해야 합니다.");
|
||||
$("#warehouse_id").focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!quantity) {
|
||||
alert("재고량를 입력해야 합니다.");
|
||||
$("#quantity").focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (quantity > remainingcapacity) {
|
||||
alert("적재 할 재고량이 잔여 용량을 넘을 수 없습니다.");
|
||||
$("#quantity").focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: "/stock/create_process",
|
||||
type: "post",
|
||||
data: {
|
||||
"productId": product_id,
|
||||
"warehouseId": warehouse_id,
|
||||
"quantity": quantity,
|
||||
"activation": activation
|
||||
|
||||
},
|
||||
datatype: "json"
|
||||
}).done(function (data) {
|
||||
if (data == true) {
|
||||
alert("재고 정보가 생성되었습니다.");
|
||||
|
||||
var form = document.createElement("form");
|
||||
form.action = "/stock/read";
|
||||
form.method = "POST";
|
||||
document.body.appendChild(form);
|
||||
|
||||
var input = document.createElement("input");
|
||||
input.type = "hidden";
|
||||
input.name = "name";
|
||||
input.value = name;
|
||||
form.appendChild(input);
|
||||
|
||||
form.submit();
|
||||
|
||||
window.location.href = "/stock/list";
|
||||
} else {
|
||||
alert("재고 정보 생성에 실패하였습니다.");
|
||||
}
|
||||
}).fail(function () {
|
||||
alert("오류가 발생했습니다.");
|
||||
}).always(function () {
|
||||
//
|
||||
});
|
||||
|
||||
})
|
||||
|
||||
$("#cancelBtn").on("click", function () {
|
||||
$(location).attr("href", "/stock/list");
|
||||
|
||||
})
|
||||
|
||||
|
||||
});
|
||||
</script>
|
||||
@@ -1,121 +1,388 @@
|
||||
<%@ page contentType="text/html; charset=UTF-8"%>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>재고 리스트</title>
|
||||
<style type="text/css">
|
||||
.header {
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<script src="base.js"></script>
|
||||
<link rel="stylesheet" href="base.css">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
|
||||
<script src="https://unpkg.com/feather-icons"></script>
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>재고 관리</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<h1>재고 리스트</h1>
|
||||
<div class="mt-5 mb-5 text-center">
|
||||
<h1>재고 관리</h1>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
<div class="body">
|
||||
<!--탭키명 -->
|
||||
<ul class="nav nav-tabs" id="myTab" role="tablist">
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#home" type="button" role="tab" aria-controls="home" aria-selected="true">
|
||||
재고
|
||||
</button>
|
||||
</li>
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#profile" type="button" role="tab" aria-controls="profile" aria-selected="false">
|
||||
부족한 재고
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="tab-content" id="myTabContent">
|
||||
<div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">
|
||||
<div id="search" align="center">
|
||||
<form action="search">
|
||||
<select name="searchn">
|
||||
<option value="0">제품명</option>
|
||||
<option value="1">카테고리</option>
|
||||
</select>
|
||||
<input type="text" name="search" maxlength="50"/>
|
||||
<input type="submit" class="btn btn-primary" value="검색" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<!--재고 리스트 -->
|
||||
<c:if test="${count != 0 }">
|
||||
<table align="center">
|
||||
<tr>
|
||||
<th>번호</th>
|
||||
<th>제품명</th>
|
||||
<th>창고명</th>
|
||||
</tr>
|
||||
<c:forEach items="${list}" var="stock">
|
||||
<tr>
|
||||
<td><a href ="read/${stock.id}">${stock.id}</a></td>
|
||||
<td>${stock.product_name }</td>
|
||||
<td>${stock.warehouse_name }</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</table>
|
||||
<ul class="nav nav-tabs" id="myTab" role="tablist">
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#home" type="button" role="tab" aria-controls="home" aria-selected="true">재고</button>
|
||||
</li>
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#profile" type="button" role="tab" aria-controls="profile" aria-selected="false">부족한 재고</button>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="tab-content" id="myTabContent">
|
||||
<div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">
|
||||
<div class="container-fluid">
|
||||
<div class="col-12">
|
||||
<form>
|
||||
<div class="input-group mb-3 w-30 col-centered">
|
||||
<div class="w-25">
|
||||
<select class="form-select" name="searchn" id="searchn">
|
||||
<option value="0">제품명</option>
|
||||
<option value="1">카테고리</option>
|
||||
<option value="2">재고수</option>
|
||||
</select>
|
||||
</div>
|
||||
<input type="text" id="search" name="search" class="form-control" aria-label="Text input with dropdown button" placeholder="검색어를 입력하세요">
|
||||
<button class="btn btn-info" type="button" id="searchBtn">검색</button>
|
||||
|
||||
<!-- 엑셀 다운로드-->
|
||||
<div class="excelButton" align="left">
|
||||
<button id="excelButton" value="excelButton">다운로드</button>
|
||||
</div>
|
||||
<div id="page" align="center">
|
||||
<c:if test="${begin > pageNum }">
|
||||
<a href="list?p=${begin-1 }">[<]</a>
|
||||
</c:if>
|
||||
<c:forEach begin="${begin }" end="${end}" var="i">
|
||||
<a href="list?p=${i}">${i}</a>
|
||||
</c:forEach>
|
||||
<c:if test="${end < totalPages }">
|
||||
<a href="list?p=${end+1}">[>]</a>
|
||||
</c:if>
|
||||
</div>
|
||||
<!-- 페이징작업용 -->
|
||||
<input type="hidden" id="searchn1" value="${searchn}">
|
||||
<input type="hidden" id="search1" value="${search}">
|
||||
<!-- 페이징작업용 -->
|
||||
|
||||
<div class="createButton" align="right">
|
||||
<button id="createButton" href="create">생성</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fluid">
|
||||
<div class="row row-table">
|
||||
<div class="col-12">
|
||||
<table class="table">
|
||||
<thead class="table-dark">
|
||||
<tr>
|
||||
<th>번호</th>
|
||||
<th>제품명</th>
|
||||
<th>카테고리</th>
|
||||
<th>재고수</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:forEach items="${slist }" var="dto">
|
||||
<tr class="detailTr col-5" data-id="${dto.id}" >
|
||||
<td class="col-1">${start} <c:set var="start" value="${start +1 }"/></td>
|
||||
<td class="col-1">${dto.productName }</td>
|
||||
<td class="col-1">${dto.cls_nm_4 }</td>
|
||||
<td class="col-1">${dto.quantity}</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fluid">
|
||||
<div class="row row-buttons">
|
||||
<div class="col-3 text-start">
|
||||
<img width="50" height="50" src="https://img.icons8.com/color/48/ms-excel.png" alt="ms-excel"/>
|
||||
<button type="button" class="btn btn-success" id="download">다운로드</button>
|
||||
</div>
|
||||
<div class="col-6 d-flex justify-content-center">
|
||||
<nav>
|
||||
<ul class="pagination">
|
||||
|
||||
<c:if test="${begin > pageNum }">
|
||||
<li class="page-item">
|
||||
<a href="javascript:void(0);" class="page-link" onclick="pageingFunction(this.id)" id="${begin - 1 }"><</a>
|
||||
</li>
|
||||
</c:if>
|
||||
<c:forEach begin="${begin }" end="${end }" var="i">
|
||||
<li class="page-item <c:if test="${p == i}"> active </c:if>">
|
||||
<a href="javascript:void(0);" class="page-link " onclick="pageingFunction(this.id); return false;" id="${i }">${i }</a>
|
||||
</li>
|
||||
</c:forEach>
|
||||
<c:if test="${end < totalPages }">
|
||||
<li class="page-item">
|
||||
<a href="javascript:void(0);" class="page-link" onclick="pageingFunction(this.id)" id="${end + 1 }">></a>
|
||||
</li>
|
||||
</c:if>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
<div class="col-3 text-end">
|
||||
<button type="button" class="btn btn-primary" id="createButton">생성</button>
|
||||
</div>
|
||||
</div><!-- row row-buttons -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!--탭내용 2-->
|
||||
<div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">
|
||||
<div class="container-fluid">
|
||||
<div class="col-12">
|
||||
<form>
|
||||
<div class="input-group mb-3 w-30 col-centered">
|
||||
<div class="w-25">
|
||||
<select class="form-select" name="searchn" id="searchn2">
|
||||
<option value="0">제품명</option>
|
||||
<option value="1">카테고리</option>
|
||||
<option value="2">재고수</option>
|
||||
</select>
|
||||
</div>
|
||||
<input type="text" id="search2" name="search" class="form-control" aria-label="Text input with dropdown button" placeholder="검색어를 입력하세요">
|
||||
<button class="btn btn-info" type="button" id="searchBtn2">검색</button>
|
||||
|
||||
<!-- 페이징작업용 -->
|
||||
<input type="hidden" id="searchn22" value="${searchn2}">
|
||||
<input type="hidden" id="search22" value="${search2}">
|
||||
<!-- 페이징작업용 -->
|
||||
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fluid">
|
||||
<div class="row row-table">
|
||||
<div class="col-12">
|
||||
<table class="table">
|
||||
<thead class="table-dark">
|
||||
<tr>
|
||||
<th>번호</th>
|
||||
<th>제품명</th>
|
||||
<th>카테고리</th>
|
||||
<th>재고수</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:forEach items="${slist2 }" var="dto">
|
||||
<tr class="detailTr col-5" data-id="${dto.id}" >
|
||||
<td class="col-1">${start} <c:set var="start" value="${start +1 }"/></td>
|
||||
<td class="col-1">${dto.productName }</td>
|
||||
<td class="col-1">${dto.cls_nm_4 }</td>
|
||||
<td class="col-1">${dto.quantity }</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fluid">
|
||||
<div class="row row-buttons">
|
||||
<div class="col-3 text-start">
|
||||
<img width="50" height="50" src="https://img.icons8.com/color/48/ms-excel.png" alt="ms-excel"/>
|
||||
<button type="button" class="btn btn-success" id="download2">다운로드</button>
|
||||
</div>
|
||||
<div class="col-6 d-flex justify-content-center">
|
||||
<nav>
|
||||
<ul class="pagination">
|
||||
|
||||
<c:if test="${begin2 > pageNum2 }">
|
||||
<li class="page-item">
|
||||
<a href="javascript:void(0);" class="page-link" onclick="pageingFunction2(this.id)" id="${begin2 - 1 }"><</a>
|
||||
</li>
|
||||
</c:if>
|
||||
<c:forEach begin="${begin2 }" end="${end2 }" var="i">
|
||||
<li class="page-item <c:if test="${p2 == i}"> active </c:if>">
|
||||
<a href="javascript:void(0);" class="page-link " onclick="pageingFunction2(this.id); return false;" id="${i }">${i }</a>
|
||||
</li>
|
||||
</c:forEach>
|
||||
<c:if test="${end2 < totalPages2 }">
|
||||
<li class="page-item">
|
||||
<a href="javascript:void(0);" class="page-link" onclick="pageingFunction2(this.id)" id="${end2 + 1 }">></a>
|
||||
</li>
|
||||
</c:if>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
<div class="col-3 text-end">
|
||||
<button type="button" class="btn btn-primary" id="createButton2">생성</button>
|
||||
</div>
|
||||
</div><!-- row row-buttons -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</c:if>
|
||||
</div>
|
||||
<div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">
|
||||
탭2 내용
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
<script src="utils.js" type="text/javascript"></script>
|
||||
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
|
||||
<script>
|
||||
|
||||
|
||||
$(document).ready(function(){
|
||||
//POST방식으로 create폼화면 출력
|
||||
|
||||
/*엑셀 다운로드 클릭 펑션 */
|
||||
$("#excelButton").click(function(){
|
||||
const columns = [
|
||||
{name: '번호', key: 'id'},
|
||||
{name: '제품명', key: 'product_name'},
|
||||
{name: '창고명', key: 'warehouse_name'},
|
||||
{name: '재고수', key: 'quantity'},
|
||||
{name: '카테고리', key: 'cls_Nm_4'}
|
||||
//탭 1 생성 버튼
|
||||
$("#createButton").on("click",function(){
|
||||
var form = document.createElement("form");
|
||||
form.action = "/stock/create";
|
||||
form.method = "POST";
|
||||
document.body.appendChild(form);
|
||||
form.submit();
|
||||
});
|
||||
|
||||
];
|
||||
//탭 2 생성 버튼
|
||||
$("#createButton2").on("click",function(){
|
||||
var form = document.createElement("form");
|
||||
form.action = "/stock/create";
|
||||
form.method = "POST";
|
||||
document.body.appendChild(form);
|
||||
form.submit();
|
||||
});
|
||||
|
||||
exportExcel(e, 'sheet', columns, list, 'stock');
|
||||
})
|
||||
$("body").on("click", ".detailTr", function(){
|
||||
var id = $(this).data("id");
|
||||
|
||||
var form = document.createElement("form");
|
||||
form.action = "/stock/read";
|
||||
form.method = "POST";
|
||||
document.body.appendChild(form);
|
||||
|
||||
var input = document.createElement("input");
|
||||
input.type = "hidden";
|
||||
input.name = "id";
|
||||
input.value = id;
|
||||
form.appendChild(input);
|
||||
|
||||
form.submit();
|
||||
|
||||
});
|
||||
|
||||
//탭 1 검색기능
|
||||
$("#searchBtn").on("click",function(){
|
||||
|
||||
var searchn = $("#searchn").val();
|
||||
var search = $("#search").val();
|
||||
|
||||
|
||||
var form = document.createElement("form");
|
||||
form.action = "/stock/list";
|
||||
form.method = "get";
|
||||
|
||||
var input1 = document.createElement("input");
|
||||
input1.type = "hidden";
|
||||
input1.name = "searchn";
|
||||
input1.value = searchn;
|
||||
form.appendChild(input1);
|
||||
|
||||
var input2 = document.createElement("input");
|
||||
input2.type = "hidden";
|
||||
input2.name = "search";
|
||||
input2.value = search;
|
||||
form.appendChild(input2);
|
||||
|
||||
var input3 = document.createElement("input");
|
||||
input3.type = "hidden";
|
||||
input3.name = "p";
|
||||
input3.value = 1;
|
||||
form.appendChild(input3);
|
||||
|
||||
document.body.appendChild(form);
|
||||
form.submit();
|
||||
|
||||
});
|
||||
|
||||
|
||||
//탭 2 검색기능
|
||||
$("#searchBtn2").on("click",function(){
|
||||
|
||||
var searchn = $("#searchn2").val();
|
||||
var search = $("#search2").val();
|
||||
|
||||
|
||||
var form = document.createElement("form");
|
||||
form.action = "/stock/list2";
|
||||
form.method = "get";
|
||||
|
||||
var input1 = document.createElement("input");
|
||||
input1.type = "hidden";
|
||||
input1.name = "searchn";
|
||||
input1.value = searchn;
|
||||
form.appendChild(input1);
|
||||
|
||||
var input2 = document.createElement("input");
|
||||
input2.type = "hidden";
|
||||
input2.name = "search";
|
||||
input2.value = search;
|
||||
form.appendChild(input2);
|
||||
|
||||
var input3 = document.createElement("input");
|
||||
input3.type = "hidden";
|
||||
input3.name = "p";
|
||||
input3.value = 1;
|
||||
form.appendChild(input3);
|
||||
|
||||
document.body.appendChild(form);
|
||||
form.submit();
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
});//ready
|
||||
|
||||
|
||||
//탭 1 페이징
|
||||
function pageingFunction(clickedId){
|
||||
var searchn1 = $("#searchn1").val();
|
||||
var search1 = $("#search1").val();
|
||||
|
||||
var form = document.createElement("form");
|
||||
form.action = "/stock/list";
|
||||
form.method = "get";
|
||||
|
||||
var input1 = document.createElement("input");
|
||||
input1.type = "hidden";
|
||||
input1.name = "searchn";
|
||||
input1.value = searchn1;
|
||||
form.appendChild(input1);
|
||||
|
||||
var input2 = document.createElement("input");
|
||||
input2.type = "hidden";
|
||||
input2.name = "search";
|
||||
input2.value = search1;
|
||||
form.appendChild(input2);
|
||||
|
||||
var input3 = document.createElement("input");
|
||||
input3.type = "hidden";
|
||||
input3.name = "p";
|
||||
input3.value = clickedId;
|
||||
form.appendChild(input3);
|
||||
|
||||
document.body.appendChild(form);
|
||||
form.submit();
|
||||
}
|
||||
|
||||
//탭 2 페이징
|
||||
function pageingFunction2(clickedId){
|
||||
var searchn2 = $("#searchn22").val();
|
||||
var search2 = $("#search22").val();
|
||||
|
||||
var form = document.createElement("form");
|
||||
form.action = "/stock/list2";
|
||||
form.method = "get";
|
||||
|
||||
var input1 = document.createElement("input");
|
||||
input1.type = "hidden";
|
||||
input1.name = "searchn";
|
||||
input1.value = searchn2;
|
||||
form.appendChild(input1);
|
||||
|
||||
var input2 = document.createElement("input");
|
||||
input2.type = "hidden";
|
||||
input2.name = "search";
|
||||
input2.value = search2;
|
||||
form.appendChild(input2);
|
||||
|
||||
var input3 = document.createElement("input");
|
||||
input3.type = "hidden";
|
||||
input3.name = "p";
|
||||
input3.value = clickedId;
|
||||
form.appendChild(input3);
|
||||
|
||||
document.body.appendChild(form);
|
||||
form.submit();
|
||||
}
|
||||
</script>
|
||||
</html>
|
||||
</body>
|
||||
</html>
|
||||
190
src/main/webapp/WEB-INF/views/stock/read.jsp
Normal file
190
src/main/webapp/WEB-INF/views/stock/read.jsp
Normal file
@@ -0,0 +1,190 @@
|
||||
<%@ page contentType="text/html; charset=UTF-8" %>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
|
||||
|
||||
<div class="mt-5 mb-5 text-center">
|
||||
<h1>재고 상세페이지</h1>
|
||||
<div class="col-10" style="text-align: right">
|
||||
<button type="button" class="btn btn-danger" id="yes_no_modal_show">삭제</button>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="container" style="text-align: center">
|
||||
<div class="ulTag">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
|
||||
<input type="hidden" class="form-control" aria-label="id" id="id" value="${dto.id}" readonly>
|
||||
<input type='hidden' id="activation" value="1">
|
||||
|
||||
|
||||
<!--제품 관련 -->
|
||||
<div class="input-group mb-3 w-40 col-centered">
|
||||
<span id='Product_label' class="input-group-text">제품</span>
|
||||
<input readonly id="stock_pro_name" type="text" class="form-control" placeholder="제품 검색" value="${dto.productName}">
|
||||
<input hidden name="ProductName" id="product_id" value="${dto.productId}">
|
||||
<%-- <button id="product_search_button" class="btn-primary btn" onclick="showSearchModals('제품 검색','product_category_company_search')">검색</button>--%>
|
||||
</div>
|
||||
|
||||
<div class="input-group mb-3 w-40 col-centered">
|
||||
<span id='Category_label' class="input-group-text">카테고리</span>
|
||||
<input readonly id="stock_category_name" type="text" class="form-control" placeholder="" value="${dto.cls_nm_4}">
|
||||
</div>
|
||||
|
||||
<div class="input-group mb-3 w-40 col-centered">
|
||||
<span id='Company_name_label' class="input-group-text">제조사</span>
|
||||
<input readonly id="stock_company_name_name" type="text" class="form-control" placeholder="" value="${dto.company_name}">
|
||||
</div>
|
||||
|
||||
|
||||
<!--창고 관련 -->
|
||||
<div class="input-group mb-3 w-40 col-centered">
|
||||
<span id='Warehouse_label' class="input-group-text">창고</span>
|
||||
<input readonly id="warehouse_name" type="text" class="form-control" placeholder="창고 검색" value="${dto.warehouseName}">
|
||||
<input hidden name="product_id" id="warehouse_id" value="${dto.warehouseId}">
|
||||
<%-- <button id="Warehouse_search_button" class="btn-primary btn" onclick="showSearchModals('창고 검색','warehouse_capacity_currentCapacity')">검색</button>--%>
|
||||
</div>
|
||||
|
||||
<div class="input-group mb-3 w-40 col-centered">
|
||||
<span id='Address_label' class="input-group-text">주소</span>
|
||||
<input readonly id="Address_name" type="text" class="form-control" placeholder="" value="${dto.address}">
|
||||
</div>
|
||||
|
||||
<div class="input-group mb-3 w-40 col-centered">
|
||||
<span id='Capacity_label' class="input-group-text">용적</span>
|
||||
<input readonly id="Capacity_name" type="text" class="form-control" placeholder="" value="${dto.capacity}">
|
||||
</div>
|
||||
|
||||
|
||||
<!--적재할 상품의 재고수-->
|
||||
<div class="input-group mb-3 w-40 col-centered">
|
||||
<span class="input-group-text" id="basic-addon4">재고량</span>
|
||||
<input type="text" name="quantity" id="quantity" class="form-control"
|
||||
placeholder="재고량을 입력하세요" aria-label="재고량" value="${dto.quantity }"
|
||||
aria-describedby="basic-addon1" readonly>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12 ">
|
||||
<div class="w-40 col-centered" style="text-align: right">
|
||||
<button type="button" class="btn btn-success" id="checkBtn">확인</button>
|
||||
<button type="button" class="btn btn-secondary" id="modifyBtn">수정</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="yes_no_modal_stock_delete" tabindex="-1" aria-labelledby="exampleModalLabel"
|
||||
aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h1 class="modal-title fs-5" id="yesNoModalLabel">삭제 하시겠습니까?</h1>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
|
||||
<button id="modal_yes_button_stock_delete" type="button" class="modal_yes btn btn-primary">삭제</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
|
||||
function showSearchModals(title, val){
|
||||
$("#searchModalLabel").text(title);
|
||||
const data = { name : val};
|
||||
$.ajax({
|
||||
type : 'post', // 타입 (get, post, put 등등)
|
||||
url : '/stock/show_modal', // 요청할 서버url
|
||||
dataType : 'html', // 데이터 타입 (html, xml, json, text 등등)
|
||||
data : data,
|
||||
success : function(result) { // 결과 성공 콜백함수
|
||||
$("#search_modal_body").html(result);
|
||||
searchModalBootStrap.show();
|
||||
},
|
||||
error : function(request, status, error) {
|
||||
alert(error)
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
$(document).ready(function () {
|
||||
$("#modifyBtn").on("click", function () {
|
||||
var id = $("#id").val();
|
||||
|
||||
var form = document.createElement("form");
|
||||
form.action = "/stock/update";
|
||||
form.method = "POST";
|
||||
document.body.appendChild(form);
|
||||
|
||||
var input = document.createElement("input");
|
||||
input.type = "hidden";
|
||||
input.name = "id";
|
||||
input.value = id;
|
||||
form.appendChild(input);
|
||||
|
||||
form.submit();
|
||||
|
||||
})
|
||||
|
||||
$("#checkBtn").on("click", function () {
|
||||
$(location).attr("href", "/stock/list");
|
||||
|
||||
})
|
||||
|
||||
yesNoModal.yesFunction1 = deleteStockFunction;
|
||||
|
||||
function deleteStockFunction() {
|
||||
var id = $("#id").val();
|
||||
var warehouse_id = $("#warehouse_id").val();
|
||||
var quantity = $("#quantity").val();
|
||||
|
||||
$.ajax({
|
||||
url: "/stock/delete",
|
||||
type: "delete",
|
||||
data: {
|
||||
"id": id,
|
||||
"warehouseId": warehouse_id,
|
||||
"quantity" : quantity
|
||||
},
|
||||
datatype: "json"
|
||||
}).done(function (data) {
|
||||
if (data == true) {
|
||||
alert("삭제되었습니다.");
|
||||
$(location).attr("href", "/stock/list");
|
||||
} else {
|
||||
alert("정상적으로 삭제되지 않았습니다..");
|
||||
}
|
||||
}).fail(function () {
|
||||
alert("오류가 발생했습니다.");
|
||||
}).always(function () {
|
||||
//
|
||||
});
|
||||
|
||||
}//deleteCategoryFunction
|
||||
|
||||
const yesNoModalBootStrap = new bootstrap.Modal("#yes_no_modal_stock_delete");
|
||||
|
||||
$("#yes_no_modal_show").on("click", function () {
|
||||
yesNoModalBootStrap.show();
|
||||
});
|
||||
|
||||
$("#modal_yes_button_stock_delete").on("click", function () {
|
||||
console.log("삭제 버튼 클릭 이벤트 실행");
|
||||
yesNoModal.yesFunction1();
|
||||
yesNoModalBootStrap.hide();
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
</script>
|
||||
200
src/main/webapp/WEB-INF/views/stock/update.jsp
Normal file
200
src/main/webapp/WEB-INF/views/stock/update.jsp
Normal file
@@ -0,0 +1,200 @@
|
||||
<%@ page contentType="text/html; charset=UTF-8" %>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
|
||||
|
||||
|
||||
<div class="mt-5 mb-5 text-center">
|
||||
<h1>재고 수정</h1>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="container" style="text-align: center">
|
||||
<div class="ulTag">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
|
||||
|
||||
<input type="hidden" class="form-control" aria-label="id" id="id" value="${dto.id }" readonly>
|
||||
<input type='hidden' id="activation" value="1">
|
||||
|
||||
|
||||
<!--제품 관련 -->
|
||||
<div class="input-group mb-3 w-40 col-centered">
|
||||
<span id='Product_label' class="input-group-text">제품</span>
|
||||
<input readonly id="stock_pro_name" type="text" class="form-control" placeholder="제품 검색" value="${dto.productName}">
|
||||
<input hidden name="ProductName" id="product_id" value="${dto.productId}">
|
||||
<%-- <button id="product_search_button" class="btn-primary btn" onclick="showSearchModals('제품 검색','product_category_company_search')">검색</button>--%>
|
||||
</div>
|
||||
|
||||
<div class="input-group mb-3 w-40 col-centered">
|
||||
<span id='Category_label' class="input-group-text">카테고리</span>
|
||||
<input readonly id="stock_category_name" type="text" class="form-control" placeholder="" value="${dto.cls_nm_4}">
|
||||
</div>
|
||||
|
||||
<div class="input-group mb-3 w-40 col-centered">
|
||||
<span id='Company_name_label' class="input-group-text">제조사</span>
|
||||
<input readonly id="stock_company_name_name" type="text" class="form-control" placeholder="" value="${dto.company_name}">
|
||||
</div>
|
||||
|
||||
|
||||
<!--창고 관련 -->
|
||||
<div class="input-group mb-3 w-40 col-centered">
|
||||
<span id='Warehouse_label' class="input-group-text">창고</span>
|
||||
<input readonly id="warehouse_name" type="text" class="form-control" placeholder="창고 검색" value="${dto.company_name}">
|
||||
<input hidden name="product_id" id="warehouse_id" value="${dto.warehouseId}">
|
||||
<%-- <button id="Warehouse_search_button" class="btn-primary btn" onclick="showSearchModals('창고 검색','warehouse_capacity_currentCapacity')">검색</button>--%>
|
||||
</div>
|
||||
|
||||
<div class="input-group mb-3 w-40 col-centered">
|
||||
<span id='Address_label' class="input-group-text">주소</span>
|
||||
<input readonly id="Address_name" type="text" class="form-control" placeholder="" value="${dto.address}">
|
||||
</div>
|
||||
|
||||
<div class="input-group mb-3 w-40 col-centered">
|
||||
<span id='Capacity_label' class="input-group-text">용적</span>
|
||||
<input readonly id="Capacity_name" type="text" class="form-control" placeholder="" value="${dto.capacity}">
|
||||
</div>
|
||||
|
||||
<div class="input-group mb-3 w-40 col-centered">
|
||||
<span id='RemainingCapacity_label' class="input-group-text">재고량 한도</span>
|
||||
<input readonly id="remainingcapacity" type="text" placeholder="" value="${dto.capacity - dto.current_capacity + dto.quantity}" class="form-control">
|
||||
</div>
|
||||
|
||||
<!--적재할 상품의 재고수-->
|
||||
<div class="input-group mb-3 w-40 col-centered">
|
||||
<span class="input-group-text" id="basic-addon4">기존 재고량</span>
|
||||
<input type="text" name="quantity" id="quantity" class="form-control"
|
||||
placeholder="재고량을 입력하세요" aria-label="재고량" value="${dto.quantity }" readonly
|
||||
aria-describedby="basic-addon1">
|
||||
</div>
|
||||
|
||||
<div class="input-group mb-3 w-40 col-centered">
|
||||
<span class="input-group-text" id="basic-addon5">수정 할 재고량</span>
|
||||
<input type="text" name="quantity" id="quantityAdjustment" class="form-control"
|
||||
placeholder="재고량을 입력하세요" aria-label="재고량"
|
||||
aria-describedby="basic-addon1">
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12 ">
|
||||
<div class="w-40 col-centered" style="text-align: right">
|
||||
<button type="button" class="btn btn-success" id="updateBtn">수정 완료</button>
|
||||
<button type="button" class="btn btn-secondary" id="cancelBtn">취소</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
|
||||
|
||||
|
||||
function showSearchModals(title, val){
|
||||
$("#searchModalLabel").text(title);
|
||||
const data = { name : val};
|
||||
$.ajax({
|
||||
type : 'post', // 타입 (get, post, put 등등)
|
||||
url : '/stock/show_modal', // 요청할 서버url
|
||||
dataType : 'html', // 데이터 타입 (html, xml, json, text 등등)
|
||||
data : data,
|
||||
success : function(result) { // 결과 성공 콜백함수
|
||||
$("#search_modal_body").html(result);
|
||||
searchModalBootStrap.show();
|
||||
},
|
||||
error : function(request, status, error) {
|
||||
alert(error)
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
$(document).ready(function () {
|
||||
$("#updateBtn").on("click", function () {
|
||||
var product_id = $("#product_id").val();
|
||||
var warehouse_id = $("#warehouse_id").val();
|
||||
var quantity = $("#quantity").val();
|
||||
var activation = $("#activation").val();
|
||||
var remainingcapacity = $("#remainingcapacity").val();
|
||||
var id = $("#id").val();
|
||||
var quantityAdjustment = $("#quantityAdjustment").val();
|
||||
|
||||
|
||||
if (!product_id) {
|
||||
alert("제품을 선택해야 합니다.");
|
||||
$("#product_id").focus();
|
||||
return false;
|
||||
}
|
||||
if (!warehouse_id) {
|
||||
alert("적재할 창고를 선택해야 합니다.");
|
||||
$("#warehouse_id").focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!quantity) {
|
||||
alert("재고량를 입력해야 합니다.");
|
||||
$("#quantity").focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (quantity > remainingcapacity) {
|
||||
alert("적재 할 재고량이 재고량 한도를 넘을 수 없습니다.");
|
||||
$("#quantity").focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: "/stock/update_process",
|
||||
type: "put",
|
||||
data: {
|
||||
"id": id,
|
||||
"warehouseId": warehouse_id,
|
||||
"quantity": quantity,
|
||||
"activation": activation,
|
||||
"quantityAdjustment": quantityAdjustment
|
||||
|
||||
},
|
||||
datatype: "json"
|
||||
}).done(function (data) {
|
||||
if (data == true) {
|
||||
alert("재고 정보가 수정되었습니다.");
|
||||
|
||||
var form = document.createElement("form");
|
||||
form.action = "/stock/read";
|
||||
form.method = "POST";
|
||||
document.body.appendChild(form);
|
||||
|
||||
var input = document.createElement("input");
|
||||
input.type = "hidden";
|
||||
input.name = "name";
|
||||
input.value = name;
|
||||
form.appendChild(input);
|
||||
|
||||
form.submit();
|
||||
|
||||
window.location.href = "/stock/list";
|
||||
} else {
|
||||
alert("재고 정보 수정에 실패하였습니다.");
|
||||
}
|
||||
}).fail(function () {
|
||||
alert("오류가 발생했습니다.");
|
||||
}).always(function () {
|
||||
//
|
||||
});
|
||||
|
||||
})
|
||||
|
||||
$("#cancelBtn").on("click", function () {
|
||||
$(location).attr("href", "/stock/list");
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
});
|
||||
</script>
|
||||
Reference in New Issue
Block a user