Explorar el Código

Merge branch 'develop' into bin2107

bin2107 hace 4 años
padre
commit
8fec52a97a

+ 23 - 6
src/main/java/com/style24/admin/biz/service/TsaShoplinkerService.java

@@ -19,6 +19,7 @@ import com.gagaframework.web.util.GagaFileUtil;
 import com.style24.admin.biz.dao.TsaShoplinkerDao;
 import com.style24.admin.support.env.TsaConstants;
 import com.style24.core.biz.dao.TscShoplinkerDao;
+import com.style24.core.biz.service.TscShoplinkerService;
 import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.persistence.domain.ExtmallOrder;
@@ -51,6 +52,9 @@ public class TsaShoplinkerService {
 
 	@Autowired
 	private TscShoplinkerDao tscShoplinkerDao;
+	
+	@Autowired
+	private TscShoplinkerService tscShoplinkerService;
 
 	private String fileAddNm; // 유저번호_년월일시분초
 
@@ -1044,11 +1048,11 @@ public class TsaShoplinkerService {
 
 		// 헤더 title 설정
 		String[] listTitles = { "제휴몰주문등록상태", "실패사유", "업로드실패사유", "스타일24 주문번호", "샵링커 주문번호", "쇼핑몰 주문번호", "쇼핑몰 명", "배송상태[발주확인]"
-				,"주문 상품번호", "샵링커 상품번호", "자사 상품코드", "상품명", "주문수량", "주문금액", "판매단가", "공급가", "옵션명", "주문수집일자", "제휴몰등록일"};
+				,"주문 상품번호", "샵링커 상품번호", "자사 상품코드", "상품명", "주문수량", "주문금액", "판매단가", "공급가", "옵션코드", "옵션명", "주문수집일자", "제휴몰등록일"};
 
 		// DB 처리 시 사용되는 파라미터명(셀명) 설정
 		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"};
+				, "ORDER_PRODUCT_ID", "SHOPLINKER_PRODUCT_ID", "PARTNER_PRODUCT_ID", "PRODUCT_NAME", "QUANTITY", "ORDER_PRICE", "SALE_PRICE", "SUPPLY_PRICE", "SKU_MATCH_CODE", "SKU", "ORDER_REG_DATE", "EXTMALL_REG_DT"};
 
 		String[] cellTypes = {
 			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
@@ -1060,7 +1064,7 @@ public class TsaShoplinkerService {
 			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()};
 
 		Collection<GagaMap> dataList = admShoplinkerDao.getOrderExcelList(shoplinkerOrder);
 
@@ -1090,12 +1094,12 @@ public class TsaShoplinkerService {
 				, "수령자-우편번호","수령자-도로명주소", "수령자-상세주소", "배송메시지"};
 
 		// DB 처리 시 사용되는 파라미터명(셀명) 설정
-		String[] cellNames = {"NO", "MALL_ID", "MALL_ORDER_ID", "SHOPLINKER_ORDER_ID", "SHOPLINKER_PRODUCT_ID", "PARTNER_PRODUCT_ID", "PRODUCT_NAME", "OPT_CD"
+		String[] cellNames = {"NO", "MALL_ID", "MALL_ORDER_ID", "SHOPLINKER_ORDER_ID", "SHOPLINKER_PRODUCT_ID", "PARTNER_PRODUCT_ID", "PRODUCT_NAME", "SKU_MATCH_CODE"
 				, "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_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_LEFT.name(), GagaExcelConstants.CellType.CHAR_LEFT.name(),
@@ -1108,7 +1112,20 @@ public class TsaShoplinkerService {
 			GagaExcelConstants.CellType.CHAR_LEFT.name(), GagaExcelConstants.CellType.CHAR_LEFT.name()};
 
 		Collection<GagaMap> dataList = admShoplinkerDao.getOrderExcelList(shoplinkerOrder);
-
+		
+		GagaMap addrMap; 	//주소 분리
+		int cnt = 1;
+		for( GagaMap map : dataList ) {
+			if( !"".equals(map.getString("RECEIVE_ADDR"))) {
+				map.setInt("NO", cnt);
+				cnt ++;
+				
+				addrMap = tscShoplinkerService.returnChangeAddr(map.getString("RECEIVE_ADDR"));
+				map.setString("RECEIVE_ADDR", addrMap.getString("addrBase"));
+				map.setString("RECIP_DTL_ADDR", addrMap.getString("addrDtl"));
+			}
+		}
+		
 		try {
 
 			GagaExcelUtil.createExcel(excelFilenameWithPath, dataList, "샵링커 주문 정보", listTitles, cellNames, cellTypes, TsaConstants.EXCEL_FOOTER_TITLE);

+ 23 - 81
src/main/java/com/style24/admin/biz/web/TsaShoplinkerController.java

@@ -546,7 +546,26 @@ log.info(" #### SHOPLINKER CHKE 1 - "+runMap.getRunCnt()+" | "+runMap.getSidOver
 			}
 		}
 	}
-
+	
+	 
+	/**
+	 * 샵링커주문수집-가용재고로 인한 실패 건, 실패사유플래그 변경(엑셀에서 재주문 가능하도록)
+	 * 
+	 * @param ShoplinkerOrder
+	 * @author jmh
+	 * @throws Exception
+	 * @since 2021. 7. 28
+	 */
+	@PostMapping("/order/change/saveFailFlag")
+	@ResponseBody
+	public GagaResponse orderChangeSaveFailFlag(@RequestBody Collection<ShoplinkerOrder> orderList) throws Exception {
+		// ※ 샵링커 주문수집시, 재고로인한 실패건은 고객에게 알림이 발송된다. 이 경우 제휴몰 엑셀업로드시 주문등록이 되지 않도록 처리했음.(고객에게 알림이 발송된건 이므로)
+		//   그런데 이 경우도 cs팀에서 엑셀주문등록이 가능하도록 해달라고 요청 함. => 플래그 변경으로 주문등록이 가능한 상태로 만들도록 처리 
+		
+		tscShoplinkerService.updateOrderFailFlag(orderList);
+		return super.ok(message.getMessage("SUCC_0002"));
+	}
+	
 	/**
 	 * 주문수집관리-엑셀다운로드
 	 *
@@ -878,64 +897,9 @@ log.info(" #### SHOPLINKER CHKE 1 - "+runMap.getRunCnt()+" | "+runMap.getSidOver
 			com.gagaframework.shoplinker.domain.goods.result.ResultMessage resultMsg;
 			com.gagaframework.shoplinker.domain.invoice.ObjectFactory obf;
 
-			/**** 송장전송테스트 ************/
-			com.gagaframework.shoplinker.domain.invoice.ResultMessage invoceMsg;
-			responseXmlData = "<?xml version='1.0' encoding='euc-kr'?>\r\n"
-					+ "<ResultMessage>\r\n"
-					+ "<result>false</result>\r\n"
-					+ "<id>123</id>\r\n"
-					+ "<message><![CDATA[택배사 명칭이 일치하지 않거나 코드가 일치하지 않습니다. 재전송 바랍니다.]]></message>\r\n"
-					+ "</ResultMessage>";
-
-
-			//xx invoceMsg = (com.gagaframework.shoplinker.domain.invoice.ResultMessage) shoplinkerUtil.unmarshal(null, responseXmlData);
-			//xx obf = (com.gagaframework.shoplinker.domain.invoice.ObjectFactory) shoplinkerUtil.unmarshal(com.gagaframework.shoplinker.domain.invoice.ObjectFactory.class, responseXmlData);
-
-			//invoceMsg = (com.gagaframework.shoplinker.domain.invoice.ResultMessage) shoplinkerUtil.unmarshal(com.gagaframework.shoplinker.domain.invoice.ResultMessage, responseXmlData);
-
-			/*
-			com.style24.admin.support.util.ResultMessage22 re;
-
-			 JAXBContext jaxbContext = JAXBContext.newInstance(new Class[] {com.style24.admin.support.util.ResultMessage22.class});
-			 Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
-			 System.out.println("####### :: "+unmarshaller.unmarshal((Reader)new StringReader(responseXmlData)));
-			 re = (ResultMessage22) unmarshaller.unmarshal((Reader)new StringReader(responseXmlData));
-System.out.println("####### : "+re.getMessage());
-System.out.println("####### : "+re.getId());
-System.out.println("####### : "+re.getResult());
-*/
-			// System.out.println(" hmj obf :: "+ obf);
-			// invoceMsg = (com.gagaframework.shoplinker.domain.invoice.ResultMessage) unmarshaller.unmarshal((Reader)new StringReader(responseXmlData));
-			// invoceMsg.getId();
-
-		    // invoceMsg =  (ResultMessage) unmarshaller.unmarshal((Reader)new StringReader(responseXmlData));
-
-			//shoplinkerResult = (com.gagaframework.shoplinker.domain.goods.result.Shoplinker)shoplinkerUtil.unmarshal(com.gagaframework.shoplinker.domain.goods.result.Shoplinker.class, responseXmlData);
-			//invoceMsg = shoplinkerResult.getResultMessage();
-			//System.out.println("HMj 2 : ");
-			//invoceMsg = responseXmlData;
-
-		//	System.out.println(" HMJ invoice2 : "+invoceMsg);
-		//	System.out.println(" HMJ invoice3 : "+invoceMsg.getResult());
-		//	System.out.println(" HMJ invoice4 : "+invoceMsg.getMessage());
-		//	System.out.println(" HMJ invoice5 : "+invoceMsg.getId());
-
-			/**** 송장전송테스트 끝 ************/
-
-
 			//1 상품등록 테스트
 			String testXmlUrl;
 
-			/*for( i=2; i< 87; i++) {
-				testXmlUrl = "http://ts5000.ipdisk.co.kr:8999/shoplinker/goods_reg/T142TS200P/option_"+i+".xml";
-				responseXmlData =    shoplinkerUtil.callShoplinkerApiByGet(GagaShoplinkerConstants.API_DOMAIN+"/Product/attribute_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(i+"\n### 1.단품 result1 :: "+resultMsg.getResult());
-			  	System.out.println(i+"### 1.단품 result2 :: "+resultMsg.getMessage());
-			}*/
-
-
 	for( i=1; i< 1; i++) {
 
 			testXmlUrl = "http://ts5000.ipdisk.co.kr:8999/shoplinker/goods_reg/option_1.xml";
@@ -944,29 +908,7 @@ System.out.println("####### : "+re.getResult());
 			resultMsg = shoplinkerResult.getResultMessage();
 			System.out.println("\n### 1.단품 result1 :: "+resultMsg.getResult());
 		  	System.out.println("### 1.단품 result2 :: "+resultMsg.getMessage());
-
-
-			testXmlUrl = "http://ts5000.ipdisk.co.kr:8999/shoplinker/goods_reg/option_2.xml";
-			responseXmlData =    shoplinkerUtil.callShoplinkerApiByGet(GagaShoplinkerConstants.API_DOMAIN+"/Product/attribute_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### 1.단품 result1 :: "+resultMsg.getResult());
-			System.out.println("### 1.단품 result2 :: "+resultMsg.getMessage());
-
-			testXmlUrl = "http://ts5000.ipdisk.co.kr:8999/shoplinker/goods_reg/option_3.xml";
-			responseXmlData =    shoplinkerUtil.callShoplinkerApiByGet(GagaShoplinkerConstants.API_DOMAIN+"/Product/attribute_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### 1.단품 result1 :: "+resultMsg.getResult());
-			System.out.println("### 1.단품 result2 :: "+resultMsg.getMessage());
-
-			testXmlUrl = "http://ts5000.ipdisk.co.kr:8999/shoplinker/goods_reg/option_4.xml";
-			responseXmlData =    shoplinkerUtil.callShoplinkerApiByGet(GagaShoplinkerConstants.API_DOMAIN+"/Product/attribute_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### 1.단품 result1 :: "+resultMsg.getResult());
-			System.out.println("### 1.단품 result2 :: "+resultMsg.getMessage());
-
+			
 			testXmlUrl = "http://ts5000.ipdisk.co.kr:8999/shoplinker/goods_reg/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);
@@ -1018,7 +960,7 @@ System.out.println("####### : "+re.getResult());
 			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, "");
+		/*	responseXmlData =   shoplinkerUtil.callShoplinkerApiByGet(GagaShoplinkerConstants.API_DOMAIN+"/Order/orderlist.php?iteminfo_url="+testXmlUrl, "");
 
 
 			shoplinkerOrdResult = (com.gagaframework.shoplinker.domain.orderlist.Shoplinker)shoplinkerUtil.unmarshal(com.gagaframework.shoplinker.domain.orderlist.Shoplinker.class, responseXmlData);
@@ -1051,7 +993,7 @@ System.out.println("####### : "+re.getResult());
 				//}
 
 			}
-
+		*/
 			//99 주문수집 목록확인 끝
 
 		}catch(Exception e) {

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

@@ -428,7 +428,8 @@
 		/* TsaShoplinker.getShoplinkerOrderListCount */
 		select count(1) from (
 			SELECT
-				A.*
+				ROW_NUMBER() OVER(PARTITION BY B.VENDOR_ID, B.EXTMALL_ID, B.AGENT_ORDER_ID, B.EXTMALL_ORDER_ID ORDER by B.UPLOAD_GB desc, B.UPLOAD_STAT) AS RANKING
+				, A.*
 				, B.VENDOR_ID
 				, B.EXTMALL_ID
 				, B.EXTMALL_NM
@@ -446,7 +447,7 @@
 			WHERE 1=1
 			<include refid="getSlkOrderListCondition_sql"/>
 		) A
-
+		WHERE RANKING = 1
 	</select>
 
 	<!-- 샵링커주문수집-목록 -->
@@ -455,7 +456,8 @@
 		SELECT * FROM
 		(
 			SELECT
-				A.*
+				ROW_NUMBER() OVER(PARTITION BY B.VENDOR_ID, B.EXTMALL_ID, B.AGENT_ORDER_ID, B.EXTMALL_ORDER_ID ORDER by B.UPLOAD_GB desc, B.UPLOAD_STAT) AS RANKING
+				, A.*
 				, B.VENDOR_ID
 				, B.EXTMALL_ID
 				, B.EXTMALL_NM
@@ -474,7 +476,7 @@
 
 			<include refid="getSlkOrderListCondition_sql"/>
 		) A
-
+		WHERE RANKING = 1
 		ORDER BY EXTMALL_REG_DT, REG_DT DESC
 		LIMIT #{pageable.limitStartRow} ,  #{pageable.pageSize}
 
@@ -571,7 +573,8 @@
 		SELECT * FROM
 		(
 			SELECT
-				A.*
+				ROW_NUMBER() OVER(PARTITION BY B.VENDOR_ID, B.EXTMALL_ID, B.AGENT_ORDER_ID, B.EXTMALL_ORDER_ID ORDER by B.UPLOAD_GB desc, B.UPLOAD_STAT) AS RANKING
+				, A.*
 				, B.VENDOR_ID
 				, B.EXTMALL_ID
 				, B.EXTMALL_NM
@@ -590,7 +593,7 @@
 
 			<include refid="getSlkOrderListCondition_sql"/>
 		) A
-
+		WHERE RANKING = 1
 		ORDER BY EXTMALL_REG_DT, REG_DT DESC
 
 	</select>

+ 52 - 3
src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerOrderForm.html

@@ -154,8 +154,8 @@
 				<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> -->
+						<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;
 						<!-- 아이콘 툴팁 -->
@@ -218,6 +218,7 @@
 	let uploadFailList = gagajf.convertToArray([[${uploadFailList}]]);
 
 	let 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 cfnGridNumner('searchForm',params.node.rowIndex, 'A');}
 		},
@@ -285,6 +286,7 @@
 			cellEditor: 'textCellEditor',
 			cellEditorParams: { maxlength: 14, validType: 'numeric'}
 		},
+		{headerName: "옵션코드", field: "skuMatchCode", width: 130, cellClass: 'text-center'},
 		{headerName: "옵션명", field: "sku", width: 130, cellClass: 'text-center'},
 		{headerName: "주문수집일자", field: "orderRegDate", width: 150, cellClass: 'text-center',
 			cellRenderer: function(params) {
@@ -463,7 +465,54 @@
 	}
 	/**************** 제휴몰 주문업로드 형식 엑셀다운로드 // *****************************************************/
 
-	
+	/**************** 실패사유변경 *****************************************************/
+	$("#btnSave").on("click", function(){
+		var rowData = gagaAgGrid.getAllRowData(gridOptions);
+		var dataArr = [];
+		var bool = true;
+		
+		var selectedData = gridOptions.api.getSelectedRows();
+
+		if (selectedData.length == 0) {
+			mcxDialog.alert('선택된 행이 없습니다.');
+			return false;
+		}else if (selectedData.length > 100) {
+			mcxDialog.alert('100개 이하로 선택해주세요.');
+			return false;
+		}
+
+		selectedData.forEach(function(row){
+			
+			if( row.uploadStat == "G021_40" && row.uploadFailCd == "G022_60"){
+				var data = { 
+						 mallId : row.mallId
+						 , shoplinkerOrderId : row.shoplinkerOrderId
+						 , mallOrderId : row.mallOrderId
+				}
+				dataArr.push(data);
+				
+			}else{
+				bool = false;
+			}
+		});
+		
+		if( !bool ){
+			mcxDialog.alert('변경할 수 없는 행이 선택되어있습니다. 해제 후 다시 시도해주세요.<br>(실패사유가 가용재고없음인 경우만 변경가능)');
+			return false;
+		}
+		
+		var msg = "실패사유가 [가용재고없음]인 건은 이미 고객에게 알림톡이 발송된 건으로, <br>제휴몰주문업로드가 불가능한 상태를 가능한 상태로 변경하는 기능입니다.<br>저장 시 실패사유가 변경되고, 해당 샵링커정보로 제휴몰 주문업로드를 할 수 있습니다.";
+		mcxDialog.confirm(msg,{
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function(){
+				var jsonData = JSON.stringify(dataArr);
+				//console.log(jsonData);
+				gagajf.ajaxJsonSubmit('/shoplinker/order/change/saveFailFlag', jsonData, fnGoodsListSearch);
+			}
+		});
+	});
+	/**************** 실패사유변경 저장 // *****************************************************/
 	
 	$(document).ready(function() {