소스 검색

샵링커 쇼핑몰주문번호 오류수정, 가용재고 툴팁표시 등

jmh 4 년 전
부모
커밋
09f429446c

+ 46 - 1
src/main/java/com/style24/admin/biz/service/TsaShoplinkerService.java

@@ -1047,7 +1047,7 @@ public class TsaShoplinkerService {
 				,"주문 상품번호", "샵링커 상품번호", "자사 상품코드", "상품명", "주문수량", "주문금액", "판매단가", "공급가", "옵션명", "주문수집일자", "제휴몰등록일"};
 
 		// DB 처리 시 사용되는 파라미터명(셀명) 설정
-		String[] cellNames = {"UPLOAD_STAT", "UPLOAD_FAIL_CD", "UPLOAD_FAIL_REASON", "ORD_NO", "SHOPLINKER_ORDER_ID", "EXTMALL_ORDER_ID", "MALL_NAME", "BAESONG_STATUS"
+		String[] cellNames = {"UPLOAD_STAT", "UPLOAD_FAIL_CD", "UPLOAD_FAIL_REASON", "ORD_NO", "SHOPLINKER_ORDER_ID", "MALL_ORDER_ID", "MALL_NAME", "BAESONG_STATUS"
 				, "ORDER_PRODUCT_ID", "SHOPLINKER_PRODUCT_ID", "PARTNER_PRODUCT_ID", "PRODUCT_NAME", "QUANTITY", "ORDER_PRICE", "SALE_PRICE", "SUPPLY_PRICE", "SKU", "ORDER_REG_DATE", "EXTMALL_REG_DT"};
 
 		String[] cellTypes = {
@@ -1073,6 +1073,51 @@ public class TsaShoplinkerService {
 		}
 	}
 
+	/**
+	 * 주문수집-목록 엑셀다운로드(제휴몰 주문업로드 양식)
+	 *
+	 * @param shoplinkerOrder
+	 * @param excelFilenameWithPath - 경로를 포함한 엑셀파일명
+	 * @return
+	 * @author jmh
+	 * @since 2021. 06. 29
+	 */
+	public void getOrderExcelExtmallFormList(ShoplinkerOrder shoplinkerOrder, String excelFilenameWithPath) {
+
+		// 헤더 title 설정
+		String[] listTitles = { "일련번호", "제휴몰ID", "제휴주문번호", "물품주문번호", "제휴상품코드", "자사상품코드", "상품명", "SKUCode"
+				,"판매가", "주문수량", "배송비", "주문자", "주문자-전화", "주문자-휴대폰", "주문자-이메일", "수령자", "수령자-전화", "수령자-휴대폰"
+				, "수령자-우편번호","수령자-도로명주소", "수령자-상세주소", "배송메시지"};
+
+		// DB 처리 시 사용되는 파라미터명(셀명) 설정
+		String[] cellNames = {"NO", "MALL_ID", "MALL_ORDER_ID", "SHOPLINKER_ORDER_ID", "SHOPLINKER_PRODUCT_ID", "PARTNER_PRODUCT_ID", "PRODUCT_NAME", "OPT_CD"
+				, "SALE_PRICE", "QUANTITY", "BAESONG_BI", "ORDER_NAME", "ORDER_TEL", "ORDER_CEL", "ORDER_EMAIL", "RECEIVE", "RECEIVE_TEL", "RECEIVE_CEL"
+				, "RECEIVE_ZIPCODE", "RECEIVE_ADDR", "RECIP_DTL_ADDR", "DELIVERY_MSG"};
+
+		String[] cellTypes = {
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_LEFT.name(), GagaExcelConstants.CellType.CHAR_LEFT.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_LEFT.name(),
+			GagaExcelConstants.CellType.CHAR_LEFT.name(), GagaExcelConstants.CellType.CHAR_LEFT.name()};
+
+		Collection<GagaMap> dataList = admShoplinkerDao.getOrderExcelList(shoplinkerOrder);
+
+		try {
+
+			GagaExcelUtil.createExcel(excelFilenameWithPath, dataList, "샵링커 주문 정보", listTitles, cellNames, cellTypes, TsaConstants.EXCEL_FOOTER_TITLE);
+
+		} catch (Exception e) {
+			throw new IllegalStateException(e);
+		}
+	}
+
 	/**
 	 * 송장전송-전송 (엑셀용)
 	 *

+ 41 - 15
src/main/java/com/style24/admin/biz/web/TsaShoplinkerController.java

@@ -5,6 +5,7 @@ import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
 
@@ -559,6 +560,10 @@ log.info(" #### SHOPLINKER CHKE 1 - "+runMap.getRunCnt()+" | "+runMap.getSidOver
 		String excelfileName = "샵링커_주문_" + GagaDateUtil.getTodayDateTime() + ".xlsx";
 		String excelFilenameWithPath = GagaFileUtil.getConcatenationPath(env.getProperty("download.path"), "excel", excelfileName);
 
+		// multi row 검색관련 처리
+		if (!StringUtils.isBlank(shoplinkerOrder.getCondition())) {
+			shoplinkerOrder.setConditionList(shoplinkerOrder.getCondition().replaceAll("\r", "").trim().split("\n"));
+		}
 		shoplinkerOrder.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
 		shoplinkerOrder.setPageable(new TscPageRequest(shoplinkerOrder.getPageNo() - 1, shoplinkerOrder.getPageSize()));
 		shoplinkerOrder.getPageable().setTotalCount(admShoplinkerService.getShoplinkerOrderListCount(shoplinkerOrder));
@@ -568,6 +573,32 @@ log.info(" #### SHOPLINKER CHKE 1 - "+runMap.getRunCnt()+" | "+runMap.getSidOver
 		return GagaFileUtil.writeFile(request, excelFilenameWithPath);
 	}
 
+	/**
+	 * 주문수집관리-엑셀다운로드 (제휴몰 주문업로드 양식)
+	 *
+	 * @param shoplinkerOrder
+	 * @return
+	 * @author jmh
+	 * @since 2021. 06. 29
+	 */
+	@GetMapping("/order/excel/extmall_form_list")
+	public ResponseEntity<InputStreamResource> downloadOrderInfoExcelExtmallFormList(HttpServletRequest request, ShoplinkerOrder shoplinkerOrder) throws Exception {
+		String excelfileName = "샵링커_주문(제휴몰양식)_" + GagaDateUtil.getTodayDateTime() + ".xlsx";
+		String excelFilenameWithPath = GagaFileUtil.getConcatenationPath(env.getProperty("download.path"), "excel", excelfileName);
+
+		// multi row 검색관련 처리
+		if (!StringUtils.isBlank(shoplinkerOrder.getCondition())) {
+			shoplinkerOrder.setConditionList(shoplinkerOrder.getCondition().replaceAll("\r", "").trim().split("\n"));
+		}
+		shoplinkerOrder.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
+		shoplinkerOrder.setPageable(new TscPageRequest(shoplinkerOrder.getPageNo() - 1, shoplinkerOrder.getPageSize()));
+		shoplinkerOrder.getPageable().setTotalCount(admShoplinkerService.getShoplinkerOrderListCount(shoplinkerOrder));
+
+		admShoplinkerService.getOrderExcelExtmallFormList(shoplinkerOrder, excelFilenameWithPath);
+
+		return GagaFileUtil.writeFile(request, excelFilenameWithPath);
+	}
+
 
 	/**
 	 * 송장전송관리-화면
@@ -701,8 +732,10 @@ log.info(" #### SHOPLINKER CHKE 1 - "+runMap.getRunCnt()+" | "+runMap.getSidOver
 		String excelfileName = "샵링커_송장_" + GagaDateUtil.getTodayDateTime() + ".xlsx";
 		String excelFilenameWithPath = GagaFileUtil.getConcatenationPath(env.getProperty("download.path"), "excel", excelfileName);
 
-
-
+		// multi row 검색관련 처리
+		if (!StringUtils.isBlank(shoplinkerInvoice.getCondition())) {
+			shoplinkerInvoice.setConditionList(shoplinkerInvoice.getCondition().replaceAll("\r", "").trim().split("\n"));
+		}
 		shoplinkerInvoice.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
 		shoplinkerInvoice.setPageable(new TscPageRequest(shoplinkerInvoice.getPageNo() - 1, shoplinkerInvoice.getPageSize()));
 		shoplinkerInvoice.getPageable().setTotalCount(admShoplinkerService.getSendInvoiceListCount(shoplinkerInvoice));
@@ -902,13 +935,6 @@ System.out.println("####### : "+re.getResult());
 			  	System.out.println(i+"### 1.단품 result2 :: "+resultMsg.getMessage());
 			}*/
 
-			testXmlUrl = "http://ts5000.ipdisk.co.kr:8999/shoplinker/goods_reg/T142TS200P/product.xml";
-			responseXmlData =   shoplinkerUtil.callShoplinkerApiByGet(GagaShoplinkerConstants.API_DOMAIN+"/Product/attribute_prod_insert.php?iteminfo_url="+URLEncoder.encode(testXmlUrl), "");
-			shoplinkerResult =  (com.gagaframework.shoplinker.domain.goods.result.Shoplinker)shoplinkerUtil.unmarshal(com.gagaframework.shoplinker.domain.goods.result.Shoplinker.class, responseXmlData);
-			resultMsg = shoplinkerResult.getResultMessage();
-			System.out.println("\n\n\n### 2.상품 result1 :: "+resultMsg.getResult());
-			System.out.println(" :: "+responseXmlData);
-			System.out.println("### 2.상품 result2 :: "+resultMsg.getMessage());
 
 	for( i=1; i< 1; i++) {
 
@@ -983,13 +1009,13 @@ System.out.println("####### : "+re.getResult());
 */
 
 			//99 주문수집 목록확인
-/*
+
 			List<com.gagaframework.shoplinker.domain.orderlist.Order> rOrdList;
 			com.gagaframework.shoplinker.domain.orderlist.Header rHeader;
 			com.gagaframework.shoplinker.domain.orderlist.Shoplinker shoplinkerOrdResult;
 
-			testXmlUrl = "http://ts5000.ipdisk.co.kr:8999/shoplinker/order/order_time.xml"; // 20210401  143000 ~ 150000
-			//testXmlUrl = "http://ts5000.ipdisk.co.kr:8999/shoplinker/order/0528/order_real_1.xml";	// 28~31일 15시~07시
+			//testXmlUrl = "http://ts5000.ipdisk.co.kr:8999/shoplinker/order/order_time.xml"; // 20210401  143000 ~ 150000
+			testXmlUrl = "http://ts5000.ipdisk.co.kr:8999/shoplinker/order/order.xml";	// 28~31일 15시~07시
 			//testXmlUrl = "http://ts5000.ipdisk.co.kr:8999/shoplinker/order/0528/order_real_28.xml";	// 28 15시~235959  7개
 			//testXmlUrl = "http://ts5000.ipdisk.co.kr:8999/shoplinker/order/0528/order_real_31.xml";	// 31일 000000시~07시  5582개
 			responseXmlData =   shoplinkerUtil.callShoplinkerApiByGet(GagaShoplinkerConstants.API_DOMAIN+"/Order/orderlist.php?iteminfo_url="+testXmlUrl, "");
@@ -1008,10 +1034,10 @@ System.out.println("####### : "+re.getResult());
 				System.out.println("### 주문실패 msg :: "+orderFailResultMsg.getMessage());
 
 			}else {
-				System.out.println("\n\n\n### 7.주문 result1 :: "+responseXmlData);
+				//System.out.println("\n\n\n### 7.주문 result1 :: "+responseXmlData);
 
 				//System.out.println(" url chk:: "+GagaShoplinkerConstants.API_DOMAIN+"/Order/orderlist.php?iteminfo_url="+ testXmlUrl);
-				System.out.println("### 7.주문 result2 :: "+rHeader.toString());
+				//System.out.println("### 7.주문 result2 :: "+rHeader.toString());
 				System.out.println("### 7.주문 result22 :: "+rHeader.getTotalCount()); // 1233
 				System.out.println("### 7.주문 result23 :: "+rHeader.getTotalPage()); //3
 				System.out.println("### 7.주문 result24 :: "+rHeader.getCurrentlyPage()); //1
@@ -1025,7 +1051,7 @@ System.out.println("####### : "+re.getResult());
 				//}
 
 			}
-*/
+
 			//99 주문수집 목록확인 끝
 
 		}catch(Exception e) {

+ 1 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsaShoplinker.xml

@@ -628,7 +628,7 @@
 	              </when>
 
 	              <when test='search != null and search == "mallOrderId"'>
-	              	AND UPPER(B.EXTMALL_ORDER_ID) IN
+	              	AND UPPER(A.MALL_ORDER_ID) IN
 			            <foreach collection="conditionList" item="item" index="index"  open="(" close=")" separator=",">
 			       		UPPER(#{item})
 			            </foreach>

+ 5 - 1
src/main/webapp/WEB-INF/views/ocm/ExtmallOrderRegisterForm.html

@@ -95,7 +95,11 @@
 			cellEditor: 'textCellEditor',
 			cellEditorParams: { maxlength: 14, validType: 'numeric'}
 		},
-		{headerName: "주문수량",			field: "ordQty",				width: 100, cellClass: 'text-center'},
+		{headerName: "주문수량", 			field: "ordQty", 				width: 100, cellClass: 'text-center'
+			,valueFormatter: function(params) {return params.value.addComma();},
+			cellEditor: 'textCellEditor',
+			cellEditorParams: { maxlength: 14, validType: 'numeric'}
+		},
 		{headerName: "주문금액", 			field: "ordAmt", 				width: 100, cellClass: 'text-center'
 			,valueFormatter: function(params) {return params.value.addComma();},
 			cellEditor: 'textCellEditor',

+ 46 - 1
src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerOrderForm.html

@@ -154,7 +154,27 @@
 				<ul class="panelBar">
 					<li>
 						<button type="button" class="btn btn-default btn-lg" onclick="fnExcelDownLoad();">엑셀다운로드</button>
+						<!-- <button type="button" class="btn btn-default btn-lg" onclick="fnExcelExtmallUploadForm();">엑셀다운로드(제휴몰주문업로드 폼)</button> -->
+						<!-- <button type="button" class="btn btn-success btn-lg" id="btnSave">대기상태전환</button> -->
+						
+						&nbsp;&nbsp;&nbsp;가용재고 실패사유&nbsp;
+						<!-- 아이콘 툴팁 -->
+						<div class="iconTooltip">
+							<i class="fa fa-info" aria-hidden="true"></i>
+							<span class="left aL" style="width:430px;">
+								<em>* 실패사유가 "가용재고없음"인 경우 참고내용 *</em><br/><br/>
+								1. 품절입니다<br/>
+								&nbsp;&nbsp;&nbsp;&nbsp;→ 상품상태가 일시품절(G008_70)인 건<br/>
+								2. 판매중인 상품이 아닙니다.<br/>
+								&nbsp;&nbsp;&nbsp;&nbsp;→ 상품상태가 일시품절도 아니고, 승인완료도 아닌건<br/>
+								3. "단품코드" 옵션은 품절입니다<br/>
+								&nbsp;&nbsp;&nbsp;&nbsp;→ tb_option 결품여부가 Y인 경우<br/>
+								4. 옵션의 재고가 충분하지 않습니다.<br/>
+								&nbsp;&nbsp;&nbsp;&nbsp;→ 가용재고가 적을 때 ( ex 주문수량 3개 중 재고가 1개밖에 없을 때)
+							</span>
+						</div>
 					</li>
+
 					<li class="right">
 						검색결과 : <strong><span id="gridRowTotalCount">0</span> 건</strong>&nbsp;
 						쪽번호 <span id="pgNo">0</span>/ <strong id="endPgNo">0</strong>&nbsp;&nbsp;
@@ -242,7 +262,7 @@
 				}
 			}
 		},
-		{headerName: "쇼핑몰 주문번호", field: "extmallOrderId", width: 130, cellClass: 'text-center'},
+		{headerName: "쇼핑몰 주문번호", field: "mallOrderId", width: 130, cellClass: 'text-center'},
 		{headerName: "쇼핑몰 명", field: "mallName", width: 130, cellClass: 'text-center'},
 		{headerName: "배송상태[발주확인]", field: "baesongStatus", width: 130, cellClass: 'text-center'},
 		{headerName: "주문 상품번호", field: "orderProductId", width: 130, cellClass: 'text-center'},
@@ -275,6 +295,9 @@
 	];
 
 	let gridOptions = gagaAgGrid.getGridOptions(columnDefs);
+	// 중복 선택 가능
+	gridOptions.rowSelection = 'multiple';
+ 	gridOptions.suppressRowClickSelection = true;
 
 	// Cell click
 	gridOptions.onCellClicked = function(event) {
@@ -420,6 +443,28 @@
 	}
 	/**************** 엑셀다운로드 // *****************************************************/
 
+	/**************** 제휴몰 주문업로드 형식 엑셀다운로드 *****************************************************/
+	var fnExcelExtmallUploadForm = function(){
+		var formId = '#searchForm';
+		if (gridOptions.api.getDisplayedRowCount() <= 0){
+			mcxDialog.alert("조회된 데이터가 없습니다.<br/>다시 조회 후 다운로드 받으세요.");
+			return;
+		}
+
+		var fromDate = parseInt($('#searchForm input[name=stDate]').val().replaceAll("-", ""));
+		var toDate =parseInt($('#searchForm input[name=edDate]').val().replaceAll("-", ""));
+		if( 4 < (toDate - fromDate)){
+			mcxDialog.alert("주문수집일자를 3일 이내의 기간으로 설정 후 다운로드해주세요.");
+			return;
+		}
+
+		var params =  $(formId).serialize();
+		$('#ExcelList').attr({ href : '/shoplinker/order/excel/extmall_form_list?' + params }).get(0).click();
+	}
+	/**************** 제휴몰 주문업로드 형식 엑셀다운로드 // *****************************************************/
+
+	
+	
 	$(document).ready(function() {
 
 		cfnCreateCalendar('#terms', 'stDate', 'edDate', true, '수집');