瀏覽代碼

이태영 - 20210607 SCM 입점주문목록 메뉴 추가 및 미발주목록 엑셀 다운로드 배송비 추가

xodud lee 5 年之前
父節點
當前提交
230cad6b19

+ 55 - 1
src/main/java/com/style24/scm/biz/web/TssOrderController.java

@@ -108,7 +108,7 @@ public class TssOrderController extends TssBaseController {
 	 */
 	@PostMapping("/seller/unorder/list")
 	@ResponseBody
-	public Collection<Order> getOrderSellerUnorderList(@RequestBody Order order) throws Exception {		
+	public Collection<Order> getOrderSellerUnorderList(@RequestBody Order order) {
 		Collection<Order> orderList = coreOrderService.getOrderSellerUnorderList(order);
 		return orderList;
 	}
@@ -276,6 +276,60 @@ public class TssOrderController extends TssBaseController {
 		coreOrderService.updateSellerDelvStartAndPartCancel(orderList, userNo);
 		return super.ok("");
 	}
+
+	/**
+	 * 입점 상품 주문 목록
+	 * @param orderList - 주문목록화면
+	 * @return ModelAndView
+	 * @author xodud1202
+	 * @since 2020. 06. 07
+	 */
+	@GetMapping("/seller/delv/list/form")
+	public ModelAndView sellerDelvListForm() {
+		ModelAndView mav = new ModelAndView();
+
+		// 공급업체
+		String supplyCompCd 	= "";
+		String selfYn 			= "Y";
+
+		log.info("CHECK ROLE_CD :::: {}", TssSession.getInfo().getRoleCd());
+
+		// 입점업체담당자
+		if ("G001_B000".equals(TssSession.getInfo().getRoleCd())) {
+			supplyCompCd = TssSession.getInfo().getSupplyCompCd();
+			selfYn = "N";
+		}
+		// 촬영업체
+		else if ("G001_E000".equals(TssSession.getInfo().getRoleCd())) {
+			supplyCompCd = TssSession.getInfo().getSupplyCompCd();
+			selfYn = "Y";
+		}
+
+		mav.addObject("supplyCompList"	, rendererService.getSupplyCompanyList(supplyCompCd, selfYn)); 	// 공급업제목록
+		mav.addObject("ordDtlStatList"	, rendererService.getAvailCommonCodeList("G013"));		// 주문상세상태코드
+		mav.addObject("shipCompanyList"	, rendererService.getShipCompanyList());						// 택배사 목록
+
+		mav.setViewName("order/OrderSellerDelvEndListForm");
+
+		return mav;
+	}
+
+	/**
+	 * 입점업체 주문 목록 조회
+	 *
+	 * @param order - 주문정보
+	 * @return Collection<Order>
+	 * @author xodud1202
+	 * @since 2021. 06. 07
+	 */
+	@PostMapping("/seller/order/list")
+	@ResponseBody
+	public Collection<Order> getOrderSellerOrderList(@RequestBody Order order) {
+		order.setIfYn("Y");			// 취소, 반품 신청/대기 건 제외하지 않도록 구분값 지정
+		log.info("CHECK IF_YN ::: {}", order.getIfYn());
+		Collection<Order> orderList = coreOrderService.getOrderSellerUnorderList(order);
+		return orderList;
+	}
 	
 	/**
 	 * 입점입고대상목록(교환,반품접수)

+ 381 - 0
src/main/webapp/WEB-INF/views/order/OrderSellerDelvEndListForm.html

@@ -0,0 +1,381 @@
+<!DOCTYPE html>
+<html lang="ko" xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : OrderSellerDelvEndListForm.html
+ * @desc    : 입점업체주문목록조회 Page
+ *============================================================================
+ * SISUN
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.06.07   xodud1202   최초 작성
+ *******************************************************************************
+ -->
+ 
+<div id="main">
+	<!-- 메인타이틀 영역 -->
+	<div class="main-title">
+	</div>
+	<!-- //메인타이틀 영역 -->
+
+	<!-- 메뉴 설명 -->
+	<div class="infoBox menu-desc">
+	</div>
+
+	<form id="searchForm" name="searchForm" action="#" th:action="@{'/order/seller/order/list'}">
+		<input type="hidden" id="searchGb" name="searchGb" />
+		<input type="hidden" id="imageViewYn" name="imageViewYn" />
+
+		<!-- 패널 영역1 -->
+		<div class="panelStyle" >
+			<!-- 검색조건 영역 -->
+			<!-- TITLE -->
+			<div class="panelTitle">
+				<h3>
+					<i class="fa fa-info-circle"></i>아래 검색조건 중 <font color="red">주문번호</font> 또는 <font color="red">검색조건</font> 하나를 꼭 입력해 주세요.
+				</h3>
+				<span class="panelControl">
+					<i class="fa fa-chevron-up"></i>
+				</span>
+			</div>
+
+			<div class="panelContent">
+				<table class="frmStyle">
+					<colgroup>
+						<col style="width:10%;"/>
+						<col style="width:15%;"/>
+						<col style="width:10%;"/>
+						<col style="width:15%;"/>
+						<col style="width:10%;"/>
+						<col style="width:15%;"/>
+						<col style="width:10%;"/>
+						<col style="width:15%;"/>
+					</colgroup>
+					<tr>
+						<th>업체/브랜드<em class="required" title="필수"></em></th>
+						<td colspan="5">
+							<select name="supplyCompCd" id="supplyCompCd">
+								<option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+							</select>
+							<span id="multiBrand"></span>
+						</td>
+					</tr>
+					<tr>
+						<th>주문번호</th>
+						<td>
+							<input type="text" name="ordNo" placeholder="" maxlength="20"/>
+						</td>
+						<th>주문자명</th>
+						<td>
+							<input type="text" name="ordNm" placeholder="" maxlength="20"/>
+						</td>
+						<th>상품코드</th>
+						<td>
+							<input type="text" name="goodsCd" placeholder="" maxlength="20"/>
+						</td>
+						<th>주문상세상태</th>
+						<td>
+							<select name="ordDtlStat" id="ordDtlStat">
+								<option value="G013_20">결제완료</option>
+								<option value="G013_30">상품준비중</option>
+								<option value="G013_40">배송준비중</option>
+								<option value="G013_50" selected>배송중</option>
+								<option value="G013_60">배송완료</option>
+								<option value="G013_70">구매확정</option>
+							</select>
+						</td>
+					</tr>
+					<tr>
+						<th>조회일자</th>
+						<td colspan="7">
+							<select name="searchDateGb">
+								<option value="ordDt">주문일자</option>
+							</select>
+							<span id="terms"></span>
+						</td>
+					</tr>
+				</table>
+
+				<ul class="panelBar">
+					<li class="center">
+						<button type="button" class="btn btn-info btn-lg" id="btnOrderSearch">조회</button>
+						<button type="button" class="btn btn-gray btn-lg" id="btnInit">초기화</button>
+					</li>
+				</ul>
+
+			</div>
+		</div>
+
+		<div class="panelStyle">
+			<!--<ul class="panelBar">
+				<li>
+					<button type="button" class="btn btn-info btn-lg" onclick="cfnDownloadSampleFile('SF020');">입점송장번호등록다운로드</button>
+				</li>
+				<li class="aR">
+					<button type="button" id="btnExcelDown" class="btn btn-info btn-lg">엑셀다운로드</button>
+					<button type="button" id="btnInvoiceExcelUpLoad" class="btn btn-success btn-lg">송장엑셀업로드</button>
+					<button type="button" id="btnSave" class="btn btn-success btn-lg">저장</button>
+				</li>
+			</ul>-->
+
+			<div class="panelContent" style="overflow: hidden;">
+				<div id="gridList" style="width: 100%; height: 400px;" class="ag-theme-balham lh30"></div>
+			</div>
+		</div>
+
+	</form>
+</div>
+	
+<script type="text/javascript" src="/ux/plugins/gaga/gaga.paging.js?v=2019072202"></script>
+
+<script th:inline="javascript">
+/*<![CDATA[*/
+var sessRoleCd 		= [[${sessionInfo.roleCd}]];
+var shipCompanyList = gagajf.convertToArray([[${shipCompanyList}]]);
+
+var columnDefs = [
+	{width: 40, minWidth: 40, cellClass: 'text-right', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
+	{headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
+	{headerName: "입점업체",			field:"supplyCompNm",		width:100, cellClass: 'text-center'},
+	{headerName: "입점업체코드",		field:"supplyCompCd",		width:100, cellClass: 'text-center', hide: true},
+	{headerName: "브랜드",			field:"brandKnm",			width:100, cellClass: 'text-center'},
+	{headerName: "주문번호",			field:"ordNo",				width:100, cellClass: 'text-center'},
+	{headerName: "주문상세번호",		field:"ordDtlNo",			width:100, cellClass: 'text-center'},
+	{headerName: "주문상세상태",		field:"ordDtlStatNm", 		width:100, cellClass: 'text-center'},
+	{headerName: "주문자명",			field:"ordNm",				width:100, cellClass: 'text-center'},
+	{headerName: "주문일시",			field:"ordDt",				width:100, cellClass: 'text-center',
+		cellRenderer		: function (params) {
+			return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
+		}
+	},
+	{headerName: "결제수단",			field:"payMeansNm",			width:100, cellClass: 'text-center'},
+	{headerName: "주문자휴대전화",		field:"ordPhnno",			width:100, cellClass: 'text-center'},
+	{headerName: "수령자명",			field:"recipNm",			width:100, cellClass: 'text-center'},
+	{headerName: "수령자휴대전화",		field:"recipPhnno",			width:120, cellClass: 'text-center'},
+	{headerName: "수령자우편번호",		field:"recipZipcode",		width:120, cellClass: 'text-center'},
+	{headerName: "수령자기본주소",		field:"recipBaseAddr",		width:120, cellClass: 'text-center'},
+	{headerName: "수령자상세주소",		field:"recipDtlAddr",		width:120, cellClass: 'text-center'},
+	{headerName: "업체상품코드",		field:"supplyGoodsCd",		width:100, cellClass: 'text-center'},
+	{headerName: "상품코드",			field:"goodsCd",			width:100, cellClass: 'text-center'},
+	{headerName: "상품명",			field:"goodsNm",			width:100, cellClass: 'text-center'},
+	{headerName: "사이즈",			field:"optCd2",				width:100, cellClass: 'text-center'},
+	{headerName: "주문수량",			field:"ordQty",				width:100, cellClass: 'text-center'},
+	{headerName: "취소수량",			field:"cnclRtnQty",			width:100, cellClass: 'text-center'},
+	{headerName: "주문금액",			field:"ordAmt",				width:100, cellClass: 'text-center'},
+	{headerName: "할인금액",			field:"totDcAmt",			width:100, cellClass: 'text-center'},
+	{headerName: "실결제금액",		field:"realOrdAmt",			width:100, cellClass: 'text-center'},
+	{headerName: "배송업체",			field:"shipCompCd",			width:150, cellClass: 'text-center'},
+	{headerName: "송장",				field:"invoiceNo",			width:150, cellClass: 'text-center'}
+];
+
+var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
+gridOptions.suppressRowClickSelection = true;
+gridOptions.rowSelection = 'multiple';
+gridOptions.stopEditingWhenGridLosesFocus = true;
+
+// 조회버튼
+$('#btnOrderSearch').on('click', function() {
+	fnSearch();
+});
+
+// 검색
+var fnSearch = function() {
+	var formId = '#searchForm';
+	var ordNo = $('#searchForm input[name=ordNo]').val();
+	var stDate = $('#stDate').val();
+	var edDate = $('#edDate').val();
+
+	if (gagajf.isNull(ordNo)) {
+		if (gagajf.isNull(stDate)) {
+			mcxDialog.alert('시작 기간을 입력하세요.');
+			return;
+		}
+
+		if (gagajf.isNull(edDate)) {
+			mcxDialog.alert('종료 기간을 입력하세요.');
+			return;
+		}
+	}
+
+	gagaAgGrid.fetch($(formId).prop('action'), gridOptions, formId);
+}
+
+// 엑셀다운로드 시 주문상태 변경
+$('#btnExcelDown').on('click', function () {
+
+	var selectedData = gridOptions.api.getSelectedRows();
+
+	if (selectedData.length == 0) {
+		mcxDialog.alert('선택된 행이 없습니다.');
+		return;
+	}
+
+	mcxDialog.confirm('엑셀 다운로드 하시겠습니까?', {
+		cancelBtnText	: "취소",
+		sureBtnText		: "확인",
+		sureBtnClick	: function(){
+			var jsonData = JSON.stringify(selectedData);
+			gagajf.ajaxJsonSubmit('/order/seller/unorder/status/save', jsonData, fnExcelDownCollback);
+		}
+	});
+});
+
+// 엑셀다운로드
+var fnExcelDownCollback = function(flag){
+	var selectedData = gridOptions.api.getSelectedRows();
+
+	if (selectedData.length == 0) {
+		mcxDialog.alert('선택된 행이 없습니다.');
+		return;
+	}
+
+	let ordDtlNoArr = new Array();
+	for(let i = 0 ; i < selectedData.length ; i++) {
+		ordDtlNoArr.push(selectedData[i].ordDtlNo);
+	}
+
+	let order = {
+		ordDtlNoArr : ordDtlNoArr
+	};
+
+	// var jsonData = JSON.stringify(order);
+	/*gagajf.ajaxJsonSubmit('/order/seller/unorder/excel/list', jsonData, null);*/
+	$('#excelList').attr({ href : '/order/seller/unorder/excel/list?ordDtlNoArr=' + ordDtlNoArr }).get(0).click();
+
+	// $('#excelList').attr({ href : '/order/seller/unorder/excel/list' }).get(0).click();
+}
+
+// 송장 엑셀 업로드
+$('#btnInvoiceExcelUpLoad').on('click', function() {
+	cfnExcelUploadPopup('invoiceExcelUpload', 'invoiceExcelUpload');
+});
+
+var invoiceExcelUpload = function(result){
+	mcxDialog.confirm('송장 변경을 진행하시겠습니까?', {
+		cancelBtnText	: "취소"
+		, sureBtnText	: "확인"
+		, sureBtnClick	: function(){
+			var data = {
+				procJob 		: result.procJob
+				, excelFileNm 	: result.excelFileNm
+			};
+
+			var jsonData = JSON.stringify(data);
+			gagajf.ajaxJsonSubmit('/order/seller/unorder/invoice/excelupload/save', jsonData, fnInvoiceSaveCollback);
+		}
+	});
+}
+
+// 송장번호 저장후
+var fnInvoiceSaveCollback = function(result){
+	mcxDialog.alert(result.msg);
+	fnSearch();
+	return;
+}
+
+//송장번호 저장시
+$('#btnSave').on('click', function () {
+
+	var selectedData = gridOptions.api.getSelectedRows();
+
+	if (selectedData.length == 0) {
+		mcxDialog.alert('선택된 행이 없습니다.');
+		return;
+	}
+
+	var checkFlag = false;
+	$.each(selectedData, function(idx, item) {
+		if (gagajf.isNull(item.shipCompCd)){
+			checkFlag = true;
+			mcxDialog.alert('배송업체를 선택하세요.');
+			return;
+		}
+
+		if (gagajf.isNull(item.invoiceNo)){
+			checkFlag = true;
+			mcxDialog.alert('송장번호를 입력하세요.');
+			return;
+		}
+	});
+
+	if (checkFlag){
+		return false;
+	}
+
+	mcxDialog.confirm('저장 하시겠습니까?', {
+		cancelBtnText	: "취소",
+		sureBtnText		: "확인",
+		sureBtnClick	: function(){
+			var jsonData = JSON.stringify(selectedData);
+			gagajf.ajaxJsonSubmit('/order/seller/unorder/invoice/save', jsonData, fnInvoiceSaveCollback);
+
+		}
+	});
+
+});
+
+// 초기화 클릭시
+$('#btnInit').on('click', function() {
+	$('#searchForm')[0].reset();
+	$("#multiBrand").empty();
+});
+
+// 자사/입점 변경여부
+$("#searchForm input[name=selfYn]").bind('click change', function () {
+	var radioValue = $(this).val();
+	var selfGb = "S";	// 자사 공급 업체
+
+	if (radioValue == "N"){
+		selfGb = "E";	//입점 공급업체
+	}
+
+	var actionUrl = '/renderer/supply/company/list/'+ selfGb;
+
+	$('#searchForm').find('#multiBrand').empty();
+
+	cfnCreateCombo(actionUrl, $('#searchForm select[name=supplyCompCd]'), "[전체]", "");
+});
+
+// 업체변경시
+$('#searchForm select[name=supplyCompCd]').on('change', function() {
+	var actionUrl = '/renderer/supplyCompany/brand/list/' + $(this).val();
+
+	if (sessRoleCd == "G001_B000") {
+		actionUrl = '/renderer/brand/AuthBrandlist';
+	}
+
+	cfnCreateMultiCombo(actionUrl,"multiBrand",  "[전체]",null, 'Y');
+});
+
+// 업체 브랜드 초기화
+var fnSupplyBrandInit = function(){
+	$("#searchForm select[name=supplyCompCd]").val([[${sessionInfo.supplyCompCd}]]);
+	$('#searchForm').find('#multiBrand').empty();
+
+	var actionUrl = '/renderer/brand/AuthBrandlist';
+
+	cfnCreateMultiCombo(actionUrl,"multiBrand",  "[전체]",null, 'Y');
+}
+
+//초기설정
+$(document).ready(function() {
+	// 달력기능 활성화
+	cfnCreateCalendar('#terms', 'stDate', 'edDate', true, '주문');
+	gagaAgGrid.createGrid('gridList', gridOptions);
+	gridOptions.api.hideOverlay();
+
+	if(sessRoleCd == "G001_B000") {
+		fnSupplyBrandInit();
+	}
+});
+
+</script>
+
+</html>
+
+
+
+
+