소스 검색

Merge branch 'develop' into eskim

eskim 4 년 전
부모
커밋
0d63386782
43개의 변경된 파일542개의 추가작업 그리고 7030개의 파일을 삭제
  1. 10 0
      src/main/java/com/style24/admin/biz/dao/TsaPlanDao.java
  2. 0 262
      src/main/java/com/style24/admin/biz/dao/TsaShoplinkerDao.java
  3. 22 1
      src/main/java/com/style24/admin/biz/dao/TsaWithdrawDao.java
  4. 10 0
      src/main/java/com/style24/admin/biz/dao/TsaWmsWithdrawDao.java
  5. 4 805
      src/main/java/com/style24/admin/biz/service/TsaOcmService.java
  6. 25 181
      src/main/java/com/style24/admin/biz/service/TsaPlanService.java
  7. 1 0
      src/main/java/com/style24/admin/biz/service/TsaPollService.java
  8. 0 1735
      src/main/java/com/style24/admin/biz/service/TsaShoplinkerService.java
  9. 23 10
      src/main/java/com/style24/admin/biz/service/TsaWithdrawService.java
  10. 15 0
      src/main/java/com/style24/admin/biz/service/TsaWmsWithdrawService.java
  11. 9 3
      src/main/java/com/style24/admin/biz/web/TsaCustomerController.java
  12. 18 4
      src/main/java/com/style24/admin/biz/web/TsaOcmController.java
  13. 2 1
      src/main/java/com/style24/admin/biz/web/TsaOrderChangeController.java
  14. 55 33
      src/main/java/com/style24/admin/biz/web/TsaShoplinkerController.java
  15. 10 43
      src/main/java/com/style24/admin/support/env/TsaConstants.java
  16. 0 823
      src/main/java/com/style24/persistence/domain/ExtmallOrder.java
  17. 1 0
      src/main/java/com/style24/persistence/domain/Plan.java
  18. 0 137
      src/main/java/com/style24/persistence/domain/ShoplinkerGoods.java
  19. 0 67
      src/main/java/com/style24/persistence/domain/ShoplinkerInvoice.java
  20. 0 192
      src/main/java/com/style24/persistence/domain/ShoplinkerOrder.java
  21. 0 103
      src/main/java/com/style24/persistence/domain/ShoplinkerSearch.java
  22. 8 4
      src/main/java/com/style24/persistence/mybatis/shop/TsaNotice.xml
  23. 0 1564
      src/main/java/com/style24/persistence/mybatis/shop/TsaOcm.xml
  24. 21 2
      src/main/java/com/style24/persistence/mybatis/shop/TsaPlan.xml
  25. 1 1
      src/main/java/com/style24/persistence/mybatis/shop/TsaPoll.xml
  26. 0 857
      src/main/java/com/style24/persistence/mybatis/shop/TsaShoplinker.xml
  27. 27 8
      src/main/java/com/style24/persistence/mybatis/shop/TsaWithdraw.xml
  28. 12 1
      src/main/java/com/style24/persistence/mybatis/wms/TsaWmsWithdraw.xml
  29. 2 2
      src/main/resources/config/application-style.yml
  30. 6 4
      src/main/webapp/WEB-INF/views/board/NoticeForm.html
  31. 3 1
      src/main/webapp/WEB-INF/views/customer/CustomerActiveListForm.html
  32. 57 54
      src/main/webapp/WEB-INF/views/customer/LmsPopupForm.html
  33. 2 1
      src/main/webapp/WEB-INF/views/envset/CustomerGradePolicyForm.html
  34. 2 2
      src/main/webapp/WEB-INF/views/marketing/PlanCornerListForm.html
  35. 1 1
      src/main/webapp/WEB-INF/views/ocm/ExtmallOrderRegisterForm.html
  36. 31 9
      src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerGoodsSendForm.html
  37. 1 1
      src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerInvoiceSendForm.html
  38. 110 109
      src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerOrderDetailForm.html
  39. 3 3
      src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerOrderForm.html
  40. 1 1
      src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerStockForm.html
  41. 26 3
      src/main/webapp/WEB-INF/views/withdraw/WithdrawDirectiveListForm.html
  42. 19 2
      src/main/webapp/WEB-INF/views/withdraw/WithdrawExceptionListForm.html
  43. 4 0
      src/main/webapp/ux/js/admin.popup.js

+ 10 - 0
src/main/java/com/style24/admin/biz/dao/TsaPlanDao.java

@@ -624,4 +624,14 @@ public interface TsaPlanDao {
 	 * @since 2021. 06. 09
 	 */
 	Collection<Plan> getPlanAttendCoupon(Plan param);
+	
+	/**
+	 * 총알배송 자사브랜드 조회
+	 *
+	 * @param plan
+	 * @return
+	 * @author sowon
+	 * @since 2021. 06. 25
+	 */
+	Collection<Plan> getShotSelfBrandList();
 }

+ 0 - 262
src/main/java/com/style24/admin/biz/dao/TsaShoplinkerDao.java

@@ -1,262 +0,0 @@
-package com.style24.admin.biz.dao;
-
-import java.util.Collection;
-
-import com.style24.core.support.annotation.ShopDs;
-import com.style24.persistence.domain.ExtmallOrder;
-import com.style24.persistence.domain.ShoplinkerGoods;
-import com.style24.persistence.domain.ShoplinkerInvoice;
-import com.style24.persistence.domain.ShoplinkerOrder;
-import com.style24.persistence.domain.ShoplinkerSearch;
-
-/**
- * 샵링커 Dao
- *
- * @author jmh
- * @since 2021. 5. 20
- */
-@ShopDs
-public interface TsaShoplinkerDao {
-
-	/**
-	 * 샵링커 전송 이력
-	 *
-	 * @param shoplinkerSearch
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	void insertShoplinerApiHst(ShoplinkerGoods shoplinkerGoods);
-
-	/**
-	 *  샵링커 api 호출 가능여부
-	 *
-	 * @param
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	ShoplinkerSearch getCallRunableInfo(ShoplinkerSearch slkSearch);
-
-	/**
-	 * 샵링커 api 호출 가능여부 상태 저장
-	 *
-	 * @param dataMap
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	void saveCallApiRunable(ShoplinkerSearch slkSearch);
-
-	/**
-	 * 샵링커 api 호출 가능여부 상태 수정
-	 *
-	 * @param dataMap
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	void updateCallApiRunable(ShoplinkerSearch slkSearch);
-
-	/**
-	 * 상품등록-단품 목록 조회
-	 *
-	 * @param shoplinkerSearch
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	Collection<ShoplinkerGoods> getOptionList(ShoplinkerGoods shoplinkerSearch);
-
-	/**
-	 * 상품등록-상품 상세
-	 *
-	 * @param shoplinkerSearch
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	ShoplinkerGoods getGoods(ShoplinkerGoods shoplinkerSearch);
-
-	/**
-	 * 상품등록-상품 이미지 조회
-	 *
-	 * @param shoplinkerSearch
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	Collection<ShoplinkerGoods> getGoodsImageList(ShoplinkerGoods shoplinkerSearch);
-
-	/**
-	 * 상품등록-상품 사이즈 조회
-	 *
-	 * @param shoplinkerSearch
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	Collection<ShoplinkerGoods> getGoodsSizeList(ShoplinkerGoods shoplinkerSearch);
-
-	/**
-	 * 상품등록-고시정보
-	 *
-	 * @param shoplinkerSearch
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	Collection<ShoplinkerGoods> getGoodsNotiList(ShoplinkerGoods shoplinkerSearch);
-
-	/**
-	 * 상품등록-인증정보
-	 *
-	 * @param shoplinkerSearch
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	ShoplinkerGoods getCert(ShoplinkerGoods shoplinkerSearch);
-
-	/**
-	 * 상품등록-상품 목록 건수
-	 *
-	 * @param shoplinkerSearch
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	int getGoodsSendListCount(ShoplinkerSearch shoplinkerSearch);
-
-	/**
-	 * 상품등록-상품 목록
-	 *
-	 * @param shoplinkerSearch
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	Collection<ShoplinkerGoods> getGoodsSendList(ShoplinkerSearch shoplinkerSearch);
-
-
-	/**
-	 * 샵링커주문수집-주문수집등록
-	 *
-	 * @param shoplinkerOrder
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	int insertShoplinkerOrder(ShoplinkerOrder shoplinkerOrder);
-
-	/**
-	 * 샵링커주문수집-목록 건수
-	 *
-	 * @param shoplinkerSearch
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	int getShoplinkerOrderListCount(ShoplinkerOrder shoplinkerOrder);
-
-	/**
-	 * 샵링커주문수집-목록
-	 *
-	 * @param shoplinkerSearch
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	Collection<ShoplinkerOrder> getShoplinkerOrderList(ShoplinkerOrder shoplinkerOrder);
-
-	/**
-	 * 샵링커주문수집-상세
-	 *
-	 * @param
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	ShoplinkerOrder getShoplinkerOrderInfo(ShoplinkerOrder shoplinkerOrder);
-
-	/**
-	 * 샵링커주문수집- 제휴몰 주문업로드여부 업데이트
-	 *
-	 * @param shoplinkerOrder
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 31
-	 */
-	void updateShoplinkerOrder(ShoplinkerOrder shoplinkerOrder);
-
-	/**
-	 * 제휴몰 주문등록 상세
-	 *
-	 * @param
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 31
-	 */
-	ExtmallOrder getExtmallOrderInfo(String extmallOrder);
-
-	/**
-	 * 제휴몰 주문등록 대상목록
-	 *
-	 * @param
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 31
-	 */
-	Collection<ShoplinkerOrder> getShoplinkerRegExtmallList();
-
-	/**
-	 * 송장전송-전송 목록 건수
-	 *
-	 * @param shoplinkerSearch
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	int getSendInvoiceListCount(ShoplinkerInvoice shoplinkerInvoice);
-
-	/**
-	 * 송장전송-전송 목록
-	 *
-	 * @param shoplinkerSearch
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	Collection<ShoplinkerInvoice> getSendInvoiceList(ShoplinkerInvoice shoplinkerInvoice);
-
-	/**
-	 * 송장전송-상세목록
-	 *
-	 * @param
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	Collection<ShoplinkerInvoice> getShoplinkerInvoiceOrdDtlList(ShoplinkerInvoice shoplinkerInvoice);
-
-	/**
-	 * 재고전송-목록 건수
-	 *
-	 * @param shoplinkerSearch
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	int getStockListCount(ShoplinkerSearch shoplinkerSearch);
-
-	/**
-	 * 재고전송-목록
-	 *
-	 * @param shoplinkerSearch
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	Collection<ShoplinkerGoods> getStockListList(ShoplinkerSearch shoplinkerSearch);
-
-}

+ 22 - 1
src/main/java/com/style24/admin/biz/dao/TsaWithdrawDao.java

@@ -120,7 +120,7 @@ public interface TsaWithdrawDao {
 	Collection<Withdraw> getWithdrawDirectiveList(Withdraw withdraw);
 	
 	/**
-	 * 재회수지시
+	 * 재회수지시 detail
 	 * 
 	 * @param Withdraw
 	 * @return 
@@ -129,6 +129,16 @@ public interface TsaWithdrawDao {
 	 */
 	void updateReRecallOrder(Withdraw withdraw);
 	
+	/**
+	 * 재회수지시
+	 * 
+	 * @param Withdraw
+	 * @return 
+	 * @author moon
+	 * @since 2021. 05. 11
+	 */
+	void updateReRecallOrderChange(Withdraw withdraw);
+	
 	/**
 	 * 주문변경사유 변경
 	 * 
@@ -149,6 +159,17 @@ public interface TsaWithdrawDao {
 	 */
 	void updateChangeStat(WithdrawExc withdrawExc);
 	
+	/**
+	 * 주문변경번호상세 조회 
+	 * 
+	 * @param Withdraw
+	 * @return Collection<Withdraw>
+	 * @author moon
+	 * @since 2021. 06. 24
+	 */
+	Collection<Withdraw> getOrdChgDtlList(Withdraw withdraw);
+	
+	
 	
 	/**
 	 * 회수등록 - 조회(송장번호용)

+ 10 - 0
src/main/java/com/style24/admin/biz/dao/TsaWmsWithdrawDao.java

@@ -5,6 +5,7 @@ import java.util.Collection;
 import org.springframework.dao.DataAccessException;
 
 import com.style24.persistence.domain.WmsWithdraw;
+import com.style24.persistence.domain.Withdraw;
 import com.style24.persistence.domain.Delivery;
 import com.style24.core.support.annotation.WmsDs;
 import org.springframework.stereotype.Repository;
@@ -60,5 +61,14 @@ public interface TsaWmsWithdrawDao {
 	 */
 	void deleteWmsTbIfDelifixQty(Delivery delivery);
 	
+	/**
+	 *  재회수지시
+	 * 
+	 * @param WmsWithdraw
+	 * @return int
+	 * @author moon
+	 * @since 2021. 06. 24
+	 */
+	void updateReRecallOrder(Withdraw withdraw);
 	
 }

+ 4 - 805
src/main/java/com/style24/admin/biz/service/TsaOcmService.java

@@ -1,7 +1,5 @@
 package com.style24.admin.biz.service;
 
-import java.io.IOException;
-import java.util.ArrayList;
 import java.util.Collection;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -10,21 +8,14 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.gagaframework.web.parameter.GagaMap;
-import com.gagaframework.web.util.GagaFileUtil;
 import com.style24.admin.biz.dao.TsaOcmDao;
-import com.style24.admin.support.env.TsaConstants;
-import com.style24.admin.support.env.TsaConstants.ExtmallUploadFailStat;
 import com.style24.admin.support.security.session.TsaSession;
-import com.style24.core.support.env.TscConstants;
+import com.style24.core.biz.service.TscKakaotalkService;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.persistence.domain.Extmall;
 import com.style24.persistence.domain.ExtmallNoti;
-import com.style24.persistence.domain.ExtmallOrder;
 import com.style24.persistence.domain.ExtmallOrigin;
 import com.style24.persistence.domain.ExtmallPriceSync;
-import com.style24.persistence.domain.GoodsStock;
-import com.style24.persistence.domain.Payment;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -41,6 +32,9 @@ public class TsaOcmService {
     @Autowired
     private TscMessageByLocale message;
 
+    @Autowired
+	private TscKakaotalkService kakaotalkService;
+
     @Autowired
 	private Environment env;
 
@@ -121,799 +115,4 @@ public class TsaOcmService {
         }
     }
 
-
-
-
-
-    /**
-     * 스타일 24 주문정보등록
-     * @param Order
-     * @return Order
-     * @author jsh77b
-     * @since 2021. 03. 09
-     *
-     * TscOrderService.createPreOrder 참조
-     * 샵링커 주문수집으로 외부몰주문등록된 건 중 '대기'상태인 것들에 대해 주문등록처리를 한다.
-     */
-    public void createShoplinkerOrder(String uploadGb) {
-    	Collection<ExtmallOrder> orderList = this.sortOrderList(uploadGb);
-
-    	if (orderList != null && !orderList.isEmpty()) {
-	    	for( ExtmallOrder order : orderList ) {
-	    		createShoplinkerOrderSub(order);
-	        }
-    	}
-    }
-
-    @SuppressWarnings("unchecked")
-    @Transactional("shopTxnManager")
-    public void createShoplinkerOrderSub(ExtmallOrder order) {
-
-		GagaMap result = this.orderValidationCheck(order);
-
-		// validation 체크 값
-		Collection<ExtmallOrder> newOrderDetailList = (Collection<ExtmallOrder>) result.get("orderDetailList");
-
-		if ("SUCCESS".equals(result.get("message").toString())) {
-			// 1. 주문기본정보등록
-            ocmDao.createOrder(order);
-
-            // 2. 주문배송정보등록
-            ocmDao.createDeliveryAddr(order);
-
-            // 3. 주문배송비정보등록
-            ocmDao.createDeliveryFee(order);
-
-			// 4. 주문상세정보등록
-            String dtlNos = "";			// 주문상세번호
-            String cancelGoodsNms = ""; // 콤마로 구분
-            int cancelAmt = 0;
-            int payAmt = 0;
-            GagaMap vdMap;
-			for( ExtmallOrder orderDetail : newOrderDetailList) {
-
-				//vdMap = this.checkGoodsInfo(orderDetail);
-				orderDetail.setOrdNo(order.getOrdNo());
-				orderDetail.setDelvAddrSq(order.getDelvAddrSq());
-
-
-				if (!"SUCCESS".equals(orderDetail.getUploadFailReason())){
-					cancelGoodsNms += orderDetail.getGoodsNm()+",";
-					cancelAmt += orderDetail.getOrdAmt();
-
-					orderDetail.setUploadStat(TsaConstants.ExtmallUploadStat.FAIL.value());	// 실패
-					orderDetail.setOrdNo(null);
-					orderDetail.setUploadFailCd(orderDetail.getUploadFailCd());
-					orderDetail.setUploadFailReason(orderDetail.getUploadFailReason());
-					ocmDao.updateExtmallOrder(orderDetail);
-
-				}else {
-
-					orderDetail.setOrdNo(order.getOrdNo());
-					orderDetail.setDelvAddrSq(order.getDelvAddrSq());
-
-					// TODO 총알배송, 구매대행상품여부 체크
-                    ocmDao.createOrderDetail(orderDetail); // 주문상세정보등록
-
-                    ocmDao.createOrderDetailHst(orderDetail); // 주문상세이력정보등록
-
-                    Collection<ExtmallOrder> orderDetailItemList = ocmDao.getOrderDetailItem(orderDetail); // 주문상세단품정보조회
-
-                    // 주문상세단품단위 금액 등록
-                    int length				= orderDetailItemList.size();
-                    int index				= 1;
-                    int leftOrdAmt 			= orderDetail.getOrdAmt();
-                    int leftCpn1DcAmt 		= orderDetail.getCpn1DcAmt();
-                    int leftTmtb1DcAmt 		= orderDetail.getTmtb1DcAmt();
-                    int leftTmtb2DcAmt 		= orderDetail.getTmtb2DcAmt();
-                    int leftGoodsCpnDcAmt 	= orderDetail.getGoodsCpnDcAmt();
-                    int leftCartCpnDcAmt 	= orderDetail.getCartCpnDcAmt();
-                    int leftPntDcAmt 		= orderDetail.getPntDcAmt();
-                    int leftPrePntDcAmt 	= orderDetail.getPrePntDcAmt();
-                    int leftSavePntAmt 		= orderDetail.getSavePntAmt();
-                    int leftRealOrdAmt 		= orderDetail.getRealOrdAmt();
-                    int leftGfcdUseAmt 		= orderDetail.getGfcdUseAmt();
-
-                    for (ExtmallOrder orderDetailItem : orderDetailItemList) {
-                        int itemPrice 		= orderDetailItem.getItemPrice();
-                        int optAddPrice 	= orderDetailItem.getOptAddPrice();
-                        int itemQty 		= orderDetailItem.getItemQty();
-                        double currPrice	= orderDetailItem.getCurrPrice();
-                        double itemOrdAmt	= (itemPrice + optAddPrice) * itemQty;
-                        double tempDivD		= (itemOrdAmt / currPrice) * 100;
-                        int tempDiv 		= Integer.parseInt(String.valueOf(Math.round(tempDivD)));
-
-                        if (index == length) {
-                            orderDetailItem.setOrdAmt(leftOrdAmt);
-                            orderDetailItem.setCpn1DcAmt(leftCpn1DcAmt);
-                            orderDetailItem.setTmtb1DcAmt(leftTmtb1DcAmt);
-                            orderDetailItem.setTmtb2DcAmt(leftTmtb2DcAmt);
-                            orderDetailItem.setGoodsCpnDcAmt(leftGoodsCpnDcAmt);
-                            orderDetailItem.setCartCpnDcAmt(leftCartCpnDcAmt);
-                            orderDetailItem.setPntDcAmt(leftPntDcAmt);
-                            orderDetailItem.setPrePntDcAmt(leftPrePntDcAmt);
-                            orderDetailItem.setSavePntAmt(leftSavePntAmt);
-                            orderDetailItem.setRealOrdAmt(leftRealOrdAmt);
-                            orderDetailItem.setGfcdUseAmt(leftGfcdUseAmt);
-                        } else {
-                            orderDetailItem.setOrdAmt((orderDetail.getOrdAmt() * tempDiv) / 100);
-                            orderDetailItem.setCpn1DcAmt((orderDetail.getCpn1DcAmt() * tempDiv) / 100);
-                            orderDetailItem.setTmtb1DcAmt((orderDetail.getTmtb1DcAmt() * tempDiv) / 100);
-                            orderDetailItem.setTmtb2DcAmt((orderDetail.getTmtb2DcAmt() * tempDiv) / 100);
-                            orderDetailItem.setGoodsCpnDcAmt((orderDetail.getGoodsCpnDcAmt() * tempDiv) / 100);
-                            orderDetailItem.setCartCpnDcAmt((orderDetail.getCartCpnDcAmt() * tempDiv) / 100);
-                            orderDetailItem.setPntDcAmt((orderDetail.getPntDcAmt() * tempDiv) / 100);
-                            orderDetailItem.setPrePntDcAmt((orderDetail.getPrePntDcAmt() * tempDiv) / 100);
-                            orderDetailItem.setSavePntAmt((orderDetail.getSavePntAmt() * tempDiv) / 100);
-                            orderDetailItem.setRealOrdAmt((orderDetail.getRealOrdAmt() * tempDiv) / 100);
-                            orderDetailItem.setGfcdUseAmt((orderDetail.getGfcdUseAmt() * tempDiv) / 100);
-
-                            leftOrdAmt 			= leftOrdAmt 			- ((orderDetail.getOrdAmt() * tempDiv) / 100);
-                            leftCpn1DcAmt 		= leftCpn1DcAmt 		- ((orderDetail.getCpn1DcAmt() * tempDiv) / 100);
-                            leftTmtb1DcAmt 		= leftTmtb1DcAmt 		- ((orderDetail.getTmtb1DcAmt() * tempDiv) / 100);
-                            leftTmtb2DcAmt 		= leftTmtb2DcAmt 		- ((orderDetail.getTmtb2DcAmt() * tempDiv) / 100);
-                            leftGoodsCpnDcAmt 	= leftGoodsCpnDcAmt 	- ((orderDetail.getGoodsCpnDcAmt() * tempDiv) / 100);
-                            leftCartCpnDcAmt 	= leftCartCpnDcAmt 		- ((orderDetail.getCartCpnDcAmt() * tempDiv) / 100);
-                            leftPntDcAmt 		= leftPntDcAmt 			- ((orderDetail.getPntDcAmt() * tempDiv) / 100);
-                            leftPrePntDcAmt 	= leftPrePntDcAmt 		- ((orderDetail.getPrePntDcAmt() * tempDiv) / 100);
-                            leftSavePntAmt 		= leftSavePntAmt 		- ((orderDetail.getSavePntAmt() * tempDiv) / 100);
-                            leftRealOrdAmt 		= leftRealOrdAmt 		- ((orderDetail.getRealOrdAmt() * tempDiv) / 100);
-                            leftGfcdUseAmt 		= leftGfcdUseAmt 		- ((orderDetail.getGfcdUseAmt() * tempDiv) / 100);
-                        }
-
-                        // 2021.05.06 옵션금액 단품 추가
-                        orderDetailItem.setOptAddPrice(optAddPrice);
-                        orderDetailItem.setCustNo(order.getCustNo());
-
-                        ocmDao.createOrderDetailItem(orderDetailItem); // 주문상세단품정보등록
-
-                        ocmDao.createOrderDetailItemHst(orderDetailItem); // 주문상세단품이력정보등록
-
-                        index++;
-
-
-                        // 5. 재고등록(샵링커 주문목록을 보면 동일한 몰 주문번호에 동일한 상품(sku)이 수량이 아닌 개별로 있는 데이터가 존재하므로 > 주문번호로 한번에 처리가 아닌 개별로 처리 함)
-        				orderDetail.setSellGb(TscConstants.SellGb.ORDER.value());			// 판매구분(10:주문(-),
-        				ocmDao.createSellQty(orderDetail);
-
-                        // 외부몰 정보 업데이트
-        				orderDetail.setUploadStat(TsaConstants.ExtmallUploadStat.SUCC.value());	// 성공
-    					ocmDao.updateExtmallOrder(orderDetail);
-
-    					dtlNos += orderDetail.getOrdDtlNo()+",";
-    				}
-				}
-        	}
-
-
-			// 6. 주문사은품정보등록
-    		dtlNos = dtlNos.substring(0, dtlNos.length()-1);
-	        String [] dtlNdsArr = dtlNos.split(",");	// 주문상세번호
-	        order.setItemCdArr(dtlNdsArr);
-			order.setOrdDtlStat(TscConstants.OrderDetailStat.PAYMENT_COMPLETE.value());		//주문상세상태 - 결제완료처리
-			GagaMap giftMap = this.getOrderFreegift(order);
-
-	        if( null != giftMap) {
-		        if( null != giftMap.get("freegiftList")) {
-		        	if( !"".equals(giftMap.get("freegiftList"))) {
-
-		    			// 상품코드
-		        		String dtlGoodsCds = "";	// 사은품관련 상품코드. 콤마로구분
-		        		String[] dtlGoodsCdsArr;
-		        		Collection<ExtmallOrder> freegiftApplyAmtList = (Collection<ExtmallOrder>) giftMap.get("freegiftApplyAmtList");
-
-		        		for(ExtmallOrder ftMap : freegiftApplyAmtList ) {
-		        			dtlGoodsCds += ftMap.getGoodsCd() +",";
-		        		}
-
-		        		dtlGoodsCds = dtlGoodsCds.substring(0, dtlGoodsCds.length()-1);
-		        		dtlGoodsCdsArr = dtlGoodsCds.split(",");
-		        		order.setFreegiftGoodsArr(dtlGoodsCdsArr);
-
-		        		Collection<ExtmallOrder> freegiftList = (Collection<ExtmallOrder>) giftMap.get("freegiftList");
-		                ArrayList<Integer> fitValSqArr = new ArrayList<Integer>();
-		                for(ExtmallOrder ftMap : freegiftList ) {
-		                	fitValSqArr.add(ftMap.getFreegiftValSq());
-		                }
-		                int[] freegiftValArr = new int[fitValSqArr.size()];
-		                for( int i=0; i<fitValSqArr.size(); i++) {
-		                	freegiftValArr[i] = fitValSqArr.get(i);
-		                }
-
-		                order.setFreegiftValArr(freegiftValArr);
-		                order.setCustNo(0);
-		                if(order.getFreegiftValArr() != null && order.getFreegiftValArr().length > 0) {
-		                    ocmDao.createOrdFreegift(order);
-
-		                    // 6. 주문사은품 상품 정보 등록
-		                    ocmDao.createOrdFreegiftVal(order);
-
-		                    // 7. 주문사은품 주문상세정보 등록
-		                    for(ExtmallOrder ftMap : freegiftApplyAmtList ) {
-			    		    	order.setFreegiftSq(ftMap.getFreegiftSq());
-				    			order.setGoodsCd(ftMap.getGoodsCd());
-				    			ocmDao.createOrdFreegiftDtl(order);
-			    		    }
-		                }
-
-		                // 14. 사은품 수량 차감 로직 TB_FREEGIFT_VAL LEFT_QTY
-		                ocmDao.updateFreegiftValLeftQty(order);
-
-		        	}
-		        }
-	        }
-
-			// 7. 결제 TB_PAYMENT
-            Payment payment = new Payment();
-            payment.setOrdNo(order.getOrdNo());
-            payment.setPayMeans(TscConstants.PayMeans.EXTMALL.value());					// 결제수단
-            payAmt = order.getRealOrdSumAmt() + order.getDelvFee() - cancelAmt;			// 결제금액 = 실결제금액 + 배송비 - 취소금액
-            payment.setPayAmt(payAmt);
-            payment.setPgCpnAmt(0);														// PG쿠폰금액
-            payment.setNpayPntAmt(0);   												// 네이버페이포인트금액
-            payment.setPayGb("O");														// 결제구분(O:주문시결제, D:배송시결제, E:에러(강제 결제 태울 때 또는 에러일 때)
-            payment.setPayStat(TscConstants.PaymentStat.PAYMENT_COMPLETE.value());		// 결제상태 - 결제완료
-            payment.setRegNo(0);
-            payment.setUpdNo(0);
-
-            ocmDao.insertPayment(payment);
-
-		}else {
-
-			// 주문등록 전체실패시 상태 업데이트
-			GagaMap vdMap;
-			for( ExtmallOrder orderDetail : order.getOrderDetailList()) {
-				vdMap = this.checkGoodsInfo(orderDetail);
-				orderDetail.setUploadStat(TsaConstants.ExtmallUploadStat.FAIL.value());	// 실패
-				orderDetail.setOrdNo(vdMap.getInt("ordNo"));	// 실패
-				orderDetail.setUploadFailCd(vdMap.getString("uploadFailCd"));
-				orderDetail.setUploadFailReason(vdMap.getString("message"));
-				ocmDao.updateExtmallOrder(orderDetail);
-			}
-
-		}
-
-		// 8. 알림톡발송 (임시 히스토리 쌓음.)
-		if( !"style".equals(env.getProperty("spring.profiles.active").toLowerCase())){
-    		ExtmallOrder testNoti = new ExtmallOrder();
-    		testNoti.setExtmallId(order.getExtmallId());
-    		testNoti.setExtmallOrderId(order.getExtmallOrderId());
-    		if( "ALL_FAIL".equals(result.getString("sendNotiType"))) {
-    			// 전체실패 알림톡발송
-    			testNoti.setSku("미할당 전체품절 > 실패 총 "+result.getString("failCnt")+"건 / 재고실패 "+result.getString("stockFailCnt")+"건 ("+result.getString("failGoods")+")");
-    		}else if( "ALL_SUCCESS".equals(result.getString("sendNotiType"))) {
-    			// 전체성공 알림톡발송
-    			testNoti.setSku("전체성공");
-    		}else if( "PART_SUCCESS".equals(result.getString("sendNotiType"))) {
-
-    			if( !"".equals(result.getString("failGoods"))) {
-    				// 부분성공 알림톡발송
-	    			testNoti.setSku("부분결품 품절 > 실패 총 "+result.getString("failCnt")+"건 / 재고실패 "+result.getString("stockFailCnt")+"건 ("+result.getString("failGoods")+")");
-    			}else {
-    				// 전체성공알림톡
-	    			testNoti.setSku("성공 > 실패한건이 있지만, 재고로인한건이 아님.");
-    			}
-
-    		}else {
-    			// "NOT" 알림톡 발송안함. 이미 발송한건
-    			testNoti.setSku("알림톡 발송안함. 동일수집건 ");
-    		}
-    		ocmDao.insertTestNotiInfo(testNoti);
-		}
-    }
-
-    /**
-     * 스타일 24 주문정보등록 - 제휴몰주문등록 데이터 정렬
-     * @param uploadGb
-     * @return Collection<ExtmallOrder>
-     * @author jmh
-     * @since 2021. 03. 09
-    */
-    private Collection<ExtmallOrder> sortOrderList(String uploadGb) {
-
-        // 1. 외부몰주문등록 대기목록 조회
-        ExtmallOrder params = new ExtmallOrder();
-        params.setUploadStat(TsaConstants.ExtmallUploadStat.WAIT.value());		// 대기
-        params.setUploadGb(uploadGb);											// 등록위치 (S: 샵링커, E: 엑셀)
-        if("E".equals(uploadGb)) {
-        	params.setRegNo(TsaSession.getInfo().getUserNo());					// 등록자(E:엑셀방식일경우 필수)
-        }
-        Collection<ExtmallOrder> exMastList = ocmDao.getExtmallMasterOrderList(params);
-        Collection<ExtmallOrder> exList = ocmDao.getExtmallOrderList(params);
-        Collection<ExtmallOrder> tmpList = new ArrayList<ExtmallOrder>();
-
-        // 2. 그룹별 주문상세목록 세팅
-        // ※ TB_DELIVERY_FEE.DELV_FEE_CD에는 WMS 로들어가야하고, TB_ORDER_DETAIL.DELV_FEE_CD 에는 TB_GOODS.DELV_FEE_CD 에 있는 정보가 들어가야 함
-        for( ExtmallOrder ordGroup : exMastList) {
-
-        	// TB_ORDER 추가정보 세팅
-        	ordGroup.setSiteCd(TscConstants.Site.STYLE24.value());
-        	ordGroup.setCustNo(0);												// 고객번호 - 외부몰 0
-        	ordGroup.setCustNm(ordGroup.getOrdNm());							// 주문자명
-        	ordGroup.setFrontGb("P");											// PC
-        	ordGroup.setDelvFeeGb("G018_10");									// 원주문배송비 코드
-        	ordGroup.setDelvFeeCd("WMS"); 										// SHOT 자사총알배송 | WMS 자사일반배송 | RES  자사예약배송
-        	ordGroup.setDelvCpnDcAmt(0);										// 배송비쿠폰할인금액
-        	ordGroup.setRealDelvAmt(ordGroup.getDelvFee());						// 배송비실결제금액
-        	ordGroup.setDelvUsacYn("N");										// 배송비 정산여부
-
-            tmpList = new ArrayList<ExtmallOrder>();
-            for(ExtmallOrder ordDtl : exList ) {
-            	if(ordGroup.getVendorId().equals(ordDtl.getVendorId())
-            		 && ordGroup.getExtmallId().equals(ordDtl.getExtmallId())
-            		 && ordGroup.getExtmallOrderId().equals(ordDtl.getExtmallOrderId())
-            		 && ordGroup.getOrdNm().equals(ordDtl.getOrdNm())
-            		 && ordGroup.getOrdPhnno().equals(ordDtl.getOrdPhnno())
-            		 && ordGroup.getRecipNm().equals(ordDtl.getRecipNm())
-            		 && ordGroup.getRecipPhnno().equals(ordDtl.getRecipPhnno())
-            		 && ordGroup.getRecipBaseAddr().equals(ordDtl.getRecipBaseAddr())
-            		 && ordGroup.getRecipDtlAddr().equals(ordDtl.getRecipDtlAddr())
-            	 ) {
-
-            		tmpList = ordGroup.getOrderDetailList();
-            		if( null == tmpList ) tmpList = new ArrayList<ExtmallOrder>();
-
-            		// 상세 추가정보
-            		ordDtl.setOrdExchGb("O");										// 주문교환구분(O:주문,E:교환)
-            		ordDtl.setCustNo(ordGroup.getCustNo());							// 고객번호
-            		ordDtl.setRegNo(ordGroup.getCustNo());							// 등록자
-            		ordDtl.setOrdDtlStat(TscConstants.OrderDetailStat.PAYMENT_COMPLETE.value());	// 주문상세상태=>결제완료 처리
-                	ordDtl.setDelvCpnDcAmt(0);										// 1차쿠폰(즉시할인쿠폰)할인금액
-                	ordDtl.setRealOrdAmt(ordDtl.getOrdAmt());						// 실주문금액(주문금액 - 취소반품금액 - 1차쿠폰 - 다다익선1 - 다다익선2 - 상품쿠폰 - 장바구니쿠폰 - 포인트할인금액 - 선포인트할인금액)
-				    ordDtl.setShotDelvYn("N");										// 총알배송여부
-                	ordDtl.setGiftPackYn("N"); 										// 선물포장여부
-                	ordDtl.setGiftAddrInpYn("N");									// 선물주소입력여부
-                	ordDtl.setSavePntAmt(0);										// 외부몰주문 포인트 적립금 없음
-
-                    if (ordDtl.getSupplyCompCd() != null && !ordDtl.getSupplyCompCd().isEmpty()) {
-                    	ordGroup.setSupplyCompCd(ordDtl.getSupplyCompCd());					// 공급업체코드
-                    }
-
-            		tmpList.add(ordDtl);
-            		ordGroup.setOrderDetailList(tmpList);
-            	}
-            }
-        }
-
-        return exMastList;
-    }
-
-    /**
-	 * 주문정보유효성체크 >> 개별체크
-	 * @param Order
-	 * @return Order
-	 * @author jsh77b
-	 * @since 2021. 03. 09
-	 */
-	public GagaMap orderValidationCheck(ExtmallOrder order) {
-		GagaMap result = new GagaMap();
-		String failGoods = "";
-
-		// 1. 주문상세체크
-		Collection<ExtmallOrder> orderDetailList = order.getOrderDetailList();
-
-		int dtlCnt = orderDetailList.size();
-		int succCnt = 0;
-		int stockFailCnt = 0;
-		for (ExtmallOrder orderDetail : orderDetailList) {
-
-			GagaMap resultMap = this.checkGoodsInfo(orderDetail);
-
-			orderDetail.setUploadFailCd(resultMap.getString("uploadFailCd"));
-			orderDetail.setUploadFailReason(resultMap.getString("message"));
-
-			if ("SUCCESS".equals(resultMap.get("message").toString())) {
-				succCnt ++;
-			}else {
-				// 알림톡 발송 할 목록
-				if("Y".equals(resultMap.get("sendNotiYn"))){
-					failGoods += resultMap.get("goodsNm") + ",";
-					stockFailCnt ++;
-				}
-			}
-		}
-
-		result.set("orderDetailList", orderDetailList);
-
-		// 주문생성 여부
-		if( 0 < succCnt ) {
-			// 주문등록
-			result.put("message", "SUCCESS");
-		}else {
-			// 주문등록 안함.
-			result.put("message", "FAIL");
-		}
-
-		// 알림톡 발송타입
-		if( succCnt < 0 ) {
-			result.put("sendNotiType", "NOT");				// 알림톡 미발송-이미처리된 건(동일날짜 주문수집시)
-		}else if( 0 == succCnt ) {	// 전체실패
-
-			if( 0 == stockFailCnt ) {
-				result.put("sendNotiType", "NOT");			// 알림톡 미발송- 일반실패 또는 이미처리된 건(동일날짜 주문수집시)
-			}else if(dtlCnt == stockFailCnt) {
-				result.put("sendNotiType", "ALL_FAIL");		// 알림톡발송 - 재고관련 전체실패
-			}else {
-				result.put("sendNotiType", "PART_SUCCESS");	// 알림톡발송 - 부분성공
-			}
-
-		}else if( dtlCnt == succCnt ) {
-			result.put("sendNotiType", "ALL_SUCCESS");		// 알림톡발송 - 전체성공
-		}else {
-			result.put("sendNotiType", "PART_SUCCESS");		// 알림톡발송 - 부분성공
-		}
-
-		// 실패상품목록
-		if( 0 < failGoods.length()) failGoods = failGoods.substring(0, failGoods.length()-1);
-		result.put("failGoods", failGoods);			// 실패상품목록
-		result.put("failCnt", dtlCnt - succCnt );	// 총 실패건수
-		result.put("stockFailCnt", stockFailCnt );	// 재고로인한 실패건수
-
-		return result;
-	}
-
-	/**
-	 * 상품마스터 정보 및 재고확인
-	 * 단품 : goodsCd, optCd, optCd1, optCd2
-	 * 세트 : goodsCd,
-	 * @param params
-	 */
-	public GagaMap checkGoodsInfo(ExtmallOrder param) {
-		GagaMap result = new GagaMap();
-		result.put("message", "SUCCESS");
-
-		param.setVendorId(TsaConstants.VendorId.SHOPLINKER.value());
-		ExtmallOrder dtlOrd = ocmDao.getExtmallOrderInfo(param);
-
-		if( null == dtlOrd) {
-			result.put("sendNotiYn", "N");	// 알림톡발송 x
-			result.put("uploadFailCd", ExtmallUploadFailStat.ETC.value());	// 값이 무조건 존재해야함
-			result.put("message", "오류입니다. 관리자확인요청>"+param.getAgentOrderId());
-			return result;
-
-		}else if( null != dtlOrd.getOrdNo() ){
-			result.put("sendNotiYn", "N");	// 알림톡발송 x
-			result.put("uploadFailCd", ExtmallUploadFailStat.ORDER.value());
-			result.put("ordNo", dtlOrd.getOrdNo());
-			result.put("message", "동일한 주문건이 존재합니다.");
-			return result;
-
-		}else if( 0 < dtlOrd.getStockFailHstCnt() ){
-			result.put("sendNotiYn", "N");	// 알림톡발송 x
-			result.put("uploadFailCd", ExtmallUploadFailStat.STOCK.value());
-			result.put("message", "이미 재고 부족으로 인한 고객 알림 발송이 완료된 건입니다.(동일수집 실패)");
-			return result;
-
-		} else if( null == dtlOrd.getExtmallId()) {
-			result.put("sendNotiYn", "N");	// 알림톡발송 x
-			result.put("uploadFailCd", ExtmallUploadFailStat.STORE.value());
-			result.put("message", "제휴몰ID 정보가 잘못되었습니다.");
-			return result;
-
-		} else if( null == dtlOrd.getGoodsCd()) {
-			result.put("sendNotiYn", "N");	// 알림톡발송 x
-			result.put("uploadFailCd", ExtmallUploadFailStat.GOODS.value());
-			result.put("message", "상품코드가 잘못되었습니다.");
-			return result;
-
-		} else if( null == dtlOrd.getOptCd()) {
-			result.put("sendNotiYn", "N");	// 알림톡발송 x
-			result.put("uploadFailCd", ExtmallUploadFailStat.SIZE.value());
-			result.put("message", "옵션코드가 잘못되었습니다.");
-			return result;
-
-		} else if (TscConstants.GoodsStat.SOLDOUT.value().equals(dtlOrd.getGoodsStat())) {
-			result.put("goodsNm", dtlOrd.getGoodsNm());
-			result.put("sendNotiYn", "Y");	// 알림톡발송 o
-			result.put("uploadFailCd", ExtmallUploadFailStat.STOCK.value());
-			result.put("message", "품절입니다.");
-			return result;
-
-		} else if (!TscConstants.GoodsStat.SOLDOUT.value().equals(dtlOrd.getGoodsStat()) && !TscConstants.GoodsStat.APPR.value().equals(dtlOrd.getGoodsStat())) {
-			result.put("goodsNm", dtlOrd.getGoodsNm());
-			result.put("sendNotiYn", "Y");	// 알림톡발송 o
-			result.put("uploadFailCd", ExtmallUploadFailStat.STOCK.value());
-			result.put("message", "판매중인 상품이 아닙니다.");
-			return result;
-		}
-
-		//상품 재고 확인
-		GoodsStock checkParam = new GoodsStock();
-		checkParam.setGoodsCd(param.getGoodsCd());
-		checkParam.setOptCd(param.getOptCd());
-		checkParam.setItemCd(param.getItemCd());
-		checkParam.setGoodsQty(param.getGoodsQty());
-		checkParam.setGoodsType(param.getGoodsType());
-		String stockResult = this.getCheckStock(checkParam);
-
-		if (!"SUCCESS".equals(stockResult)) {
-			result.put("goodsNm", dtlOrd.getGoodsNm());
-			result.put("sendNotiYn", "Y");	// 알림톡발송 o
-			result.put("uploadFailCd", ExtmallUploadFailStat.STOCK.value());
-			result.put("message", stockResult);
-			return result;
-		}
-
-		return result;
-	}
-
-	/**
-	 * 상품 재고 체크
-	 * @param param
-	 * goodsCd   (원상품코드) 필수
-	 * goodsType (상품타입) 필수
-	 * optCd     (옵션코드) 필수
-	 * goodsQty  (확인 재고 수량) 필수
-	 * itemCd    (세트 구성 상품코드) 세트
-	 * @return String
-	 * @author xodud1202
-	 * @since 2021. 01. 28
-	 */
-	public String getCheckStock(GoodsStock param) {
-
-		GoodsStock stockCheck = new GoodsStock();								// 재고 조회 결과
-		stockCheck.setGoodsCd(param.getGoodsCd());
-		stockCheck.setOptCd(param.getOptCd());
-
-		stockCheck = ocmDao.getGoodsStockInfo(stockCheck);					// 구성 상품 재고 조회
-
-		if (stockCheck == null) {
-			return "재고체크 실패했습니다. 새로고침 후 다시 시도해주세요.";
-		}
-
-		if ("Y".equals(stockCheck.getSoldoutYn())) {
-			return stockCheck.getOptCd2() + " 옵션은 품절입니다.";
-		}
-
-		if (param.getGoodsQty() > stockCheck.getCurrStockQty()) {
-			return "옵션의 재고가 충분하지 않습니다.";
-		}
-
-		return "SUCCESS";
-	}
-
-	/**
-	 * 사은품정보 조회
-	 * @param Order
-	 * @return Order
-	 * @author jsh77b
-	 * @since 2020. 12. 16
-	 */
-	public GagaMap getOrderFreegift(ExtmallOrder order) {
-
-		GagaMap resultMap = new GagaMap();
-		Collection<ExtmallOrder> freegiftGoodsList 	= null;
-		Collection<ExtmallOrder> freegiftList 			= null;
-
-		// 1. 장바구니 담긴 상품으로 적용된 사은품 프로모션 정보 조회 (with 상품금액)
-		Collection<ExtmallOrder> freegiftApplyAmtList = ocmDao.getFreeGiftGoodsApplyAmt(order);
-
-		// 1.1 장바구니 상품으로 적용된 사은품 여부 판단
-		if (freegiftApplyAmtList.size() > 0) {
-
-			Collection<ExtmallOrder> freegiftGoodsApplyAmtList = new ArrayList<ExtmallOrder>();
-			int tempFreegiftSq 		= 0;
-			int index				= 0;
-			boolean	temp			 = false;
-
-			// 사은품시퀀스 담기
-			for (ExtmallOrder freegiftApplyAmt : freegiftApplyAmtList) {
-				temp = true;
-				if (freegiftGoodsApplyAmtList.size() > 0) {
-					for (ExtmallOrder freegiftGoodsApplyAmt : freegiftGoodsApplyAmtList) {
-						if (freegiftApplyAmt.getFreegiftSq() == freegiftGoodsApplyAmt.getFreegiftSq()) {
-							temp = false;
-						}
-					}
-
-					if (temp) {
-						freegiftGoodsApplyAmtList.add(freegiftApplyAmt);
-					}
-				} else {
-					freegiftGoodsApplyAmtList.add(freegiftApplyAmt);
-				}
-			}
-
-
-			// 사은품시퀀스(FREEGIFT_SQ), 사은품시퀀스합계금액(FREEGIFT_AMT)
-			for (ExtmallOrder freegiftGoodsApplyAmt : freegiftGoodsApplyAmtList) {
-				// 금액초기화
-				freegiftGoodsApplyAmt.setFreegiftAmt(0);
-
-				for (ExtmallOrder freegiftApplyAmt : freegiftApplyAmtList) {
-					int ordAmt = (freegiftApplyAmt.getCurrPrice() + freegiftApplyAmt.getOptAddPrice()) * freegiftApplyAmt.getGoodsQty();
-					if (freegiftGoodsApplyAmt.getFreegiftSq() == freegiftApplyAmt.getFreegiftSq()) {
-						freegiftGoodsApplyAmt.setFreegiftAmt(freegiftGoodsApplyAmt.getFreegiftAmt() + ordAmt);
-					}
-				}
-			}
-
-
-			// 사은품시퀀스배열생성
-			int[] freegiftSqArr = new int[freegiftGoodsApplyAmtList.size()];
-			index = 0;
-
-			// 사은품시퀀스(FREEGIFT_SQ), 사은품시퀀스합계금액(FREEGIFT_AMT)
-			for (ExtmallOrder fregiftGoodsApplyAmt : freegiftGoodsApplyAmtList) {
-				freegiftSqArr[index] = fregiftGoodsApplyAmt.getFreegiftSq();
-				index++;
-			}
-
-			order.setFreegiftSqArr(freegiftSqArr);
-
-			// 2. 사은품 적용구간 정보 조회
-			Collection<ExtmallOrder> freegiftGoodsApplySectionList = ocmDao.getFreeGiftGoodsApplySection(order);
-
-			// 2.1 사은품 적용구간이 있는지 판단
-			if (freegiftGoodsApplySectionList.size() > 0) {
-				int[] freegiftSectionSqArr = new int[freegiftGoodsApplySectionList.size()];
-
-				int tempFreegiftSectionSq = 0;
-				int k = 0;
-
-				// 사은품시퀀스(FREEGIFT_SQ), 사은품시퀀스합계금액(FREEGIFT_AMT)
-				for (ExtmallOrder freegiftGoodsApplyAmt : freegiftGoodsApplyAmtList) {
-					int freegiftAmt 	= freegiftGoodsApplyAmt.getFreegiftAmt();
-
-					// 사은풐구간시퀀스(FREEGIFT_SECTION_SQ, 사은품시퀀스(FREEGIFT_SQ), 사은풐구간금액(SECTION_VAL)
-					for (ExtmallOrder freegiftGoodsApplySection : freegiftGoodsApplySectionList) {
-						int freegiftSectionSq 	= freegiftGoodsApplySection.getFreegiftSectionSq();
-						int sectionVal 			= freegiftGoodsApplySection.getSectionVal();
-
-						// 같은 사은품 프로모션끼리 등록
-						if (freegiftGoodsApplyAmt.getFreegiftSq() == freegiftGoodsApplySection.getFreegiftSq()) {
-							// 2021.05.07 금액체크는 이상일때 수정
-							if (freegiftAmt >= sectionVal) {
-								tempFreegiftSectionSq = freegiftSectionSq;
-							}
-						}
-					}
-
-					freegiftSectionSqArr[k] = tempFreegiftSectionSq;
-					k++;
-				}
-
-				// 3. 사은품 적용구간 의 적용 사은품정보조회
-				order.setFreegiftSectionSqArr(freegiftSectionSqArr);
-				Collection<ExtmallOrder> freegiftGoodsApplyValList = ocmDao.getFreeGiftGoodsApplyVal(order);
-
-				if (freegiftGoodsApplyValList.size() > 0) {
-					freegiftList 		= new ArrayList<ExtmallOrder>();
-					freegiftGoodsList 	= new ArrayList<ExtmallOrder>();
-
-					for (ExtmallOrder freegiftGoodsApplyVal : freegiftGoodsApplyValList) {
-
-						// 제휴몰 사은품 전체 제공
-						//if (freegiftGoodsApplyVal.getFreegiftSq() != tempFreegiftSq) {
-							freegiftList.add(freegiftGoodsApplyVal);
-							tempFreegiftSq = freegiftGoodsApplyVal.getFreegiftSq();
-						//}
-
-						freegiftGoodsList.add(freegiftGoodsApplyVal);
-					}
-				}
-			}
-		}
-
-		resultMap.set("freegiftApplyAmtList"		, freegiftApplyAmtList);
-		resultMap.set("freegiftGoodsList"			, freegiftGoodsList);
-		resultMap.set("freegiftList"				, freegiftList);
-
-		return resultMap;
-	}
-
-
-
-
-
-
-	/**
-	 * 외부몰주문등록 엑셀 저장
-	 *
-	 * @param excelExtmallOrderList - 외부몰주문등록리스트
-	 * @param excelFilename - 엑셀파일명
-	 * @return void
-	 * @author Daehyoung
-	 * @since 2020. 02. 13
-	 */
-	@Transactional("shopTxnManager")
-	public void createExtmallOrderExcelupload(Collection<GagaMap> excelExtmallOrderList, String excelFilename) {
-		String targetPath = env.getProperty("upload.excel.target.path");
-		int userNo = TsaSession.getInfo().getUserNo();
-		if ((excelExtmallOrderList == null || excelExtmallOrderList.isEmpty())) {
-			try {
-				GagaFileUtil.deleteFile(GagaFileUtil.getConcatenationPath(targetPath, excelFilename));
-			} catch (IOException e) {
-				// Nothing Do
-			}
-			throw new IllegalStateException(message.getMessage("FAIL_1001"));
-		}
-		ocmDao.deleteExtmallOrderUploadTmp(userNo);
-
-
-		int dataIndex = 2;
-		int index = 0;
-		String vendorId = "";
-		for (GagaMap gagaMap : excelExtmallOrderList) {
-			ExtmallOrder extmallOrder = mapper.convertValue(gagaMap, ExtmallOrder.class);
-			String[] params = extmallOrder.getParams();
-			String[] columns = extmallOrder.getColumns();
-
-			for (int validation = 0; validation < params.length; validation++) {
-				if( validation != 0 && validation != 15 && validation != 22 ) {	// 첫번재열, 이메일 미체크, 배송MEMO
-					if ("".equals(params[validation]) || params[validation] == null || "null".equals(params[validation])) {
-						throw new IllegalStateException(dataIndex + "행에 " + columns[validation] + "(을)를 입력해 주세요.");
-					}
-				}
-			}
-
-			//extmallOrder.setOrdDt(extmallOrder.getOrdDt().replace("-", ""));
-			//extmallOrder.setPayDt(extmallOrder.getPayDt().replace("-", ""));
-			extmallOrder.setVendorId(TsaConstants.VendorId.SHOPLINKER.value());
-			extmallOrder.setOrdAmt( (extmallOrder.getCurrPrice() * extmallOrder.getOrdQty()) - extmallOrder.getCpnDcAmt());
-			extmallOrder.setUploadStat(TsaConstants.ExtmallUploadStat.WAIT.value());
-			extmallOrder.setRegNo(userNo);
-			extmallOrder.setUploadGb("E");
-			ocmDao.createExtmallOrderUploadTmp(extmallOrder);
-			dataIndex++;
-			index++;
-		}
-
-		// 결과조회시, 실패목록이 여러건 뜨지 않도록 하기위함. => 실패 history가 단건만 생성되도록
-		ocmDao.deleteExtmallOrderUploadFail(userNo);
-	}
-
-	/**
-	 * 외부몰주문등록 업로드 후 목록
-	 *
-	 * @param ExtmallOrder - 외부몰 주문등록 정보
-	 * @return Collection<ExtmallOrder>
-	 * @author Daehyoung
-	 * @since 2020. 02. 13
-	 */
-	public Collection<ExtmallOrder> getExtmallOrderUploadTmpList() {
-		ExtmallOrder extmallOrder = new ExtmallOrder();
-		extmallOrder.setRegNo(TsaSession.getInfo().getUserNo());
-		return ocmDao.getExtmallOrderUploadTmpList(extmallOrder);
-	}
-
-	/**
-	 * 외부몰주문등록 업로드 후 저장 처리
-	 *
-	 * @param extmallOrderUpload - 외부몰주문업로드 정보
-	 * @return String - 결과값
-	 * @author jmh
-	 * @since 2020. 02. 17
-	 */
-	@Transactional("shopTxnManager")
-	public String saveExtmallorder(ExtmallOrder extmallOrder) {
-
-		int userNo = TsaSession.getInfo().getUserNo();
-		extmallOrder.setRegNo(userNo);
-		extmallOrder.setVendorId(TsaConstants.VendorId.SHOPLINKER.value());
-
-		int collectCnt = ocmDao.createExtmallOrderUploadSecond(extmallOrder);
-		//log.info("STEP2 2.1.외부몰주문업로드 데이터 생성: 성공({} 건)", collectCnt);
-
-		this.createShoplinkerOrder("E");
-
-		ExtmallOrder resultInfo = ocmDao.getExtmallOrderUploadResultInfo(extmallOrder);
-
-		return message.getMessage("SABANGNET_0004", new Object[] {collectCnt, resultInfo.getSuccCnt(), resultInfo.getFailCnt()});
-	}
-
-	/**
-	 * 외부몰주문등록 업로드 후 목록
-	 *
-	 * @return Collection<ExtmallOrder>
-	 * @author jmh
-	 * @since 2020. 02. 17
-	 */
-	public Collection<ExtmallOrder> getExtmallOrderUploadSecondList() {
-		ExtmallOrder extmallOrder = new ExtmallOrder();
-		extmallOrder.setRegNo(TsaSession.getInfo().getUserNo());
-		return ocmDao.getExtmallOrderUploadSecondList(extmallOrder);
-	}
-
-
 }

+ 25 - 181
src/main/java/com/style24/admin/biz/service/TsaPlanService.java

@@ -90,26 +90,7 @@ public class TsaPlanService {
 			param.setMainPimg("/planning/" + yearMonth + "/" + newFilename);
 			param.setMainMimg("/planning/" + yearMonth + "/" + newFilename);
 		}
-//		if(param.getMainMimg() != null && !"".equals(param.getMainMimg())){
-//			String imgInd = String.valueOf(ind);
-//			if (ind < 10) {
-//				imgInd = "0" + imgInd;
-//			}
-//			String planUploadPath = env.getProperty("upload.default.target.path");
-//			String yearMonth = GagaDateUtil.getToday().substring(0, 6);
-//			planUploadPath = GagaFileUtil.getConcatenationPath(planUploadPath, "/planning");
-//			File newFile = new File(GagaFileUtil.getConcatenationPath(planUploadPath, param.getMainMimg()));
-//			planUploadPath = GagaFileUtil.getConcatenationPath(planUploadPath, yearMonth);
-//			String newFilename = "PLANNING_" + GagaDateUtil.getTodayDateTime() + "_" + imgInd + "." + StringUtils.getFilenameExtension(param.getMainMimg());
-//			File uniqueFile = GagaFileUtil.getUniqueFile(new File(GagaFileUtil.getConcatenationPath(planUploadPath, newFilename)));
-//			// Rename a file
-//			File path = new File(planUploadPath);
-//			if (!path.exists()) {
-//				path.mkdir();
-//			}
-//			newFile.renameTo(uniqueFile);
-//			param.setMainMimg("/planning/" + yearMonth + "/" + newFilename);
-//		}
+
 		planDao.createPlanInfo(param);
 		
 		String[] brand = param.getMultiBrand();
@@ -168,24 +149,28 @@ public class TsaPlanService {
 			planDao.savePlanAttendBenefit(attendInfo);
 		}
 		
-
-		log.debug("planSq : {}", param.getPlanSq());
-
-		//기획전 응모이벤트
-//		if (StringUtils.isNotBlank(param.getPrivacyPolicy())) {
-//			int i = 0;
-//			for (String planQtitle : param.getPlanQtitle()) {
-//				PlanQuestAnswer planQuestAnswer = new PlanQuestAnswer();
-//				planQuestAnswer.setPlanSq(param.getPlanSq());
-//				planQuestAnswer.setPlanQtitle(planQtitle);
-//				planQuestAnswer.setAttachYn(param.getAttachYn()[i]);
-//				planQuestAnswer.setQuestNo(i);
-//				planQuestAnswer.setRegNo(param.getRegNo());
-//				planQuestAnswer.setUpdNo(param.getUpdNo());
-//				planDao.savePlanQuestion(planQuestAnswer);
-//				i++;
-//			}
-//		}
+		// 총알배송일떼 -- 코너에 자동으로 자사브랜드 insert
+		String planGb = param.getPlanGb();
+		if ("S".equals(planGb)) {
+			
+			Collection<Plan> brandList = planDao.getShotSelfBrandList();
+			int idx = 1;
+			for (Plan corner : brandList) {
+				// 5열 전시 default
+				corner.setRegNo(TsaSession.getInfo().getUserNo());
+				corner.setUpdNo(TsaSession.getInfo().getUserNo());
+				corner.setPlanSq(param.getPlanSq());
+				corner.setDispStdt(param.getDispStdt());
+				corner.setDispEddt(param.getDispEddt());
+				corner.setCornerDispType("G045_5");
+				corner.setDispOrd(idx);
+				corner.setCornerNm(corner.getBrandNm());
+				
+				planDao.savePlanCornerInfo(corner);
+				idx++;
+			}
+			
+		}
 
 	}
 
@@ -389,29 +374,7 @@ public class TsaPlanService {
 			}
 			
 		}
-//		if(param.getMainMimg() != null && !"".equals(param.getMainMimg())){
-//			String imgInd = String.valueOf(ind);
-//			if (ind < 10) {
-//				imgInd = "0" + imgInd;
-//			}
-//			if(!param.getMainMimg().contains("planning")) {
-//				String planUploadPath = env.getProperty("upload.default.target.path");
-//				String yearMonth = GagaDateUtil.getToday().substring(0, 6);
-//				planUploadPath = GagaFileUtil.getConcatenationPath(planUploadPath, "/planning");
-//				File newFile = new File(GagaFileUtil.getConcatenationPath(planUploadPath, param.getMainMimg()));
-//				planUploadPath = GagaFileUtil.getConcatenationPath(planUploadPath, yearMonth);
-//				String newFilename = "PLANNING_" + GagaDateUtil.getTodayDateTime() + "_" + imgInd + "." + StringUtils.getFilenameExtension(param.getMainMimg());
-//				File uniqueFile = GagaFileUtil.getUniqueFile(new File(GagaFileUtil.getConcatenationPath(planUploadPath, newFilename)));
-//				// Rename a file
-//				File path = new File(planUploadPath);
-//				if (!path.exists()) {
-//					path.mkdir();
-//				}
-//				newFile.renameTo(uniqueFile);
-//				param.setMainMimg("/planning/" + yearMonth + "/" + newFilename);
-//			}
-//			
-//		}
+
 		// 이벤트 출석체크
 		planDao.deletePlanAttendBenefitList(param);
 		
@@ -426,21 +389,6 @@ public class TsaPlanService {
 		// 최종업데이트 
 		planDao.updatePlanInfo(param);
 
-		//기획전 응모이벤트
-//		if (StringUtils.isNotBlank(param.getPrivacyPolicy())) {
-//			int i = 0;
-//			for (String planQtitle : param.getPlanQtitle()) {
-//				PlanQuestAnswer planQuestAnswer = new TsaPlanQuestAnswer();
-//				planQuestAnswer.setPlanSq(param.getPlanSq());
-//				planQuestAnswer.setPlanQtitle(planQtitle);
-//				planQuestAnswer.setAttachYn(param.getAttachYn()[i]);
-//				planQuestAnswer.setQuestNo(i);
-//				planQuestAnswer.setRegNo(param.getRegNo());
-//				planQuestAnswer.setUpdNo(param.getUpdNo());
-//				planDao.savePlanQuestion(planQuestAnswer);
-//				i++;
-//			}
-//		}
 	}
 	
 	/**
@@ -1568,10 +1516,6 @@ public class TsaPlanService {
 	@Transactional("shopTxnManager")
 	public Plan createPlanFsrcPcTop(Plan param) {
 		Plan fsrcTop = new Plan();
-		int fsrcPcTotalCnt = param.getFsrcPcTop().toCharArray().length;
-		int fsrcMobileTotalCnt = param.getFsrcMobileTop().toCharArray().length;
-		int byteCnt = 1500;
-		
 		
 		fsrcTop.setFrontGb("T");                 
 		fsrcTop.setRegNo(param.getRegNo());      
@@ -1582,54 +1526,6 @@ public class TsaPlanService {
 		fsrcTop.setFsrcMob(param.getFsrcMobileTop());
 		planDao.savePlanFsrcInfo(fsrcTop);
 		
-//		if (fsrcPcTotalCnt > byteCnt || fsrcMobileTotalCnt > byteCnt) { // 4000 바이트 이상 일 때 파싱.
-//			StringBuilder sbStr = new StringBuilder(4000);
-//
-//			int cnt = 0;
-//			int getCnt = 0;
-//			int tempCnt = 1500;
-//
-//			for (char ch : param.getFsrcPcTop().toCharArray()) {
-//				getCnt++;
-//				sbStr.append(ch);
-//
-//				if (getCnt == tempCnt || getCnt == fsrcPcTotalCnt) {
-//					fsrcTop.setSeq(cnt + 1);
-//					fsrcTop.setFsrcPc(sbStr.toString());
-//
-//					// 초기화
-//					sbStr.delete(0, tempCnt);
-//					cnt++;
-//					tempCnt += byteCnt;
-//
-//					//planDao.savePlanFsrcInfo(fsrcTop);
-//				}
-//			}
-//		
-//			for (char ch : param.getFsrcMobileTop().toCharArray()) {
-//				getCnt++;
-//				sbStr.append(ch);
-//
-//				if (getCnt == tempCnt || getCnt == fsrcPcTotalCnt) {
-//					fsrcTop.setSeq(cnt + 1);
-//					fsrcTop.setFsrcMob(sbStr.toString());
-//
-//					// 초기화
-//					sbStr.delete(0, tempCnt);
-//					cnt++;
-//					tempCnt += byteCnt;
-//					
-//				}
-//			}		
-//			planDao.savePlanFsrcInfo(fsrcTop);
-//		} 
-//		else {
-//			fsrcTop.setSeq(1);
-//			fsrcTop.setFsrcPc(param.getFsrcPcTop());
-//			fsrcTop.setFsrcMob(param.getFsrcMobileTop());
-//
-//			planDao.savePlanFsrcInfo(fsrcTop);
-//		}
 		return param;
 	}
 
@@ -1640,10 +1536,6 @@ public class TsaPlanService {
 	@Transactional("shopTxnManager")
 	public Plan createPlanFsrcPcBtm(Plan param) {
 		Plan fsrcBtm = new Plan();
-		int fsrcPcTotalCnt = param.getFsrcPcBtm().toCharArray().length;
-		int fsrcMobileTotalCnt = param.getFsrcMobileBtm().toCharArray().length;
-		int byteCnt = 1500;
-		
 		
 		fsrcBtm.setFrontGb("B");                 
 		fsrcBtm.setRegNo(param.getRegNo());      
@@ -1652,55 +1544,7 @@ public class TsaPlanService {
 		fsrcBtm.setFsrcPc(param.getFsrcPcBtm());
 		fsrcBtm.setFsrcMob(param.getFsrcMobileBtm());
 		planDao.savePlanFsrcInfo(fsrcBtm);
-		
-//		if (fsrcPcTotalCnt > byteCnt) { // 4000 바이트 이상 일 때 파싱.
-//			StringBuilder sbStr = new StringBuilder(4000);
-//
-//			int cnt = 0;
-//			int getCnt = 0;
-//			int tempCnt = 1500;
-//
-//			for (char ch : param.getFsrcPcBtm().toCharArray()) {
-//				getCnt++;
-//				sbStr.append(ch);
-//
-//				if (getCnt == tempCnt || getCnt == fsrcPcTotalCnt) {
-//					fsrcBtm.setSeq(cnt + 1);
-//					fsrcBtm.setFsrcPc(sbStr.toString());
-//
-//					// 초기화
-//					sbStr.delete(0, tempCnt);
-//					cnt++;
-//					tempCnt += byteCnt;
-//
-//				}
-//
-//			}
-//			
-//			for (char ch : param.getFsrcMobileBtm().toCharArray()) {
-//				getCnt++;
-//				sbStr.append(ch);
-//
-//				if (getCnt == tempCnt || getCnt == fsrcPcTotalCnt) {
-//					fsrcBtm.setSeq(cnt + 1);
-//					fsrcBtm.setFsrcMob(sbStr.toString());
-//
-//					// 초기화
-//					sbStr.delete(0, tempCnt);
-//					cnt++;
-//					tempCnt += byteCnt;
-//					
-//				}
-//			}		
-//			
-//			planDao.savePlanFsrcInfo(fsrcBtm);
-//		} else {
-//			fsrcBtm.setSeq(1);
-//			fsrcBtm.setFsrcPc(param.getFsrcPcBtm());
-//			fsrcBtm.setFsrcMob(param.getFsrcMobileBtm());
-//
-//			planDao.savePlanFsrcInfo(fsrcBtm);
-//		}
+
 		return param;
 	}
 

+ 1 - 0
src/main/java/com/style24/admin/biz/service/TsaPollService.java

@@ -81,6 +81,7 @@ public class TsaPollService {
 	 * @author sowon
 	 * @since 2021. 5. 2
 	 */
+	@Transactional("shopTxnManager")
 	public void removeQuestion(Poll poll) {
 		pollDao.removeQuestion(poll);
 	}

+ 0 - 1735
src/main/java/com/style24/admin/biz/service/TsaShoplinkerService.java

@@ -1,1735 +0,0 @@
-package com.style24.admin.biz.service;
-
-import java.io.IOException;
-import java.net.URLEncoder;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.env.Environment;
-import org.springframework.stereotype.Service;
-
-import com.gagaframework.shoplinker.GagaShoplinkertUtil;
-import com.gagaframework.shoplinker.domain.orderlist.Order;
-import com.gagaframework.shoplinker.env.GagaShoplinkerConstants;
-import com.gagaframework.web.parameter.GagaMap;
-import com.gagaframework.web.util.GagaDateUtil;
-import com.gagaframework.web.util.GagaFileUtil;
-import com.style24.admin.biz.dao.TsaOcmDao;
-import com.style24.admin.biz.dao.TsaShoplinkerDao;
-import com.style24.admin.support.env.TsaConstants;
-import com.style24.admin.support.security.session.TsaSession;
-import com.style24.core.support.message.TscMessageByLocale;
-import com.style24.persistence.domain.ExtmallOrder;
-import com.style24.persistence.domain.ShoplinkerGoods;
-import com.style24.persistence.domain.ShoplinkerInvoice;
-import com.style24.persistence.domain.ShoplinkerOrder;
-import com.style24.persistence.domain.ShoplinkerSearch;
-
-import lombok.extern.slf4j.Slf4j;
-
-/**
- * 영업망관리 샵링커 Service
- *
- * @author gagamel
- * @since 2020. 11. 4
- */
-@Service
-@Slf4j
-@SuppressWarnings("deprecation")
-public class TsaShoplinkerService {
-
-	@Autowired
-	private Environment env;
-
-	@Autowired
-	private TscMessageByLocale message;
-
-	@Autowired
-	private TsaShoplinkerDao shoplinkerDao;
-
-	@Autowired
-	private TsaCommonService commonService;
-
-	@Autowired
-	private TsaOcmDao ocmDao;
-
-	private String fileAddNm; // 유저번호_년월일시분초
-
-
-	/**
-	 * 샵링커 api 호출 가능여부
-	 *
-	 * @param
-	 * @return
-	 * @author jmh
-	 * @since 2020. 5. 28
-	 */
-	public ShoplinkerSearch getCallRunableInfo(ShoplinkerSearch slkSearch) {
-		ShoplinkerSearch result = shoplinkerDao.getCallRunableInfo(slkSearch);
-		if( null == result ) {
-			result = new ShoplinkerSearch();
-			result.setRunCnt(0);
-		}
-		return result;
-	}
-
-
-	/**
-	 * 샵링커 api 호출 가능여부 상태 저장
-	 *
-	 * @param shoplinkerOrder
-	 * @return
-	 * @author jmh
-	 * @since 2020. 5. 28
-	 */
-	public void saveCallApiRunable(ShoplinkerSearch slkSearch) {
-		shoplinkerDao.saveCallApiRunable(slkSearch);
-	}
-
-	/**
-	 * 샵링커 api 호출 가능여부 상태 수정
-	 *
-	 * @param shoplinkerOrder
-	 * @return
-	 * @author jmh
-	 * @since 2020. 5. 28
-	 */
-	public void updateCallApiRunable(ShoplinkerSearch slkSearch) {
-		shoplinkerDao.updateCallApiRunable(slkSearch);
-	}
-
-
-	/**
-	 * 샵링커 상품등록
-	 *
-	 * @param shoplinkerGoods
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	public GagaMap createShoplinkerXml(Collection<GagaMap> ecxelGoodsList, ShoplinkerGoods shoplinkerGoods)throws IOException {
-		// 파일명 추가 네이밍 규칙
-		fileAddNm = TsaSession.getInfo().getUserNo() +"_"+ GagaDateUtil.getTodayDateTime();
-
-		GagaMap rtnMap = new GagaMap();
-		int optionAll=0, optionSucc=0;
-		int excelCnt= ecxelGoodsList.size();
-		int tProdSucc = 0, productSucc=0, goodsNotiSucc=0, certSucc=0, imageSucc=0;
-
-		shoplinkerGoods.setRegNo(TsaSession.getInfo().getUserNo());
-
-		for (GagaMap gagaMap : ecxelGoodsList) {
-			if( !"".equals(gagaMap.getString("goodsCd").trim())) {
-				shoplinkerGoods.setGoodsCd(gagaMap.getString("goodsCd"));
-
-				// 1. 단품생성
-				rtnMap = createOptionRegisterXml(shoplinkerGoods);
-				optionAll += rtnMap.getInt("allCnt");
-				optionSucc += rtnMap.getInt("succCnt");
-
-				// 2. 상품생성
-				tProdSucc = createGoodsRegisterXml(shoplinkerGoods);
-				productSucc += tProdSucc;
-
-				// 상품생성 성공 시 고시,인증,이미지 보냄
-				if( 0 < tProdSucc ) {
-				//if( true ) {
-					// 3. 고시정보(품목정보)
-					goodsNotiSucc += createGoodsNotiRegisterXml(shoplinkerGoods);
-
-					// 4. 인증정보
-					certSucc += createCertRegisterXml(shoplinkerGoods);
-
-					// 5. 상품이미지정보
-					imageSucc += createImageRegisterXml(shoplinkerGoods);
-				}
-			}
-		}
-
-		rtnMap = new GagaMap();
-		rtnMap.setInt("excelCnt", excelCnt);
-		rtnMap.setInt("optionAll", optionAll);
-		rtnMap.setInt("optionSucc", optionSucc);
-		rtnMap.setInt("productSucc", productSucc);
-		rtnMap.setInt("goodsNotiSucc", goodsNotiSucc);
-		rtnMap.setInt("certSucc", certSucc);
-		rtnMap.setInt("imageSucc", imageSucc);
-
-		return rtnMap;
-	}
-
-	/**
-	 * 샵링커 상품등록 - 1. 단품생성
-	 *
-	 * @param shoplinkerGoods
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	private GagaMap createOptionRegisterXml(ShoplinkerGoods shoplinkerGoods) throws IOException {
-
-		GagaMap returnMap = new GagaMap();
-		ShoplinkerGoods regMap = new ShoplinkerGoods();
-		regMap.setApiType("OPTION");
-		regMap.setApiSubUrl(env.getProperty("shoplinker.url.option"));
-		regMap.setGoodsCd(shoplinkerGoods.getGoodsCd());
-		regMap.setRegNo(shoplinkerGoods.getRegNo());
-		regMap.setXmlPath(shoplinkerGoods.getXmlPath());
-		regMap.setDomainUrl(shoplinkerGoods.getDomainUrl());
-
-		int succCnt = 0;
-		int allCnt = 0;
-
-		try {
-			// 옵션 목록조회
-			Collection<ShoplinkerGoods> list = shoplinkerDao.getOptionList(shoplinkerGoods);
-			if( null != list && !list.isEmpty()) {
-				allCnt = list.size();
-
-				StringBuilder sbRequest;
-				int opCnt = 0;
-				for (ShoplinkerGoods map : list) {
-					opCnt ++;
-
-					// xml 데이터 세팅
-					sbRequest = new StringBuilder();
-					sbRequest.append("<?xml version=\"1.0\" encoding=\"euc-kr\"?>\n");
-					sbRequest.append("<shoplinker>\n");
-					sbRequest.append("	<productInfo>\n");
-					sbRequest.append("		<product>\n");
-
-					sbRequest.append("			<customer_id>").append(shoplinkerGoods.getCustomerId()).append("</customer_id>\n");
-					sbRequest.append("			<partner_product_id><![CDATA[").append(map.getPartnerProductId()).append("]]></partner_product_id>\n");
-					sbRequest.append("			<attribute_code><![CDATA[").append("999999999").append("]]></attribute_code>\n");
-					sbRequest.append("			<product_name><![CDATA[").append(map.getOptCd1()+"_"+map.getOptCd2()).append("]]></product_name>\n");
-					sbRequest.append("			<quantity>").append(map.getQuantity()).append("</quantity>\n");
-
-					sbRequest.append("		</product>\n");
-					sbRequest.append("	</productInfo>\n");
-					sbRequest.append("</shoplinker>\n");
-
-					regMap.setOptCd(map.getPartnerProductId());
-					regMap.setQuantity(map.getQuantity());
-
-					// api 호출 및 결과 history 저장
-					succCnt += callGoodsRegApi(regMap , sbRequest, "option_"+opCnt);
-				}
-			}
-		}catch(Exception e) {
-			log.error("xml 생성오류 ", e);
-			regMap.setApiResult("error");
-			regMap.setApiMessage("xml 생성오류");
-			shoplinkerDao.insertShoplinerApiHst(regMap);
-		}
-
-		returnMap.setInt("allCnt", allCnt);
-		returnMap.setInt("succCnt", succCnt);
-
-		return returnMap;
-	}
-
-	/**
-	 * 샵링커 상품등록 - 2. 상품생성
-	 *
-	 * @param shoplinkerGoods
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	public int createGoodsRegisterXml(ShoplinkerGoods shoplinkerGoods) throws IOException {
-
-		ShoplinkerGoods regMap = new ShoplinkerGoods();
-		regMap.setApiType("PRODUCT");
-		regMap.setApiSubUrl(env.getProperty("shoplinker.url.product"));
-		regMap.setGoodsCd(shoplinkerGoods.getGoodsCd());
-		regMap.setRegNo(shoplinkerGoods.getRegNo());
-		regMap.setXmlPath(shoplinkerGoods.getXmlPath());
-		regMap.setDomainUrl(shoplinkerGoods.getDomainUrl());
-
-		int succCnt = 0;
-
-		try {
-			// 상품기본정보
-			ShoplinkerGoods goodsMap = shoplinkerDao.getGoods(shoplinkerGoods);
-
-			// 상품상세(퍼블) 세팅
-			String detailDesc = this.setDetailDesc(shoplinkerGoods, goodsMap);
-
-			// xml 데이터 세팅
-			StringBuilder sbRequest = new StringBuilder();
-			sbRequest.append("<?xml version=\"1.0\" encoding=\"euc-kr\"?>\n");
-			sbRequest.append("<shoplinker>\n");
-			sbRequest.append("	<productInfo>\n");
-			sbRequest.append("		<product>\n");
-
-			sbRequest.append("			<customer_id>").append(shoplinkerGoods.getCustomerId()).append("</customer_id>\n");
-			sbRequest.append("			<partner_product_id>").append(goodsMap.getGoodsCd()).append("</partner_product_id>\n");
-			sbRequest.append("			<attribute_title_code>").append("999999999").append("</attribute_title_code>\n");
-			sbRequest.append("			<attribute_partner_product_id>").append(goodsMap.getAttributePartnerProductId()).append("</attribute_partner_product_id>\n");
-			sbRequest.append("			<product_name>").append(goodsMap.getProductName()).append("</product_name>\n");
-			sbRequest.append("			<detail_desc>").append(detailDesc).append("</detail_desc>\n");
-
-			// 가격연계
-			if( "Y".equals(goodsMap.getSyncYn())) {
-				//sbRequest.append("			<new_desc_top>").append(goodsMap.getNewDescTop()).append("</new_desc_top>\n");
-				//sbRequest.append("			<market_price>").append(goodsMap.getMarketPrice()).append("</market_price>\n");
-				sbRequest.append("			<sale_price>").append(goodsMap.getSalePrice()).append("</sale_price>\n");
-				sbRequest.append("			<supply_price>").append(goodsMap.getSupplyPrice()).append("</supply_price>\n");
-				//sbRequest.append("			<market_price_p>").append(goodsMap.getMarketPriceP()).append("</market_price_p>\n");
-				//sbRequest.append("			<sale_price_p>").append(goodsMap.getSalePriceP()).append("</sale_price_p>\n");
-				//sbRequest.append("			<supply_price_p>").append(goodsMap.getSupplyPriceP()).append("</supply_price_p>\n");
-			}else{
-				//sbRequest.append("			<new_desc_top>").append(goodsMap.getNewDescTop()).append("</new_desc_top>\n");
-				//sbRequest.append("			<market_price>").append(goodsMap.getMarketPrice()).append("</market_price>\n");
-				sbRequest.append("			<sale_price>").append(0).append("</sale_price>\n");
-				sbRequest.append("			<supply_price>").append(0).append("</supply_price>\n");
-				//sbRequest.append("			<market_price_p>").append(goodsMap.getMarketPriceP()).append("</market_price_p>\n");
-				//sbRequest.append("			<sale_price_p>").append(goodsMap.getSalePriceP()).append("</sale_price_p>\n");
-				//sbRequest.append("			<supply_price_p>").append(goodsMap.getSupplyPriceP()).append("</supply_price_p>\n");
-			}
-
-			sbRequest.append("			<sale_status>").append("001").append("</sale_status>\n"); // 판매중
-			sbRequest.append("			<tax_yn>").append("001").append("</tax_yn>\n"); // 과세
-			sbRequest.append("			<salearea>전국</salearea>\n");
-			sbRequest.append("			<sex>").append(goodsMap.getSex()).append("</sex>\n");
-			sbRequest.append("			<model>").append(goodsMap.getModel()).append("</model>\n");
-			sbRequest.append("			<model_no>").append(goodsMap.getModelNo()).append("</model_no>\n");
-			sbRequest.append("			<brand>").append(goodsMap.getBrand()).append("</brand>\n");
-			sbRequest.append("			<auth_no>").append(goodsMap.getAuthNo()).append("</auth_no>\n");
-			sbRequest.append("			<expirydate>20991231</expirydate>\n");
-			sbRequest.append("			<maker>").append(goodsMap.getMaker()).append("</maker>\n");
-			sbRequest.append("			<origin>").append(goodsMap.getOrigin()).append("</origin>\n");
-			sbRequest.append("			<adult_info>").append(goodsMap.getAdultInfo()).append("</adult_info>\n");
-			sbRequest.append("			<ccategory_l>").append(goodsMap.getCcategoryL()).append("</ccategory_l>\n");
-			sbRequest.append("			<ccategory_m>").append(goodsMap.getCcategoryM()).append("</ccategory_m>\n");
-			sbRequest.append("			<ccategory_s>").append(goodsMap.getCcategoryS()).append("</ccategory_s>\n");
-			sbRequest.append("			<ccategory_d>").append(goodsMap.getCcategoryD()).append("</ccategory_d>\n");
-
-			sbRequest.append("		</product>\n");
-			sbRequest.append("	</productInfo>\n");
-			sbRequest.append("</shoplinker>\n");
-
-			if( null != goodsMap.getShoplinkerItemkindNm()) {
-				// api 호출 및 결과 history 저장
-				succCnt = callGoodsRegApi(regMap , sbRequest, "product");
-
-			}else {
-				// 품목매핑정보 없음. 전송 안함
-				regMap.setXmlTxt(sbRequest.toString());
-				regMap.setApiResult("error");
-				regMap.setApiMessage("API 전송안함=>샵링커 품목매핑정보가 없습니다. (자사품목코드: "+goodsMap.getItemkindCd()+")");
-				shoplinkerDao.insertShoplinerApiHst(regMap);
-			}
-
-		}catch(Exception e) {
-			log.error("xml 생성오류 ", e);
-			regMap.setApiResult("error");
-			regMap.setApiMessage("xml 생성오류");
-			shoplinkerDao.insertShoplinerApiHst(regMap);
-		}
-
-		return succCnt;
-	}
-
-	/**
-	 * 샵링커 상품등록 - 상세내용 세팅
-	 *
-	 * @param shoplinkerGoods
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	private String setDetailDesc(ShoplinkerGoods shoplinkerGoods, ShoplinkerGoods goodsMap) {
-
-		String htmlDesc = "";
-
-		// 상세폼신규사용여부 N: 기존 정보 / Y : html 형식
-		if( "N".equals(goodsMap.getTobeFormYn())){
-			String descStr = goodsMap.getDetailDesc();
-			descStr = descStr.replace("http://www.istyle24.com/Upload/", "http://image.istyle24.com/Local/")
-					.replace("/Upload", "http://image.istyle24.com/Local")
-					.replace("http://www.istyle24.com/Images", "http://image.istyle24.com/Statics/design/Images");
-
-			htmlDesc = descStr;
-
-		}else {
-
-			String imgPath = env.getProperty("upload.goods.view");
-			imgPath = imgPath.replace("/Upload", "/Local")
-					.replace("http://www.istyle24.com/Upload/", "http://image.istyle24.com/Local/")
-					.replace("http://www.istyle24.com/Images", "http://image.istyle24.com/Statics/design/Images");
-
-			Collection<ShoplinkerGoods> imgList = shoplinkerDao.getGoodsImageList(shoplinkerGoods);
-
-			String dColor = goodsMap.getMainColorEnm(); //대표컬러
-			String dImgFront = "";	//대표상품 앞판컷
-			String dImgBack = ""; 	//대표상품 뒷판컷
-			String dMaterial = ""; //대표상품 패브릭(소재컷?)
-			ArrayList<String> dImgModelList = new ArrayList<String>(); //대표상품 모델컷
-			ArrayList<String> dImgDetailList = new ArrayList<String>(); //대표상품 디테일컷(상세컷)
-			ArrayList<String> dLabelList = new ArrayList<String>(); //대표상품 케어라벨
-			ArrayList<String> dImgOtherList = new ArrayList<String>(); //상품외부몰용
-
-			// 이미지 정보
-			for(ShoplinkerGoods map : imgList) {
-
-				if( -1 < map.getSysImgNm().indexOf("_"+map.getColorCd()+"_01.jpg")) { //대표상품 앞판컷
-					dImgFront = imgPath +"/"+ map.getSysImgNm();
-		        }
-				if( -1 < map.getSysImgNm().indexOf("_"+map.getColorCd()+"_02.jpg")) { //대표상품 뒷판컷
-					dImgBack = imgPath +"/"+ map.getSysImgNm();
-		        }
-				if( -1 < map.getSysImgNm().indexOf("_"+map.getColorCd()+"_C")) { //대표상품 모델컷
-					dImgModelList.add(imgPath +"/"+ map.getSysImgNm());
-		        }
-				if( -1 < map.getSysImgNm().indexOf("_"+map.getColorCd()+"_D")) { //대표상품 디테일컷(상세컷)
-					dImgDetailList.add(imgPath +"/"+ map.getSysImgNm());
-		        }
-				if( -1 < map.getSysImgNm().indexOf("_"+map.getColorCd()+"_F")) { //대표상품 패브릭(소재컷?)
-					dMaterial = imgPath +"/"+ map.getSysImgNm();
-		        }
-				if( -1 < map.getSysImgNm().indexOf("_"+map.getColorCd()+"_L")) { //대표상품 케어라벨
-					dLabelList.add(imgPath +"/"+ map.getSysImgNm());
-		        }
-				if( -1 < map.getSysImgNm().indexOf("_"+map.getColorCd()+"_X")) { //대표상품 디테일컷(상세컷)
-					dImgOtherList.add(imgPath +"/"+ map.getSysImgNm());
-		        }
-			}
-
-			// 제대로된 정보 없을 경우, 기존 상세내용으로 보냄
-			if( "".equals(dImgFront) || "".equals(dImgBack)) {
-				String descStr = goodsMap.getDetailDesc();
-				descStr = descStr.replace("http://www.istyle24.com/Upload/", "http://image.istyle24.com/Local/")
-						.replace("/Upload", "http://image.istyle24.com/Local")
-						.replace("http://www.istyle24.com/Images", "http://image.istyle24.com/Statics/design/Images");
-
-				htmlDesc = descStr;
-
-			}else {
-
-				// 1) 상세내용 - 상품설명
-				htmlDesc = "<div class='st_descrp_box' style='max-height:1100px; overflow:hidden;'>";
-				htmlDesc += "<div class='st_desc_simple' style='position:relative; margin-top:0px; margin-left:auto; margin-right:auto;'>";
-				htmlDesc += "<span class='st_tit_desc' style='display:block; margin-bottom:10px; font-size:18px; font-weight:500; letter-spacing:-0.025em;'>"+goodsMap.getDetailDescNew10()+"</span>";
-				htmlDesc += "<p class='st_ptxt01' style='font-size:16px;font-weight:200;line-height:1.5;word-break:keep-all;color:#666666;'>";
-				htmlDesc += goodsMap.getDetailDescNew20();
-				htmlDesc += "</p>";
-				htmlDesc += "</div>";
-				htmlDesc += "<div class='st_desc_character' style='position:relative; margin-top:40px; margin-left:auto; margin-right:auto;'>";
-				htmlDesc += "<span class='st_tit_desc' style='display:block; margin-bottom:10px; font-size:18px; font-weight:500; letter-spacing:-0.025em;'>상품특징</span>";
-				htmlDesc += "<p class='st_ptxt01' style='font-size:16px;font-weight:200;line-height:1.5;word-break:keep-all;color:#666666;'>";
-				htmlDesc += goodsMap.getDetailDescNew30();
-		        htmlDesc += "</p>";
-        		htmlDesc += "</div>";
-				htmlDesc += "</div>";
-
-				// 2) 상세내용 - 상품옵션별 색상
-				String colorDesc = "";
-				shoplinkerGoods.setColorListYn("Y"); // 상품이미지정보 색상별
-				Collection<ShoplinkerGoods> imgColorList = shoplinkerDao.getGoodsImageList(shoplinkerGoods);
-				colorDesc = "<div class='st_view_option_box' style='margin-top: 100px;text-align: center;'>";
-				String tmpColor = "";
-				for(ShoplinkerGoods ic : imgColorList ) {
-
-					if( !tmpColor.equals(ic.getColorCd())) {
-						colorDesc += "<span class='st_tit_desc' style='display:block; margin-bottom:10px; font-size:18px; font-weight:500; letter-spacing:-0.025em;'>컬러 : ";
-						colorDesc += "<span>"+ ic.getColorKnm() +"</span></span>";
-					}
-					colorDesc += "<div class='st_view' style='margin-top: 40px;'>";
-					colorDesc += "<img src='"+ imgPath+"/"+ic.getSysImgNm()+"' alt='' style='max-width:100%;margin: 10px auto 0;margin-top: 0;display: block;'>";
-					colorDesc += "<img src='"+ imgPath+"/"+ic.getSysImgNm()+"' alt='' style='max-width:100%;display: block;margin: 10px auto 0;'>";
-	                colorDesc += "</div>";
-		            if( !tmpColor.equals(ic.getColorCd())) {
-		            	colorDesc += "<div style='height:100px;'></div>";
-		            	tmpColor = ic.getColorCd();
-					}
-				}
-				colorDesc += "</div>";
-				htmlDesc += colorDesc;
-
-				// 3) 상세내용 - 모델 착용컷
-				String dtlDesc = "";
-				dtlDesc += "<div class='st_view_outfit_box' style='margin-top: 100px;text-align: center;'>";
-				dtlDesc += "<span class='st_tit_view' style='display: block;color: #222;font-size: 32px;font-weight: 300;text-align: center;'>OUTFIT VIEW</span>";
-				dtlDesc += "<span class='st_model_info' style='display: block;margin-top: 20px;color: #666;font-size: 16px;font-weight: 200;text-align: center;'>"+goodsMap.getModelInfo()+"</span>";
-				dtlDesc += "<div class='st_view' style='margin-top: 40px;'>";
-				for(String img : dImgModelList) {
-					dtlDesc += "<img src='"+ img +"' alt='' style='display: block;margin: 10px auto 0;'>";
-				}
-				dtlDesc += "</div>";
-				dtlDesc += "</div>";
-
-				// 4) 상세내용 - 상품컷
-				dtlDesc += "<div class='st_view_detail_box' style='margin-top: 100px;text-align: center;'>";
-				dtlDesc += "<span class='st_tit_view' style='display: block;color: #222;font-size: 32px;font-weight: 300;text-align: center;'>PRODUCT VIEW</span>";
-				dtlDesc += "<div class='st_view' style='margin-top: 40px;'>";
-				for(String img : dImgDetailList) {
-					dtlDesc += "<img src='"+ img +"' alt='' style='display: block;margin: 10px auto 0;'>";
-				}
-                dtlDesc += "</div>";
-        		dtlDesc += " </div>";
-
-        		// 5) 상세내용 - 원단
-        		dtlDesc += "<div class='st_view_fabric_box' style='margin-top: 100px;text-align: center;'>";
-        		dtlDesc += "<span class='st_tit_view' style='display: block;color: #222;font-size: 32px;font-weight: 300;text-align: center;'>FABRIC</span>";
-        		dtlDesc += "<div class='st_view' style='margin-top: 40px;'>";
-        		dtlDesc += "<img src='"+dMaterial +"' alt='' style='display: block;margin: 10px auto 0;margin-top: 0;'>";
-                dtlDesc += "</div>";
-                dtlDesc += "</div>";
-
-                // 6) 상세내용 - 라벨
-                dtlDesc += "<div class='st_view_label_box' style='margin-top: 100px;text-align: center;'>";
-                dtlDesc += "<span class='st_tit_view' style='display: block;color: #222;font-size: 32px;font-weight: 300;text-align: center;'>LABEL INFO</span>";
-                dtlDesc += "<div class='st_view' style='margin-top: 40px;'>";
-                dtlDesc += "<span style='display:inline-block;'>";
-                for(String img : dLabelList) {
-					dtlDesc += "<img src='"+ img +"' alt='' style='float:left; margin-top:0; margin-left:20px;'>";
-				}
-                dtlDesc += "</span>";
-                dtlDesc += "</div>";
-                dtlDesc += "</div>";
-                htmlDesc += dtlDesc;
-
-                // 7) 상세내용 - 사이즈
-                Collection<ShoplinkerGoods> sizeList = shoplinkerDao.getGoodsSizeList(shoplinkerGoods);
-                if (sizeList == null || sizeList.isEmpty()) {
-                	//대표상품 실측정사이즈표 없을경우 > 브랜드 별 표준 이미지
-                	htmlDesc += "<div class='st_view_size_box' style='margin-top: 100px;text-align: center;'>";
-                	htmlDesc += "<span class='st_tit_view' style='display: block;color: #222;font-size: 32px;font-weight: 300;text-align: center;'>사이즈정보</span>";
-                	htmlDesc += "<div class='st_view' style='margin-top: 40px;'>";
-
-                	String brandSizeImg = env.getProperty("upload.image.view") + "/Upload/brandSizeImg/";
-                	if( "Y".equals(goodsMap.getKidsYn())){
-                		brandSizeImg += "kids/"+goodsMap.getBrandEnm() +".jpg";
-                		htmlDesc += "<img src='"+ brandSizeImg +"' alt='ANDEW 표준 사이즈' style='display: block;margin: 10px auto 0;'>";
-                	}else {
-                		brandSizeImg += "casuals/"+goodsMap.getBrandEnm() +".jpg";
-                		htmlDesc += "<img src='"+ brandSizeImg +"' alt='ANDEW 표준 사이즈' style='display: block;margin: 10px auto 0;'>";
-                	}
-                    htmlDesc += "</div>";
-                    htmlDesc += "</div>";
-
-                }else {
-
-                	htmlDesc += "<div class='st_view_size_box' style='margin-top: 100px;text-align: center;'>";
-                	htmlDesc += "<span class='st_tit_view' style='display: block;color: #222;font-size: 32px;font-weight: 300;text-align: center;'>사이즈정보</span>";
-                	htmlDesc += "<div class='st_view' style='margin-top: 40px;'>";
-
-                	htmlDesc += "<div class='st_tbl' style='padding:0; border-top:1px solid #000;'>";
-                	htmlDesc += "<table style='margin:0;padding:0;border-collapse:collapse;border-spacing:0;width:100%;border-top:1px solid #000;word-break:keep-all;'>";
-                	htmlDesc += "<thead style=''>";
-                	htmlDesc += "<tr style=''>";
-
-                	int cnt = 0;
-                	for(ShoplinkerGoods size : sizeList) {
-
-                		if( 0 == cnt ) {
-                			if( "하의".equals(size.getSizeTypecd())) {
-                				htmlDesc += "<th style='position:relative;padding:20px 0;border-bottom:1px solid #ddd;font-weight:500;font-size:16px;letter-spacing:-0.025em;text-align:center;'></th>";
-        	                	htmlDesc += "<th style='position:relative;padding:20px 0;border-bottom:1px solid #ddd;font-weight:500;font-size:16px;letter-spacing:-0.025em;text-align:center;'>허리둘레(cm)</th>";
-        	                	htmlDesc += "<th style='position:relative;padding:20px 0;border-bottom:1px solid #ddd;font-weight:500;font-size:16px;letter-spacing:-0.025em;text-align:center;'>밑위(cm)</th>";
-        	                	htmlDesc += "<th style='position:relative;padding:20px 0;border-bottom:1px solid #ddd;font-weight:500;font-size:16px;letter-spacing:-0.025em;text-align:center;'>엉덩이둘레(cm)</th>";
-        	                	htmlDesc += "<th style='position:relative;padding:20px 0;border-bottom:1px solid #ddd;font-weight:500;font-size:16px;letter-spacing:-0.025em;text-align:center;'>허벅지둘레(cm)</th>";
-        	                	htmlDesc += "<th style='position:relative;padding:20px 0;border-bottom:1px solid #ddd;font-weight:500;font-size:16px;letter-spacing:-0.025em;text-align:center;'>총길이(cm)</th>";
-                			}else {
-                				htmlDesc += "<th style='position:relative;padding:20px 0;border-bottom:1px solid #ddd;font-weight:500;font-size:16px;letter-spacing:-0.025em;text-align:center;'></th>";
-        	                	htmlDesc += "<th style='position:relative;padding:20px 0;border-bottom:1px solid #ddd;font-weight:500;font-size:16px;letter-spacing:-0.025em;text-align:center;'>가슴둘레(cm)</th>";
-        	                	htmlDesc += "<th style='position:relative;padding:20px 0;border-bottom:1px solid #ddd;font-weight:500;font-size:16px;letter-spacing:-0.025em;text-align:center;'>어깨너비(cm)</th>";
-        	                	htmlDesc += "<th style='position:relative;padding:20px 0;border-bottom:1px solid #ddd;font-weight:500;font-size:16px;letter-spacing:-0.025em;text-align:center;'>팔길이(cm)</th>";
-        	                	htmlDesc += "<th style='position:relative;padding:20px 0;border-bottom:1px solid #ddd;font-weight:500;font-size:16px;letter-spacing:-0.025em;text-align:center;'>총길이(cm)</th>";
-                			}
-                			htmlDesc += "</tr>";
-    	                	htmlDesc += "</thead>";
-    	                	htmlDesc += "<tbody style=''>";
-                		}
-
-                		htmlDesc += "<tr style=''>";
-                		htmlDesc += "<th style='position:relative;padding:20px 0;border-bottom:1px solid #ddd;font-weight:500;font-size:16px;letter-spacing:-0.025em;text-align:center;'>"+ size.getOptCd2() +"</th>";
-        				htmlDesc += "<td style='position:relative; padding:20px 0; border-bottom:1px solid #ddd; font-weight:200; font-size:16px; letter-spacing:-0.025em; text-align:center;'>"+ size.getSizeValue1() +"</td>";
-						htmlDesc += "<td style='position:relative; padding:20px 0; border-bottom:1px solid #ddd; font-weight:200; font-size:16px; letter-spacing:-0.025em; text-align:center;'>"+ size.getSizeValue2() +"</td>";
-						htmlDesc += "<td style='position:relative; padding:20px 0; border-bottom:1px solid #ddd; font-weight:200; font-size:16px; letter-spacing:-0.025em; text-align:center;'>"+ size.getSizeValue3() +"</td>";
-						htmlDesc += "<td style='position:relative; padding:20px 0; border-bottom:1px solid #ddd; font-weight:200; font-size:16px; letter-spacing:-0.025em; text-align:center;'>"+ size.getSizeValue4() +"</td>";
-						if( "하의".equals(size.getSizeTypecd())) {
-							htmlDesc += "<td style='position:relative; padding:20px 0; border-bottom:1px solid #ddd; font-weight:200; font-size:16px; letter-spacing:-0.025em; text-align:center;'>"+ size.getSizeValue5() +"</td>";
-						}
-                		cnt ++;
-                	}
-
-                	htmlDesc += "</tbody>";
-                	htmlDesc += "</table>";
-        			htmlDesc += "</div>";
-					htmlDesc += "</div>";
-					htmlDesc += " </div>";
-                }
-
-
-                // 8) 상세내용 - 상품필수정보
-                ShoplinkerGoods certInfo = shoplinkerDao.getCert(shoplinkerGoods);
-                if( null != certInfo) {
-                	if( "G083_1".equals(certInfo.getCertTargetGb())) {	// 인증대상
-
-                		if( "".equals(certInfo.getCertNum())) {
-
-                			htmlDesc += "<div class='st_required_box' style='margin-bottom:80px;'>";
-                			htmlDesc += "<div class='st_area_kcl' style='color:#222;display:block; position:relative; min-height:160px; margin-top:100px; padding:40px 40px 40px 160px; box-sizing:border-box; background:#f5f5f5;'>";
-                			htmlDesc += "<i class='st_ico_kcl' style='position:absolute;left:64px;top:50%;transform:translateY(-50%);z-index:2;background-image: url(/images/pc/ico_kcl.png);width: 32px;height: 50px;display: inline-block;vertical-align: middle;background-repeat: no-repeat;background-size: contain;background-position: 0% 0%;'></i>";
-                			htmlDesc += "<p class='st_tit' style='margin-top:0;color:#222;font-size:16px;font-weight:300;line-height:1;letter-spacing:-0.025em;'>";
-                			htmlDesc += certInfo.getCertTargetNm() +"/"+ certInfo.getCertOrganName();
-                            htmlDesc += "</p>";
-                            htmlDesc += "<p style='margin-top:20px; color:#222; font-size:13px; font-weight: 300; line-height:1; letter-spacing:-0.025em;'>";
-                        	htmlDesc += certInfo.getCertDiv();
-                        	htmlDesc += "</p>";
-                            htmlDesc += "<p class='st_dot_info' style='color: #888888;position:relative;margin-top:20px;font-size:13px;font-weight:300;line-height:1;letter-spacing:-0.025em;'>";
-                            htmlDesc += "<span style='color: #888888 !important;background: #888888 !important;display: inline-block;width: 2px;height: 2px;position: relative;top: -4px;left: 0px;margin-right: 4px;'></span>";
-                            htmlDesc += "해당 인증정보는 판매자가 등록한 것으로 등록정보에 대한 일체의 책임은 판매자에게 있습니다.";
-                            htmlDesc += "</p>";
-                            htmlDesc += "</div>";
-                            htmlDesc += "</div>";
-                		}else {
-                			htmlDesc += "<div class='st_required_box' style='margin-bottom:80px;'>";
-                			htmlDesc += "<div class='st_area_kcl' style='display:block; position:relative; min-height:160px; margin-top:100px; padding:40px 40px 40px 160px; box-sizing:border-box; background:#f5f5f5;'>";
-                			htmlDesc += "<i class='st_ico_kcl' style='position:absolute;left:64px;top:50%;transform:translateY(-50%);z-index:2;background-image: url(/images/pc/ico_kcl.png);width: 32px;height: 50px;display: inline-block;vertical-align: middle;background-repeat: no-repeat;background-size: contain;background-position: 0% 0%;'></i>";
-                			htmlDesc += "<p class='st_tit' style='margin-top:0;color:#222;font-size:16px;font-weight:300;line-height:1;letter-spacing:-0.025em;'>";
-                			htmlDesc += certInfo.getCertDiv() +"/"+ certInfo.getCertOrganName();
-                            htmlDesc += "</p>";
-                            htmlDesc += "<p style='margin-top:20px; color:#222; font-size:13px; font-weight: 300; line-height:1; letter-spacing:-0.025em;'>";
-                            htmlDesc += "인증번호: "+ certInfo.getCertNum();
-                            htmlDesc += "<a href='http://www.safetykorea.kr/search/searchPop?certNum=XX00000-0000' target='_blank' class='st_linktxt3' style='margin-left:20px; color:#888; font-weight:200; text-decoration:none !important;'>상세보기</a>";
-                            htmlDesc += "</p>";
-                            htmlDesc += "<p class='st_dot_info' style='color: #888888;position:relative;margin-top:20px;font-size:13px;font-weight:300;line-height:1;letter-spacing:-0.025em;'>";
-                            htmlDesc += "<span style='color: #888888 !important;background: #888888 !important;display: inline-block;width: 2px;height: 2px;position: relative;top: -4px;left: 0px;margin-right: 4px;'></span>";
-                            htmlDesc += "해당 인증정보는 판매자가 등록한 것으로 등록정보에 대한 일체의 책임은 판매자에게 있습니다.";
-                            htmlDesc += "</p>";
-                            htmlDesc += "</div>";
-                            htmlDesc += "</div>";
-                		}
-
-                	}else if( "G083_3".equals(certInfo.getCertTargetGb())) {	// 상세설명별도표기
-                		htmlDesc += "<div class='st_required_box' style='margin-bottom:80px;'>";
-                		htmlDesc += "<div class='st_area_kcl st_no-mark' style='display:block;position:relative;min-height:160px;margin-top:100px;padding:40px 40px 40px 160px;box-sizing:border-box;background:#f5f5f5;padding-left:65px;'>";
-                		htmlDesc += "<p class='st_tit' style='margin-top:0;color:#222;font-size:16px;font-weight:300;line-height:1;letter-spacing:-0.025em;'>";
-                		htmlDesc += certInfo.getCertTargetNm();
-                        htmlDesc += "</p>";
-                        htmlDesc += "<p style='margin-top:20px; color:#222; font-size:13px; font-weight: 300; line-height:1; letter-spacing:-0.025em;'>";
-                        htmlDesc += "제품 상세정보 내 표기되어 있습니다. 상품 정보를 확인해주세요.";
-                        htmlDesc += "</p>";
-                        htmlDesc += "<p class='st_dot_info' style='color: #888888;position:relative;margin-top:20px;font-size:13px;font-weight:300;line-height:1;letter-spacing:-0.025em;'>";
-                        htmlDesc += "<span style='color: #888888 !important;background: #888888 !important;display: inline-block;width: 2px;height: 2px;position: relative;top: -4px;left: 0px;margin-right: 4px;'></span>";
-                        htmlDesc += "해당 인증정보는 판매자가 등록한 것으로 등록정보에 대한 일체의 책임은 판매자에게 있습니다.";
-                        htmlDesc += "</p>";
-                        htmlDesc += "</div>";
-                        htmlDesc += "</div>";
-                	}else {
-                		// G083_2 - 인증대상아님
-                	}
-                }
-			}
-		}
-		return htmlDesc;
-	}
-
-	/**
-	 * 샵링커 상품등록 - 3. 품목(고시)정보
-	 *
-	 * @param shoplinkerGoods
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	private int createGoodsNotiRegisterXml(ShoplinkerGoods shoplinkerGoods) throws IOException {
-
-		ShoplinkerGoods regMap = new ShoplinkerGoods();
-		regMap.setApiType("NOTI");
-		regMap.setApiSubUrl(env.getProperty("shoplinker.url.good_noti"));
-		regMap.setGoodsCd(shoplinkerGoods.getGoodsCd());
-		regMap.setRegNo(shoplinkerGoods.getRegNo());
-		regMap.setXmlPath(shoplinkerGoods.getXmlPath());
-		regMap.setDomainUrl(shoplinkerGoods.getDomainUrl());
-
-		int succCnt = 0;
-
-		try {
-
-			Collection<ShoplinkerGoods> list = shoplinkerDao.getGoodsNotiList(shoplinkerGoods);
-
-			if(null != list ) {
-				if( 0 < list.size()) {
-
-					// xml 데이터 세팅
-					StringBuilder sbRequest = new StringBuilder();
-					sbRequest.append("<?xml version=\"1.0\" encoding=\"euc-kr\"?>\n");
-					sbRequest.append("<openMarket>\n");
-					sbRequest.append("	<goodsinfo>\n");
-
-					sbRequest.append("		<customer_id>").append(shoplinkerGoods.getCustomerId()).append("</customer_id>\n");
-					sbRequest.append("		<product_id />\n");
-
-					int cnt = 0;
-					for (ShoplinkerGoods map : list) {
-						if( 0 == cnt) {
-							sbRequest.append("		<partner_product_id>").append(map.getPartnerProductId()).append("</partner_product_id>\n");
-							sbRequest.append("		<lclass_id>").append(map.getLclassId()).append("</lclass_id>\n");
-						}
-						cnt ++;
-
-						sbRequest.append("		<item>\n");
-						sbRequest.append("			<item_seq>").append(map.getItemSeq()).append("</item_seq>\n");
-						sbRequest.append("			<item_info><![CDATA[").append(map.getItemInfo()).append("]]></item_info>\n");
-						sbRequest.append("		</item>\n");
-					}
-
-					sbRequest.append("	</goodsinfo>\n");
-					sbRequest.append("</openMarket>\n");
-
-					// api 호출 및 결과 history 저장
-					succCnt = callGoodsRegApi(regMap , sbRequest, "goods");
-				}
-			}
-
-		}catch(Exception e) {
-			log.error("xml 생성오류 ", e);
-			regMap.setApiResult("error");
-			regMap.setApiMessage("xml 생성오류");
-			shoplinkerDao.insertShoplinerApiHst(regMap);
-		}
-		return succCnt;
-	}
-
-	/**
-	 * 샵링커 상품등록 - 4. 인증정보
-	 *
-	 * @param shoplinkerGoods
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	private int createCertRegisterXml(ShoplinkerGoods shoplinkerGoods) throws IOException {
-
-		ShoplinkerGoods regMap = new ShoplinkerGoods();
-		regMap.setApiType("CERT");
-		regMap.setApiSubUrl(env.getProperty("shoplinker.url.cert"));
-		regMap.setGoodsCd(shoplinkerGoods.getGoodsCd());
-		regMap.setRegNo(shoplinkerGoods.getRegNo());
-		regMap.setXmlPath(shoplinkerGoods.getXmlPath());
-		regMap.setDomainUrl(shoplinkerGoods.getDomainUrl());
-
-		int succCnt = 0;
-
-		try {
-
-			ShoplinkerGoods map = shoplinkerDao.getCert(shoplinkerGoods);
-
-			if(null == map ) {
-				map = new ShoplinkerGoods();
-				map.setPartnerProductId(shoplinkerGoods.getGoodsCd());
-				map.setCertNo("");
-				map.setCertOrgan(".");
-			}
-
-			// xml 데이터 세팅
-			StringBuilder sbRequest = new StringBuilder();
-			sbRequest.append("<?xml version=\"1.0\" encoding=\"euc-kr\"?>\n");
-			sbRequest.append("<shoplinker>\n");
-			sbRequest.append("	<product>\n");
-
-			sbRequest.append("		<customer_id>").append(shoplinkerGoods.getCustomerId()).append("</customer_id>\n");
-			sbRequest.append("		<partner_product_id>").append(map.getPartnerProductId()).append("</partner_product_id>\n");
-			sbRequest.append("		<certinfo>\n");
-			sbRequest.append("			<cert>\n");
-
-			//cert_item 의 경우 인증코드 값이 있으면 'C011', 없으면 'C010'
-			if("".equals(map.getCertNo())){
-				sbRequest.append("				<cert_item>").append("C010").append("</cert_item>\n");
-			}else {
-				sbRequest.append("				<cert_item>").append("C011").append("</cert_item>\n");
-			}
-
-			sbRequest.append("				<cert_organ><![CDATA[").append(map.getCertOrgan()).append("]]></cert_organ>\n");
-			sbRequest.append("				<cert_no><![CDATA[").append(map.getCertNo()).append("]]></cert_no>\n");
-			sbRequest.append("			</cert>\n");
-			sbRequest.append("		</certinfo>\n");
-			sbRequest.append("	</product>\n");
-			sbRequest.append("</shoplinker>\n");
-
-			// api 호출 및 결과 history 저장
-			succCnt = callGoodsRegApi(regMap , sbRequest, "cert");
-
-		}catch(Exception e) {
-			log.error("xml 생성오류 ", e);
-			regMap.setApiResult("error");
-			regMap.setApiMessage("xml 생성오류");
-			shoplinkerDao.insertShoplinerApiHst(regMap);
-		}
-
-		return succCnt;
-	}
-
-	/**
-	 * 샵링커 상품등록 - 5. 상품이미지정보
-	 *
-	 * @param shoplinkerGoods
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	private int createImageRegisterXml(ShoplinkerGoods shoplinkerGoods) throws IOException {
-
-		ShoplinkerGoods regMap = new ShoplinkerGoods();
-		regMap.setApiType("IMAGE");
-		regMap.setApiSubUrl(env.getProperty("shoplinker.url.image"));
-		regMap.setGoodsCd(shoplinkerGoods.getGoodsCd());
-		regMap.setRegNo(shoplinkerGoods.getRegNo());
-		regMap.setXmlPath(shoplinkerGoods.getXmlPath());
-		regMap.setDomainUrl(shoplinkerGoods.getDomainUrl());
-
-		int succCnt = 0;
-
-		try {
-
-			// 상품이미지정보
-			shoplinkerGoods.setExtmallImgYn("Y");
-			Collection<ShoplinkerGoods> list = shoplinkerDao.getGoodsImageList(shoplinkerGoods);
-
-			if(null != list) {
-
-				String imgUrl = "";
-				for (ShoplinkerGoods map : list) {
-					imgUrl = map.getSysImgNm();
-					// extmall_yn 이미지를 가져오되, 없는 경우 default 이미지를 가져온다.
-					if( "Y".equals(map.getExtmallImgYn()) && !"".equals(map.getSysImgNm())){
-						break;
-					}
-				}
-
-				// xml 데이터 세팅
-				StringBuilder sbRequest = new StringBuilder();
-				sbRequest.append("<?xml version=\"1.0\" encoding=\"euc-kr\"?>\n");
-				sbRequest.append("<Shoplinker>\n");
-				sbRequest.append("	<product>\n");
-
-				sbRequest.append("		<customer_id>").append(shoplinkerGoods.getCustomerId()).append("</customer_id>\n");
-				sbRequest.append("		<partner_product_id>").append(shoplinkerGoods.getGoodsCd()).append("</partner_product_id>\n");
-				sbRequest.append("		<image_type><![CDATA[").append("URL").append("]]></image_type>\n");
-				sbRequest.append("		<image_info>\n");
-				sbRequest.append("			<image>\n");
-				sbRequest.append("				<image_kind><![CDATA[").append("IMG1").append("]]></image_kind>\n");
-
-				String img_url = env.getProperty("upload.goods.view");
-				if( img_url.toLowerCase().indexOf("http") < 0) {
-					img_url = img_url.replace("//image", "http://image");
-				}
-				sbRequest.append("				<image_content>").append(img_url+"/"+imgUrl).append("</image_content>\n");
-				sbRequest.append("			</image>\n");
-				sbRequest.append("		</image_info>\n");
-
-				sbRequest.append("	</product>\n");
-				sbRequest.append("</Shoplinker>\n");
-
-				// api 호출 및 결과 history 저장
-				succCnt = callGoodsRegApi(regMap , sbRequest, "image");
-			}
-
-		}catch(Exception e) {
-			log.error("xml 생성오류 ", e);
-			regMap.setApiResult("error");
-			regMap.setApiMessage("xml 생성오류");
-			shoplinkerDao.insertShoplinerApiHst(regMap);
-		}
-
-		return succCnt;
-	}
-
-	/**
-	 * 샵링커 상품등록 - 공통 api 호출 & 결과 확인
-	 *
-	 * @param shoplinkerGoods
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	private int callGoodsRegApi(ShoplinkerGoods map, StringBuilder sbRequest, String fileNm) throws IOException {
-
-		int succCnt = 0;
-		com.gagaframework.shoplinker.domain.goods.result.Shoplinker shoplinkerResult;
-		com.gagaframework.shoplinker.domain.goods.result.ResultMessage resultMsg;
-
-		try {
-			GagaShoplinkertUtil shoplinkerUtil = new GagaShoplinkertUtil("MS949");
-
-			// XML 파일 생성
-			StringBuilder xmlFileName = new StringBuilder();
-			xmlFileName.append(fileNm+"_"+fileAddNm).append(".xml");
-			String xmlPath = GagaFileUtil.getConcatenationPath(map.getXmlPath(), xmlFileName.toString());
-			shoplinkerUtil.makeRequestXmlFile(sbRequest.toString(), xmlPath);
-			String xmlUrl = GagaFileUtil.getConcatenationPath(map.getDomainUrl(), xmlFileName.toString());
-
-			// API 호출
-			String apiUrl = GagaShoplinkerConstants.API_DOMAIN + map.getApiSubUrl() + URLEncoder.encode(xmlUrl);
-						// 테스트 URL
-						//apiUrl = GagaShoplinkerConstants.API_DOMAIN+"/Product/attribute_prod_insert.php?iteminfo_url="+"http://ts5000.ipdisk.co.kr:8999/shoplinker/goods_reg/option_1.xml";
-			String responseXmlData = shoplinkerUtil.callShoplinkerApiByGet(apiUrl, "");
-
-			log.info(map.getApiType()+" ####xmlUrl "+xmlUrl);
-			log.info(map.getApiType()+" ####apiUrl "+apiUrl);
-			//log.error(map.getApiType()+" ####responseXmlData n"+responseXmlData);
-
-			// response 결과
-			shoplinkerResult = (com.gagaframework.shoplinker.domain.goods.result.Shoplinker)shoplinkerUtil.unmarshal(com.gagaframework.shoplinker.domain.goods.result.Shoplinker.class, responseXmlData);
-			resultMsg = shoplinkerResult.getResultMessage();
-			map.setXmlTxt(sbRequest.toString());
-			map.setApiProductId(resultMsg.getProductId());
-			map.setApiResult(resultMsg.getResult());
-			map.setApiMessage(resultMsg.getMessage());
-
-			if( "true".equals(resultMsg.getResult())){
-				succCnt = 1;
-			}
-
-			// 생성 파일삭제
-			//GagaFileUtil.deleteFile(GagaFileUtil.getConcatenationPath(map.getXmlPath(), xmlFileName.toString()));
-
-		} catch (Exception e) {
-			log.error("error", e);
-			map.setXmlTxt(sbRequest.toString());
-			map.setApiResult("error");
-			map.setApiMessage("API 통신오류");
-		}
-
-		// 전송이력 저장
-		shoplinkerDao.insertShoplinerApiHst(map);
-
-		return succCnt;
-	}
-
-	/**
-	 * 상품등록-상품 목록 건수
-	 *
-	 * @param getGoodsSendListCount
-	 * @return
-	 * @author jmh
-	 * @since 2020. 5. 21
-	 */
-	public int getGoodsSendListCount(ShoplinkerSearch shoplinkerSearch) {
-		return shoplinkerDao.getGoodsSendListCount(shoplinkerSearch);
-	}
-
-	/**
-	 * 상품등록-상품 목록
-	 *
-	 * @param getGoodsSendList
-	 * @return
-	 * @author jmh
-	 * @since 2020. 5. 21
-	 */
-	public Collection<ShoplinkerGoods> getGoodsSendList(ShoplinkerSearch shoplinkerSearch) {
-		return shoplinkerDao.getGoodsSendList(shoplinkerSearch);
-	}
-
-	/**
-	 * 샵링커주문수집-목록 건수
-	 *
-	 * @param getGoodsSendListCount
-	 * @return
-	 * @author jmh
-	 * @since 2020. 5. 21
-	 */
-	public int getShoplinkerOrderListCount(ShoplinkerOrder shoplinkerOrder) {
-		return shoplinkerDao.getShoplinkerOrderListCount(shoplinkerOrder);
-	}
-
-	/**
-	 * 샵링커주문수집-목록
-	 *
-	 * @param getGoodsSendList
-	 * @return
-	 * @author jmh
-	 * @since 2020. 5. 21
-	 */
-	public Collection<ShoplinkerOrder> getShoplinkerOrderList(ShoplinkerOrder shoplinkerOrder) {
-		return shoplinkerDao.getShoplinkerOrderList(shoplinkerOrder);
-	}
-
-	/**
-	 * 샵링커주문수집-상세
-	 *
-	 * @param
-	 * @return
-	 * @author jmh
-	 * @since 2020. 5. 28
-	 */
-	public ShoplinkerOrder getShoplinkerOrderInfo(ShoplinkerOrder shoplinkerOrder) {
-		return shoplinkerDao.getShoplinkerOrderInfo(shoplinkerOrder);
-	}
-
-	/**
-	 * 샵링커주문수집-주문수집등록 페이지별 호출
-	 *
-	 * @param shoplinkerGoods
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	public GagaMap insertShoplinkerOrderStep1(ShoplinkerOrder shoplinkerOrder) throws IOException {
-		ShoplinkerSearch slkSearch = new ShoplinkerSearch();
-		slkSearch.setSid(shoplinkerOrder.getSid());
-		slkSearch.setRunStat("RUN");
-
-		// 파일명 뒤에 붙일 시간
-		fileAddNm = GagaDateUtil.getTodayDateTime();
-
-		int totalPage = 0;
-		int totalCount = 0;
-		int currentlyPage = 1;
-		int currListCount = 0;
-
-		// 1. 첫번째 호출
-		shoplinkerOrder.setOrderPageNo(currentlyPage);
-		GagaMap map = this.insertShoplinkerOrderStep1Xml(shoplinkerOrder);
-		totalPage = map.getInt("totalPage");
-		totalCount = map.getInt("totalCount");
-		currentlyPage = map.getInt("currentlyPage");
-		currListCount = map.getInt("currListCount");
-
-		slkSearch.setTxt(shoplinkerOrder.getApiStDate()+ " 총페이지: "+totalPage+ "("+totalCount+"건) || "+currentlyPage);
-		updateCallApiRunable(slkSearch);
-
-		if( currentlyPage < 1 ) currentlyPage = 1;
-		currentlyPage ++;	// 두번째 호출 페이지 수
-
-		// 2. 페이지번호가 존재할 경우, n번째까지 호출(주문수집)
-		//totalPage = 2;
-		for( int i=currentlyPage; i<= totalPage; i++) {
-
-			slkSearch.setTxt("=>"+i);
-			updateCallApiRunable(slkSearch);
-
-			shoplinkerOrder.setOrderPageNo(i);
-			map = this.insertShoplinkerOrderStep1Xml(shoplinkerOrder);
-			currListCount += map.getInt("currListCount");
-		}
-
-		map.setInt("currListCount", currListCount);
-
-		return map;
-	}
-
-	/**
-	 * 샵링커주문수집-주문수집등록
-	 *
-	 * @param shoplinkerGoods
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	public GagaMap insertShoplinkerOrderStep1Xml(ShoplinkerOrder shoplinkerOrder) throws IOException {
-
-		GagaMap returnMap = new GagaMap();
-		ShoplinkerGoods regMap = new ShoplinkerGoods();
-		regMap.setApiSubUrl(env.getProperty("shoplinker.url.order"));
-		regMap.setDomainUrl(shoplinkerOrder.getDomainUrl());
-
-		int totalPage = 0;
-		int currentlyPage = 0;	// 샵링커 header 현재 호출된 페이지번호
-		int totalCount = 0;		// 샵링커 header 총 주문건수
-		int currListCount = 0;  // for문안 목록 건수 건건이
-		try {
-
-			// xml 데이터 세팅
-			String responseXmlData;
-			com.gagaframework.shoplinker.domain.orderlist.Shoplinker shoplinkerResult;
-
-			List<Order> rOrdList;
-			com.gagaframework.shoplinker.domain.orderlist.Header rHeader;
-			StringBuilder sbRequest;
-
-			sbRequest = new StringBuilder();
-			sbRequest.append("<?xml version=\"1.0\" encoding=\"euc-kr\"?>\n");
-			sbRequest.append("<Shoplinker>\n");
-			sbRequest.append("	<OrderInfo>\n");
-			sbRequest.append("		<Order>\n");
-
-			/*
-			sbRequest.append("			<customer_id>").append(shoplinkerOrder.getCustomerId()).append("</customer_id>\n");
-			sbRequest.append("			<shoplinker_id><![CDATA[").append(shoplinkerOrder.getShoplinkerId()).append("]]></shoplinker_id>\n");
-			*/
-			sbRequest.append("			<customer_id>").append("a0021915").append("</customer_id>\n");
-			sbRequest.append("			<shoplinker_id><![CDATA[").append("yes2424").append("]]></shoplinker_id>\n");
-			sbRequest.append("			<order_flag>004</order_flag>\n");// 테스트용
-			sbRequest.append("			<st_date>").append(shoplinkerOrder.getApiStDate().replace("-", "")).append("</st_date>\n");
-			sbRequest.append("			<ed_date>").append(shoplinkerOrder.getApiStDate().replace("-", "")).append("</ed_date>\n");
-			sbRequest.append("			<page_no>").append(shoplinkerOrder.getOrderPageNo()).append("</page_no>\n");
-
-			sbRequest.append("		</Order>\n");
-			sbRequest.append("	</OrderInfo>\n");
-			sbRequest.append("</Shoplinker>\n");
-			log.info("\n\n###################"+ sbRequest.toString());
-
-
-			GagaShoplinkertUtil shoplinkerUtil = new GagaShoplinkertUtil("MS949");
-
-			// XML 파일 생성
-			StringBuilder xmlFileName = new StringBuilder();
-			xmlFileName.append("order"+"_"+fileAddNm).append(".xml");
-			String xmlPath = GagaFileUtil.getConcatenationPath(shoplinkerOrder.getXmlPath(), xmlFileName.toString());
-			shoplinkerUtil.makeRequestXmlFile(sbRequest.toString(), xmlPath);
-			String xmlUrl = GagaFileUtil.getConcatenationPath(shoplinkerOrder.getDomainUrl(), xmlFileName.toString());
-
-			if (!"locd".equals(shoplinkerOrder.getProfiles())) { // 로컬이 아닐때
-				try {
-					// API 호출
-					responseXmlData = shoplinkerUtil.callShoplinkerApiByGet(GagaShoplinkerConstants.API_DOMAIN+regMap.getApiSubUrl()+URLEncoder.encode(xmlUrl), "");
-
-					// response 결과
-					shoplinkerResult = (com.gagaframework.shoplinker.domain.orderlist.Shoplinker)shoplinkerUtil.unmarshal(com.gagaframework.shoplinker.domain.orderlist.Shoplinker.class, responseXmlData);
-					rHeader = shoplinkerResult.getHeader();
-					rOrdList = shoplinkerResult.getOrder();
-
-					// 수집정보 없음
-					if( null != rHeader ) {
-						totalCount = rHeader.getTotalCount();
-						totalPage = rHeader.getTotalPage();
-						currentlyPage = rHeader.getCurrentlyPage();
-						ShoplinkerOrder slOrder = null;
-
-						for(Order ord : rOrdList) {
-							slOrder = new ShoplinkerOrder();
-							slOrder.setAllParams(ord);
-							slOrder.setOrderIfIdx(commonService.getNextSequence("SEQ_SHHOPLINKER_ORD"));
-							currListCount ++;
-
-							//1. 샵링커 주문등록
-							try {
-
-								shoplinkerDao.insertShoplinkerOrder(slOrder);
-							}catch(Exception e) {
-								ShoplinkerGoods map = new ShoplinkerGoods();
-								String chkParams = "";
-								chkParams += "SHOPLINKER_ORDER_ID="+ord.getShoplinkerOrderId() +",MALL_ORDER_ID="+ord.getMallOrderId()
-										  + ",ORDER_NAME="+ord.getOrderName() + ",ORDER_TEL="+ord.getOrderTel() + ",ORDER_CEL="+ord.getOrderCel()
-										  + ",RECEIVE="+ord.getReceive() + ",RECEIVE_TEL="+ord.getReceiveTel() + ",RECEIVE_CEL="+ord.getReceiveCel()
-										  + ",RECEIVE_ADDR="+ord.getReceiveAddr() + ",DELIVERY_MSG="+ord.getDeliveryMsg() + ",PRODUCT_NAME="+ord.getProductName()
-										  + ",SKU="+ord.getSku() + ",SUPPLY_ID="+ord.getSupplyId() + ",DELIVERY="+ord.getDelivery() + ",ORDER_USER_ID="+ord.getOrderUserId()
-										  + ",SCRSPIK_USE="+ord.getCrspikUse() + ",DEAL_NO="+ord.getDealNo() + ",ORDER_MAIN_KEY="+ord.getOrderMainKey()
-										  + ",PAN_TYPE="+ord.getPanType() + ",SCHANNEL_TYPE="+ord.getChannelType() + ",SHIP_NO="+ord.getShipNo();
-								map.setApiType("ORDER");
-								map.setXmlTxt(chkParams);
-								map.setApiResult("error");
-								map.setApiMessage("샵링커 주문생성 오류");
-
-								// 오류이력 저장
-								shoplinkerDao.insertShoplinerApiHst(map);
-							}
-						}
-
-						log.debug("Shoplinker API Call: success");
-						log.debug("responseXmlData {}", responseXmlData);
-					}else {
-
-						ShoplinkerGoods map = new ShoplinkerGoods();
-						map.setApiType("ORDER");
-						map.setXmlTxt(responseXmlData);
-						map.setApiResult("false");
-						map.setApiMessage(shoplinkerOrder.getApiStDate() + " => 처리건 없음");
-						shoplinkerDao.insertShoplinerApiHst(map);
-					}
-
-				} catch (Exception e) {
-					log.error("error", e);
-					ShoplinkerGoods map = new ShoplinkerGoods();
-					map.setApiType("ORDER");
-					map.setXmlTxt(sbRequest.toString());
-					map.setApiResult("error");
-					map.setApiMessage("API 통신오류 =>"+StringUtils.abbreviate(e.getMessage(), 0 , 120));
-					shoplinkerDao.insertShoplinerApiHst(map);
-				}
-
-			}else {
-				// 테스트용
-				xmlUrl = "http://ts5000.ipdisk.co.kr:8999/shoplinker/order/0409/order_real_"+shoplinkerOrder.getOrderPageNo()+".xml";
-
-				try {
-					// API 호출
-					responseXmlData = shoplinkerUtil.callShoplinkerApiByGet(GagaShoplinkerConstants.API_DOMAIN+regMap.getApiSubUrl()+URLEncoder.encode(xmlUrl), "");
-									// shoplinkerUtil.callShoplinkerApiByGet(GagaShoplinkerConstants.API_DOMAIN+regMap.getApiSubUrl()+URLEncoder.encode(xmlUrl), "");
-									//testOrderStr();
-
-					// response 결과
-					shoplinkerResult = (com.gagaframework.shoplinker.domain.orderlist.Shoplinker)shoplinkerUtil.unmarshal(com.gagaframework.shoplinker.domain.orderlist.Shoplinker.class, responseXmlData);
-					rHeader = shoplinkerResult.getHeader();
-					rOrdList = shoplinkerResult.getOrder();
-
-					// 수집정보 없음
-					if( null != rHeader ) {
-						totalCount = rHeader.getTotalCount();
-						totalPage = rHeader.getTotalPage();
-						currentlyPage = rHeader.getCurrentlyPage();
-						ShoplinkerOrder slOrder = null;
-
-						for(Order ord : rOrdList) {
-							slOrder = new ShoplinkerOrder();
-							slOrder.setAllParams(ord);
-							slOrder.setOrderIfIdx(commonService.getNextSequence("SEQ_SHHOPLINKER_ORD"));
-							currListCount ++;
-
-							//1. 샵링커 주문등록
-							try {
-
-								shoplinkerDao.insertShoplinkerOrder(slOrder);
-							}catch(Exception e) {
-								ShoplinkerGoods map = new ShoplinkerGoods();
-								String chkParams = "";
-								chkParams += "SHOPLINKER_ORDER_ID="+ord.getShoplinkerOrderId() +",MALL_ORDER_ID="+ord.getMallOrderId()
-										  + ",ORDER_NAME="+ord.getOrderName() + ",ORDER_TEL="+ord.getOrderTel() + ",ORDER_CEL="+ord.getOrderCel()
-										  + ",RECEIVE="+ord.getReceive() + ",RECEIVE_TEL="+ord.getReceiveTel() + ",RECEIVE_CEL="+ord.getReceiveCel()
-										  + ",RECEIVE_ADDR="+ord.getReceiveAddr() + ",DELIVERY_MSG="+ord.getDeliveryMsg() + ",PRODUCT_NAME="+ord.getProductName()
-										  + ",SKU="+ord.getSku() + ",SUPPLY_ID="+ord.getSupplyId() + ",DELIVERY="+ord.getDelivery() + ",ORDER_USER_ID="+ord.getOrderUserId()
-										  + ",SCRSPIK_USE="+ord.getCrspikUse() + ",DEAL_NO="+ord.getDealNo() + ",ORDER_MAIN_KEY="+ord.getOrderMainKey()
-										  + ",PAN_TYPE="+ord.getPanType() + ",SCHANNEL_TYPE="+ord.getChannelType() + ",SHIP_NO="+ord.getShipNo();
-								map.setApiType("ORDER");
-								map.setXmlTxt(chkParams);
-								map.setApiResult("error");
-								map.setApiMessage("샵링커 주문생성 오류");
-
-								// 오류이력 저장
-								shoplinkerDao.insertShoplinerApiHst(map);
-							}
-						}
-
-						log.debug("Shoplinker API Call: success");
-						log.debug("responseXmlData {}", responseXmlData);
-					}else {
-
-						ShoplinkerGoods map = new ShoplinkerGoods();
-						map.setApiType("ORDER");
-						map.setXmlTxt(responseXmlData);
-						map.setApiResult("false");
-						map.setApiMessage(shoplinkerOrder.getApiStDate() + " => 처리건 없음");
-						shoplinkerDao.insertShoplinerApiHst(map);
-					}
-
-				} catch (Exception e) {
-					log.error("error", e);
-					ShoplinkerGoods map = new ShoplinkerGoods();
-					map.setApiType("ORDER");
-					map.setXmlTxt(sbRequest.toString());
-					map.setApiResult("error");
-					map.setApiMessage("API 통신오류 =>"+StringUtils.abbreviate(e.getMessage(), 0 , 120));
-					shoplinkerDao.insertShoplinerApiHst(map);
-				}
-			}
-
-			returnMap.setString("RESULT_TYPE", "TRUE");
-
-			// 생성 파일삭제
-			// GagaFileUtil.deleteFile(GagaFileUtil.getConcatenationPath(shoplinkerOrder.getXmlPath(), xmlFileName.toString()));
-
-		}catch(Exception e) {
-			log.error("xml 생성오류 ", e);
-			returnMap.setString("RESULT_TYPE", "error");
-			returnMap.setString("RESULT_MSG", "xml 생성오류");
-		}
-
-		returnMap.setInt("currListCount", currListCount);
-		returnMap.setInt("totalCount", totalCount);	// 총 주문건수
-		returnMap.setInt("totalPage", totalPage);
-		returnMap.setInt("currentlyPage", currentlyPage);
-
-		return returnMap;
-	}
-
-	/**
-	 * 샵링커주문수집-제휴몰 주문등록
-	 *
-	 * @param shoplinkerOrder
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	public void insertShoplinkerOrderStep2(ShoplinkerOrder shoplinkerOrder) throws IOException {
-
-		// 1. 외부몰 미등록 목록 가져옴
-		Collection<ShoplinkerOrder> slkOrdList = shoplinkerDao.getShoplinkerRegExtmallList();
-
-		ExtmallOrder extmallOrder;
-		GagaMap addrMap; 	//주소 분리
-		GagaMap checkMap;
-		for(ShoplinkerOrder slOrder : slkOrdList) {
-
-			extmallOrder = new ExtmallOrder();
-			extmallOrder.setVendorId(TsaConstants.VendorId.SHOPLINKER.value());			// 샵링커
-			extmallOrder.setUploadStat(TsaConstants.ExtmallUploadStat.WAIT.value()); 	// 대기
-			extmallOrder.setUploadGb("S");												// 업로드구분(샵링커:S, 엑셀:E)
-			extmallOrder.setRegNo(TsaSession.getInfo().getUserNo());
-			extmallOrder.setBasicParams(slOrder);										// 기본세팅파람
-
-			try {
-
-				extmallOrder.setDetailParams(slOrder);									// 상세파람
-
-				if( null != slOrder.getDisPriceCoupon() && !slOrder.getDisPriceCoupon().isEmpty()) {
-					extmallOrder.setCpnDcAmt(Integer.parseInt(slOrder.getDisPriceCoupon()));
-				}else {
-					extmallOrder.setCpnDcAmt(0);
-				}
-
-				if( null != slOrder.getDisPricePoint() && !slOrder.getDisPricePoint().isEmpty()) {
-					extmallOrder.setPntDcAmt(Integer.parseInt(slOrder.getDisPricePoint()));
-				}else {
-					extmallOrder.setPntDcAmt(0);
-				}
-
-				// validation 체크
-				checkMap = getRegOrderValidation(slOrder);
-				if( "FAIL".equals(checkMap.getString("RESULT_MSG"))) {
-					extmallOrder.setUploadStat(checkMap.getString("UploadStat"));	//실패
-					extmallOrder.setUploadFailCd(checkMap.getString("UploadFailCd"));
-					extmallOrder.setUploadFailReason(checkMap.getString("UploadFailReason")); // 실패사유
-
-				}else {
-					// 주소분리
-					addrMap = this.returnChangeAddr(slOrder.getReceiveAddr());
-					extmallOrder.setRecipBaseAddr(addrMap.getString("addrBase"));
-					extmallOrder.setRecipDtlAddr(addrMap.getString("addrDtl"));
-				}
-
-				ocmDao.insertExtmallOrder(extmallOrder);
-
-			}catch(Exception e) {
-				log.error("TsaShoplinkerService.insertShoplinkerOrderStep2 Error : "+e);
-				extmallOrder.setUploadStat(TsaConstants.ExtmallUploadStat.FAIL.value());	//실패
-				extmallOrder.setUploadFailCd(TsaConstants.ExtmallUploadFailStat.ETC.value());
-				extmallOrder.setUploadFailReason("제휴몰 등록오류 :: "+StringUtils.abbreviate(e.getMessage(), 0 , 120)); // 실패사유
-				ocmDao.insertExtmallOrder(extmallOrder);
-			}
-
-			// 제휴몰등록여부 업데이트
-			shoplinkerDao.updateShoplinkerOrder(slOrder);
-		}
-	}
-
-	/**
-	 * 샵링커주문수집-validation 체크
-	 *
-	 * @param shoplinkerOrder
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	public GagaMap getRegOrderValidation(ShoplinkerOrder slOrder) {
-
-		GagaMap rMap = new GagaMap();
-		rMap.setString("RESULT_MSG", "FAIL");
-		rMap.setString("UploadStat", TsaConstants.ExtmallUploadStat.FAIL.value());
-
-		/*if( null != slOrder.getDeliveryInvoice() && !slOrder.getDeliveryInvoice().isEmpty()) {
-		    rMap.setString("UploadFailCd", "G022_70");
-			rMap.setString("UploadFailReason", "송장번호가 존재하는 주문건입니다. 제휴몰 주문업로드 불가");
-			return rMap;
-		}*/
-
-		if( null == slOrder.getReceiveAddr() || slOrder.getReceiveAddr().isEmpty()) {
-			rMap.setString("UploadFailCd", TsaConstants.ExtmallUploadFailStat.ETC.value());
-			rMap.setString("UploadFailReason", "주소정보 없음.");
-			return rMap;
-		}
-
-		rMap.setString("RESULT_MSG", "SUCCESS");
-
-		return rMap;
-	}
-
-	/**
-	 * 제휴몰 주문수집 상세
-	 *
-	 * @param
-	 * @return
-	 * @author jmh
-	 * @since 2020. 5. 28
-	 */
-	public ExtmallOrder getExtmallOrderInfo(String extmallOrder) {
-		return shoplinkerDao.getExtmallOrderInfo(extmallOrder);
-	}
-
-	/**
-	 * 송장전송-전송
-	 *
-	 * @param shoplinkerGoods
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	public void createShoplinkerInvoiceXml(ShoplinkerInvoice shoplinkerInvoice) throws IOException {
-		// 파일명 뒤에 붙일 시간
-		fileAddNm = GagaDateUtil.getTodayDateTime();
-
-		ShoplinkerGoods apiHstMap = new ShoplinkerGoods();
-
-		ShoplinkerGoods regMap = new ShoplinkerGoods();
-		regMap.setApiType("INVOICE");
-		regMap.setApiSubUrl(env.getProperty("shoplinker.url.invoice"));
-		regMap.setRegNo(0);
-		regMap.setXmlPath(shoplinkerInvoice.getXmlPath());
-		regMap.setDomainUrl(shoplinkerInvoice.getDomainUrl());
-
-		StringBuilder sbRequest;
-		com.gagaframework.shoplinker.domain.invoice.ResultMessage resultMsg;
-
-		Collection<ShoplinkerInvoice> sendList = shoplinkerDao.getShoplinkerInvoiceOrdDtlList(shoplinkerInvoice);
-
-		if( null != sendList && !sendList.isEmpty()) {
-			for(ShoplinkerInvoice info : sendList) {
-				apiHstMap = new ShoplinkerGoods();
-
-				// xml 데이터 세팅
-				sbRequest = new StringBuilder();
-				sbRequest.append("<?xml version=\"1.0\" encoding=\"euc-kr\"?>\n");
-				sbRequest.append("<Shoplinker>\n");
-				sbRequest.append("	<Delivery>\n");
-
-				sbRequest.append("		<customer_id>").append(shoplinkerInvoice.getCustomerId()).append("</customer_id>\n");
-				sbRequest.append("		<order_id>").append(info.getAgentOrderId()).append("</order_id>\n");
-				sbRequest.append("		<delivery_name><![CDATA[").append(info.getDeliveryName()).append("]]></delivery_name>\n");
-				sbRequest.append("		<delivery_invoice><![CDATA[").append(info.getDeliveryInvoice()).append("]]></delivery_invoice>\n");
-
-				sbRequest.append("	</Delivery>\n");
-				sbRequest.append("</Shoplinker>\n");
-
-				// api 호출 및 결과 history 저장
-				try {
-
-					GagaShoplinkertUtil shoplinkerUtil = new GagaShoplinkertUtil("MS949");
-
-					// XML 파일 생성
-					StringBuilder xmlFileName = new StringBuilder();
-					xmlFileName.append("invoice_"+info.getOrdDtlNo()+"_"+fileAddNm).append(".xml");
-					String xmlPath = GagaFileUtil.getConcatenationPath(shoplinkerInvoice.getXmlPath(), xmlFileName.toString());
-					shoplinkerUtil.makeRequestXmlFile(sbRequest.toString(), xmlPath);
-					String xmlUrl = GagaFileUtil.getConcatenationPath(shoplinkerInvoice.getDomainUrl(), xmlFileName.toString());
-
-					// API 호출
-					String apiUrl = GagaShoplinkerConstants.API_DOMAIN + regMap.getApiSubUrl() + URLEncoder.encode(xmlUrl);
-					String responseXmlData = shoplinkerUtil.callShoplinkerApiByGet(apiUrl, "");
-
-					log.info(shoplinkerInvoice.getApiType()+" ####xmlUrl "+xmlUrl);
-					log.info(shoplinkerInvoice.getApiType()+" ####apiUrl "+apiUrl);
-
-					// response 결과
-					resultMsg = (com.gagaframework.shoplinker.domain.invoice.ResultMessage)shoplinkerUtil.unmarshal(com.gagaframework.shoplinker.domain.invoice.ResultMessage.class, responseXmlData);
-
-					apiHstMap.setApiType("INVOICE");
-					apiHstMap.setXmlTxt(sbRequest.toString());
-					apiHstMap.setOrdDtlNo(info.getOrdDtlNo());
-					apiHstMap.setApiResult(resultMsg.getResult());
-					apiHstMap.setApiMessage(resultMsg.getMessage());
-
-					// 생성 파일삭제
-					GagaFileUtil.deleteFile(GagaFileUtil.getConcatenationPath(shoplinkerInvoice.getXmlPath(), xmlFileName.toString()));
-
-				} catch (Exception e) {
-					log.error("error", e);
-					apiHstMap.setApiType("INVOICE");
-					apiHstMap.setXmlTxt(sbRequest.toString());
-					apiHstMap.setOrdDtlNo(info.getOrdDtlNo());
-					apiHstMap.setApiResult("error");
-					apiHstMap.setApiMessage("API 통신오류");
-				}
-
-				// 전송이력 저장
-				shoplinkerDao.insertShoplinerApiHst(apiHstMap);
-			}
-		}
-	}
-
-	/**
-	 * 송장전송-전송 (엑셀용)
-	 *
-	 * @param shoplinkerGoods
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	/*********************************************************************************************
-	public void createShoplinkerInvoiceXml(Collection<GagaMap> ecxelGoodsList, ShoplinkerInvoice shoplinkerInvoice) throws IOException {
-		// 파일명 뒤에 붙일 시간
-		Calendar cal = Calendar.getInstance();
-		SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHHmmss");
-		fileAddNm = sdf.format(cal.getTime());
-
-		ShoplinkerGoods apiHstMap = new ShoplinkerGoods();
-
-		GagaMap returnMap = new GagaMap();
-		ShoplinkerGoods regMap = new ShoplinkerGoods();
-		regMap.setApiType("INVOICE");
-		regMap.setApiSubUrl(env.getProperty("shoplinker.url.invoice"));
-		regMap.setRegNo(shoplinkerInvoice.getRegNo());
-		regMap.setXmlPath(shoplinkerInvoice.getXmlPath());
-		regMap.setDomainUrl(shoplinkerInvoice.getDomainUrl());
-
-		StringBuilder sbRequest;
-		com.gagaframework.shoplinker.domain.invoice.ResultMessage resultMsg_tmp;
-
-		for (GagaMap gagaMap : ecxelGoodsList) {
-			if( !"".equals(gagaMap.getString("ordNo").trim())) {
-				shoplinkerInvoice.setOrdNo(gagaMap.getInt("ordNo"));
-
-				Collection<ShoplinkerInvoice> list = shoplinkerDao.getShoplinkerInvoiceOrdDtlList(shoplinkerInvoice);
-				for(ShoplinkerInvoice info : list) {
-					apiHstMap = new ShoplinkerGoods();
-
-					// xml 데이터 세팅
-					sbRequest = new StringBuilder();
-					sbRequest.append("<?xml version=\"1.0\" encoding=\"euc-kr\"?>\n");
-					sbRequest.append("<Shoplinker>\n");
-					sbRequest.append("	<Delivery>\n");
-
-					sbRequest.append("		<customer_id>").append(shoplinkerInvoice.getCustomerId()).append("</customer_id>\n");
-					sbRequest.append("		<order_id>").append(info.getAgentOrderId()).append("</order_id>\n");
-					sbRequest.append("		<delivery_name><![CDATA[").append(info.getDeliveryName()).append("]]></delivery_name>\n");
-					sbRequest.append("		<delivery_invoice><![CDATA[").append(info.getDeliveryInvoice()).append("]]></delivery_invoice>\n");
-
-					sbRequest.append("	</Delivery>\n");
-					sbRequest.append("</Shoplinker>\n");
-
-					// api 호출 및 결과 history 저장
-					try {
-
-						GagaShoplinkertUtil shoplinkerUtil = new GagaShoplinkertUtil("MS949");
-
-						// XML 파일 생성
-						StringBuilder xmlFileName = new StringBuilder();
-						xmlFileName.append("invoice_"+info.getOrdDtlNo()+"_"+fileAddNm).append(".xml");
-						String xmlPath = GagaFileUtil.getConcatenationPath(shoplinkerInvoice.getXmlPath(), xmlFileName.toString());
-						shoplinkerUtil.makeRequestXmlFile(sbRequest.toString(), xmlPath);
-						String xmlUrl = GagaFileUtil.getConcatenationPath(shoplinkerInvoice.getDomainUrl(), xmlFileName.toString());
-
-						// API 호출
-						xmlUrl = "http://ts5000.ipdisk.co.kr:8999/shoplinker/invoice.xml";
-						String apiUrl = GagaShoplinkerConstants.API_DOMAIN + regMap.getApiSubUrl() + URLEncoder.encode(xmlUrl);
-						String responseXmlData = shoplinkerUtil.callShoplinkerApiByGet(apiUrl, "");
-
-						log.info(shoplinkerInvoice.getApiType()+" ####xmlUrl "+xmlUrl);
-						log.info(shoplinkerInvoice.getApiType()+" ####apiUrl "+apiUrl);
-
-						// response 결과
-						com.style24.admin.support.util.ResultMessage22 resultMsg;
-						resultMsg = (com.style24.admin.support.util.ResultMessage22)shoplinkerUtil.unmarshal(com.style24.admin.support.util.ResultMessage22.class, responseXmlData);
-						System.out.println(" ##### invoice2 : "+resultMsg);
-						System.out.println(" ##### invoice3 : "+resultMsg.getResult());
-						System.out.println(" ##### invoice4 : "+resultMsg.getMessage());
-						System.out.println(" ##### invoice5 : "+resultMsg.getId());
-
-						//resultMsg = (com.gagaframework.shoplinker.domain.invoice.ResultMessage)shoplinkerUtil.unmarshal(com.gagaframework.shoplinker.domain.invoice.ResultMessage.class, responseXmlData);
-						apiHstMap.setApiType("INVOICE");
-						apiHstMap.setXmlTxt(sbRequest.toString());
-						apiHstMap.setOrdDtlNo(info.getOrdDtlNo());
-						apiHstMap.setApiResult(resultMsg.getResult());
-						apiHstMap.setApiMessage(resultMsg.getMessage());
-
-						// 생성 파일삭제
-						GagaFileUtil.deleteFile(GagaFileUtil.getConcatenationPath(shoplinkerInvoice.getXmlPath(), xmlFileName.toString()));
-
-					} catch (Exception e) {
-						log.error("error", e);
-						apiHstMap.setApiType("INVOICE");
-						apiHstMap.setXmlTxt(sbRequest.toString());
-						apiHstMap.setOrdDtlNo(info.getOrdDtlNo());
-						apiHstMap.setApiResult("error");
-						apiHstMap.setApiMessage("API 통신오류");
-					}
-
-					// 전송이력 저장
-					shoplinkerDao.insertShoplinerApiHst(apiHstMap);
-				}
-			}
-		}
-	}
-	*******************************************************************************************/
-
-	/**
-	 * 송장전송-목록 건수
-	 *
-	 * @param getGoodsSendListCount
-	 * @return
-	 * @author jmh
-	 * @since 2020. 5. 21
-	 */
-	public int getSendInvoiceListCount(ShoplinkerInvoice shoplinkerInvoice) {
-		return shoplinkerDao.getSendInvoiceListCount(shoplinkerInvoice);
-	}
-
-	/**
-	 * 송장전송-목록
-	 *
-	 * @param getGoodsSendList
-	 * @return
-	 * @author jmh
-	 * @since 2020. 5. 21
-	 */
-	public Collection<ShoplinkerInvoice> getSendInvoiceList(ShoplinkerInvoice shoplinkerInvoice) {
-		return shoplinkerDao.getSendInvoiceList(shoplinkerInvoice);
-	}
-
-	/**
-	 * 재고전송-목록 건수
-	 *
-	 * @param getStockListCount
-	 * @return
-	 * @author jmh
-	 * @since 2020. 5. 21
-	 */
-	public int getStockListCount(ShoplinkerSearch shoplinkerSearch) {
-		return shoplinkerDao.getStockListCount(shoplinkerSearch);
-	}
-
-	/**
-	 * 재고전송-목록
-	 *
-	 * @param getStockListList
-	 * @return
-	 * @author jmh
-	 * @since 2020. 5. 21
-	 */
-	public Collection<ShoplinkerGoods> getStockListList(ShoplinkerSearch shoplinkerSearch) {
-		return shoplinkerDao.getStockListList(shoplinkerSearch);
-	}
-
-	/**
-	 * 제휴몰 주문등록 주소분리
-	 *
-	 * @param addrStr
-	 * @return
-	 * @author jmh
-	 * @since 2020. 5. 21
-	 */
-	public GagaMap returnChangeAddr(String addrStr) {
-		GagaMap rtnMap = new GagaMap();
-
-		String tmpStr = "";
-		String addrBase = "";
-		String addrDtl = "";
-
-		if( -1 < addrStr.indexOf(" ")) {
-			// 공백  있음!
-			String[] addr = addrStr.split(" ");
-			if( addrStr.getBytes().length <= 100) {
-				addrBase = addr[0];
-				addrDtl = addrStr.replace(addr[0], "").trim();
-			}else {
-
-				for( int i=0; i< addr.length; i++) {
-					tmpStr = addrBase + addr[i];
-					if( 100 <  tmpStr.getBytes().length) {
-						break;
-					}else {
-						addrBase += addr[i]+" ";
-					}
-				}
-
-				addrBase = addrBase.trim();
-				addrDtl = addrStr.replace(addrBase, "").trim();
-			}
-
-		}else {
-			// 공백 없음! 무작위로 자르기!!
-			if( addrStr.getBytes().length <= 100) {
-				addrBase = addrStr;
-				addrDtl = null;
-			}else {
-
-				tmpStr = addrStr.substring(0, addrStr.length()/2);
-				if( 100 < tmpStr.getBytes().length ) {
-					tmpStr = tmpStr.substring(0, tmpStr.length()/2);
-				}
-				// 숫자를 기준으로 자름
-				for (char c : tmpStr.toCharArray()) {
-					if (Character.isDigit(c)) {
-			           break;
-			        }else {
-			        	addrBase += c;
-			        }
-			    }
-				addrBase = addrBase.trim();
-				addrDtl = addrStr.replace(addrBase, "").trim();
-			}
-		}
-
-		rtnMap.put("addrBase", addrBase);
-		rtnMap.put("addrDtl", addrDtl);
-
-		return rtnMap;
-	}
-
-	// 테스트데이터
-	private String testOrderStr() {
-
-		String bbb = "<?xml version=\"1.0\" encoding=\"euc-kr\"?>"
-				+ "<Shoplinker>\r\n"
-				+ "<header>\r\n"
-				+ "<total_count>1</total_count>\r\n"
-				+ "<total_page>1</total_page>\r\n"
-				+ "<currently_page>1</currently_page>\r\n"
-				+ "<currently_count>1</currently_count>\r\n"
-				+ "</header>\r\n"
-
-				+ "<order>\r\n"
-				+ "<shoplinker_order_id>1234-6</shoplinker_order_id>\r\n"
-				+ "<mall_order_id><![CDATA[1234-6]]></mall_order_id>\r\n"
-				+ "<mall_name><![CDATA[(주)현대홈쇼핑]]></mall_name>\r\n"
-				+ "<baesong_status><![CDATA[송장전송완료]]></baesong_status>\r\n"
-				+ "<order_name><![CDATA[조민혜]]></order_name>\r\n"
-				+ "<order_tel><![CDATA[010-1234-5678]]></order_tel>\r\n"
-				+ "<order_cel><![CDATA[010-1234-5678]]></order_cel>\r\n"
-				+ "<order_email><![CDATA[]]></order_email>\r\n"
-				+ "<receive><![CDATA[조민혜]]></receive>\r\n"
-				+ "<receive_tel><![CDATA[010-1234-5678]]></receive_tel>\r\n"
-				+ "<receive_cel><![CDATA[010-1234-5678]]></receive_cel>\r\n"
-				+ "<receive_zipcode><![CDATA[21387]]></receive_zipcode>\r\n"
-				+ "<receive_addr><![CDATA[인천 부평구 부흥로로로 1234]]></receive_addr>\r\n"
-				+ "<baesong_type><![CDATA[쇼핑몰확인요망]]></baesong_type>\r\n"
-				+ "<baesong_bi>0</baesong_bi>\r\n"
-				+ "<delivery_msg><![CDATA[조심조심]]></delivery_msg>\r\n"
-				+ "<order_product_id>2118602667</order_product_id>\r\n"
-				+ "<shoplinker_product_id>prd143809490</shoplinker_product_id>\r\n"
-				+ "<partner_product_id>NNW13QPM69</partner_product_id>\r\n"
-				+ "<product_name><![CDATA[[나이키 조던 키즈] 윙스MA-1 재킷B NNW13QPM69 (주니어)]]></product_name>\r\n"
-				+ "<quantity>1</quantity>\r\n"
-				+ "<order_price>47600</order_price>\r\n"
-				+ "<sale_price>47600</sale_price>\r\n"
-				+ "<supply_price>36176</supply_price>\r\n"
-				+ "<sku><![CDATA[NA/160]]></sku>\r\n"
-				+ "<orderdate>20210622132721</orderdate>\r\n"
-				+ "<order_reg_date>20210622132721</order_reg_date>\r\n"
-				+ "<delivery_invoice>339382561300</delivery_invoice>\r\n"
-				+ "<order_flag>004</order_flag>\r\n"
-				+ "<seller_id>hs009583</seller_id>\r\n"
-				+ "<only_sku><![CDATA[]]></only_sku>\r\n"
-				+ "<add_sku><![CDATA[]]></add_sku>\r\n"
-				+ "<mall_id><![CDATA[APISHOP_0015]]></mall_id>\r\n"
-				+ "<dis_price_mall><![CDATA[]]></dis_price_mall>\r\n"
-				+ "<dis_price_seller><![CDATA[]]></dis_price_seller>\r\n"
-				+ "<dis_price_coupon><![CDATA[]]></dis_price_coupon>\r\n"
-				+ "<dis_price_point><![CDATA[]]></dis_price_point>\r\n"
-				+ "<distribution_delivery><![CDATA[001]]></distribution_delivery>\r\n"
-				+ "<sku_match_code><![CDATA[12112927-3]]></sku_match_code>\r\n"
-				+ "<sku_barcode><![CDATA[]]></sku_barcode>\r\n"
-				+ "<order_main_key><![CDATA[]]></order_main_key>\r\n"
-				+ "<order_customs_number><![CDATA[]]></order_customs_number>\r\n"
-				+ "<order_input_type><![CDATA[001]]></order_input_type>\r\n"
-				+ "<supply_id><![CDATA[]]></supply_id>\r\n"
-				+ "<delivery><![CDATA[delv0094]]></delivery>\r\n"
-				+ "<order_user_id><![CDATA[]]></order_user_id>\r\n"
-				+ "<crspik_use><![CDATA[]]></crspik_use>\r\n"
-				+ "<ship_no>20210129292734</ship_no>\r\n"
-				+ "<pan_type><![CDATA[]]></pan_type>\r\n"
-				+ "<exchange_order_yn></exchange_order_yn>\r\n"
-				+ "<channel_type>현대Hmall</channel_type>\r\n"
-				+ "<ship_rsv_date></ship_rsv_date>\r\n"
-				+ "</order>\r\n"
-
-				+ "</Shoplinker>\r\n";
-		return bbb;
-	}
-}

+ 23 - 10
src/main/java/com/style24/admin/biz/service/TsaWithdrawService.java

@@ -11,6 +11,7 @@ import com.gagaframework.web.parameter.GagaMap;
 import com.style24.admin.biz.dao.TsaDeliveryDao;
 import com.style24.admin.biz.dao.TsaWithdrawDao;
 import com.style24.admin.support.security.session.TsaSession;
+import com.style24.admin.biz.service.TsaWmsWithdrawService;
 import com.style24.core.biz.dao.TscOrderChangeDao;
 import com.style24.core.biz.service.TscOrderChangeService;
 import com.style24.core.biz.service.TscOrderRefundService;
@@ -57,8 +58,8 @@ public class TsaWithdrawService {
 	@Autowired
 	private TscOrderChangeService orderChangeService;
 	
-	//@Autowired
-	//private TsaOrderDao orderDao;
+	@Autowired
+	private TsaWmsWithdrawService wmsWithdrawService;
 
 	//@Autowired
 	//private TsaOrderService orderService;
@@ -241,6 +242,10 @@ public class TsaWithdrawService {
 	public void reRecallOrder(Withdraw withdraw) {
 		Integer userNo = TsaSession.getInfo().getUserNo();
 		withdraw.setUpdNo(userNo);
+		
+		withdrawDao.updateReRecallOrderChange(withdraw);
+		
+		
 		if(OrderChangeGb.RETURN.value().equals(withdraw.getChgGb())) { // 반품요청
 			withdraw.setChgStat(OrderChangeStat.RETURN.value()); // 반품접수
 		} else { //교환요청
@@ -248,14 +253,22 @@ public class TsaWithdrawService {
 		}
 		withdrawDao.updateReRecallOrder(withdraw);
 		
-		// 주문상세변경 이력 
-		OrderChange ordChg = new OrderChange();
-		ordChg.setRegNo(userNo);
-		ordChg.setUpdNo(userNo);
-		ordChg.setOrdChgSq(withdraw.getOrdChgSq()); 
-		ordChg.setOrdDtlNo(withdraw.getOrdDtlNo()); 
-		ordChg.setChgStat(withdraw.getChgStat());
-		orderChangeDao.createOrderChangeDetailHst(ordChg);
+		// 상세목록 조회 
+		Collection<Withdraw> list = withdrawDao.getOrdChgDtlList(withdraw);
+		
+		for(Withdraw data : list) {
+			// 주문상세변경 이력 
+			OrderChange ordChg = new OrderChange();
+			ordChg.setRegNo(userNo);
+			ordChg.setUpdNo(userNo);
+			ordChg.setOrdChgSq(data.getOrdChgSq()); 
+			ordChg.setOrdDtlNo(data.getOrdDtlNo()); 
+			ordChg.setChgStat(data.getChgStat());
+			orderChangeDao.createOrderChangeDetailHst(ordChg);
+		}
+		
+		// WMS 재회수지시 
+		wmsWithdrawService.updateReRecallOrder(withdraw);
 		
 	}
 	

+ 15 - 0
src/main/java/com/style24/admin/biz/service/TsaWmsWithdrawService.java

@@ -8,6 +8,7 @@ import org.springframework.transaction.annotation.Transactional;
 import lombok.extern.slf4j.Slf4j;
 import com.style24.admin.biz.dao.TsaWmsWithdrawDao;
 import com.style24.persistence.domain.WmsWithdraw;
+import com.style24.persistence.domain.Withdraw;
 import com.style24.persistence.domain.Delivery;
 import com.style24.core.support.message.TscMessageByLocale;
 
@@ -78,4 +79,18 @@ public class TsaWmsWithdrawService {
 		wmsWithdrawDao.deleteWmsTbIfDelifixQty(delivery);
 	}
 	
+	/**
+	 * 재회수지시 
+	 *
+	 * @param Delivery
+	 * @return
+	 * @author moon
+	 * @since 2021. 06. 24
+	 */
+	@Transactional("wmsTxnManager")
+	public void updateReRecallOrder(Withdraw withdraw) {
+		wmsWithdrawDao.updateReRecallOrder(withdraw);
+	}
+	
+	
 }

+ 9 - 3
src/main/java/com/style24/admin/biz/web/TsaCustomerController.java

@@ -6,6 +6,7 @@ import com.gagaframework.web.parameter.GagaMap;
 import com.gagaframework.web.util.GagaStringUtil;
 import com.style24.admin.biz.service.TsaCustomerService;
 import com.style24.core.biz.service.TscKakaotalkService;
+import com.style24.core.biz.service.TscMailService;
 import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.session.TscSession;
 import com.style24.core.support.util.CryptoUtils;
@@ -75,6 +76,9 @@ public class TsaCustomerController extends TsaBaseController {
 	@Autowired
 	private TscKakaotalkService kakaotalkService;
 
+	@Autowired
+	private TscMailService mailService;
+
 	/**
 	 * 1:1문의관리 화면
 	 * @return
@@ -470,7 +474,8 @@ public class TsaCustomerController extends TsaBaseController {
 	@GetMapping("/lms/popup/form")
 	public ModelAndView lmsPopupForm(@RequestParam(value = "elementCellPhnno", required = false) String elementCellPhnno
 									, @RequestParam(value = "elementCustNo") String elementCustNo
-									, @RequestParam(value = "elementMaskingCellPhnno", required = false) String maskingCellPhnno) {
+									, @RequestParam(value = "elementMaskingCellPhnno", required = false) String maskingCellPhnno
+									, @RequestParam(value = "pageGb", required = false) String pageGb) {
 		ModelAndView mav = new ModelAndView();
 		// 휴대폰 번호
 		mav.addObject("elementCellPhnno", elementCellPhnno);
@@ -483,12 +488,13 @@ public class TsaCustomerController extends TsaBaseController {
 
 		mav.addObject("callBack", TscConstants.CALLCENTER_TEL_NO);
 
+		mav.addObject("pageGb", pageGb);
+
 		mav.setViewName("customer/LmsPopupForm");
 
 		return mav;
 	}
 
-
 	/**
 	 * 메시지 발송
 	 *
@@ -655,7 +661,7 @@ public class TsaCustomerController extends TsaBaseController {
 
 		// 메일 발송
 		if (StringUtils.isNotBlank(customer.getEmail())) {
-			//mailService.sendBasicMail(customer);
+			mailService.sendBasicMail(customer, TsaSession.getInfo().getUserNo());
 		}
 
 		return super.ok(message.getMessage("SUCC_0005"));

+ 18 - 4
src/main/java/com/style24/admin/biz/web/TsaOcmController.java

@@ -21,6 +21,8 @@ import com.style24.admin.biz.service.TsaOcmService;
 import com.style24.admin.biz.service.TsaRendererService;
 import com.style24.admin.support.controller.TsaBaseController;
 import com.style24.admin.support.security.session.TsaSession;
+import com.style24.core.biz.service.TscOrderOcmService;
+import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.persistence.domain.Extmall;
 import com.style24.persistence.domain.ExtmallNoti;
@@ -50,6 +52,9 @@ public class TsaOcmController extends TsaBaseController {
 	@Autowired
 	private TsaOcmService ocmService;
 
+	@Autowired
+	private TscOrderOcmService orderOcmService;
+
 	@Autowired
 	private TsaRendererService rendererService;
 
@@ -282,7 +287,9 @@ public class TsaOcmController extends TsaBaseController {
 			ecxelGoodsList = GagaExcelUtil.getList(
 				GagaFileUtil.getConcatenationPath(targetPath, extmallOrder.getExcelFileNm()), 0, extMallOrderNames, 0);
 		}
-		ocmService.createExtmallOrderExcelupload(ecxelGoodsList, extmallOrder.getExcelFileNm());
+
+		int userNo = TsaSession.getInfo().getUserNo();
+		orderOcmService.createExtmallOrderExcelupload(ecxelGoodsList, extmallOrder.getExcelFileNm(), userNo);
 
 		// 파일 삭제
 		GagaFileUtil.deleteFile(GagaFileUtil.getConcatenationPath(targetPath, extmallOrder.getExcelFileNm()));
@@ -301,7 +308,8 @@ public class TsaOcmController extends TsaBaseController {
 	@PostMapping("/extmallorder/upload/tmp/list")
 	@ResponseBody
 	public Collection<ExtmallOrder> getExtmallOrderUploadTmpList() throws Exception {
-		return ocmService.getExtmallOrderUploadTmpList();
+		int userNo = TsaSession.getInfo().getUserNo();
+		return orderOcmService.getExtmallOrderUploadTmpList(userNo);
 	}
 
 	/**
@@ -316,7 +324,10 @@ public class TsaOcmController extends TsaBaseController {
 	@PostMapping("/extmallorder/save")
 	@ResponseBody
 	public GagaResponse saveExtmallorder(@RequestBody ExtmallOrder extmallOrder) {
-		String resultMsg = ocmService.saveExtmallorder(extmallOrder);
+		extmallOrder.setRegNo(TsaSession.getInfo().getUserNo());
+		extmallOrder.setVendorId(TscConstants.VendorId.SHOPLINKER.value());
+
+		String resultMsg = orderOcmService.saveExtmallorder(extmallOrder);
 		return super.ok(resultMsg);
 	}
 
@@ -331,7 +342,10 @@ public class TsaOcmController extends TsaBaseController {
 	@PostMapping("/extmallorder/upload/second/list")
 	@ResponseBody
 	public Collection<ExtmallOrder> getExtmallOrderUploadSecondList() {
-		return ocmService.getExtmallOrderUploadSecondList();
+		ExtmallOrder extmallOrder = new ExtmallOrder();
+		extmallOrder.setRegNo(TsaSession.getInfo().getUserNo());
+
+		return orderOcmService.getExtmallOrderUploadSecondList(extmallOrder);
 	}
 
 

+ 2 - 1
src/main/java/com/style24/admin/biz/web/TsaOrderChangeController.java

@@ -305,10 +305,11 @@ public class TsaOrderChangeController extends TsaBaseController {
 		ModelAndView mav = new ModelAndView();
 
 		// 1. 반품가능 주문상세상탭값 설정
-		String[] ordDtlStatArr = new String[3];
+		String[] ordDtlStatArr = new String[4];
 		ordDtlStatArr[0] = TscConstants.OrderDetailStat.SHIPPING.value();
 		ordDtlStatArr[1] = TscConstants.OrderDetailStat.SHIP_COMPLETE.value();
 		ordDtlStatArr[2] = TscConstants.OrderDetailStat.DELIVERY_COMPLETE.value();
+		ordDtlStatArr[3] = TscConstants.OrderDetailStat.DELIVERY_PREPARE.value();
 		order.setOrdDtlStatArr(ordDtlStatArr);
 
 		// 2. 변경신청된 주문상세번호를 체크 후 있으면 해당 취소가능수량값 업데이트 

+ 55 - 33
src/main/java/com/style24/admin/biz/web/TsaShoplinkerController.java

@@ -3,9 +3,7 @@ package com.style24.admin.biz.web;
 import java.io.File;
 import java.io.IOException;
 import java.net.URLEncoder;
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
-import java.util.Calendar;
 import java.util.Collection;
 import java.util.HashMap;
 
@@ -32,12 +30,14 @@ import com.gagaframework.web.util.GagaDateUtil;
 import com.gagaframework.web.util.GagaFileUtil;
 import com.style24.admin.biz.service.TsaOcmService;
 import com.style24.admin.biz.service.TsaRendererService;
-import com.style24.admin.biz.service.TsaShoplinkerService;
 import com.style24.admin.support.controller.TsaBaseController;
-import com.style24.admin.support.env.TsaConstants;
 import com.style24.admin.support.security.session.TsaSession;
+import com.style24.core.biz.service.TscOrderOcmService;
+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.TscPageRequest;
+import com.style24.persistence.domain.CommonCode;
 import com.style24.persistence.domain.Extmall;
 import com.style24.persistence.domain.ShoplinkerGoods;
 import com.style24.persistence.domain.ShoplinkerInvoice;
@@ -64,11 +64,14 @@ public class TsaShoplinkerController extends TsaBaseController {
 	private Environment env;
 
 	@Autowired
-	private TsaShoplinkerService shoplinkerService;
+	private TscShoplinkerService shoplinkerService;
 
 	@Autowired
 	private TsaOcmService ocmService;
 
+	@Autowired
+	private TscOrderOcmService orderOcmService;
+
 	@Autowired
 	private TsaRendererService rendererService;
 
@@ -162,7 +165,7 @@ public class TsaShoplinkerController extends TsaBaseController {
 				shoplinkerService.saveCallApiRunable(slkSearch);
 
 				// 2. 엑셀데이터 확인 및 xml 관련 위치 확인
-				String[] goodsNames = {"goodsCd", "supplyCompCd"};
+				String[] goodsNames = {"goodsCd"};
 				ecxelGoodsList = GagaExcelUtil.getList(GagaFileUtil.getConcatenationPath(targetPath, shoplinkerGoods.getExcelFileNm()), 0, goodsNames, 0);
 
 				if (ecxelGoodsList != null && ecxelGoodsList.size() > EXCEL_ROW_COUNT) {
@@ -189,6 +192,7 @@ public class TsaShoplinkerController extends TsaBaseController {
 
 				// 3. xml 데이터 생성
 				shoplinkerGoods.setCustomerId(env.getProperty("shoplinker.customer_id"));
+				shoplinkerGoods.setRegNo(TsaSession.getInfo().getUserNo());
 				rtnMap = shoplinkerService.createShoplinkerXml(ecxelGoodsList, shoplinkerGoods);
 
 				// 4. 파일 삭제
@@ -227,14 +231,18 @@ public class TsaShoplinkerController extends TsaBaseController {
 
 		// 제휴몰
 		Extmall extmall = new Extmall();
-		extmall.setVendorId(TsaConstants.VendorId.SHOPLINKER.value()); // 샵링커
+		extmall.setVendorId(TscConstants.VendorId.SHOPLINKER.value()); // 샵링커
 		mav.addObject("extmallList", ocmService.getExtmallList(extmall));
 
 		// 업로드상태 콤보박스 목록
-		mav.addObject("uploadStatList", rendererService.getCommonCodeList("G021"));
+		CommonCode commoncode = new CommonCode();
+		commoncode.setCdGb("G021");
+		commoncode.setUseYn("Y");
+		mav.addObject("uploadStatList", rendererService.getCommonCodeList(commoncode));
 
 		// 업로드실패사유 콤보박스 목록
-		mav.addObject("uploadFailList", rendererService.getCommonCodeList("G022"));
+		commoncode.setCdGb("G022");
+		mav.addObject("uploadFailList", rendererService.getCommonCodeList(commoncode));
 
 		mav.setViewName("shoplinker/ShoplinkerOrderForm");
 
@@ -335,6 +343,7 @@ public class TsaShoplinkerController extends TsaBaseController {
 				shoplinkerOrder.setProfiles(profiles);
 				shoplinkerOrder.setCustomerId(env.getProperty("shoplinker.customer_id"));
 				shoplinkerOrder.setShoplinkerId(env.getProperty("shoplinker.shoplinker_id"));
+				shoplinkerOrder.setRegNo(TsaSession.getInfo().getUserNo());
 				rtnMap = shoplinkerService.insertShoplinkerOrderStep1(shoplinkerOrder);
 
 				// 3. 제휴몰 주문등록
@@ -345,7 +354,10 @@ public class TsaShoplinkerController extends TsaBaseController {
 				// 4. 스타일24 주문등록 (제휴몰 - 대기상태인 것들)
 				slkSearch.setTxt("=>스타일24");
 				shoplinkerService.updateCallApiRunable(slkSearch);
-				ocmService.createShoplinkerOrder("S");
+				orderOcmService.createShoplinkerOrder("S", TsaSession.getInfo().getUserNo());
+
+				// 5. 제휴몰 대기상태건들 실패로 업데이트(대기상태건들이 없는게 맞지만 오류로인해 성공/실패 처리가 안된건이 있을경우 대비용)
+				shoplinkerService.updateShoplinkerExtmallWaitList();
 
 			}catch (Exception e) {
 
@@ -384,7 +396,7 @@ public class TsaShoplinkerController extends TsaBaseController {
 
 		// 제휴몰
 		Extmall extmall = new Extmall();
-		extmall.setVendorId(TsaConstants.VendorId.SHOPLINKER.value()); // 샵링커
+		extmall.setVendorId(TscConstants.VendorId.SHOPLINKER.value()); // 샵링커
 		mav.addObject("extmallList", ocmService.getExtmallList(extmall));
 
 		mav.setViewName("shoplinker/ShoplinkerInvoiceSendForm");
@@ -650,7 +662,7 @@ public class TsaShoplinkerController extends TsaBaseController {
 	@PostMapping("/check/api_runable")
 	@ResponseBody
 	public ShoplinkerSearch apiRunable(@RequestBody ShoplinkerSearch slkSearch) throws IOException {
-		
+
 		slkSearch.setRegNo(TsaSession.getInfo().getUserNo());
 		ShoplinkerSearch runMap = shoplinkerService.getCallRunableInfo(slkSearch);
 		return runMap;
@@ -667,11 +679,6 @@ public class TsaShoplinkerController extends TsaBaseController {
 	@ResponseBody
 	public GagaResponse apiTest3(@RequestBody ShoplinkerGoods shoplinkerGoods) throws Exception {
 
-		Calendar cal = Calendar.getInstance();
-		SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
-		String datestr = sdf.format(cal.getTime());
-		System.err.println("### 조회시작:: "+datestr);
-
 		int i=0;
 		System.out.println("############### test api ###############");
 		try {
@@ -809,32 +816,47 @@ System.out.println("####### : "+re.getResult());
 			com.gagaframework.shoplinker.domain.orderlist.Header rHeader;
 			com.gagaframework.shoplinker.domain.orderlist.Shoplinker shoplinkerOrdResult;
 
-			testXmlUrl = "http://ts5000.ipdisk.co.kr:8999/shoplinker/order_real.xml";
+			testXmlUrl = "http://ts5000.ipdisk.co.kr:8999/shoplinker/order/order_time.xml";
 			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);
 			rHeader = shoplinkerOrdResult.getHeader();
 			rOrdList = shoplinkerOrdResult.getOrder();
+			if( null == rHeader) {
+				com.gagaframework.shoplinker.domain.goods.result.Shoplinker orderFailResult;
+				com.gagaframework.shoplinker.domain.goods.result.ResultMessage orderFailResultMsg;
+
+				orderFailResult =  (com.gagaframework.shoplinker.domain.goods.result.Shoplinker)shoplinkerUtil.unmarshal(com.gagaframework.shoplinker.domain.goods.result.Shoplinker.class, responseXmlData);
+				orderFailResultMsg = orderFailResult.getResultMessage();
+				System.out.println("\n### 주문실패 stat :: "+orderFailResultMsg.getResult());
+				System.out.println("### 주문실패 msg :: "+orderFailResultMsg.getMessage());
+
+			}else {
+				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.주문 result22 :: "+rHeader.getTotalCount()); // 1233
+				System.out.println("### 7.주문 result23 :: "+rHeader.getTotalPage()); //3
+				System.out.println("### 7.주문 result24 :: "+rHeader.getCurrentlyPage()); //1
+				System.out.println("### 7.주문 result24 :: "+rHeader.getCurrentlyCount()); //500
+
+				//ExtmallOrder extmallOrder = mapper.convertValue(gagaMap, ExtmallOrder.class);
+				ShoplinkerOrder slOrder;
+				for(Order ord : rOrdList) {
+					slOrder = mapper.convertValue(ord, ShoplinkerOrder.class);
+					System.out.println("HMJ :: 00 "+slOrder);
+					System.out.println("HMJ :: 11 "+slOrder.getOrderFlag());
+				}
 
-			System.out.println(" url chk:: "+GagaShoplinkerConstants.API_DOMAIN+"/Order/orderlist.php?iteminfo_url="+ testXmlUrl);
+			}
 
-			//System.out.println("\n\n\n### 7.주문 result1 :: "+responseXmlData);
-			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
-			System.out.println("### 7.주문 result24 :: "+rHeader.getCurrentlyCount()); //500
-			System.out.println("### 7.주문 result order size :: "+rOrdList.size()); //500
 */
-			//99 주문수집 목록확인 끝
 
-			cal = Calendar.getInstance();
-			datestr = sdf.format(cal.getTime());
-			System.err.println(i+"개 ### 조회종료:: "+datestr);
+			//99 주문수집 목록확인 끝
 
 		}catch(Exception e) {
-			cal = Calendar.getInstance();
-			datestr = sdf.format(cal.getTime());
-			System.err.println(i+"개 ### 조회종료:: "+datestr);
 			System.out.println("error :: "+e);
 		}
 		return super.ok("");

+ 10 - 43
src/main/java/com/style24/admin/support/env/TsaConstants.java

@@ -91,53 +91,20 @@ public class TsaConstants {
 			}
 		}
 
-	// 제휴몰벤더ID
-	public enum VendorId {
-		SHOPLINKER("G003_V001");			// 샵링커
 
-		private String value;
-
-		private VendorId(String value) {
-			this.value = value;
-		}
-
-		public String value() {
-			return value;
-		}
-	}
-
-	// 제휴몰 파일업로드 상태유형
-	public enum ExtmallUploadStat {
-		WAIT("G021_00"),				// 대기
-		CHECK("G021_20"),				// 검증
-		SUCC("G021_30"),				// 성공
-		FAIL("G021_40");				// 실패
-
-		private String value;
-
-		private ExtmallUploadStat(String value) {
-			this.value = value;
-		}
-
-		public String value() {
-			return value;
-		}
-	}
-
-	// 제휴몰 파일업로드 실패유형
-	public enum ExtmallUploadFailStat {
-		GOODS("G022_10"),				// 상품코드미매핑
-		SIZE("G022_20"),				// 사이즈미매핑
-		ORD_QTY("G022_30"),				// 주문수량오류
-		PRICE("G022_40"),				// 상품가격이상
-		STORE("G022_50"),				// 판매매장미등록
-		STOCK("G022_60"),				// 가용재고없음
-		ORDER("G022_70"),				// 동일주문수집
-		ETC("G022_90");					// 기타
+	// 정산구분상태
+	public enum OrdDtlItemStat {
+		
+		SALE_PAYMENT_COMPLETE("G720_10"), 			// 판매-결제완료
+		SALE_SHIPPING("G720_20"),					// 판매-배송완료
+		SALE_RETURN_CANCEL("G720_30"), 				// 환입-취소완료
+		SALE_RETURN_SOLDOUT_CANCEL("G720_40"),		// 환입-품절취소
+		SALE_RETURN_RETURN_COMPLETE("G720_50"),		// 환입-반품완료
+		SALE_RETURN_EXCHANGE_COMPLETE("G720_60");	// 환입-교환완료
 
 		private String value;
 
-		private ExtmallUploadFailStat(String value) {
+		private OrdDtlItemStat(String value) {
 			this.value = value;
 		}
 

+ 0 - 823
src/main/java/com/style24/persistence/domain/ExtmallOrder.java

@@ -1,823 +0,0 @@
-package com.style24.persistence.domain;
-
-import java.util.Calendar;
-import java.util.Collection;
-import java.util.List;
-
-import org.apache.commons.lang3.StringUtils;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.style24.core.support.util.CryptoUtils;
-import com.style24.persistence.TscBaseDomain;
-import com.style24.persistence.TscPageRequest;
-
-import lombok.Data;
-
-/**
- * 외부몰 Domain
- *
- * @author gagamel
- * @since 2020. 11. 5
- */
-@SuppressWarnings("serial")
-@Data
-public class ExtmallOrder extends TscBaseDomain {
-
-	// 제휴몰 주문업로드 컬럼
-	private String vendorId; 			// 벤더ID(공통코드G003)
-	private String vendorNm; 			// 벤더명
-	private String extmallId; 			// 제휴몰ID(외부몰). TB_EXMALL.EXTMALL_ID
-	private String extmallNm; 			// 제휴몰명.SHOPLINKER_ORDER.MALL_NAME
-	private String agentOrderId; 		// 에이전트주문번호.SHOPLINKER_ORDER.SHOPLINKER_ORDER_ID
-	private String extmallOrderId; 		// 제휴몰주문번호(쇼핑몰주문번호).SHOPLINKER_ORDER.MALL_ORDER_ID
-	private String extmallProdId; 		// 제휴몰상품ID. SHOPLINKER_ORDER.ORDER_PRODUCT_ID
-	private String extmallProdNm; 		// 제휴몰상품명. SHOPLINKER_ORDER.PRODUCT_NAME
-	private String goodsCd; 			// 상품코드(상품)
-	private String goodsNm;				// 상품명
-	private String goodsStat;			// 상품상태
-	private String sku; 				// 옵션명(필수옵션+추가옵션)
-	private Integer currPrice; 			// 현재판매가. SHOPLINKER_ORDER.SALE_PRICE
-	private Integer ordQty; 			// 주문수량. SHOPLINKER_ORDER.QUANTITY
-	private Integer ordAmt; 			// 주문금액. SHOPLINKER_ORDER.ORDER_PRICE
-	private Integer cpnDcAmt; 			// 쿠폰할인금액(오픈마켓(인터파크,지마켓,옥션,스토어팜,스마트스토어) + 고도몰 적용). SHOPLINKER_ORDER.DIS_PRICE_COUPON
-	private Integer pntDcAmt; 			// 포인트할인금액(오픈마켓(인터파크,지마켓,옥션,스토어팜,스마트스토어) + 고도몰 적용). SHOPLINKER_ORDER.DIS_PRICE_POINT
-	private int delvFee; 				// 배송비.  SHOPLINKER_ORDER.BAESONG_BI
-	private String ordRecvDt; 			// 주문수집일.SHOPLINKER_ORDER.ORDER_REG_DATE
-	private String ordDt; 				// 주문일.SHOPLINKER_ORDER.ORDERDATE
-	private String ordNm; 				// 주문자명.SHOPLINKER_ORDER.ORDER_NAME
-	private String ordPhnno; 			// 주문자휴대전화번호.SHOPLINKER_ORDER.ORDER_CEL
-	private String ordTelno; 			// 주문자전화번호.SHOPLINKER_ORDER.ORDER_TEL
-	private String ordEmail; 			// 주문자이메일.SHOPLINKER_ORDER.ORDER_EMAIL
-	private String recipNm; 			// 수령자명.SHOPLINKER_ORDER.RECEIVE
-	private String recipPhnno; 			// 수령자휴대전화번호.SHOPLINKER_ORDER.RECEIVE_CEL
-	private String recipTelno; 			// 수령자전화번호.SHOPLINKER_ORDER.RECEIVE_TEL
-	private String recipZipcode; 		// 수령자우편번호.SHOPLINKER_ORDER.RECEIVE_ZIPCODE
-	private String recipBaseAddr;		// 수령자기본주소
-	private String recipDtlAddr;		// 수령자상세주소
-	private String delvMemo; 			// 배송메모.SHOPLINKER_ORDER.DELIVERY_MSG
-	private String uploadStat; 			// 업로드상태(공통코드G021)
-	private String uploadStatNm;
-	private String uploadFailCd; 		// 업로드실패코드(공통코드G022)
-	private String uploadFailNm;
-	private String uploadFailReason; 	// 업로드실패사유
-	private Integer ordNo; 				// 주문번호(주문)
-	private Integer delvAddrSq; 		// 배송지일련번호(배송지)
-	private String optCd;				// 옵션코드
-	private String uploadGb;			// 업로드구분(샵링커:S, 엑셀:E)
-	private String excelFileNm;			// 엑셀업로드 파일명
-	private String procJob;
-	private String warningYn;			// 주의여부(엑셀업로드 결과표시관련)
-	private String supplyCompCd;		// 공급업체코드
-	private Integer totalOrdAmt;		// 총 주문금액
-	private Integer stockFailHstCnt;	// 주문업로드시 재고실패이력 cnt
-
-	private String stDate;
-	private String edDate;
-	private String regNm;				// 자사-등록자명
-	private Integer regNo;				// 자사-등록자번호
-	private String regDt;				// 자사-등록일시
-
-	private String succCnt;				// 엑셀업로드 성공수
-	private String failCnt;				// 엑셀업로드 실패수
-
-	Collection<ExtmallOrder> orderDetailList;		// 주문상세목록
-	Collection<ExtmallOrder> delvFeeCdList;		// 배송정보목록
-
-	// 스타일24 ORDER 컬럼
-	// 주문마스터
-	private String mallGb;							// 몰구분
-	private String mallGbNm;						// 몰구분명
-	private String payDt;							// 결제일자
-	private Integer custNo;							// 고객번호
-	private String siteCd;							// 사이트코드
-	private String siteCdNm;						// 사이트코드명
-	private String npayOrdNo;							// 네이버페이주문번호
-	private String npayOrdDtlNo;						// 네이버페이 상품주문번호(주문상세번호)
-	private String frontGb;							// 프론트구분 (P, M, A)
-	private String frontGbNm;						// 프론트구분명 (PC, MOBILE, APP)
-	private String custNm;							// 회원명
-	private String cellPhnno;						// 회원핸드폰
-	private String email;							// 이메일
-	private String delvAddrNm;						// 배송지명
-	private String ci;								// 회원CI값
-
-	// 주문상세
-	private Integer ordDtlNo;						// 주문상세번호
-	private String ordExchGb;						// 결제, 교환 구분 (O, E)
-	private String ordDtlStat;						// 주문상세상태
-	private int orgOrdDtlNo;						// 실제주문상세번호(교환)
-	private String formalGb;						// 정상,이월구분
-	private String formalGbNm;						// 정상,이월구분명
-	private String goodsType;						// 상품타입
-	private String itemAddPrice;					// 구성상품옵션추가금액
-	private int listPrice;							// 정상가
-	private int orgCurrPrice;						// 판매가
-	private double dcRate;							// 할인율
-	private int optAddPrice;						// 옵션추가금액
-	private int cnclRtnQty;							// 취소/반품수량
-	private int cnclRtnAmt;							// 취소/반품금액
-	private int orgCnclRtnAmt;						// 기취소/반품금액
-	private int cpn1CpnSq;							// 즉시할인쿠폰시퀀스
-	private int cpn1DcAmt;							// 즉시할인쿠폰할인금액
-	private int tmtb1Sq;							// 다다익선1시퀀스(수량)
-	private int tmtb1DcAmt;							// 다다익선1할인금액(수량)
-	private int tmtb2Sq;							// 다다익선2시퀀스(금액)
-	private int tmtb2DcAmt;							// 다다익선2할인금액(금액)
-	private int goodsCpnSq;							// 상품쿠폰시퀀스
-	private int goodsCpnDcAmt;						// 상품쿠폰할인금액
-	private int cartCpnSq;							// 장바구니시퀀스
-	private int cartCpnDcAmt;						// 장바구니할인금액
-	private int gfcdUseAmt;							// 상품권사용금액
-
-	private int prePntDcAmt;						// 선포인트사용금액
-	private int savePntAmt;							// 적립포인트
-	private int orgSavePntAmt;
-
-	private int realOrdAmt;							// 실결제금액
-	private String venderId;						// 벤더ID
-	private String changeableYn;					// 교환가능여부
-	private String changeFeeFreeYn;					// 교환배송비무료여부
-	private String returnableYn;					// 반품가능여부
-	private String returnFeeFreeYn;					// 반품배송비무료여부
-
-	private String soldoutYn;						// 품절여부
-	private String soldoutMemo;						// 품절메모
-	private String soldoutRegNo;					// 품절등록자번호
-	private String soldoutRegDt;					// 품절등록일자
-	private String shotDelvYn;						// 총알배송여부
-	private String shotDelvUseYn;					// 총알배송사용여부(장바구니)
-	private String giftPackYn;						// 선물포장여부
-	private int custDelvAddrSq;
-	private String foreignYn;						// 해외구매대행여부
-
-	private String delvLocCd;						// 출고처코드
-	private String delvLocNm;						// 출고처코드명
-	private String delvAssigngDt;					// 출고처지정일자
-	private String delvAddignStat;					// 출고처지정상태
-	private String dstrbtMemo;						// 출고메모
-	private String delvStdt;						// 배송시작일자
-	private String delvEddt;						// 배송종료일자
-
-	private String shipCompCd;						// 배송업체코드
-	private String invoiceNo;						// 송장번호
-	private String invoiceSendYn;					// 배송지시전송여부
-	private String sellStoreCd;						// 판매매장코드
-	private String naverPayShipCompCd;				// 네이버페이 택배사코드
-	private double sellFeeRate;						// 판매매장수수료
-
-	private String afLinkCd;						// AFLINKCD
-	private String ithrCd;							// ITHRCD
-	private String contentsLoc;						// CONTESTSCLOC
-
-	private Integer planDtlsq;						// 기획전시퀀스
-	private Integer socialSq;						// 소셜시퀀스
-
-	private String condition;						//
-	private String[] conditions = null;				//
-
-	private String searchDateGb;					// 검색일자구분
-	private String orderNm;							// 주문자명
-	private String custId;							// 회원ID
-	private String orderPhnno;						// 주문핸드폰번호
-	private String sizeCd;							// 사이즈코드
-	private String payMeans;						// 결제타입
-	private String chgStat;							// 교환상태
-	private String chgGb;							// 변경구분 (취소신청, 반품신청, 교환요청)
-	private String wdInvoiceSendYn;					// 회수지시전송여부
-	private String goodsCnt;						// 상품수
-
-	private int cancelRequestQty;					// 취소요청수량
-	private int exchangeRequestQty;					// 교환요청수량
-	private int returnRequestQty;					// 반품요청수량
-	private int delvFeeSaveGoodsAmt;				// 최수주문수량 - 상품 수량 금액
-
-	// 상품정보
-	private String imgPath1;						// 이미지경로1
-	private String sysImgNm;						// 이미지명
-	private String brandCd;							// 브랜드코드
-	private String opt;								// 옵션
-	private String optCd1;							// 옵션코드1
-	private String optCd2;							// 옵션코드2
-	private String optCd11;							// 교환옵션코드1
-	private String optCd12;							// 교환옵션코드2
-	private String goodsTypeNm;						// 상품타입명
-	private String brandEnm;						// 브랜드명
-	private String itemCd;							// 아이템코드
-	private String goodsNum;						// 품번
-	private String supplyGoodsCd;					// 공급처코드
-	private String optCd2s;							// 옵션코드(문자)
-	private int currStockQty;						// 현재재고
-	private String currStockQtys;					// 현재재고(문자)
-
-	private int totDcAmt;							// 전체할인금액
-	private String dateGbn;							// 일자구분
-	private String mallCd;							// MALLCD
-	private String search;							// 검색어
-	private int productNo;							// 상품번호
-	private String skuModelNo;						// skuModelNo
-	private String productCode;						// productCode
-
-	private String foreignBuyYn;					// 해외구매대행가능여부
-	private String orderMadeYn;						// 주문제작상품여부
-	private String entryNo;							// 통관번호
-	private int dispOrd;							// 노출순서
-
-	/* Multi CheckBox 항목 */
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] multiBrand;					// 브랜드코드배열
-
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] multiOrdStat;					// 주문상태배열
-
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] multiOrdDtlStat;				// 주문상세상태배열
-
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] multiChgStat;					// 주문상태배열
-
-	private int sumListPrice;						// 공급가액 합계
-	private int sumOrdAmt;							// 주문금액합계
-	private int sumOrdCnclAmt;						// 주문취소금액합계
-	private int sumRealPayAmt;						// 주문실결제금액합계
-	private int ordNoCnt;							// 주문번호건수
-	private int sumOrdQty;							// 주문건수합계
-	private int sumOrdCnclQty;						// 주문취소건수합계
-
-
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private int[] ordNoList;						// 주문번호배열
-
-	private String delYn;							// 삭제여부
-	private String recipAddr;						// 배송지주소
-	private String delvAddrEditYn;					// 출고메모수정여부
-	private String exchGbNm;						// 교환구분명
-
-	private String escrowYn;						// 에스크로결제여부
-	private String payMeansNm;						// 결제타입명
-	private String cardNm;							// 카드명
-	private String vaBank;							// 가상계좌
-	private String pgTradeNo;						// PG거래번호
-	private String payStat;							// 결제상태
-	private String payStatNm;						// 결제상태명
-	private int payAmt;								// 결제금액
-	private String vaDeadline;						// 가상계좌입금마감일
-
-	private String delvFeeGb;						// 배송비구분 (원주문배송비, 재결제배송비, 반품배송비, 교환배송비)
-	private String delvFeeGbNm;						// 배송비구분명
-	private int wmsDelvFee;							// 자사 배송비
-	private String delvUsacYn;						// 배송비정산여부
-	private String delvUsacDt;						// 배송비정산일자
-	private Integer delvFeeSq;						// 배송비시퀀스
-
-	private String coundelClsf;
-	private String relGoodsCd;						// 1:1문의상품코드
-	private String questTitle;						// 1:1문의제목
-	private String questDt;							// 1:1문의일자
-	private String ansDt;							// 1:1답변일자
-	private int andNo;								// 1:1답변자
-
-	private Integer ordChgSq;						// 변경시퀀스
-	private String chgGbNm;							// 변경구분명
-	private String chgStatNm;						// 변경상태명
-	private String chgReason;						// 변경사유
-	private String chgReasonNm;						// 변경사유명
-	private String chgMemo;							// 변경메모
-	private String chgerNm;							// 변경자
-	private String chgerPhnno;						// 변경자핸드폰번호
-	private String chgerTelno;						// 변경자전화번호
-	private String chgerZipcode;					// 변경자우편번호
-	private String chgerBaseAddr;					// 변경자기본주소
-	private String chgerDtlAddr;					// 변경자상세주소
-	private String chgerRtnMemo;					// 변경자반품메모
-	private String wdInvoiceNo;						// 회수송장번호
-
-	private String supplyCompNm;					// 공급업체명
-	private String brandKnm;						// 브랜드명(한글)
-	private String ordDtlStatNm;					// 주문상세상태명
-
-	private String custGrade;						// 고객등급
-	private String custGradeNm;						// 고객등급명
-	private String custGb;							// 고객구분(일반, 임직원)
-	private String custGbNm;						// 고객구분명
-	private String managedRsn;
-	private String managedRsnNm;
-
-	private int itemQty;							// 아이템수량
-	private int itemPrice;							// 아이템단가
-	private String itemNm;							// 아이템명
-
-	// Pagination
-	private TscPageRequest pageable;				// 페이징
-	private int pageNo = 1;							// 페이지번호
-	private int pageSize = 50;						// 페이지목록수
-	private int pageUnit = 10;						// 페이지번호수
-
-	// 주문문의 1:1 응답 칼럼
-	private String counselClsfNm;
-	private String ansNo;
-	private String ansNm;
-	private String updNm;
-
-	// 주문메모칼럼
-	private Integer orderMemoSq;
-	private Integer ordMemoSq;
-	private String memo;
-	private String orgFileNm;
-	private String sysFileNm;
-
-	// 사은품칼럼
-	private Integer ordFreegiftSq;
-	private Integer freegiftSq;
-	private String freegiftNm;
-	private Integer freegiftValSq;
-	private int usePoint;
-	private int seq;
-	private String userNm;
-	private String allYn;
-
-	// 환불계좌칼럼
-	private String raBank;
-	private String raBankNm;
-	private String raNo;
-	private String encodedRaNo;
-	private String raNm;
-	private String defaultYn;
-
-	// 주문상세변경내역칼럼
-	private String userId;
-	private String updId;
-	private String shipCompNm;
-	private String shipCompId;
-
-	// 주문쿠폰
-	private int cpnSq;
-	private Integer cpnId;
-	private String cpnType;
-	private String targetCd1;
-	private String targetCd2;
-	private String cpnNm;
-	private String dcWay;
-	private int dcPval;
-	private int dcMval;
-	private int dcAval;
-	private String applyScope;
-	private Integer custCpnSq;
-
-	// 주문포인트
-	private Integer pntHstSq;
-	private int pntRate;
-	private int pntPrate;
-	private int pntMrate;
-	private int pntAmt;
-	private String occurGb;
-	private String occurGbNm;
-	private String occurDtlDesc;
-	private String pntUploadStat;
-
-	// 주문상품권
-	private Integer gfcdHstSq;
-	private Integer custGfcdSq;
-	private String gfcdNm;
-	private String gfcdNo;
-	private int gfcdAmt;
-	private int chgGfcdAmt;
-	private int usGfcdAmt;
-	private int rmGfcdAmt;
-	private int rmPntAmt;
-
-	// 다다익선
-	private Integer tmtbSq;
-	private String tmtbNm;
-	private int tmtbDcAmt;
-
-	// 상태변경
-	private String g20;
-	private String g30;
-	private String g40;
-	private String g50;
-	private String g55;
-	private String g60;
-
-	// 취소요청
-	private String cncWait;
-	private int ordReqChgQty;
-	private int itemReqChgQty;
-	private int itemOrdPrice;
-	private int minOrdAmt;
-	private int orgDelvFee;
-	private String delvFeeCd;
-	private String resDelvFeeCd;
-	private int ordCanChgQty;
-	private String allCanYn;
-	private String lastCanYn;
-
-	private String addDelvFeeYn;
-	private int addDelvFee;
-	private Integer ordDtlItemSq;
-
-	private Integer paySq;
-	private String pgOrdNo;
-	private int refundAmt;
-	private int rfCpn1Amt;
-	private int rfTmtb1Amt;
-	private int rfTmtb2Amt;
-	private int rfGoodsCpnAmt;
-	private int rfCartCpnAmt;
-	private int rfDelvCpnAmt;
-	private int rfPntAmt;
-	private int rfPrePntAmt;
-	private int rfGfcdUseAmt;
-	private int rfDeliveryFee;
-	private int rfCnclAmt;
-	private int rfRealCnclAmt;
-
-	private int pgCpnAmt;
-	private int npayPntAmt;
-	private String payGb;
-	private String pgGb;
-	private String pgTid;
-	private String cardType;
-	private String cardKind;
-	private String cardBank;
-	private String cardMips;
-	private String cardPcableYn;
-	private String vaNo;
-	private String vaNm;
-	private String telecom;
-	private String cashAuthNo;
-	private String cashTradeNo;
-
-	private String accountNo;
-	private String encodedAccountNo;	// 계좌번호 암호화
-	private String accountNm;
-	private String bankCd;
-	private String bankNm;
-
-	public String getAccountNo() {
-		this.accountNo = CryptoUtils.decryptAES(this.accountNo);
-		return this.accountNo;
-	}
-
-	public void encryptData () {
-		this.encodedAccountNo = CryptoUtils.encryptAES(this.accountNo);
-	}
-
-	private int realDelvAmt;
-	private int delvCpnSq;
-	private int delvCpnDcAmt;
-
-	private int chgQty;
-	private int rtnDelvFee;
-	private int excDelvFee;
-
-	private String[] ordDtlStatArr;
-
-	private int[] ordDtlNoArr;
-	private int[] cnclRtnReqQtyArr;
-
-	// 교환요청
-	private String ordChgOpt;
-	private String rtnLocZipcode;
-	private String rtnLocBaseAddr;
-	private String rtnLocDtlAddr;
-	private String rtnLocTelno;
-	private String rtnLocNm;
-	private int exchangeOrdDtlNo;
-	private int exchangeOrdDtlItemSq;
-	private String wdGb;
-	private int addPayCost;
-
-	// 주문서
-	private int wmsCnt;
-	private int resCnt;
-	private int delvCnt;
-	private int delvTotCnt;
-	private int delvFeeTotCnt;
-
-	Collection<Order> shotCartList;					// 자사총알배송목록
-	Collection<Order> wmsCartList;					// 자사일반배송목록
-	Collection<Order> resCartList;					// 자사예약배송목록
-	Collection<Order> delvCartList;					// 입점업체배송목록
-	Collection<Order> delvAllCartList;				// 배송전체목록 sort
-	Collection<Order> cartGoodsList;				// 다다익선적용장바구니목록
-	List<Order> goodsCpnList;
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private int[] cartCpnCartSqArr;
-
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private int[] freegiftSqArr;
-
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private int[] freegiftSectionSqArr;
-	int freegiftAmt;
-	Integer freegiftSectionSq;
-
-	// 장바구니
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private int[] cartSqArr;		// 장바구니 일련번호 배열 (일시품절제외 조회)
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] itemNmArr;		// 옵션코드
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] goodsPriceArr;		// 옵션코드
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] optCdArr;		// 옵션코드
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] colorNmArr;	// 컬러명
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] optCd1Arr;		// 옵션코드
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] optCd2Arr;		// 옵션코드
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] itemQtyArr;	// 구성상품번호
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] itemCdArr;		// 옵션코드
-	private String jsessionId;		// SessionId
-	private String colorNm;			// 컬러명
-	private String itemQtyr;		// itemQty GROUP_CONCAT
-	private String delvResDt;		// 예약배송일자
-	private String shotDelvDt;		// 총알 도착 예상 일자
-	private String firstCompYn;		// 업체 중 첫번째 상품 여부
-	private String delvFeeCrite;	// 배송비구분 (G078_10 : 조건부 무료, G078_20 : 무료, G078_30 : 유료)
-	private String shotCanYn;		// 총알배송 가능 여부
-	private String serialCpnNm;		// 시리얼쿠폰명
-	private String cartDelvFeeCd;	// 장바구니 delvFeeCd 구분 (총알, 일반, 업체구분)
-	private String ordCanYn;		// 주문 가능 여부
-	private String quickYn;			// 퀵메뉴 여부
-	private String cartYn;			// 장바구니 여부
-	private Integer cartSq;			// 장바구니 일련번호
-	private int goodsQty;			// 장바구니 등록 수량
-	private int compCnt;			// 장바구니 업체 수
-	private int compSumPrice;		// 업체별 금액 합계
-	private int qtySumCurrPrice;	//
-	private int totDelvFee;			// 배송비 총합
-	private int totCartCnt;			// 장바구니 상품 수량
-	private int maxDcAmt;			// 쿠폰 최대 할인 금액
-	private int buyLimitAmt;		// 쿠폰 적용 최소 구매 금액
-	private int wishCnt;			// 위시리스트 수량
-	private int minOrdQty;			// 최소 주문 수량
-	private int maxOrdQty;			// 최대 주문 수량
-	private int ordCanQty;			// 주문 가능 수량
-	private int saveLimitDay;		// 장바구니 보관기한
-	private int allCartCnt;			// 장바구니 전체 수량(구매불가 포함)
-
-	// 다다익선
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private int[] tmtbSqs;							// 다다익선 일련번호
-	private int qtyTmtbSq;							// 수량 다다익선 적용 일련번호
-	private int amtTmtbSq;							// 금액 다다익선 적용 일련번호
-	private int applyAmtSectionVal;					// 적용 조건
-	private int applyQtySectionVal;					// 적용 조건
-	private int dcVal;								// 할인값
-	private int qtyDcVal;							// 수량 다다익선 할인값
-	private int amtDcVal;							// 금액 다다익선 할인값
-	private int qtyTmtbCnt;							// 수량 다다익선 상품 수
-	private int amtTmtbCnt;							// 금액 다다익선 상품 수
-	private int sectionVal;							// 다다익선 조건
-	private int qtySectionVal;						// 수량 다다익선 조건
-	private int amtSectionVal;						// 금액 다다익선 조건
-	private int tmtbSumQty;							// 장바구니 수량 다다익선 총계
-	private int tmtbSumAmt;							// 장바구니 금액 다다익선 총계
-	private int qtyTmtbSumQty;						// 수량 다다익선 합계 수량
-	private int qtyTmtbSumAmt;						// 수량 다다익선 합계 금액
-	private int amtTmtbSumQty;						// 금액 다다익선 합계 수량
-	private int amtTmtbSumAmt;						// 금액 다다익선 합계 금액
-	private int qtyTmtbMinSectionVal;				// 수량 다다익선 최소 조건
-	private int qtyTmtbMinDcVal;					// 수량 다다익선 최소조건에 대한 할인값
-	private int amtTmtbMinSectionVal;				// 금액 다다익선 최소조건
-	private int amtTmtbMinDcVal;					// 금액 다다익선 최소조건에 대한 할인값
-	private String sectionGb;						// 할인구분
-	private String qtyTmtbNm;						// 수량 적용 다다익선명
-	private String amtTmtbNm;						// 금액 적용 다다익선명
-	private String qtyDcWay;						// 수량 다다익선 할인구분
-	private String amtDcWay;						// 금액 다다익선 할인구분
-	private String qtyGoodsGb;						// 상품 구분 (G800_10(기본), G800_20(적용), G800_30(제외), G800_40(ALL))
-	private String amtGoodsGb;						// 상품 구분 (G800_10(기본), G800_20(적용), G800_30(제외), G800_40(ALL))
-	private String goodsGb;							// 상품 구분 (G800_10(기본), G800_20(적용), G800_30(제외), G800_40(ALL))
-	private String applyGb;							// 다다익선 할인 기준
-	private String applyQtySectionYn;				// 다다익선 적용 여부
-	private String applyAmtSectionYn;				// 다다익선 적용 여부
-
-	// 마이페이지
-	private int itemCnt;
-	private int ordDtlStatCnt;
-	private String delvDesc;
-	private Integer reviewSq;
-	private String selfGoodsYn;
-	private String brandNm;
-	private String brandGroupNm;
-	private String expiredSoon;
-	private int purchaseConfirmDay;
-	private String giftLimitDt;
-	private int giftLimitDay;
-	private String giftCompleteDt;
-	private String vaDeadlineYmd;
-	private String vaDeadlineHms;
-	private int totalDcAmt;
-	private Integer custPntSq;
-	private int orderReceiptCount;
-	private int depositWaitingCount;
-	private int waitingAddPaymentCount;
-	private int paymentCompleteCount;
-	private int goodsPrepareCount;
-	private int shipPrepareCount;
-	private int shippingCount;
-	private int shipCompleteCount;
-	private int cancelCount;
-	private int exchangeCount;
-	private int returnCount;
-	private int confirmCount;
-	private String reviewableYn;
-
-	// 카카오페이 & 네이버페이
-	private int ordGoodsQty;
-
-	// 암호화 대상 복호화 처리
-	public String getCustNm() {
-		this.custNm = CryptoUtils.decryptAES(this.custNm);
-		return this.custNm;
-	}
-
-	public String getEmail() {
-		this.email = CryptoUtils.decryptAES(this.email);
-		return this.email;
-	}
-
-	public String getCellPhnno() {
-		this.cellPhnno = CryptoUtils.decryptAES(this.cellPhnno);
-		return this.cellPhnno;
-	}
-
-	public String getRecipBaseAddr() {
-		this.recipBaseAddr = CryptoUtils.decryptAES(this.recipBaseAddr);
-		return this.recipBaseAddr;
-	}
-
-	public String getRecipDtlAddr() {
-		this.recipDtlAddr = CryptoUtils.decryptAES(this.recipDtlAddr);
-		return this.recipDtlAddr;
-	}
-
-	private String dispYn;
-
-	// 주묹정보등록
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private int[] freegiftValArr;			// 사은품상품 일련번호 배열
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] freegiftGoodsArr;		// 사은품장바구니 일련번호 배열
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] freegiftUsePointArr;	// 사은품사용포인트 배열
-
-	private String prePntDcAmtYn; 			// 선포인트사용여부
-	private String sellGb;					// 판매구분
-	private int usPntAmt;					// 포인트사용금액
-
-	private String payType;					// 결제타입
-	private String delvYn;					// 출고여부
-
-	/* Multi CheckBox 항목 */
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] payTypeArr;
-
-	// 휴대폰 번호 대쉬 붙이기
-	public void setHypenCellPhone() {
-		if (StringUtils.isNotBlank(this.cellPhnno)) {
-			if (this.cellPhnno.length() > 10) {
-				this.cellPhnno = this.cellPhnno.substring(0, 3) + "-" + this.cellPhnno.substring(3, 7) + "-" + this.cellPhnno.substring(7, 11);
-			} else {
-				this.cellPhnno = this.cellPhnno.substring(0, 3) + "-" + this.cellPhnno.substring(3, 6) + "-" + this.cellPhnno.substring(6, 10);
-			}
-		}
-	}
-
-	// 휴대폰 번호 대쉬 붙이기
-	public void setHypenRecipPhone() {
-		if (StringUtils.isNotBlank(this.cellPhnno)) {
-			if (this.recipPhnno.length() > 10) {
-				this.recipPhnno = this.recipPhnno.substring(0, 3) + "-" + this.recipPhnno.substring(3, 7) + "-" + this.recipPhnno.substring(7, 11);
-			} else {
-				this.recipPhnno = this.recipPhnno.substring(0, 3) + "-" + this.recipPhnno.substring(3, 6) + "-" + this.recipPhnno.substring(6, 10);
-			}
-		}
-	}
-
-	private String ifYn;				// 증권 인터페이스 여부 (입금 확인 여부)
-	private String insNo;				// USAFE 보증보험 증권번호
-	private String resultCd;			// 결과코드
-	private String resultMsg;			// 결과메세지
-	private String insuranceYn;			// 보증보험신청여부
-	private String birthYmd;			// 생년월일(탈퇴 시 NULL로 처리)
-	private String sexGb;				// 성별구분(공통코드G007). 탈퇴 시 NULL로 처리
-	private String birthGen;			// 보증보험(생년월일 + 성별)
-
-	public String getBirthYmd() {
-		this.birthYmd = CryptoUtils.decryptAES(this.birthYmd);
-		return this.birthYmd;
-	}
-
-	public String getSexGb() {
-		this.sexGb = CryptoUtils.decryptAES(this.sexGb);
-		return this.sexGb;
-	}
-
-	private String orderGiftYn;			// 선물여부
-	private String giftMsg;				// 선물메세지
-	private String giftAddrInpYn;		// 선물배송지등록여부
-	private String giftPackCloseYn;		// 선물받기 배송기한 지남
-	private String giftPackCloseDt;		// 선물받기 배송기한 날짜
-
-	private int pointUseOrdMinAmt;		// 포인트사용기준
-	private int pointUseMaxLimit;		// 최대사용가능포인트율
-	private String custPayMeans;		// 결제타입설정
-
-	private String backUrl;
-	private String goodsUrl;
-
-	// 2021.05.11 금액정보 체크
-	private int orgGoodsSumAmt;
-	private int cpn1DcSumAmt;
-	private int tmtb1DcSumAmt;
-	private int tmtb2DcSumAmt;
-	private int goodsCpnDcSumAmt;
-	private int cartCpnDcSumAmt;
-	private int prePntDcSumAmt;
-	private int pntDcSumAmt;
-	private int gfcdUseSumAmt;
-	private int realOrdSumAmt;
-	private int delvSumAmt;
-
-	private String delvFeeCdGrp;			// 자사,입점구분을 위해서 생성
-	private Boolean isCustomer;				// 고객사유여부
-	Collection<Order> withdrawConfirmList;	// 입점업체회수컨펌대상목록
-	private String whMemo;					// 회수메모
-	private int cancelQty;
-	private int delvQty;
-
-	private int dtlOrdAmt;
-	private int dtlItemOrdAmt;
-
-	// 네이버페이 주문형
-	private String stdt;
-	private String eddt;
-	private Calendar from;
-	private Calendar to;
-	private String errorReason;
-	private String accessLicense;
-	private String secretKey;
-
-	private String delvExpnYn;
-	private String addDeliveryFeeYn;
-	private int addDeliveryFee;
-	private String wdBfSendYn;
-
-	// 2021.06.17 스윗트래커 정보 조회
-	private String timeTrans;
-	private String delvWhere;
-	private String details;
-	private String telno;
-
-	// 기본항목세팅(오류가 안나는 값들)
-	public void setBasicParams(ShoplinkerOrder ord) {
-		this.extmallId = ord.getMallId();
-		this.extmallNm = ord.getMallName();
-		this.agentOrderId = ord.getShoplinkerOrderId();
-		this.extmallOrderId = ord.getMallOrderId();
-		this.extmallProdId = ord.getOrderProductId();
-		this.extmallProdNm = ord.getProductName();
-		this.ordRecvDt = ord.getOrderRegDate();
-		this.ordDt = ord.getOrderdate();
-	}
-
-	// 기본항목 외 세팅
-	public void setDetailParams(ShoplinkerOrder ord) {
-		this.goodsCd = ord.getPartnerProductId();
-		this.sku = ord.getSku();
-		this.currPrice = Integer.parseInt(ord.getSalePrice());
-		this.ordQty = Integer.parseInt(ord.getQuantity());
-		this.ordAmt = Integer.parseInt(ord.getOrderPrice());
-		this.optCd = ord.getSkuMatchCode();
-		this.delvFee = Integer.parseInt(ord.getBaesongBi());
-		this.ordNm = ord.getOrderName();
-		this.ordPhnno = ord.getOrderCel();
-		this.ordTelno = ord.getOrderTel();
-		this.ordEmail = ord.getOrderEmail();
-		this.recipNm = ord.getReceive();
-		this.recipPhnno = ord.getReceiveCel();
-		this.recipTelno = ord.getReceiveTel();
-		this.recipZipcode = ord.getReceiveZipcode();
-		this.delvMemo = ord.getDeliveryMsg();
-	}
-
-	public String[] getParams() {
-		String[] params = {this.ordDt, this.extmallId, this.extmallOrderId, this.agentOrderId, this.extmallProdId, this.goodsCd, this.sku, this.optCd, this.currPrice+"", this.cpnDcAmt+"", this.ordQty+"", this.delvFee+"", this.ordNm, this.ordTelno, this.ordPhnno, this.ordEmail, this.recipNm, this.recipTelno, this.recipPhnno, this.recipZipcode, this.recipBaseAddr, this.recipDtlAddr, this.delvMemo};
-		return params;
-	}
-
-	public String[] getColumns() {
-		String[] columns = {"주문일", "제휴몰ID", "제휴주문번호", "샵링커주문번호",  "제휴상품코드", "자사상품코드", "상품명", "옵션코드", "판매가", "할인금액", "주문수량", "배송비", "주문자", "주문자전화번호", "주문자휴대폰번호", "주문자이메일", "수령자명", "수령자전화번호", "수령자휴대폰번호", "수령자우편번호", "수령자기본주소", "수령자상세주소", "배송메시지"};
-		return columns;
-	}
-}
-
-
-
-
-

+ 1 - 0
src/main/java/com/style24/persistence/domain/Plan.java

@@ -80,6 +80,7 @@ public class Plan extends TscBaseDomain{
 		private String custJoinStdt;		//회원가입시작일시
 		private String custJoinEddt;		//회원가입종료일시
 		private String sysImgNm;			//이미지
+		private String brandNm;				//브랜드이름
 
 		// 기획전 소스
 		private Integer seq;					//일련번호

+ 0 - 137
src/main/java/com/style24/persistence/domain/ShoplinkerGoods.java

@@ -1,137 +0,0 @@
-package com.style24.persistence.domain;
-
-import com.style24.persistence.TscBaseDomain;
-
-import lombok.Data;
-
-/**
- * 샵링커 상품정보 Domain
- *
- * @author jmh
- * @since 2021. 05. 11
- */
-@SuppressWarnings("serial")
-@Data
-public class ShoplinkerGoods extends TscBaseDomain {
-
-	// 공통
-	private String customerId; 					// 고객사 코드(샵링커 가입코드)
-	private String partnerProductId;			// 자사 상품코드 (상품관리코드)
-	private String attributeTitleCode;			// 그룹 속성 코드
-	private String attributePartnerProductId;	// 자사 단품코드 (복수시 콤마로 구분)
-	private String productName;					// 상품명  (단품인경우 "옵션1_옵션2" 값임)
-
-	private String domainUrl;					// 이미지 domain url
-	private String excelFileNm;					//엑셀업로드 파일명
-	private String profiles;
-
-	private String xmlPath;
-	private String apiType;						// API구분(10:상품등록API, 11:상품수정API, 12:옵션재고수정API)
-	//private String vendorId;					// 벤더ID
-	private int idx;
-	private String xmlTxt;						// xml내용
-	private String apiSubUrl;					// api url 하위 경로
-
-
-	// 1. 단품(옵션)
-	private String attributeCode;				// (안씀) 단품 속성 코드
-	private int quantity;						// 공급가능수량
-	private String optCd; 						// 옵션1
-	private String optCd1; 						// 옵션1
-	private String optCd2;						// 옵션2
-
-	// 2. 상품
-	private String detailDesc;					// 상세설명
-	private String detailDescNew10;				// 신규상세설명
-	private String detailDescNew20;				// 신규상세설명
-	private String detailDescNew30;				// 신규상세설명
-	private String modelInfo;					// 모델정보
-
-	private String marketPrice;					// (안씀) 쇼핑몰시중가(도서정가)
-	private String salePrice;					// 쇼핑몰판매가
-	private String supplyPrice;					// 쇼핑몰공급가
-	private String marketPriceP;				// (안씀) 매입처 시중가(도서정가)
-	private String salePriceP;					// (안씀) 매입처 판매가
-	private String supplyPriceP;				// (안씀) 매입처 공급가
-	private String saleStatus;					// 상품판매상태
-	private String makerDt;						// 발행일(제조일)
-	private String taxYn;						// 과세
-	private String newDescTop;					// (안씀) 신상세설명
-	private String salearea;					// 판매지역
-	private String sex;							// 남여상품
-	private String model;						// 모델명
-	private String modelNo;						// 모델 NO
-	private String brand;						// 브랜드명
-	private String authNo;						// 인증번호
-	private String expirydate;					// 유효일
-	private String maker;						// 제조업체
-	private String origin;						// 원산지명/코드
-	private String adultInfo;					// 성인상품
-	private String ccategoryL;					// 고객사 카테고리 대분류코드
-	private String ccategoryM;					// 고객사 카테고리 중분류코드
-	private String ccategoryS;					// 고객사 카테고리 소분류코드
-	private String ccategoryD;					// 고객사 카테고리 세분류코드
-	private String selfGoodsYn;					// 자사-자사상품여부
-	private String tobeFormYn;					// 자사-상세폼신규사용여부
-	private String regNm;						// 자사-등록자명
-	private Integer regNo;						// 자사-등록자번호
-	private String regDt;						// 자사-등록일시
-	private String goodsCd;						// 자사-상품코드
-	private String goodsNm;						// 자사-상품명
-	private String brandCd;						// 자사-브랜드코드
-	private String itemkindCd;					// 자사-품목코드
-	private String mainColorCd;					// 자사-대표색상코드
-	private String mainColorEnm;				// 자사-대표색상코드 영문명
-	private String colorKnm;					// 자사-컬러 한글명
-	private String goodsStat;					// 자사-상품상태(공통코드G008)
-	private String allOptCd1;					// 자사-옵션1정보 여러개
-	private String shoplinkerItemkindNm;		// 샵링커 품목매핑명
-	private String syncYn;						// 가격연계여부
-	private String colorListYn;
-	private String kidsYn;						// 아동유무
-	private String brandEnm; 					// 브랜드 영문명
-	private String sizeTypecd;					// 사이즈타입
-	private String sizeValue1;					// 사이즈 값1
-	private String sizeValue2;					// 사이즈 값2
-	private String sizeValue3;					// 사이즈 값3
-	private String sizeValue4;					// 사이즈 값4
-	private String sizeValue5;					// 사이즈 값5
-
-
-
-	// 3. 자사몰 - 품목정보
-	private String lclassId;					// 샵링커 품목 대분류 코드
-	private String itemSeq;						// 항목 상세코드
-	private String itemInfo;					// 항목 상세설명
-
-	// 4. 자사몰 - 인증정보
-	private String certItem;					// 인증 코드
-	private String certOrgan;					// 인증기관명
-	private String certNo;						// 인증 번호
-	private String certTargetGb;				// 인증대상구분
-	private String CertTargetNm;				// 인증대상구분명
-	private String CertFormGb;					// 인증형태구분
-	private String CertFormNm;					// 인증형태구분명
-	private String CertType;					// 인증타입
-	private String CertTypeNm;					// 인증타입명
-	private String CertNum;						// 안전인증번호
-	private String CertState;					// 인증상태(적합,반납,청문실시,기간만료,안저인증취소 등)
-	private String CertDiv;						// 인증구분
-	private String CertOrganName;				// 인증기관
-	private String CertDt;						// 안전인증일
-
-	// 5. 자사몰 - 이미지
-	private String sysImgNm;
-	private String colorCd;
-	private String defaultImgYn;
-	private String extmallImgYn;				// 외부몰이미지 여부
-
-	// 결과
-	private String apiProductId;				// 샵링커 상품코드
-	private String apiResult;					// 결과플래그 (true or false)
-	private String apiMessage;					// 결과
-
-	private Integer ordDtlNo;					// 주문상세번호
-
-}
-

+ 0 - 67
src/main/java/com/style24/persistence/domain/ShoplinkerInvoice.java

@@ -1,67 +0,0 @@
-package com.style24.persistence.domain;
-
-import com.style24.persistence.TscBaseDomain;
-import com.style24.persistence.TscPageRequest;
-
-import lombok.Data;
-
-/**
- * 샵링커 상품정보 Domain
- *
- * @author jmh
- * @since 2021. 05. 11
- */
-@SuppressWarnings("serial")
-@Data
-public class ShoplinkerInvoice extends TscBaseDomain {
-
-	// 공통
-	private String customerId; 					// 고객사 코드(샵링커 가입코드)
-	private String productName;					// 상품명  (단품인경우 "옵션1_옵션2" 값임)
-
-	private String domainUrl;					// 이미지 domain url
-	private String excelFileNm;					//엑셀업로드 파일명
-	private String profiles;
-
-	private String xmlPath;
-	private String apiType;						// API구분(10:상품등록API, 11:상품수정API, 12:옵션재고수정API)
-	//private String vendorId;					// 벤더ID
-	private int idx;
-	private String xmlTxt;						// xml내용
-	private String apiSubUrl;					// api url 하위 경로
-
-	private Integer ordNo;						// 주문번호(주문)
-	private Integer ordDtlNo;					// 주문번호(주문)
-	private String deliveryName;				// 택배사명
-	private String deliveryCode;				// 배송업체(택배사코드)
-	private String deliveryInvoice;				// 송장번호
-	private String vendorId;					// 외부몰벤더ID
-	private String extmallId;					// 외부몰ID(외부몰)
-	private String extmallNm;					// 외부몰 명
-	private String agentOrderId;				// 에이전트주문번호
-	private String extmallOrderId;				// 외부몰주문번호
-	private String delvAssignStat;				// 출고지정상태(P:대기,Y:수락,N:거부)
-	private String ordExchGb;					// 주문교환구분
-	private String ordDtlStat;					// 주문상세상태
-	private String ordDtlStatNm;				// 주문상세상태명
-
-	private String stDate;
-	private String edDate;
-	private String uploadFailCd;
-	private String regNm;
-	private String shipCompNm;	// 배송업체
-
-	// Pagination
-	private TscPageRequest pageable;
-	private int pageNo = 1;
-	private int pageSize = 50;
-	private int pageUnit = 10;
-
-	// 결과
-	private String apiProductId;				// 주문상세번호
-	private String apiResult;					// 결과플래그 (true or false)
-	private String apiMessage;					// 결과
-
-
-}
-

+ 0 - 192
src/main/java/com/style24/persistence/domain/ShoplinkerOrder.java

@@ -1,192 +0,0 @@
-package com.style24.persistence.domain;
-
-import com.gagaframework.shoplinker.domain.orderlist.Order;
-import com.style24.persistence.TscBaseDomain;
-import com.style24.persistence.TscPageRequest;
-
-import lombok.Data;
-
-/**
- * 샵링커 상품정보 Domain
- *
- * @author jmh
- * @since 2021. 05. 11
- */
-@SuppressWarnings("serial")
-@Data
-public class ShoplinkerOrder extends TscBaseDomain {
-
-	// Request
-	private String customerId; 					// 고객사 코드(샵링커 가입코드)
-	private String shoplinkerId;
-	private String orderFlag;  //※ 테스트시에는 발주확인주문(007로 하고, 실제 적용시에는 000으로 교체)
-	private String stDate;
-	private String edDate;
-	private Integer orderPageNo;
-	private String apiStDate;
-
-	// Response
-	private Integer orderIfIdx; 				// 주문수집차수
-	private String shoplinkerOrderId; 			// 샵링커 주문번호
-	private String mallOrderId; 				// 쇼핑몰 주문번호
-	private String mallName; 					// 쇼핑몰 명
-	private String baesongStatus; 				// 배송상태[발주확인]
-	private String orderName; 					// 주문자명
-	private String orderTel; 					// 주문자 전화번호
-	private String orderCel; 					// 주문자 핸드폰번호
-	private String orderEmail; 					// 주문자 이메일주소
-	private String receive; 					// 수취인명
-	private String receiveTel; 					// 수취인 전화번호
-	private String receiveCel; 					// 수취인 핸드폰번호
-	private String receiveZipcode; 				// 수취인 우편번호
-	private String receiveAddr; 				// 수취인 주소
-	private String baesongType; 				// 배송비결제방식[무료,착불,착불 선결제]
-	private String baesongBi; 					// 배송비
-	private String deliveryMsg; 				// 배송메세지
-	private String orderProductId; 				// 주문 상품번호
-	private String shoplinkerProductId; 		// 샵링커 상품번호
-	private String partnerProductId; 			// 자사 상품코드
-	private String productName; 				// 상품명
-	private String quantity; 					// 주문수량
-	private String orderPrice; 					// 주문금액
-	private String salePrice; 					// 판매단가
-	private String supplyPrice; 				// 공급가
-	private String sku; 						// 옵션명
-	private String orderdate; 					// 주문일자
-	private String orderRegDate; 				// 주문수집일자
-	private String deliveryInvoice; 			// 송장번호
-	private String orderSeq; 					// 묶음주문번호
-	private String totalCount; 					// 총 주문건수
-	private String totalPage; 					// 총 페이지수
-	private String totalStandardCount; 			// 페이지당 노출할 총 갯수
-	private String currentlyPage; 				// 현재 호출된 페이지번호
-	private String currentlyCount; 				// 현재 호출된 주문건수
-	private String sellerId; 					// 쇼핑몰 계정
-	private String onlySku; 					// 필수옵션
-	private String addSku; 						// 추가옵션
-	private String mallId; 						// 샵링커 쇼핑몰 코드
-	private String disPriceMall; 				// 쇼핑몰부담할인액
-	private String disPriceSeller; 				// 판매자부담할인액
-	private String disPriceCoupon; 				// 쿠폰할인액
-	private String disPricePoint; 				// 포인트할인액
-	private String distributionDelivery; 		// 물류배송여부
-	private String skuMatchCode; 				// 옵션매칭코드
-	private String skuBarcode; 					// 옵션바코드
-	private String orderCustomsNumber; 			// 개인고유통관번호
-	private String orderInputType; 				// 주문서 타입
-	private String supplyId; 					// 매입처 아이디
-	private String delivery; 					// 택배사 코드
-	private String orderUserId; 				// 구매자 계정
-	private String crspikUse; 					// 크로스픽 주문
-	private String shipNo; 						// 배송번호
-	private String dealNo; 						// 딜 번호
-	private String exchangeOrderYn; 			// 교환접수 여부
-	private String orderMainKey; 				// 추가상품(인터파크,11번가)
-	private String panType; 					// 네이버페이결제수단
-	private String channelType; 				// 채널구분
-	private String shipRsvDate; 				// 배송예정일
-
-
-	private String profiles;
-	private String xmlPath;
-	private String domainUrl;					// 이미지 domain url
-	private String apiSubUrl;					// api url 하위 경로
-
-
-	private String vendorId;
-	private String extmallId;
-	private String extmallNm;
-
-	private String dtGb;			// 일자검색타입
-	private String uploadStat; 		// 외부몰 주문등록 업로드 상태
-	private String uploadFailCd;	// 외부몰 주문등록 업로드 실패코드
-	private String uploadFailReason;	// 외부몰 주문등록 업로드 실패사유 msg
-	private Integer ordNo;				// 주문번호(주문)
-	private Integer delvAddrSq;			// 배송지일련번호(배송지)
-	private String goodsCd;
-	private String optCd;
-
-	// 검색
-	private int startRow;
-	private int endRow;
-
-	// Pagination
-	private TscPageRequest pageable;
-	private int pageNo = 1;
-	private int pageSize = 50;
-	private int pageUnit = 10;
-
-	private String sid;
-
-	public ShoplinkerOrder() {
-
-	}
-
-	public void setAllParams(Order ord) {
-		//this.orderIfIdx = ord.getOrderIfIdx();
-		this.shoplinkerOrderId = ord.getShoplinkerOrderId();
-		this.mallOrderId = ord.getMallOrderId();
-		this.mallName = ord.getMallName();
-		this.baesongStatus = ord.getBaesongStatus();
-		this.orderName = ord.getOrderName();
-		this.orderTel = ord.getOrderTel();
-		this.orderCel = ord.getOrderCel();
-		this.orderEmail = ord.getOrderEmail();
-		this.receive = ord.getReceive();
-		this.receiveTel = ord.getReceiveTel();
-		this.receiveCel = ord.getReceiveCel();
-		this.receiveZipcode = ord.getReceiveZipcode();
-		this.receiveAddr = ord.getReceiveAddr();
-		this.baesongType = ord.getBaesongType();
-		this.baesongBi = ord.getBaesongBi();
-		this.deliveryMsg = ord.getDeliveryMsg();
-		this.orderProductId = ord.getOrderProductId();
-		this.shoplinkerProductId = ord.getShoplinkerProductId();
-		this.partnerProductId = ord.getPartnerProductId();
-		this.productName = ord.getProductName();
-		this.quantity = ord.getQuantity();
-		this.orderPrice = ord.getOrderPrice();
-		this.salePrice = ord.getSalePrice();
-		this.supplyPrice = ord.getSupplyPrice();
-		this.sku = ord.getSku();
-		this.orderdate = ord.getOrderdate();
-		this.orderRegDate = ord.getOrderRegDate();
-		this.deliveryInvoice = ord.getDeliveryInvoice();
-		this.orderSeq = ord.getOrderSeq();
-		this.totalCount = ord.getTotalCount();
-		this.totalPage = ord.getTotalPage();
-		this.totalStandardCount = ord.getTotalStandardCount();
-		this.currentlyPage = ord.getCurrentlyPage();
-		this.currentlyCount = ord.getCurrentlyCount();
-		this.sellerId = ord.getSellerId();
-		this.onlySku = ord.getOnlySku();
-		this.addSku = ord.getAddSku();
-		this.mallId = ord.getMallId();
-		this.disPriceMall = ord.getDisPriceMall();
-		this.disPriceSeller = ord.getDisPriceSeller();
-		this.disPriceCoupon = ord.getDisPriceCoupon();
-		this.disPricePoint = ord.getDisPricePoint();
-		this.distributionDelivery = ord.getDistributionDelivery();
-		this.skuMatchCode = ord.getSkuMatchCode();
-		this.skuBarcode = ord.getSkuBarcode();
-		this.orderCustomsNumber = ord.getOrderCustomsNumber();
-		this.orderInputType = ord.getOrderInputType();
-		this.supplyId = ord.getSupplyId();
-		this.delivery = ord.getDelivery();
-		this.orderUserId = ord.getOrderUserId();
-		this.crspikUse = ord.getCrspikUse();
-		this.shipNo = ord.getShipNo();
-		this.dealNo = ord.getDealNo();
-		this.exchangeOrderYn = ord.getExchangeOrderYn();
-		this.orderMainKey = ord.getOrderMainKey();
-		this.panType = ord.getPanType();
-		this.channelType = ord.getChannelType();
-		this.shipRsvDate = ord.getShipRsvDate();
-	}
-
-
-	/*
-	 * @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY) private
-	 * String[] conditionList;
-	 */
-}

+ 0 - 103
src/main/java/com/style24/persistence/domain/ShoplinkerSearch.java

@@ -1,103 +0,0 @@
-package com.style24.persistence.domain;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.style24.persistence.TscBaseDomain;
-import com.style24.persistence.TscPageRequest;
-
-import lombok.Data;
-
-/**
- * 상품 검색 Domain
- *
- * @author eskim
- * @since 2019. 12. 10
- */
-@SuppressWarnings("serial")
-@Data
-public class ShoplinkerSearch extends TscBaseDomain {
-
-	private int startRow;
-	private int endRow;
-	private String search; // 키워드 종류
-	private String condition; // 키워드 종류별 값
-	private String supplyCompCd;
-	private String brandGrpNm;
-	private String brandCd;
-
-	private String stDate;
-	private String edDate;
-
-	private String regSuccYn;
-	private String searchGb;
-	private String callBackFun;
-	private String applyStdt;
-	private String applyEddt;
-	private String goodsCd;
-	private String goodsNum;
-	private String goodsNm;
-	private String inoutGb;
-	private String applyFlag;
-	private String barcode;
-	private String dateGbn;
-	private String goodsTnmRes;
-	private String searchBrandCd;
-	private String brandList;
-	private String supplyCompList;
-	private String searchTxt;
-
-	private String regNm;
-	private String apiType;
-	private String apiResult;
-	private String apiStDate;
-
-	private Integer remainExtCnt;		// 주문수집시-제휴몰주문업로드 남은수
-	private Integer remainStyleCnt;		// 주문수집시-스타일24주문업로드 남은수
-
-	//@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	//private String[] siteCd;
-
-	/* 상품목록 Multi CheckBox 항목*/
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] multiBrand;
-
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] multiItemkindCd;
-
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] multiGoodsStat;
-
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] multiStyleYear;
-
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] multiSeasonCd;
-	/* 상품목록 Multi CheckBox 항목*/
-
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] conditionList;
-
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] arrGoodsCd;
-
-	/* 다다익선 Multi 추가 */
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] multiSupplyCompCd;
-
-	private String pageingYn;
-
-	/* 다다익선 Multi 추가 */
-
-	// Pagination
-	private TscPageRequest pageable;
-	private int pageNo = 1;
-	private int pageSize = 50;
-	private int pageUnit = 10;
-
-	// api 호출 가능여부 확인
-	private String sid;
-	private String runStdt;
-	private String runEddt;
-	private String runStat;
-	private Integer runCnt;	// 현재 실행중인건수
-	private String txt;
-}

+ 8 - 4
src/main/java/com/style24/persistence/mybatis/shop/TsaNotice.xml

@@ -179,10 +179,14 @@
 		)
 		VALUES (
 		       #{noticeSq}
-		     , IFNULL((SELECT MAX(SEQ)
-		               FROM   TB_NOTICE_FILE
-		               WHERE  NOTICE_SQ = #{noticeSq}
-		              ),0) + 1
+		     , (
+		        SELECT IFNULL(SEQ,0)+1 
+		        FROM (
+		               SELECT MAX(SEQ) AS SEQ 
+		                FROM   TB_NOTICE_FILE
+		                WHERE  NOTICE_SQ =  #{noticeSq}
+		             )A
+		       )
 		     , #{orgFileNm}
 		     , #{sysFileNm}
 		     , #{regNo}

+ 0 - 1564
src/main/java/com/style24/persistence/mybatis/shop/TsaOcm.xml

@@ -166,1568 +166,4 @@
 	</insert>
 
 
-
-
-
-
-
-
-
-	<!-- 제휴몰주문등록 - 주문업로드 그룹별 목록 -->
-	<select id="getExtmallMasterOrderList" parameterType="ExtmallOrder" resultType="ExtmallOrder">
-	/* TsaOcm.getExtmallMasterOrderList */
-		SELECT
-			A.VENDOR_ID, A.EXTMALL_ID, A.EXTMALL_ORDER_ID
-			, IFNULL(A.ORD_NM, '') AS ORD_NM
-			, IFNULL(A.ORD_PHNNO, '') AS ORD_PHNNO
-			, IFNULL(A.ORD_TELNO, '') AS ORD_TELNO
-			, IFNULL(A.ORD_EMAIL, '') AS ORD_EMAIL
-			, IFNULL(A.DELV_MEMO, '') AS DELV_MEMO
-			, IFNULL(A.RECIP_NM, '') AS RECIP_NM
-			, IFNULL(A.RECIP_PHNNO, '') AS RECIP_PHNNO
-			, IFNULL(A.RECIP_TELNO, '') AS RECIP_TELNO
-			, IFNULL(A.RECIP_ZIPCODE, '') AS RECIP_ZIPCODE
-			, IFNULL(A.RECIP_BASE_ADDR, '') AS RECIP_BASE_ADDR
-			, IFNULL(A.RECIP_DTL_ADDR, '') AS RECIP_DTL_ADDR
-			, SUM(A.DELV_FEE) AS DELV_FEE
-			, SUM(A.ORD_AMT) AS REAL_ORD_SUM_AMT
-		FROM TB_EXTMALL_ORDER_UPLOAD A
-		WHERE A.UPLOAD_STAT = 'G021_00'
-		AND RECIP_BASE_ADDR IS NOT NULL AND RECIP_BASE_ADDR != ''
-		AND A.UPLOAD_GB = #{uploadGb}
-		<if test="regNo != null and regNo != ''">
-	      AND A.REG_NO = #{regNo}
-	    </if>
-		GROUP BY A.VENDOR_ID, A.EXTMALL_ID, A.EXTMALL_ORDER_ID, A.ORD_NM, A.ORD_PHNNO, A.ORD_TELNO, A.ORD_EMAIL, A.DELV_MEMO
-				 , A.RECIP_NM, A.RECIP_PHNNO, A.RECIP_TELNO, A.RECIP_ZIPCODE, A.RECIP_BASE_ADDR, A.RECIP_DTL_ADDR
-		ORDER BY A.VENDOR_ID, A.EXTMALL_ID, A.EXTMALL_ORDER_ID
-	</select>
-
-	<!-- 제휴몰주문등록 - 주문업로드 전체 목록 -->
-	<select id="getExtmallOrderList" parameterType="ExtmallOrder" resultType="ExtmallOrder">
-	/* TsaOcm.getExtmallOrderList */
-		SELECT
-			 B.GOODS_NM
-			, B.SUPPLY_COMP_CD -- 공급업체코드
-			, B.DELV_FEE_CD -- 배송비정책코드
-			, A.VENDOR_ID
-			, A.EXTMALL_ID
-			, A.EXTMALL_NM
-			, A.AGENT_ORDER_ID
-			, A.EXTMALL_ORDER_ID
-			, A.EXTMALL_PROD_ID
-			, A.EXTMALL_PROD_NM
-			, A.GOODS_CD
-			, A.SKU
-			, A.CURR_PRICE
-			, A.ORD_QTY
-			, A.ORD_AMT
-			, A.CPN_DC_AMT
-			, A.PNT_DC_AMT
-			, A.DELV_FEE
-			, A.ORD_RECV_DT
-			, A.ORD_DT
-			, IFNULL(A.ORD_NM, '') AS ORD_NM
-			, IFNULL(A.ORD_PHNNO, '') AS ORD_PHNNO
-			, A.ORD_TELNO
-			, A.ORD_EMAIL
-			, IFNULL(A.RECIP_NM, '') AS RECIP_NM
-			, IFNULL(A.RECIP_PHNNO, '') AS RECIP_PHNNO
-			, A.RECIP_TELNO
-			, A.RECIP_ZIPCODE
-			, IFNULL(A.RECIP_BASE_ADDR, '') AS RECIP_BASE_ADDR
-			, IFNULL(A.RECIP_DTL_ADDR, '') AS RECIP_DTL_ADDR
-			, A.DELV_MEMO
-			, A.UPLOAD_STAT
-			, A.UPLOAD_FAIL_CD
-			, A.UPLOAD_FAIL_REASON
-			, A.ORD_NO
-			, A.DELV_ADDR_SQ
-			, A.OPT_CD
-			, A.UPLOAD_GB
-			, A.REG_NO
-			, A.REG_DT
-		FROM TB_EXTMALL_ORDER_UPLOAD A
-			LEFT OUTER JOIN TB_GOODS B ON A.GOODS_CD = B.GOODS_CD
-		WHERE 1=1
-		AND RECIP_BASE_ADDR IS NOT NULL AND RECIP_BASE_ADDR != ''
-		AND A.UPLOAD_GB = #{uploadGb}
-		<if test="regNo != null and regNo != ''">
-	      AND A.REG_NO = #{regNo}
-	    </if>
-		<if test="uploadStat != null and uploadStat != ''">
-	      AND A.UPLOAD_STAT = #{uploadStat}
-	    </if>
-
-		<if test="stDate != null and stDate != ''">
-	      AND A.REG_DT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
-        </if>
-	    <if test="edDate != null and edDate != ''">
-	      <![CDATA[
-	        AND A.REG_DT < DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
-	      ]]>
-	    </if>
-		order by A.VENDOR_ID, A.EXTMALL_ID, A.EXTMALL_ORDER_ID, A.AGENT_ORDER_ID
-	</select>
-
-	<!-- 제휴몰주문등록 - 주문등록  -->
-	<insert id="insertExtmallOrder" parameterType="ExtmallOrder">
-	/* TsaOcm.insertExtmallOrder */
-		INSERT INTO TB_EXTMALL_ORDER_UPLOAD
-		(
-			VENDOR_ID
-			, EXTMALL_ID
-			, EXTMALL_NM
-			, AGENT_ORDER_ID
-			, EXTMALL_ORDER_ID
-			, EXTMALL_PROD_ID
-			, EXTMALL_PROD_NM
-			, GOODS_CD
-			, SKU
-			, CURR_PRICE
-			, ORD_QTY
-			, ORD_AMT
-			, CPN_DC_AMT
-			, PNT_DC_AMT
-			, DELV_FEE
-			, ORD_RECV_DT
-			, ORD_DT
-			, ORD_NM
-			, ORD_PHNNO
-			, ORD_TELNO
-			, ORD_EMAIL
-			, RECIP_NM
-			, RECIP_PHNNO
-			, RECIP_TELNO
-			, RECIP_ZIPCODE
-			, RECIP_BASE_ADDR
-			, RECIP_DTL_ADDR
-			, DELV_MEMO
-			, UPLOAD_STAT
-			, UPLOAD_FAIL_CD
-			, UPLOAD_FAIL_REASON
-			, ORD_NO
-			, DELV_ADDR_SQ
-			, OPT_CD
-			, UPLOAD_GB
-			, REG_NO
-			, REG_DT
-		)
-		SELECT
-			#{vendorId}
-			, #{extmallId}
-			, #{extmallNm}
-			, #{agentOrderId}
-			, #{extmallOrderId}
-			, #{extmallProdId}
-			, #{extmallProdNm}
-			, #{goodsCd}
-			, #{sku}
-			, IFNULL(#{currPrice}, 0)
-			, IFNULL(#{ordQty}, 0)
-			, IFNULL(#{ordAmt}, 0)
-			, IFNULL(#{cpnDcAmt}, 0)
-			, IFNULL(#{pntDcAmt}, 0)
-			, IFNULL(#{delvFee}, 0)
-			, STR_TO_DATE(#{ordRecvDt}, '%Y%m%d%H%i%s')
-			, STR_TO_DATE(#{ordDt}, '%Y%m%d%H%i%s')
-			, IFNULL(#{ordNm}, #{recipNm})
-			, IFNULL(#{ordPhnno}, #{recipPhnno})
-			, IFNULL(#{ordTelno}, #{recipTelno})
-			, #{ordEmail}
-			, #{recipNm}
-			, #{recipPhnno}
-			, #{recipTelno}
-			, replace(#{recipZipcode}, '-', '')
-			, #{recipBaseAddr}
-			, #{recipDtlAddr}
-			, #{delvMemo}
-			, #{uploadStat}
-			, #{uploadFailCd}
-			, #{uploadFailReason}
-			, #{ordNo}
-			, #{delvAddrSq}
-			, #{optCd}
-			, #{uploadGb}
-			, #{regNo}
-			, now()
-		FROM DUAL
-		WHERE NOT EXISTS(
-				SELECT 1 FROM TB_EXTMALL_ORDER_UPLOAD
-				WHERE VENDOR_ID = #{vendorId}
-				AND EXTMALL_ID = #{extmallId}
-				AND AGENT_ORDER_ID = #{agentOrderId}
-				AND EXTMALL_ORDER_ID = #{extmallOrderId}
-				AND UPLOAD_GB = #{uploadGb}
-			  )
-	</insert>
-
-	<!-- 제휴몰주문등록 - 주문등록 상태값 업데이트 -->
-	<update id="updateExtmallOrder" parameterType="ExtmallOrder">
-	/* TsaOcm.updateExtmallOrder */
-		UPDATE TB_EXTMALL_ORDER_UPLOAD
-		SET
-			ORD_NO = #{ordNo}
-			, DELV_ADDR_SQ = #{delvAddrSq}
-			, UPLOAD_STAT = #{uploadStat}
-			, UPLOAD_FAIL_CD = #{uploadFailCd}
-			, UPLOAD_FAIL_REASON = #{uploadFailReason}
-
-		WHERE VENDOR_ID = #{vendorId}
-		AND EXTMALL_ID = #{extmallId}
-		AND AGENT_ORDER_ID = #{agentOrderId}
-		AND EXTMALL_ORDER_ID = #{extmallOrderId}
-		AND UPLOAD_STAT != 'G021_30'
-
-	</update>
-
-	<!-- 제휴몰주문등록 - 주문등록 체크 -->
-	<select id="getExtmallOrderInfo" parameterType="ExtmallOrder" resultType="ExtmallOrder">
-	/* TsaOcm.getExtmallOrderInfo */
-		SELECT
-			 A.AGENT_ORDER_ID
-			, A.EXTMALL_ORDER_ID
-			, B.EXTMALL_ID
-			, GS.GOODS_CD
-			, GS.GOODS_NM
-			, GS.GOODS_STAT
-			, GS.CURR_PRICE
-			, GS.LIST_PRICE
-			, GS.PNT_PRATE
-			, OP.OPT_CD
-			, OP.SOLDOUT_YN
-			, (SELECT MAX(ORD_NO) FROM TB_ORDER_DETAIL OD WHERE A.VENDOR_ID = OD.VENDOR_ID AND A.EXTMALL_ID = OD.EXTMALL_ID
-				AND A.AGENT_ORDER_ID = OD.AGENT_ORDER_ID AND A.EXTMALL_ORDER_ID = OD.EXTMALL_ORDER_ID) AS ORD_NO
-			, (SELECT COUNT(UPLOAD_STAT) FROM TB_EXTMALL_ORDER_UPLOAD S WHERE A.VENDOR_ID = S.VENDOR_ID
-				AND A.EXTMALL_ID = S.EXTMALL_ID AND A.AGENT_ORDER_ID = S.AGENT_ORDER_ID AND A.EXTMALL_ORDER_ID = S.EXTMALL_ORDER_ID
-				AND S.UPLOAD_STAT = 'G021_40' AND UPLOAD_FAIL_CD = 'G022_60') AS STOCK_FAIL_HST_CNT
-		FROM TB_EXTMALL_ORDER_UPLOAD A
-			LEFT OUTER JOIN TB_EXTMALL B ON A.EXTMALL_ID = B.EXTMALL_ID AND B.USE_YN = 'Y'
-			LEFT OUTER JOIN TB_GOODS GS ON A.GOODS_CD = GS.GOODS_CD
-			LEFT OUTER JOIN TB_OPTION OP ON A.OPT_CD = OP.OPT_CD
-		WHERE A.VENDOR_ID = #{vendorId}
-		AND A.EXTMALL_ID = #{extmallId}
-		AND A.AGENT_ORDER_ID = #{agentOrderId}
-		AND A.EXTMALL_ORDER_ID = #{extmallOrderId}
-		AND A.UPLOAD_GB = #{uploadGb}
-		ORDER BY A.REG_DT DESC
-		LIMIT 1
-	</select>
-
-
-
-<!--***** 주문정보등록 **************************************************************** -->
-<!--***** 주문정보등록 **************************************************************** -->
-	<!-- 1. 주문기본정보등록 -->
-	<insert id="createOrder" parameterType="ExtmallOrder" keyProperty="ordNo">
-		/* TsaOrder.createOrder : 주문기본정보등록 */
-		INSERT INTO TB_ORDER (
-		    MALL_GB
-		    , ORD_DT
-		    , PAY_DT
-		    , CUST_NO
-		    , ORD_NM
-		    , ORD_PHNNO
-		    , ORD_TELNO
-		    , ORD_EMAIL
-		    , SITE_CD
-		    , NPAY_ORD_NO
-		    , FRONT_GB
-		    , REG_NO
-		    , REG_DT
-		    , UPD_NO
-		    , UPD_DT
-		) VALUES (
-		     'G011_20'
-		     , NOW()
-		     , NOW()
-		     , #{custNo}
-		     , #{custNm}
-		     , #{recipPhnno}
-		     , #{recipTelno}
-		     , #{email}
-		     , 'G000_10'
-		     , #{npayOrdNo}
-		     , 'P'
-		     , #{custNo}
-		     , NOW()
-		     , #{custNo}
-		     , NOW()
-		)
-	</insert>
-
-	<!-- 2. 주문배송주소정보등록-->
-	<insert id="createDeliveryAddr" parameterType="ExtmallOrder" keyProperty="delvAddrSq">
-		/* TsaOrder.createDeliveryAddr : 주문배송주소정보등록 */
-		INSERT INTO TB_DELIVERY_ADDR (
-		    RECIP_NM
-		    , RECIP_PHNNO
-		    , RECIP_TELNO
-		    , RECIP_ZIPCODE
-		    , RECIP_BASE_ADDR
-		    , RECIP_DTL_ADDR
-		    , DELV_MEMO
-		    , GIFT_MSG
-		    , REG_NO
-		    , REG_DT
-		    , UPD_NO
-		    , UPD_DT
-		) VALUES (
-		    #{recipNm}
-		    , #{recipPhnno}
-		    , #{recipTelno}
-		    , #{recipZipcode}
-		    , #{recipBaseAddr}
-		    , #{recipDtlAddr}
-		    , #{delvMemo}
-		    , #{giftMsg}
-		    , #{custNo}
-		    , NOW()
-		    , #{custNo}
-		    , NOW()
-		)
-	</insert>
-
-	<!-- 3. 주문배송비정보등록-->
-	<insert id="createDeliveryFee" parameterType="ExtmallOrder">
-		/* TsaOrder.createDeliveryFee : 주문배송비정보등록 */
-		INSERT INTO TB_DELIVERY_FEE (
-		    PAY_SQ
-		    , ORD_NO
-		    , DELV_FEE_GB
-		    , DELV_FEE_CD
-		    , DELV_FEE
-		    , DELV_CPN_SQ
-		    , DELV_CPN_DC_AMT
-		    , REAL_DELV_AMT
-		    , ORD_CHG_SQ
-		    , SUPPLY_COMP_CD
-		    , DELV_USAC_YN
-		    , DELV_USAC_DT
-		    , REG_NO
-		    , REG_DT
-		    , UPD_NO
-		    , UPD_DT
-		) VALUES (
-		    NULL
-		    , #{ordNo}
-		    , #{delvFeeGb}
-		    , #{delvFeeCd}
-		    , #{delvFee}
-		    , #{delvCpnSq}
-		    , #{delvCpnDcAmt}
-		    , #{realDelvAmt}
-		    , NULL
-		    , #{supplyCompCd}
-		    , 'N'
-		    , NULL
-		    , #{custNo}
-		    , NOW()
-		    , #{custNo}
-		    , NOW()
-		)
-	</insert>
-
-	<!-- 4. 주문상세정보등록-->
-	<insert id="createOrderDetail" parameterType="ExtmallOrder" keyProperty="ordDtlNo">
-		/* TsaOcm.createOrderDetail : 주문상세정보등록 */
-		INSERT INTO TB_ORDER_DETAIL (
-		    ORD_NO
-		    , ORD_EXCH_GB
-		    , ORD_DTL_STAT
-		    , ORG_ORD_DTL_NO
-		    , SUPPLY_COMP_CD
-		    , GOODS_CD
-		    , DEAL_GOODS_CD
-		    , FORMAL_GB
-		    , GOODS_TYPE
-		    , LIST_PRICE
-		    , CURR_PRICE
-		    , DC_RATE
-		    , OPT_ADD_PRICE
-		    , ORD_QTY
-		    , ORD_AMT
-		    , CNCL_RTN_QTY
-		    , CNCL_RTN_AMT
-		    , CPN1_CPN_SQ
-		    , CPN1_DC_AMT
-		    , TMTB1_SQ
-		    , TMTB1_DC_AMT
-		    , TMTB2_SQ
-		    , TMTB2_DC_AMT
-		    , GOODS_CPN_SQ
-		    , GOODS_CPN_DC_AMT
-		    , CART_CPN_SQ
-		    , CART_CPN_DC_AMT
-		    , BURDEN_RATE
-		    , PNT_DC_AMT
-		    , PRE_PNT_DC_AMT
-		    , SAVE_PNT_AMT
-		    , REAL_ORD_AMT
-		    , GFCD_USE_AMT
-		    , VENDOR_ID
-		    , EXTMALL_ID
-		    , AGENT_ORDER_ID
-		    , EXTMALL_ORDER_ID
-		    , CHANGEABLE_YN
-		    , CHANGE_FEE_FREE_YN
-		    , RETURNABLE_YN
-		    , RETURN_FEE_FREE_YN
-		    , SOLDOUT_YN
-		    , SOLDOUT_MEMO
-		    , SOLDOUT_REG_NO
-		    , SOLDOUT_REG_DT
-		    , DELV_ADDR_SQ
-		    , DELV_FEE_CD
-		    , SHOT_DELV_YN
-		    , GIFT_PACK_YN
-		    , GIFT_ADDR_INP_YN
-		    , MAKE_GOODS_YN
-		    , ENTRY_NO
-		    , DELV_LOC_CD
-		    , DELV_ASSIGN_DT
-		    , DELV_ASSIGN_STAT
-		    , DSTRBT_NOTE
-		    , DELV_STDT
-		    , DELV_EDDT
-		    , SHIP_COMP_CD
-		    , INVOICE_NO
-		    , INVOICE_SEND_YN
-		    , SELL_STORE_CD
-		    , SELL_FEE_RATE
-		    , AF_LINK_CD
-		    , ITHR_CD
-		    , CONTENTS_LOC
-		    , PLAN_DTL_SQ
-		    , SOCIAL_SQ
-		    , REG_NO
-		    , REG_DT
-		    , UPD_NO
-		    , UPD_DT
-		)
-		SELECT #{ordNo}                     AS ORD_NO
-		     , #{ordExchGb}                 AS ORD_EXCH_GB
-		     , #{ordDtlStat}                AS ORD_DTL_STAT
-		     , NULL                         AS ORG_ORD_DTL_NO
-		     , G.SUPPLY_COMP_CD             AS SUPPLY_COMP_CD
-		     , G.GOODS_CD                  AS GOODS_CD
-		     , null             AS DEAL_GOODS_CD
-		     , G.FORMAL_GB                  AS FORMAL_GB
-		     , G.GOODS_TYPE                 AS GOODS_TYPE
-		     , G.LIST_PRICE                 AS LIST_PRICE
-		     , #{currPrice}                AS CURR_PRICE
-		     , G.DC_RATE                    AS DC_RATE
-		     , #{optAddPrice}               AS OPT_ADD_PRICE
-		     , #{ordQty}                AS GOODS_QTY
-		     , #{ordAmt}                    AS ORD_AMT
-		     , 0                            AS CNCL_RTN_QTY
-		     , 0                            AS CNCLRTN_AMT
-		     , #{cpn1CpnSq}                 AS CPN1_CPN_SQ
-		     , #{cpn1DcAmt}                 AS CPN1_DC_AMT
-		     , #{tmtb1Sq}                   AS TMTB1_SQ
-		     , #{tmtb1DcAmt}                AS TMTB1_DC_AMT
-		     , #{tmtb2Sq}                   AS TMTB2_SQ
-		     , #{tmtb2DcAmt}                AS TMTB2_DC_AMT
-		     , #{goodsCpnSq}                AS GOODS_CPN_SQ
-		     , #{goodsCpnDcAmt}             AS GOODS_CPN_DC_AMT
-		     , #{cartCpnSq}                 AS CART_CPN_SQ
-		     , #{cartCpnDcAmt}              AS CART_CPN_DC_AMT
-		     , 0                            AS BURDEN_RATE
-		     , #{pntDcAmt}                  AS PNT_DC_AMT
-		     , #{prePntDcAmt}               AS PRE_PNT_DC_AMT
-		     , #{savePntAmt}                AS SAVE_PNT_AMT
-		     , #{realOrdAmt}                AS REAL_ORD_AMT
-		     , #{gfcdUseAmt}                AS GFCD_USE_AMT
-		     , #{vendorId}                  AS VENDOR_ID
-		     , #{extmallId}                 AS EXTMALL_ID
-		     , #{agentOrderId}              AS AGENT_ORDER_ID
-		     , #{extmallOrderId}            AS EXTMALL_ORDER_ID
-		     , G.CHANGEABLE_YN              AS CHANGEABLE_YN
-		     , G.CHANGE_FEE_FREE_YN         AS CHANGE_FEE_FREE_YN
-		     , G.RETURNABLE_YN              AS RETURNABLE_YN
-		     , G.RETURN_FEE_FREE_YN         AS RETURN_FEE_FREE_YN
-		     , 'N'                          AS SOLDOUT_YN
-		     , NULL                         AS SOLDOUT_MEMO
-		     , NULL                         AS SOLDOUT_REG_NO
-		     , NULL                         AS SOLDOUT_REG_DT
-		     , #{delvAddrSq}                AS DELV_ADDR_SQ
-		     , #{delvFeeCd}	                AS DELV_FEE_CD
-		     , #{shotDelvYn}                AS SHOT_DELV_YN
-		     , #{giftPackYn}                AS GIFT_PACK_YN
-		     , 'N'                          AS GIFT_ADDR_INP_YN
-		     , G.ORDER_MADE_YN              AS MAKE_GOODS_YN
-		     , #{entryNo}                   AS ENTRY_NO
-		     , NULL                         AS DELV_LOC_CD
-		     , NULL                         AS DELV_ASSIGN_DT
-		     , 'P'                          AS DELV_ASSIGN_STAT
-		     , NULL                         AS DSTRBT_NOTE
-		     , NULL                         AS DELV_STDT
-		     , NULL                         AS DELV_EDDT
-		     , NULL                         AS SHIP_COMP_CD
-		     , NULL                         AS INVOICE_NO
-		     , 'N'                          AS INVOICE_SEND_YN
-		     , NULL                         AS SELL_STORE_CD
-		     , G.SELL_FEE_RATE              AS SELL_FEE_RATE
-		     , null              AS AF_LINK_CD
-		     , null              AS ITHR_CD
-		     , null              AS CONTENTS_LOC
-		     , null              AS PLAN_DTL_SQ
-		     , NULL                         AS SOCIAL_SQ
-		     , #{custNo}                    AS REG_NO
-		     , NOW()                        AS REG_DT
-		     , #{custNo}                    AS UPD_NO
-		     , NOW()                        AS UPD_DT
-		FROM TB_GOODS G
-		WHERE  GOODS_CD = #{goodsCd}
-	</insert>
-
-	<!-- 4-2. 주문상세 이력 등록-->
-	<insert id="createOrderDetailHst" parameterType="ExtmallOrder">
-		/* TsaOcm.createOrderDetailHst */
-		INSERT INTO TB_ORDER_DETAIL_HST (
-		    ORD_DTL_NO
-		    , ORD_NO
-		    , ORD_EXCH_GB
-		    , ORD_DTL_STAT
-		    , ORG_ORD_DTL_NO
-		    , SUPPLY_COMP_CD
-		    , GOODS_CD
-		    , DEAL_GOODS_CD
-		    , FORMAL_GB
-		    , GOODS_TYPE
-		    , LIST_PRICE
-		    , CURR_PRICE
-		    , DC_RATE
-		    , OPT_ADD_PRICE
-		    , ORD_QTY
-		    , ORD_AMT
-		    , CNCL_RTN_QTY
-		    , CNCL_RTN_AMT
-		    , CPN1_CPN_SQ
-		    , CPN1_DC_AMT
-		    , TMTB1_SQ
-		    , TMTB1_DC_AMT
-		    , TMTB2_SQ
-		    , TMTB2_DC_AMT
-		    , GOODS_CPN_SQ
-		    , GOODS_CPN_DC_AMT
-		    , CART_CPN_SQ
-		    , CART_CPN_DC_AMT
-		    , BURDEN_RATE
-		    , PNT_DC_AMT
-		    , PRE_PNT_DC_AMT
-		    , SAVE_PNT_AMT
-		    , REAL_ORD_AMT
-		    , GFCD_USE_AMT
-		    , VENDOR_ID
-		    , EXTMALL_ID
-		    , AGENT_ORDER_ID
-		    , EXTMALL_ORDER_ID
-		    , CHANGEABLE_YN
-		    , CHANGE_FEE_FREE_YN
-		    , RETURNABLE_YN
-		    , RETURN_FEE_FREE_YN
-		    , SOLDOUT_YN
-		    , SOLDOUT_MEMO
-		    , SOLDOUT_REG_NO
-		    , SOLDOUT_REG_DT
-		    , DELV_ADDR_SQ
-		    , DELV_FEE_CD
-		    , SHOT_DELV_YN
-		    , GIFT_PACK_YN
-		    , GIFT_ADDR_INP_YN
-		    , MAKE_GOODS_YN
-		    , ENTRY_NO
-		    , DELV_LOC_CD
-		    , DELV_ASSIGN_DT
-		    , DELV_ASSIGN_STAT
-		    , DSTRBT_NOTE
-		    , DELV_STDT
-		    , DELV_EDDT
-		    , SHIP_COMP_CD
-		    , INVOICE_NO
-		    , INVOICE_SEND_YN
-		    , SELL_STORE_CD
-		    , SELL_FEE_RATE
-		    , AF_LINK_CD
-		    , ITHR_CD
-		    , CONTENTS_LOC
-		    , PLAN_DTL_SQ
-		    , SOCIAL_SQ
-		    , REG_NO
-		    , REG_DT
-		    , UPD_NO
-		    , UPD_DT
-		)
-		SELECT ORD_DTL_NO
-		     , ORD_NO
-		     , ORD_EXCH_GB
-		     , ORD_DTL_STAT
-		     , ORG_ORD_DTL_NO
-		     , SUPPLY_COMP_CD
-		     , GOODS_CD
-		     , DEAL_GOODS_CD
-		     , FORMAL_GB
-		     , GOODS_TYPE
-		     , LIST_PRICE
-		     , CURR_PRICE
-		     , DC_RATE
-		     , OPT_ADD_PRICE
-		     , ORD_QTY
-		     , ORD_AMT
-		     , CNCL_RTN_QTY
-		     , CNCL_RTN_AMT
-		     , CPN1_CPN_SQ
-		     , CPN1_DC_AMT
-		     , TMTB1_SQ
-		     , TMTB1_DC_AMT
-		     , TMTB2_SQ
-		     , TMTB2_DC_AMT
-		     , GOODS_CPN_SQ
-		     , GOODS_CPN_DC_AMT
-		     , CART_CPN_SQ
-		     , CART_CPN_DC_AMT
-		     , BURDEN_RATE
-		     , PNT_DC_AMT
-		     , PRE_PNT_DC_AMT
-		     , SAVE_PNT_AMT
-		     , REAL_ORD_AMT
-		     , GFCD_USE_AMT
-		     , VENDOR_ID
-		     , EXTMALL_ID
-		     , AGENT_ORDER_ID
-		     , EXTMALL_ORDER_ID
-		     , CHANGEABLE_YN
-		     , CHANGE_FEE_FREE_YN
-		     , RETURNABLE_YN
-		     , RETURN_FEE_FREE_YN
-		     , SOLDOUT_YN
-		     , SOLDOUT_MEMO
-		     , SOLDOUT_REG_NO
-		     , SOLDOUT_REG_DT
-		     , DELV_ADDR_SQ
-		     , DELV_FEE_CD
-		     , SHOT_DELV_YN
-		     , GIFT_PACK_YN
-		     , GIFT_ADDR_INP_YN
-		     , MAKE_GOODS_YN
-		     , ENTRY_NO
-		     , DELV_LOC_CD
-		     , DELV_ASSIGN_DT
-		     , DELV_ASSIGN_STAT
-		     , DSTRBT_NOTE
-		     , DELV_STDT
-		     , DELV_EDDT
-		     , SHIP_COMP_CD
-		     , INVOICE_NO
-		     , INVOICE_SEND_YN
-		     , SELL_STORE_CD
-		     , SELL_FEE_RATE
-		     , AF_LINK_CD
-		     , ITHR_CD
-		     , CONTENTS_LOC
-		     , PLAN_DTL_SQ
-		     , SOCIAL_SQ
-		     , #{regNo}
-		     , NOW()
-		     , #{regNo}
-		     , NOW()
-		  FROM TB_ORDER_DETAIL
-		 WHERE ORD_DTL_NO = #{ordDtlNo}
-	</insert>
-
-	<!-- 5. 주문상세단품정보등록을 위한 조회 -->
-	<select id="getOrderDetailItem" parameterType="ExtmallOrder" resultType="ExtmallOrder">
-		/* TsaOcm.getOrderDetailItem : 주문상세단품정보등록을 위한 조회 */
-		SELECT
-			#{ordDtlNo}                                  AS ORD_DTL_NO
-		     , #{ordNo}                                     AS ORD_NO
-		     , #{ordDtlStat}                                AS ORD_DTL_STAT
-			 , OP.GOODS_CD
-		     , OP.GOODS_CD as ITEM_CD
-		     , OP.OPT_CD
-		     , OP.OPT_CD1
-		     , OP.OPT_CD2
-		     , OP.SKU_MODEL_NO
-		     , OP.PRODUCT_NO
-		     , OP.PRODUCT_CODE
-		     , G.CURR_PRICE
-		     , IFNULL(GC.QTY, 1)                            AS ITEM_QTY
-		     , IFNULL(GC.COMPS_CURR_PRICE, G.CURR_PRICE)    AS ITEM_PRICE
-		     , OP.ADD_PRICE                                 AS OPT_ADD_PRICE
-		    /* , CD.DISP_ORD*/
-		     , 0                                            AS ORD_AMT
-		     , 0                                            AS CNCL_RTN_AMT
-		     , 0                                            AS CPN1_DC_AMT
-		     , 0                                            AS TMTB1_DC_AMT
-		     , 0                                            AS TMTB2_DC_AMT
-		     , 0                                            AS GOODS_CPN_DC_AMT
-		     , 0                                            AS CART_CPN_DC_AMT
-		     , 0                                            AS PNT_DC_AMT
-		     , 0                                            AS PRE_PNT_DC_AMT
-		     , 0                                            AS SAVE_PNT_AMT
-		     , 0                                            AS REAL_ORD_AMT
-		     , 0                                            AS GFCD_USE_AMT
-		FROM   TB_OPTION OP
-		INNER  JOIN TB_GOODS G
-		ON     op.GOODS_CD = G.GOODS_CD
-		LEFT   OUTER JOIN TB_GOODS_COMPOSE GC
-		ON    G.GOODS_CD = GC.GOODS_CD
-		WHERE 1=1
-		and OP.OPT_CD= #{optCd}
-
-	</select>
-
-	<!-- 6. 주문상세단품정보등록 -->
-	<insert id="createOrderDetailItem" parameterType="ExtmallOrder" keyProperty="ordDtlItemSq">
-		/* TsaOrder.createOrderDetailItem : 주문상세단품정보등록 */
-		INSERT INTO TB_ORDER_DETAIL_ITEM (
-		    ORD_DTL_NO
-		    , ORD_NO
-		    , ORD_DTL_STAT
-		    , ITEM_CD
-		    , OPT_CD
-		    , OPT_CD1
-		    , OPT_CD2
-		    , SKU_MODEL_NO
-		    , PRODUCT_NO
-		    , PRODUCT_CODE
-		    , ITEM_QTY
-		    , ITEM_PRICE
-		    , OPT_ADD_PRICE
-		    , DISP_ORD
-		    , ORD_AMT
-		    , CNCL_RTN_AMT
-		    , CPN1_DC_AMT
-		    , TMTB1_DC_AMT
-		    , TMTB2_DC_AMT
-		    , GOODS_CPN_DC_AMT
-		    , CART_CPN_DC_AMT
-		    , PNT_DC_AMT
-		    , PRE_PNT_DC_AMT
-		    , SAVE_PNT_AMT
-		    , REAL_ORD_AMT
-		    , GFCD_USE_AMT
-		    , REG_NO
-		    , REG_DT
-		    , UPD_NO
-		    , UPD_DT
-		) VALUES (
-		    #{ordDtlNo}
-		    , #{ordNo}
-		    , #{ordDtlStat}
-		    , #{itemCd}
-		    , #{optCd}
-		    , #{optCd1}
-		    , #{optCd2}
-		    , #{skuModelNo}
-		    , #{productNo}
-		    , #{productCode}
-		    , #{itemQty}
-		    , #{itemPrice}
-		    , #{optAddPrice}
-		    , #{dispOrd}
-		    , #{ordAmt}
-		    , #{cnclRtnAmt}
-		    , #{cpn1DcAmt}
-		    , #{tmtb1DcAmt}
-		    , #{tmtb2DcAmt}
-		    , #{goodsCpnDcAmt}
-		    , #{cartCpnDcAmt}
-		    , #{pntDcAmt}
-		    , #{prePntDcAmt}
-		    , #{savePntAmt}
-		    , #{realOrdAmt}
-		    , #{gfcdUseAmt}
-		    , #{custNo}
-		    , NOW()
-		    , #{custNo}
-		    , NOW()
-		)
-	</insert>
-
-	<!-- 7. 주문상세단품이력정보 등록 -->
-	<insert id="createOrderDetailItemHst" parameterType="ExtmallOrder">
-		/* TsaOrder.createOrderDetailItemHst */
-		INSERT INTO TB_ORDER_DETAIL_ITEM_HST (
-		    ORD_DTL_ITEM_SQ
-		    , ORD_DTL_NO
-		    , ORD_NO
-		    , ORD_DTL_STAT
-		    , ITEM_CD
-		    , OPT_CD
-		    , OPT_CD1
-		    , OPT_CD2
-		    , SKU_MODEL_NO
-		    , PRODUCT_NO
-		    , PRODUCT_CODE
-		    , ITEM_QTY
-		    , ITEM_PRICE
-		    , OPT_ADD_PRICE
-		    , DISP_ORD
-		    , ORD_AMT
-		    , CNCL_RTN_AMT
-		    , CPN1_DC_AMT
-		    , TMTB1_DC_AMT
-		    , TMTB2_DC_AMT
-		    , GOODS_CPN_DC_AMT
-		    , CART_CPN_DC_AMT
-		    , PNT_DC_AMT
-		    , PRE_PNT_DC_AMT
-		    , SAVE_PNT_AMT
-		    , REAL_ORD_AMT
-		    , GFCD_USE_AMT
-		    , REG_NO
-		    , REG_DT
-		    , UPD_NO
-		    , UPD_DT
-		)
-		SELECT ORD_DTL_ITEM_SQ
-		     , ORD_DTL_NO
-		     , ORD_NO
-		     , ORD_DTL_STAT
-		     , ITEM_CD
-		     , OPT_CD
-		     , OPT_CD1
-		     , OPT_CD2
-		     , SKU_MODEL_NO
-		     , PRODUCT_NO
-		     , PRODUCT_CODE
-		     , ITEM_QTY
-		     , ITEM_PRICE
-		     , OPT_ADD_PRICE
-		     , DISP_ORD
-		     , ORD_AMT
-		     , CNCL_RTN_AMT
-		     , CPN1_DC_AMT
-		     , TMTB1_DC_AMT
-		     , TMTB2_DC_AMT
-		     , GOODS_CPN_DC_AMT
-		     , CART_CPN_DC_AMT
-		     , PNT_DC_AMT
-		     , PRE_PNT_DC_AMT
-		     , SAVE_PNT_AMT
-		     , REAL_ORD_AMT
-		     , GFCD_USE_AMT
-		     , REG_NO
-		     , NOW()
-		     , UPD_NO
-		     , NOW()
-		  FROM TB_ORDER_DETAIL_ITEM
-		 WHERE 1=1
-		   AND ORD_DTL_ITEM_SQ = #{ordDtlItemSq}
-	</insert>
-
-	<!-- 8. 주문사은품 마스터 정보 등록 -->
-	<insert id="createOrdFreegift" parameterType="ExtmallOrder">
-		/* TsaOrder.createOrdFreegift */
-		INSERT INTO TB_ORD_FREEGIFT (
-		    ORD_NO
-		    , FREEGIFT_SQ
-		    , DEL_YN
-		    , REG_NO
-		    , REG_DT
-		    , UPD_NO
-		    , UPD_DT
-		)
-		SELECT #{ordNo}
-		     , FG.FREEGIFT_SQ
-		     , 'N'
-		     , #{custNo}
-		     , NOW()
-		     , #{custNo}
-		     , NOW()
-		FROM   TB_FREEGIFT_VAL FGV
-		INNER  JOIN TB_FREEGIFT FG
-		ON     FGV.FREEGIFT_SQ = FG.FREEGIFT_SQ
-		WHERE  1=1
-		AND    FREEGIFT_VAL_SQ IN
-		<foreach collection="freegiftValArr" item="item" index="index"  open="(" close=")" separator=",">
-			#{item}
-		</foreach>
-		GROUP  BY FREEGIFT_SQ
-	</insert>
-
-	<!-- 9. 주문사은품 상품 정보 등록 -->
-	<insert id="createOrdFreegiftVal" parameterType="ExtmallOrder">
-		/* TsaOrder.createOrdFreegiftVal */
-		INSERT INTO TB_ORD_FREEGIFT_VAL (
-		    ORD_FREEGIFT_SQ
-		    , ORD_NO
-		    , FREEGIFT_SQ
-		    , FREEGIFT_VAL_SQ
-		    , ORD_DTL_STAT
-		    , USE_POINT
-		    , ITEM_QTY
-		    , PRODUCT_NO
-		    , PRODUCT_CODE
-		    , BRAND_CD
-		    , DEL_YN
-		    , REG_NO
-		    , REG_DT
-		    , UPD_NO
-		    , UPD_DT
-		)
-		SELECT OFG.ORD_FREEGIFT_SQ
-		    , #{ordNo}
-		    , FGV.FREEGIFT_SQ
-		    , FGV.FREEGIFT_VAL_SQ
-		    , #{ordDtlStat}
-		    , CASE WHEN FG.ALL_YN IN ('Y')
-		           THEN 0
-		           ELSE FGV.USE_POINT
-		           END USE_POINT
-		    , FGV.ITEM_QTY
-		    , FGV.PRODUCT_NO
-		    , FRG.PRODUCT_CODE
-		    , FRG.BRAND_CD
-		    , 'N'
-		    , #{custNo}
-		    , NOW()
-		    , #{custNo}
-		    , NOW()
-		FROM   TB_FREEGIFT_VAL FGV
-		INNER  JOIN TB_FREEGIFT FG
-		ON     FGV.FREEGIFT_SQ = FG.FREEGIFT_SQ
-		INNER  JOIN TB_FREE_GOODS FRG
-		ON     FGV.PRODUCT_NO = FRG.PRODUCT_NO
-		INNER  JOIN TB_ORD_FREEGIFT OFG
-		ON     FGV.FREEGIFT_SQ = OFG.FREEGIFT_SQ
-		WHERE  1=1
-		AND    OFG.ORD_NO = #{ordNo}
-		AND    FGV.FREEGIFT_VAL_SQ IN
-		<foreach collection="freegiftValArr" item="item" index="index"  open="(" close=")" separator=",">
-			#{item}
-		</foreach>
-	</insert>
-
-	<!-- 10. 주문사은품 주문상세 정보 등록 -->
-	<insert id="createOrdFreegiftDtl" parameterType="ExtmallOrder">
-		/* TsaOrder.createOrdFreegiftDtl */
-		INSERT INTO TB_ORD_FREEGIFT_DTL (
-		    ORD_FREEGIFT_SQ
-		    , FREEGIFT_SQ
-		    , ORD_NO
-		    , ORD_DTL_NO
-		    , DEL_YN
-		    , REG_NO
-		    , REG_DT
-		    , UPD_NO
-		    , UPD_DT
-		)
-		SELECT OFR.ORD_FREEGIFT_SQ
-		     , OFR.FREEGIFT_SQ
-		     , OD.ORD_NO
-		     , OD.ORD_DTL_NO
-		     , 'N'
-		     , #{custNo}
-		     , NOW()
-		     , #{custNo}
-		     , NOW()
-		FROM   TB_ORDER_DETAIL OD
-		INNER  JOIN TB_ORD_FREEGIFT OFR
-		ON     OD.ORD_NO = OFR.ORD_NO
-		INNER  JOIN TB_ORD_FREEGIFT_VAL OFV
-		ON     OFR.ORD_FREEGIFT_SQ = OFV.ORD_FREEGIFT_SQ
-		WHERE  1=1
-		AND    OD.GOODS_CD = #{goodsCd}
-		AND    OFR.FREEGIFT_SQ = #{freegiftSq}
-		AND    OD.ORD_NO = #{ordNo}
-		GROUP  BY OD.ORD_DTL_NO
-		     , OFR.FREEGIFT_SQ
-		     , OFR.ORD_FREEGIFT_SQ
-	</insert>
-
-	<!-- 11. 결제 PAYMENT INSERT-->
-	<insert id="insertPayment" parameterType="Payment" keyProperty="paySq">
-		/* TsaOcm.insertPayment : PAYMENT INSERT */
-		INSERT INTO TB_PAYMENT (
-			  ORD_NO
-			, PAY_DT
-			, PAY_MEANS
-			, PAY_AMT
-			, PG_CPN_AMT
-			, NPAY_PNT_AMT
-			, PAY_GB
-			, PAY_STAT
-			, CARD_PCABLE_YN
-			, REG_NO
-			, REG_DT
-			, UPD_NO
-			, UPD_DT
-		) VALUES (
-			  #{ordNo}
-			, NOW()
-			, #{payMeans}
-			, #{payAmt}
-			, #{pgCpnAmt}
-			, #{npayPntAmt}
-			, #{payGb}
-			, #{payStat}
-			, IFNULL(#{cardPcableYn}, 'Y')
-			, #{regNo}
-			, NOW()
-			, #{updNo}
-			, NOW()
-		)
-	</insert>
-
-	<!-- 12. 재고정보등록 -->
-	<insert id="createSellQty" parameterType="ExtmallOrder">
-		/* TsaOcm.createSellQty */
-		INSERT INTO TB_SELL_QTY (
-		    GOODS_CD
-		    , OPT_CD
-		    , SELL_GB
-		    , ORD_DTL_NO
-		    , ORD_CHG_SQ
-		    , AGENT_ORDER_ID
-		    , EXTMALL_ORDER_ID
-		    , SELL_QTY
-		    , REG_NO
-		    , REG_DT
-		)
-		SELECT ODI.ITEM_CD
-		     , ODI.OPT_CD
-		     , #{sellGb}
-		     , ODI.ORD_DTL_NO
-		     , NULL
-		     , OD.AGENT_ORDER_ID
-		     , OD.EXTMALL_ORDER_ID
-		     , ODI.ITEM_QTY * OD.ORD_QTY
-		     , #{custNo}
-		     , NOW()
-		FROM   TB_ORDER_DETAIL_ITEM ODI
-		INNER  JOIN TB_ORDER_DETAIL OD
-		ON     ODI.ORD_DTL_NO = OD.ORD_DTL_NO
-		WHERE  1=1
-		AND    ODI.ORD_NO = #{ordNo}
-		AND    ODI.ORD_DTL_NO = #{ordDtlNo}
-	</insert>
-
-	<!-- 13. 사은품 남은수량 업데이트 -->
-	<update id="updateFreegiftValLeftQty" parameterType="ExtmallOrder">
-		/* TsaOrder.updateFreegiftValLeftQty */
-		UPDATE TB_FREEGIFT_VAL FV
-		INNER  JOIN TB_ORD_FREEGIFT_VAL OFV
-		ON     FV.FREEGIFT_VAL_SQ = OFV.FREEGIFT_VAL_SQ
-		SET    FV.LEFT_QTY = FV.LEFT_QTY - FV.ITEM_QTY
-		WHERE  1=1
-		AND    OFV.ORD_NO = #{ordNo}
-		AND    FV.DEL_YN = 'N'
-	</update>
-
-	<!-- 상품 재고 조회 -->
-	<select id="getGoodsStockInfo" parameterType="GoodsStock" resultType="GoodsStock">
-		/* TsaOcm.getGoodsStockInfo */
-		SELECT VS.GOODS_CD
-			 , VS.OPT_CD
-			 , VS.OPT_CD1
-			 , VS.OPT_CD2
-			 , VS.SOLDOUT_YN
-			 , VS.CURR_STOCK_QTY
-		     , VS.ADD_PRICE
-			 , O.SKU_MODEL_NO
-		  FROM VW_STOCK VS
-		 INNER JOIN TB_OPTION O
-		    ON VS.GOODS_CD = O.GOODS_CD
-		   AND VS.OPT_CD = O.OPT_CD
-		 WHERE VS.GOODS_CD = #{goodsCd}
-		   AND VS.OPT_CD = #{optCd}
-	</select>
-
-	<!-- 사은품 : 1차조건 적용된 사음품 정보, 상품 금액 조회 -->
-	<select id="getFreeGiftGoodsApplyAmt" parameterType="ExtmallOrder" resultType="ExtmallOrder">
-		/* TsaOcm.getFreeGiftGoodsApplyAmt */
-		WITH GOODS_DATA AS (
-			SELECT G.GOODS_CD
-			     , G.SUPPLY_COMP_CD
-			     , G.BRAND_CD
-			     , OD.ORD_QTY as GOODS_QTY
-			     , OD.ORD_AMT as CURR_PRICE
-			     , G.GOODS_TYPE
-			FROM   TB_GOODS G
-			INNER JOIN TB_ORDER_DETAIL OD ON OD.GOODS_CD = G.GOODS_CD
-			WHERE OD.ORD_NO = #{ordNo}
-			AND OD.ORD_DTL_NO IN
-			<foreach collection="itemCdArr" item="item" index="index"  open="(" close=")" separator=",">
-				#{item}
-			</foreach>
-
-		)
-		SELECT FGG.FREEGIFT_SQ
-		     , FGG.GOODS_CD
-		     , FGG.CURR_PRICE
-		     , FGG.GOODS_QTY
-		     , FG.FREEGIFT_STDT
-		     , FG.FREEGIFT_EDDT
-		     , FE.*
-		FROM   TB_FREEGIFT FG
-		INNER JOIN TB_FREEGIFT_EXTMALL FE ON FG.FREEGIFT_SQ = FE.FREEGIFT_SQ
-		INNER  JOIN (
-			SELECT FGG.FREEGIFT_SQ
-			    , GD.GOODS_CD
-			    , GD.CURR_PRICE
-			    , GD.GOODS_QTY
-			FROM   TB_FREEGIFT_GOODS FGG
-			INNER  JOIN GOODS_DATA GD
-			ON     FGG.TARGET_VAL = GD.GOODS_CD
-			WHERE  1=1
-			AND    FGG.GOODS_GB = 'G800_20' -- 적용상품
-			AND    FGG.TARGET_GB= 'G260_10' -- 상품
-			AND    FGG.DEL_YN = 'N'
-			UNION
-			SELECT FGG1.FREEGIFT_SQ
-			     , GD.GOODS_CD
-			     , GD.CURR_PRICE
-			     , GD.GOODS_QTY
-			FROM   GOODS_DATA GD
-			INNER  JOIN TB_FREEGIFT_GOODS_APPLY FGG1
-			ON     GD.SUPPLY_COMP_CD = FGG1.TARGET_VAL
-			AND    FGG1.TARGET_GB= 'G260_13' -- 공급처
-			INNER  JOIN TB_FREEGIFT_GOODS_APPLY FGG2
-			ON     GD.BRAND_CD = FGG2.TARGET_VAL
-			AND    FGG2.TARGET_GB= 'G260_12' -- 브랜드
-			AND    FGG1.FREEGIFT_SQ = FGG2.FREEGIFT_SQ
-		) FGG
-		ON     FG.FREEGIFT_SQ = FGG.FREEGIFT_SQ
-		LEFT   OUTER JOIN TB_FREEGIFT_GOODS NOT_APPLY_GOODS
-		ON     FGG.FREEGIFT_SQ = NOT_APPLY_GOODS.FREEGIFT_SQ
-		AND    FGG.GOODS_CD = NOT_APPLY_GOODS.TARGET_VAL
-		AND    NOT_APPLY_GOODS.TARGET_GB = 'G800_30'
-		WHERE  1=1
-		AND    NOT_APPLY_GOODS.FREEGIFT_SQ IS NULL
-		AND    FG.DEL_YN = 'N'
-		AND    FG.SELF_YN = 'N' -- 외부몰
-		AND    FG.FREEGIFT_STAT = 'G232_11' -- 진행
-		AND	   FE.EXTMALL_ID = #{extmallId}
-		AND	   FE.DEL_YN = 'N'
-		AND    FG.FREEGIFT_STDT <![CDATA[<]]> CURRENT_TIMESTAMP
-		AND    FG.FREEGIFT_EDDT > CURRENT_TIMESTAMP
-		ORDER  BY FGG.FREEGIFT_SQ
-
-	</select>
-
-	<!-- 사은품 : 2차조건 적용된 사은품상품금액 구간정보조회 -->
-	<select id="getFreeGiftGoodsApplySection" parameterType="ExtmallOrder" resultType="ExtmallOrder">
-		/* TsaOcm.getFreeGiftGoodsApplySection */
-		SELECT FGS.FREEGIFT_SECTION_SQ
-		     , FGS.FREEGIFT_SQ
-		     , FGS.SECTION_VAL
-		FROM   TB_FREEGIFT_SECTION FGS
-		WHERE  1=1
-		AND    FGS.DEL_YN = 'N'
-		AND    FGS.SECTION_GB = 'G810_11' -- 금액만 처리
-		AND    FGS.FREEGIFT_SQ IN
-		<foreach collection="freegiftSqArr" item="item" index="index"  open="(" close=")" separator=",">
-			#{item}
-		</foreach>
-		ORDER  BY FGS.FREEGIFT_SQ
-		     , FGS.SECTION_VAL
-	</select>
-
-	<!-- 사은품 : 3차조건 적용된 구간정보의 사은품정보조회 -->
-	<select id="getFreeGiftGoodsApplyVal" parameterType="ExtmallOrder" resultType="ExtmallOrder">
-		/* TsaOcm.getFreeGiftGoodsApplyVal */
-		SELECT FGV.FREEGIFT_VAL_SQ
-		     , FG.FREEGIFT_NM
-		     , FGV.FREEGIFT_SECTION_SQ
-		     , FGV.FREEGIFT_SQ
-		     , FGV.USE_POINT
-		     , FGV.ITEM_QTY
-		     , FG.ALL_YN
-		     , G.PRODUCT_NO
-		     , G.PRODUCT_CODE
-		     , G.GOODS_NM
-		     , G.SYS_IMG_NM
-		FROM   TB_FREEGIFT_VAL FGV
-		INNER  JOIN TB_FREEGIFT FG
-		ON     FGV.FREEGIFT_SQ = FG.FREEGIFT_SQ
-		INNER  JOIN TB_FREE_GOODS G
-		ON     FGV.PRODUCT_NO = G.PRODUCT_NO
-		WHERE  1=1
-		AND    FGV.DEL_YN = 'N'
-		AND    FGV.LEFT_QTY <![CDATA[>=]]> FGV.ITEM_QTY
-		AND    FGV.FREEGIFT_SECTION_SQ IN
-		<foreach collection="freegiftSectionSqArr" item="item" index="index"  open="(" close=")" separator=",">
-			#{item}
-		</foreach>
-		ORDER  BY FG.FREEGIFT_SQ
-		        , FGV.FREEGIFT_SECTION_SQ
-		        , FGV.USE_POINT
-	</select>
-<!--***** 주문정보등록 **************************************************************** -->
-<!--***** 주문정보등록 **************************************************************** -->
-
-
-
-
-
-
-
-	<!--외부몰주문등록 전 임시 테이블 삭제-->
-	<delete id="deleteExtmallOrderUploadTmp" parameterType="Integer">
-		/* TsaOcm.deleteExtmallOrderUploadTmp */
-		DELETE
-		FROM  TB_EXTMALL_ORDER_UPLOAD_TMP
-		WHERE REG_NO = #{regNo}
-	</delete>
-
-	<!--외부몰주문등록 테이블 실패목록 데이터 삭제 -->
-	<delete id="deleteExtmallOrderUploadFail" parameterType="Integer">
-		/* TsaOcm.deleteExtmallOrderUploadFail */
-		DELETE
-		FROM  TB_EXTMALL_ORDER_UPLOAD A
-		WHERE REG_NO = #{regNo}
-		AND UPLOAD_GB = 'E'
-		AND UPLOAD_STAT = 'G021_40'
-		AND EXISTS (
-                      SELECT 1
-                      FROM   TB_EXTMALL_ORDER_UPLOAD_TMP B
-                      WHERE  B.VENDOR_ID = A.VENDOR_ID
-                      AND    B.EXTMALL_ID = A.EXTMALL_ID
-                      AND    B.AGENT_ORDER_ID = A.AGENT_ORDER_ID
-                      AND    B.EXTMALL_ORDER_ID = A.EXTMALL_ORDER_ID
-                    )
-	</delete>
-
-	<!-- 외부몰주문등록 (TB_EXTMALL_ORDER_UPLOAD_TMP) 인픽스-->
-	<insert id="createExtmallOrderUploadTmp" parameterType="ExtmallOrder">
-		/* TsaOcm.createExtmallOrderUploadTmp */
-		INSERT INTO TB_EXTMALL_ORDER_UPLOAD_TMP (
-		      VENDOR_ID
-			, EXTMALL_ID
-			, EXTMALL_NM
-			, AGENT_ORDER_ID
-			, EXTMALL_ORDER_ID
-			, EXTMALL_PROD_ID
-			, EXTMALL_PROD_NM
-			, GOODS_CD
-			, SKU
-			, CURR_PRICE
-			, ORD_QTY
-			, ORD_AMT
-			, CPN_DC_AMT
-			, PNT_DC_AMT
-			, DELV_FEE
-			, ORD_RECV_DT
-			, ORD_DT
-			, ORD_NM
-			, ORD_PHNNO
-			, ORD_TELNO
-			, ORD_EMAIL
-			, RECIP_NM
-			, RECIP_PHNNO
-			, RECIP_TELNO
-			, RECIP_ZIPCODE
-			, RECIP_BASE_ADDR
-			, RECIP_DTL_ADDR
-			, DELV_MEMO
-			, UPLOAD_STAT
-			, UPLOAD_FAIL_CD
-			, UPLOAD_FAIL_REASON
-			, ORD_NO
-			, DELV_ADDR_SQ
-			, OPT_CD
-			, UPLOAD_GB
-			, REG_NO
-			, REG_DT
-		)
-		VALUES (
-		     #{vendorId}
-			, #{extmallId}
-			, '-'
-			, #{agentOrderId}
-			, #{extmallOrderId}
-			, #{extmallProdId}
-			, #{extmallProdNm}
-			, #{goodsCd}
-			, #{sku}
-			, IFNULL(#{currPrice}, 0)
-			, IFNULL(#{ordQty}, 0)
-			, IFNULL(#{ordAmt}, 0)
-			, IFNULL(#{cpnDcAmt}, 0)
-			, IFNULL(#{pntDcAmt}, 0)
-			, IFNULL(#{delvFee}, 0)
-			, now()
-			, now()
-			, IFNULL(#{ordNm}, #{recipNm})
-			, IFNULL(#{ordPhnno}, #{recipPhnno})
-			, IFNULL(#{ordTelno}, #{recipTelno})
-			, #{ordEmail}
-			, #{recipNm}
-			, #{recipPhnno}
-			, #{recipTelno}
-			, replace(#{recipZipcode}, '-', '')
-			, #{recipBaseAddr}
-			, #{recipDtlAddr}
-			, #{delvMemo}
-			, #{uploadStat}
-			, #{uploadFailCd}
-			, #{uploadFailReason}
-			, #{ordNo}
-			, #{delvAddrSq}
-			, replace(replace(#{optCd}, '[', ''), ']', '')
-			, #{uploadGb}
-			, #{regNo}
-			, now()
-		)
-	</insert>
-
-	<!-- 외부몰주문등록 업로드 후 목록 -->
-	<select id="getExtmallOrderUploadTmpList" parameterType="ExtmallOrder" resultType="ExtmallOrder">
-	/* TsaOcm.getExtmallOrderUploadTmpList */
-		SELECT T.VENDOR_ID
-			, T.EXTMALL_ID
-			, IFNULL(A.EXTMALL_NM, '(미매핑)') as EXTMALL_NM
-			, T.AGENT_ORDER_ID
-			, T.EXTMALL_ORDER_ID
-			, T.EXTMALL_PROD_ID
-			, T.EXTMALL_PROD_NM
-			, CASE
-				WHEN A.EXTMALL_NM IS NULL OR B.GOODS_CD IS NULL OR B.OPT_CD IS NULL THEN 'Y'
-				ELSE 'N'
-			  END WARNING_YN
-			, CASE
-				WHEN B.GOODS_CD IS NULL THEN CONCAT(T.GOODS_CD , '(미매핑)')
-				ELSE T.GOODS_CD
-			  END AS GOODS_CD
-			, CASE
-				WHEN B.OPT_CD IS NULL THEN CONCAT(T.OPT_CD , '(미매핑)')
-				ELSE T.OPT_CD
-			  END AS OPT_CD
-			, T.SKU
-			, T.CURR_PRICE
-			, T.ORD_QTY
-			, T.ORD_AMT
-			, T.CPN_DC_AMT
-			, T.PNT_DC_AMT
-			, T.DELV_FEE
-			, T.ORD_RECV_DT
-			, T.ORD_DT
-			, T.ORD_NM
-			, T.ORD_PHNNO
-			, T.ORD_TELNO
-			, T.ORD_EMAIL
-			, T.RECIP_NM
-			, T.RECIP_PHNNO
-			, T.RECIP_TELNO
-			, T.RECIP_ZIPCODE
-			, T.RECIP_BASE_ADDR
-			, T.RECIP_DTL_ADDR
-			, T.DELV_MEMO
-			, T.UPLOAD_STAT
-			, T.UPLOAD_FAIL_CD
-			, T.UPLOAD_FAIL_REASON
-			, T.ORD_NO
-			, T.DELV_ADDR_SQ
-			, T.UPLOAD_GB
-			, T.REG_NO
-			, T.REG_DT
-		FROM  TB_EXTMALL_ORDER_UPLOAD_TMP T
-				LEFT OUTER JOIN TB_EXTMALL A ON T.VENDOR_ID = A.VENDOR_ID AND T.EXTMALL_ID = A.EXTMALL_ID AND A.USE_YN = 'Y'
-				LEFT OUTER JOIN TB_OPTION B ON T.GOODS_CD = B.GOODS_CD AND T.OPT_CD = B.OPT_CD
-		WHERE 1=1
-		AND   T.REG_NO = #{regNo}
-
-	</select>
-
-	<select id="getVendorId" parameterType="String" resultType="String">
-		/* TsaOcm.getVendorId */
-		SELECT VENDOR_ID
-		FROM   TB_EXTMALL_ORDER_UPLOAD_TMP
-		WHERE  1=1
-		AND    REG_ID = #{regId}
-		AND    ROWNUM = 1
-	</select>
-
-	<!-- 외부몰 주문업로드 생성 -->
-	<insert id="createExtmallOrderUploadSecond" parameterType="ExtmallOrder" timeout="100">
-		/* TsaOcm.createExtmallOrderUploadSecond */
-		INSERT INTO TB_EXTMALL_ORDER_UPLOAD (
-		       VENDOR_ID
-				, EXTMALL_ID
-				, EXTMALL_NM
-				, AGENT_ORDER_ID
-				, EXTMALL_ORDER_ID
-				, EXTMALL_PROD_ID
-				, EXTMALL_PROD_NM
-				, GOODS_CD
-				, SKU
-				, CURR_PRICE
-				, ORD_QTY
-				, ORD_AMT
-				, CPN_DC_AMT
-				, PNT_DC_AMT
-				, DELV_FEE
-				, ORD_RECV_DT
-				, ORD_DT
-				, ORD_NM
-				, ORD_PHNNO
-				, ORD_TELNO
-				, ORD_EMAIL
-				, RECIP_NM
-				, RECIP_PHNNO
-				, RECIP_TELNO
-				, RECIP_ZIPCODE
-				, RECIP_BASE_ADDR
-				, RECIP_DTL_ADDR
-				, DELV_MEMO
-				, UPLOAD_STAT
-				, UPLOAD_FAIL_CD
-				, UPLOAD_FAIL_REASON
-				, ORD_NO
-				, DELV_ADDR_SQ
-				, OPT_CD
-				, UPLOAD_GB
-				, REG_NO
-				, REG_DT
-		)
-		SELECT
-			   VENDOR_ID
-				, EXTMALL_ID
-				, EXTMALL_NM
-				, AGENT_ORDER_ID
-				, EXTMALL_ORDER_ID
-				, EXTMALL_PROD_ID
-				, EXTMALL_PROD_NM
-				, GOODS_CD
-				, SKU
-				, CURR_PRICE
-				, ORD_QTY
-				, ORD_AMT
-				, CPN_DC_AMT
-				, PNT_DC_AMT
-				, DELV_FEE
-				, ORD_RECV_DT
-				, ORD_DT
-				, ORD_NM
-				, ORD_PHNNO
-				, ORD_TELNO
-				, ORD_EMAIL
-				, RECIP_NM
-				, RECIP_PHNNO
-				, RECIP_TELNO
-				, RECIP_ZIPCODE
-				, RECIP_BASE_ADDR
-				, RECIP_DTL_ADDR
-				, DELV_MEMO
-				, UPLOAD_STAT
-				, UPLOAD_FAIL_CD
-				, UPLOAD_FAIL_REASON
-				, ORD_NO
-				, DELV_ADDR_SQ
-				, OPT_CD
-				, UPLOAD_GB
-				, REG_NO
-				, REG_DT
-		 FROM   TB_EXTMALL_ORDER_UPLOAD_TMP A
-		 WHERE A.REG_NO = #{regNo}
-
-	</insert>
-
-	<!-- 외부몰주문등록 업로드 후 목록 -->
-	<select id="getExtmallOrderUploadSecondList" parameterType="ExtmallOrder" resultType="ExtmallOrder">
-	/* TsaOcm.getExtmallOrderUploadSecondList */
-		SELECT A.*
-		FROM
-		(
-			SELECT
-					ROW_NUMBER() OVER(PARTITION BY A.VENDOR_ID, A.EXTMALL_ID, A.AGENT_ORDER_ID, A.EXTMALL_ORDER_ID ORDER BY A.REG_DT DESC) AS RANKING
-					, A.VENDOR_ID
-					, A.EXTMALL_ID
-					, (SELECT S.EXTMALL_NM FROM TB_EXTMALL S WHERE S.EXTMALL_ID = A.EXTMALL_ID) AS EXTMALL_NM
-					, A.AGENT_ORDER_ID
-					, A.EXTMALL_ORDER_ID
-					, A.EXTMALL_PROD_ID
-					, A.EXTMALL_PROD_NM
-					, A.GOODS_CD
-					, A.SKU
-					, A.CURR_PRICE
-					, A.ORD_QTY
-					, A.ORD_AMT
-					, A.CPN_DC_AMT
-					, A.PNT_DC_AMT
-					, A.DELV_FEE
-					, A.ORD_RECV_DT
-					, A.ORD_DT
-					, A.ORD_NM
-					, A.ORD_PHNNO
-					, A.ORD_TELNO
-					, A.ORD_EMAIL
-					, A.RECIP_NM
-					, A.RECIP_PHNNO
-					, A.RECIP_TELNO
-					, A.RECIP_ZIPCODE
-					, A.RECIP_BASE_ADDR
-					, A.RECIP_DTL_ADDR
-					, A.DELV_MEMO
-					, A.UPLOAD_STAT
-					, FN_GET_CODE_NM('G021', A.UPLOAD_STAT) AS UPLOAD_STAT_NM
-					, A.UPLOAD_FAIL_CD
-					, FN_GET_CODE_NM('G022', A.UPLOAD_FAIL_CD) AS UPLOAD_FAIL_NM
-					, A.UPLOAD_FAIL_REASON
-					, (SELECT MAX(ORD_NO) FROM TB_ORDER_DETAIL OD WHERE A.VENDOR_ID = OD.VENDOR_ID AND A.EXTMALL_ID = OD.EXTMALL_ID
-						AND A.AGENT_ORDER_ID = OD.AGENT_ORDER_ID AND A.EXTMALL_ORDER_ID = OD.EXTMALL_ORDER_ID) AS ORD_NO
-					, A.DELV_ADDR_SQ
-					, A.OPT_CD
-					, A.UPLOAD_GB
-					, A.REG_NO
-					, A.REG_DT
-			FROM   TB_EXTMALL_ORDER_UPLOAD A
-			     , TB_EXTMALL_ORDER_UPLOAD_TMP B
-			WHERE  A.VENDOR_ID = B.VENDOR_ID
-			AND    A.EXTMALL_ID = B.EXTMALL_ID
-			AND    A.AGENT_ORDER_ID = B.AGENT_ORDER_ID
-			AND    A.EXTMALL_ORDER_ID = B.EXTMALL_ORDER_ID
-			AND    A.UPLOAD_GB = 'E'
-			AND    B.REG_NO = #{regNo}
-		) A WHERE A.RANKING = 1
-	</select>
-
-
-	<!-- 외부몰주문등록 업로드 후 결과 수량 -->
-	<select id="getExtmallOrderUploadResultInfo" parameterType="ExtmallOrder" resultType="ExtmallOrder">
-		SELECT
-			 COUNT(IF(UPLOAD_STAT ='G021_40', 1, NULL)) AS FAIL_CNT
-			, COUNT(IF(UPLOAD_STAT = 'G021_30', 1, NULL)) AS SUCC_CNT
-		FROM
-		(
-			SELECT
-				ROW_NUMBER() OVER(PARTITION BY A.VENDOR_ID, A.EXTMALL_ID, A.AGENT_ORDER_ID, A.EXTMALL_ORDER_ID ORDER BY A.REG_DT DESC) AS RANKING
-				, A.VENDOR_ID
-				, A.EXTMALL_ID
-				, A.EXTMALL_NM
-				, A.AGENT_ORDER_ID
-				, A.EXTMALL_ORDER_ID
-				, A.UPLOAD_STAT
-				, A.UPLOAD_FAIL_CD
-			FROM   TB_EXTMALL_ORDER_UPLOAD A
-			     , TB_EXTMALL_ORDER_UPLOAD_TMP B
-			WHERE  A.VENDOR_ID = B.VENDOR_ID
-			AND    A.EXTMALL_ID = B.EXTMALL_ID
-			AND    A.AGENT_ORDER_ID = B.AGENT_ORDER_ID
-			AND    A.EXTMALL_ORDER_ID = B.EXTMALL_ORDER_ID
-			AND    A.UPLOAD_GB = 'E'
-			AND    B.REG_NO = #{regNo}
-		) A  WHERE A.RANKING = 1
-	</select>
-
-	<insert id="insertTestNotiInfo" parameterType="ExtmallOrder">
-		INSERT INTO TEST_SHOPLINKER_NOTI_HST (
-		       EXTMALL_ID
-		     , EXTMALL_ORDER_ID
-		     , NOTI_INFO
-		     , REG_DT
-		)
-		VALUES (
-		     #{extmallId}
-		     , #{extmallOrderId}
-		     , #{sku}
-		     , NOW()
-		)
-
-	</insert>
-
-
 </mapper>

+ 21 - 2
src/main/java/com/style24/persistence/mybatis/shop/TsaPlan.xml

@@ -740,7 +740,8 @@
                       , DISP_STDT       
                       , DISP_EDDT       
                       , CORNER_DISP_TYPE
-                      , CORNER_NM       
+                      , CORNER_NM  
+                      , BRAND_GROUP_NO     
                       , DISP_ORD        
                       , REG_NO          
                       , REG_DT          
@@ -753,7 +754,8 @@
                      , DATE_FORMAT(#{dispStdt} , '%Y-%m-%d %H:%i:%s')     
                      , DATE_FORMAT(#{dispEddt} , '%Y-%m-%d %H:%i:%s')   
                      , #{cornerDispType}                                 
-                     , #{cornerNm}                                       
+                     , #{cornerNm} 
+                     , #{brandGroupNo}                                      
                      , #{dispOrd}                                        
                      , #{regNo}                                          
                      , now()                                           
@@ -1511,6 +1513,23 @@
 		AND C.CPN_STAT = 'G232_11'
 		AND NOW() <![CDATA[<=]]> IF (C.PD_GB = 'D', CONCAT(CURRENT_DATE + INTERVAL C.AVAIL_DAYS DAY, ' 23:59:59'), C.AVAIL_EDDT)
 	</select>
+	
+	<select id="getShotSelfBrandList" parameterType="Plan" resultType="Plan">
+		/* TsaPlan.getShotSelfBrandList */
+		SELECT  B.BRAND_CD 
+		      , BG.BRAND_GROUP_NO 
+		      , CASE BG.DISP_NM_LANG WHEN 'EN' THEN BG.BRAND_GROUP_ENM
+		                  ELSE BG.BRAND_GROUP_KNM
+		        END                                                    AS BRAND_NM
+		FROM TB_BRAND B INNER JOIN TB_BRAND_GROUP BG 
+		  ON B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
+		WHERE 1 = 1
+		  AND B.USE_YN  = 'Y'
+		  AND B.SELF_YN = 'Y'
+		  AND BG.USE_YN = 'Y'
+		ORDER  BY B.SUPPLY_COMP_CD
+		         ,BG.DISP_ORD
+	</select>
 </mapper>
 
 

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

@@ -280,7 +280,7 @@
 		     , TB_POLL_ANSWER B
 		WHERE  A.POLL_QSQ = B.POLL_QSQ
 		GROUP  BY B.ANS_CUST_NO
-		         ,B.REG_DT 
+		         ,DATE_FORMAT(B.REG_DT, '%Y-%m-%d')
 		         ,B.ANS_INDEX
 		         ,A.POLL_SQ
 		)Z

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

@@ -1,857 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.style24.admin.biz.dao.TsaShoplinkerDao">
-
-	<!-- 샵링커 전송 이력 -->
-	<insert id="insertShoplinerApiHst" parameterType="ShoplinkerGoods">
-		/* TsaShoplinkerDao.insertShoplinerApiHst */
-		INSERT INTO SHOPLINKER_SYNC_HST (
-		      LOG_SQ
-			, API_TYPE
-			, API_RESULT
-			, API_MESSAGE
-			, API_PRODUCT_ID
-			, GOODS_CD
-			, OPT_CD
-			, QTY
-			, ORD_DTL_NO
-			, XML_TXT
-			, REG_NO
-			, REG_DT
-		)
-		VALUES (
-		      null
-		    , #{apiType}
-			, #{apiResult}
-			, #{apiMessage}
-			, #{apiProductId}
-			, #{goodsCd}
-			, #{optCd}
-			, #{quantity}
-			, #{ordDtlNo}
-			, #{xmlTxt}
-			, #{regNo}
-		    , NOW()
-		)
-	</insert>
-
-	<!-- 샵링커 api 호출 가능여부   -->
-	<select id="getCallRunableInfo" parameterType="ShoplinkerSearch" resultType="ShoplinkerSearch">
-		/* TsaShoplinkerDao.getCallRunableInfo */
-		SELECT
-			SID
-			, RUN_STAT
-			, RUN_STDT
-			, RUN_EDDT
-			, TXT
-			, (SELECT COUNT(1) FROM SHOPLINKER_RUNABLE S WHERE S.API_TYPE = A.API_TYPE AND S.RUN_EDDT IS NULL
-				<if test='apiType != null and apiType == "GOODS"'>AND REG_NO = #{regNo}</if>
-			  ) AS RUN_CNT
-			, (SELECT COUNT(1) FROM SHOPLINKER_ORDER S WHERE S.EXTMALL_REG_YN = 'N' AND S.SKU_MATCH_CODE != '') AS REMAIN_EXT_CNT
-			, (SELECT COUNT(1) FROM TB_EXTMALL_ORDER_UPLOAD WHERE UPLOAD_STAT = 'G021_00' AND UPLOAD_GB = 'S') AS REMAIN_STYLE_CNT
-		FROM SHOPLINKER_RUNABLE A
-		WHERE A.API_TYPE = #{apiType}
-		ORDER BY RUN_STDT DESC
-		LIMIT 1
-	</select>
-
-	<!-- 샵링커 api 호출 가능여부 상태 저장  -->
-	<insert id="saveCallApiRunable" parameterType="ShoplinkerSearch">
-		/* TsaShoplinkerDao.saveCallApiRunable */
-		INSERT INTO SHOPLINKER_RUNABLE (
-		    SID
-		    , API_TYPE
-			, RUN_STDT
-			, RUN_EDDT
-			, RUN_STAT
-			, REG_NO
-			, TXT
-		)
-		VALUES (
-			#{sid}
-		    , #{apiType}
-			, NOW()
-			, null
-			, 'START'
-			, #{regNo}
-			, null
-		) ON DUPLICATE KEY UPDATE
-		  	RUN_EDDT = NOW()
-			, RUN_STAT = #{runStat}
-			, TXT = CONCAT(ifnull(TXT, ''), #{txt})
-	</insert>
-
-	<!-- 샵링커 api 호출 가능여부 상태 수정  -->
-	<update id="updateCallApiRunable" parameterType="ShoplinkerSearch">
-	/* ShoplinkerGoods.updateCallApiRunable */
-		UPDATE SHOPLINKER_RUNABLE
-		SET
-			RUN_STAT = #{runStat}
-			, TXT = CONCAT(ifnull(TXT, ''), #{txt})
-			<if test='runStat != null and runStat == "END"'>
-			, RUN_EDDT = NOW()
-			</if>
-		WHERE SID = #{sid}
-	</update>
-
-
-	<!-- 상품등록-단품 목록 조회 -->
-	<select id="getOptionList" parameterType="ShoplinkerGoods" resultType="ShoplinkerGoods">
-		/* ShoplinkerGoods.getOptionList */
-		SELECT
-			A.GOODS_CD
-			, B.OPT_CD AS PARTNER_PRODUCT_ID
-			, B.OPT_CD
-			, B.OPT_CD1
-			, B.OPT_CD2
-		   /*, IF(B.CURR_STOCK_QTY - B.BASE_STOCK_QTY <![CDATA[<]]> 1, 1 , B.CURR_STOCK_QTY - B.BASE_STOCK_QTY) AS QUANTITY -- 기준재고(안전재고)수량
-		   , B.STORE_STOCK_QTY -- 매장재고수량
-		   , B.CURR_STOCK_QTY -- 현재고수량
-		   */
-			, A.SELF_GOODS_YN
-			, IF(VS.CURR_STOCK_QTY <![CDATA[<]]> 1, 1, VS.CURR_STOCK_QTY) AS QUANTITY   	-- 현재고
-			, VS.BASE_STOCK_QTY 	-- 안전재고
-		FROM VW_STOCK VS inner join tb_goods A on VS.GOODS_CD = A.GOODS_CD
-		INNER JOIN tb_option B on VS.GOODS_CD = B.GOODS_CD AND A.GOODS_CD = B.GOODS_CD and VS.OPT_CD = B.OPT_CD
-		WHERE VS.GOODS_CD = #{goodsCd}
-
-		ORDER BY cast(REPLACE(B.OPT_CD, '-', '') as unsigned)
-	</select>
-
-	<!-- 상품등록-상품 상세 -->
-	<select id="getGoods" parameterType="ShoplinkerGoods" resultType="ShoplinkerGoods">
-		/* TsaShoplinkerDao.getGoods */
-		SELECT
-			GOODS_CD
-			, A.BRAND_CD
-			, IFNULL((SELECT S.SYNC_YN FROM TB_EXTMALL_PRICE_SYNC S WHERE S.VENDOR_ID = 'G003_V001' and S.BRAND_CD = A.BRAND_CD), 'N') as SYNC_YN
-			, (SELECT REPLACE(REPLACE(BRAND_ENM, ' ', '_'), '\'', '') FROM TB_BRAND S WHERE S.BRAND_CD = A.BRAND_CD AND S.USE_YN = 'Y') AS BRAND_ENM
-			, '999999999' AS ATTRIBUTE_TITLE_CODE
-			, (SELECT GROUP_CONCAT(OPT_CD ORDER BY CAST(REPLACE(OPT_CD, '-', '') AS UNSIGNED) SEPARATOR ',')  FROM TB_OPTION S WHERE A.GOODS_CD = S.GOODS_CD) AS ATTRIBUTE_PARTNER_PRODUCT_ID
-			, GOODS_NM AS PRODUCT_NAME
-
-			, TOBE_FORM_YN
-			, (SELECT GOODS_DESC FROM TB_GOODS_DESC S WHERE A.GOODS_CD = S.GOODS_CD AND DESC_GB= '80' LIMIT 1) AS DETAIL_DESC
-			, (SELECT GOODS_DESC FROM TB_GOODS_DESC S WHERE A.GOODS_CD = S.GOODS_CD AND DESC_GB= '10' LIMIT 1) AS DETAIL_DESC_NEW_10
-			, (SELECT GOODS_DESC FROM TB_GOODS_DESC S WHERE A.GOODS_CD = S.GOODS_CD AND DESC_GB= '20' LIMIT 1) AS DETAIL_DESC_NEW_20
-			, (SELECT GOODS_DESC FROM TB_GOODS_DESC S WHERE A.GOODS_CD = S.GOODS_CD AND DESC_GB= '30' LIMIT 1) AS DETAIL_DESC_NEW_30
-			, (SELECT S.MODEL_INFO FROM TB_GOODS_MODEL_INFO S WHERE S.GOODS_CD = A.GOODS_CD) AS MODEL_INFO
-
-			, '' AS MARKET_PRICE -- 쇼핑몰시중가(도서정가)
-			, CURR_PRICE AS SALE_PRICE -- 쇼핑몰판매가
-			, LIST_PRICE AS SUPPLY_PRICE -- 쇼핑몰공급가
-			, '' AS MARKET_PRICE_P -- 매입처 시중가(도서정가)
-			, '' AS SALE_PRICE_P -- 매입처 판매가
-			, '' AS SUPPLY_PRICE_P -- 매입처 공급가
-			, '001' AS SALE_STATUS -- 상품판매상태
-			, MAKE_YMD AS MAKER_DT -- 발행일(제조일)
-			, '001' AS TAX_YN -- 과세
-			, '' AS NEW_DESC_TOP -- 신상세설명
-			, '전국' AS SALEAREA
-			-- , SEX_GB
-			-- , FN_GET_CODE_NM('G007', SEX_GB) AS SEX_NM
-			, (CASE SEX_GB WHEN 'G007_M' THEN '002' WHEN 'G007_F' THEN '003' ELSE '001' END) AS SEX -- 샵링커 성별
-			, GOODS_CD AS MODEL -- 모델명
-			, GOODS_CD AS MODEL_NO -- 모델NO
-			, (SELECT BRAND_ENM FROM TB_BRAND S WHERE A.BRAND_CD = S.BRAND_CD AND USE_YN = 'Y') AS BRAND -- 브랜드명
-			, ( SELECT CERT_NUM FROM TB_GOODS_SAFE_NO S WHERE A.GOODS_CD = S.GOODS_CD ) AS AUTH_NO -- 인증번호
-			, '20991231' AS EXPIRYDATE -- 유효일
-			, (SELECT NI_CONTENT FROM TB_GOODS_NOTI_INFO S WHERE A.GOODS_CD = S.GOODS_CD AND NI_ITEM_CD = 'G005_005') AS MAKER -- 제조업체
-			, IFNULL((select S.EXTMALL_ORIGIN_NM from TB_EXTMALL_ORIGIN S where S.ORIGIN_CD = A.ORIGIN_CD), '') AS ORIGIN -- 원산지명 OR 코드
-			, ADULT_YN AS ADULT_INFO -- 성인상품
-
-			, A.ITEMKIND_CD
-			, C.ITEMKIND_NM AS SHOPLINKER_ITEMKIND_NM
-			, C.SL_CATE1_CD AS CCATEGORY_L
-			, C.SL_CATE2_CD AS CCATEGORY_M
-			, C.SL_CATE3_CD AS CCATEGORY_S
-			, C.SL_CATE4_CD AS CCATEGORY_D
-
-			, MAIN_COLOR_CD
-			, SELF_GOODS_YN
-			, (SELECT COLOR_ENM FROM TB_COLOR WHERE COLOR_CD = MAIN_COLOR_CD) AS MAIN_COLOR_ENM
-			, (SELECT GROUP_CONCAT(opt_cd1 order BY cast(REPLACE(OPT_CD, '-', '') as unsigned) SEPARATOR ',')
-				FROM (
-				    SELECT
-				        GOODS_CD, opt_cd, opt_cd1
-				        , ROW_NUMBER() OVER (PARTITION BY opt_cd1 ORDER BY opt_cd ) AS RankNo
-				    FROM tb_option WHERE GOODS_CD = a.GOODS_CD
-				) T WHERE RankNo = 1
-			 ) as all_opt_cd1
-			, CASE
-				WHEN SUBSTRING(A.ITEMKIND_CD, 1, 2) = '08' || SUBSTRING(A.ITEMKIND_CD, 1, 2) = '09'
-					|| SUBSTRING(A.ITEMKIND_CD, 1, 2) = '10' || SUBSTRING(A.ITEMKIND_CD, 1, 2) = '11'
-					|| SUBSTRING(A.ITEMKIND_CD, 1, 2) = '12' || SUBSTRING(A.ITEMKIND_CD, 1, 2) = '13'
-			  	THEN 'Y'
-			  	ELSE 'N'
-			  END KIDS_YN
-		FROM TB_GOODS A
-			LEFT OUTER JOIN TB_ITEMKIND B ON A.ITEMKIND_CD = B.ITEMKIND_CD
- 			LEFT OUTER JOIN SHOPLINKER_CATE C ON B.ITEMKIND_CD = C.ITEMKIND_CD AND A.BRAND_CD = C.BRAND_CD
-		WHERE A.GOODS_CD = #{goodsCd}
-		AND A.SELF_GOODS_YN = 'Y'
-		limit 1
-
-	</select>
-
-	<!-- 상품등록-상품 이미지 조회 -->
-	<select id="getGoodsImageList" parameterType="ShoplinkerGoods" resultType="ShoplinkerGoods">
-		/* ShoplinkerGoods.getGoodsImageList */
-		SELECT
-			B.GOODS_CD
-		     , B.COLOR_CD
-		     , C.COLOR_KNM
-		     , B.DISP_ORD
-		     , B.SYS_IMG_NM
-		     , B.DEFAULT_IMG_YN
-		     , B.EXTMALL_IMG_YN
-		FROM   TB_GOODS A INNER JOIN TB_GOODS_IMG B ON A.GOODS_CD = B.GOODS_CD
-				LEFT OUTER JOIN TB_COLOR C ON B.COLOR_CD = C.COLOR_CD
-		WHERE A.GOODS_CD = #{goodsCd}
-		<if test='extmallImgYn != null and extmallImgYn == "Y"'>
-			AND A.MAIN_COLOR_CD = B.COLOR_CD
-        	AND (B.DEFAULT_IMG_YN = 'Y' OR B.EXTMALL_IMG_YN = 'Y')
-        </if>
-        <if test='colorListYn != null and colorListYn == "Y"'>
-
-        </if>
-		ORDER BY B.COLOR_CD, B.DISP_ORD
-	</select>
-
-	<!-- 상품등록-상품 사이즈 조회 -->
-	<select id="getGoodsSizeList" parameterType="ShoplinkerGoods" resultType="ShoplinkerGoods">
-		/* ShoplinkerGoods.getGoodsSizeList */
-		SELECT
-			 A.OPT_CD2
-			, B.TYPECD as SIZE_TYPECD
-			, B.VALUE1 as SIZE_VALUE1
-			, B.VALUE2 as SIZE_VALUE2
-			, B.VALUE3 as SIZE_VALUE3
-			, B.VALUE4 as SIZE_VALUE4
-			, B.VALUE5 as SIZE_VALUE5
-
-		FROM TB_OPTION A INNER JOIN TB_IF_MEASUREMENT B ON A.OPT_CD = B.SKUCODE /*A.PRODUCT_NO = B.PRODUCTNO*/
-		WHERE A.GOODS_CD = #{goodsCd}
-		GROUP BY A.OPT_CD2, B.TYPECD, B.VALUE1, B.VALUE2, B.VALUE3, B.VALUE4, B.VALUE5
-		ORDER BY A.OPT_CD2
-	</select>
-
-
-	<!-- 상품등록-고시정보 -->
-	<select id="getGoodsNotiList" parameterType="ShoplinkerGoods" resultType="ShoplinkerGoods">
-		/* TsaShoplinkerDao.getGoodsNotiList */
-		SELECT
-			A.GOODS_CD as partner_product_id
-			, A.GOODS_NM
-			/*, B.NI_CLSF_CD
-			, B.NI_ITEM_CD */
-			, C.NI_CLSF_CD
-			, C.NI_ITEM_CD
-			, C.EXTMALL_NI_CLSF_CD as lclass_id
-			, C.EXTMALL_NI_ITEM_CD as item_seq
-			, B.NI_CONTENT as item_info
-			, FN_GET_CODE_NM('G005', C.NI_ITEM_CD) AS NI_CONTENT_INFO
-			, A.SELF_GOODS_YN = 'Y'
-		FROM TB_GOODS A INNER JOIN TB_GOODS_NOTI_INFO B INNER JOIN TB_EXTMALL_NOTI_INFO C
-		ON A.GOODS_CD = B.GOODS_CD
-		AND B.NI_CLSF_CD = C.NI_CLSF_CD
-		AND B.NI_ITEM_CD = C.NI_ITEM_CD
-		AND A.GOODS_CD = #{goodsCd}
-	</select>
-
-	<!-- 상품등록-인증정보 -->
-	<select id="getCert" parameterType="ShoplinkerGoods" resultType="ShoplinkerGoods">
-		/* TsaShoplinkerDao.getCert */
-		SELECT
-			B.GOODS_CD AS PARTNER_PRODUCT_ID
-			, CASE B.CERT_ORGAN_NAME
-				WHEN NULL THEN '.' WHEN '' THEN '.'
-				ELSE B.CERT_ORGAN_NAME
-			 END AS CERT_ORGAN
-			, IFNULL(B.CERT_NUM, '') AS CERT_NO
-			, A.SELF_GOODS_YN
-
-			, B.CERT_TARGET_GB
-			, FN_GET_CODE_NM('G083', CERT_TARGET_GB) AS CERT_TARGET_NM
-			, CERT_FORM_GB
-			, FN_GET_CODE_NM('G084', CERT_FORM_GB) AS CERT_FORM_NM
-			, CERT_TYPE
-			, FN_GET_CODE_NM('G081', CERT_TYPE) AS CERT_TYPE_NM
-			, CERT_NUM
-			, CERT_STATE
-			, CERT_DIV
-			, CERT_ORGAN_NAME
-			, CERT_DT
-		FROM TB_GOODS A INNER JOIN TB_GOODS_SAFE_NO B
-		ON A.GOODS_CD = B.GOODS_CD
-		WHERE A.GOODS_CD = #{goodsCd}
-	</select>
-
-	<!-- 상품등록-상품 목록 건수 -->
-	<select id="getGoodsSendListCount" parameterType="ShoplinkerSearch" resultType="int">
-		/* ShoplinkerGoods.getGoodsSendListCount */
-		SELECT COUNT(1) FROM
-		(
-			SELECT
-				 B.GOODS_NM
-				, B.BRAND_CD
-				, A.*
-				, fn_get_user_nm(A.REG_NO) AS REG_NM
-			FROM SHOPLINKER_SYNC_HST A
-			LEFT OUTER JOIN TB_GOODS B ON A.GOODS_CD = B.GOODS_CD
-		) A
-		WHERE 1=1
-		<include refid="getListCondition_sql"/>
-	</select>
-
-	<!-- 상품등록-상품 목록 -->
-	<select id="getGoodsSendList" parameterType="ShoplinkerSearch" resultType="ShoplinkerGoods">
-		/* ShoplinkerGoods.getGoodsSendList */
-		SELECT * FROM
-		(
-			SELECT
-				 B.GOODS_NM
-				, B.BRAND_CD
-				, A.*
-				, fn_get_user_nm(A.REG_NO) AS REG_NM
-			FROM SHOPLINKER_SYNC_HST A
-			LEFT OUTER JOIN TB_GOODS B ON A.GOODS_CD = B.GOODS_CD
-		) A
-		WHERE 1=1
-		<include refid="getListCondition_sql"/>
-
-		LIMIT #{pageable.limitStartRow} ,  #{pageable.pageSize}
-
-	</select>
-
-	<!-- 상품 목록 조건 정보 -->
-	<sql id="getListCondition_sql">
-
-		        <if test="goodsCd != null and goodsCd != ''">
-		        AND UPPER(A.GOODS_CD) LIKE CONCAT('%',UPPER(#{goodsCd}),'%')
-		        </if>
-		        <if test="arrGoodsCd != null and arrGoodsCd.length>0">
-		        AND UPPER(A.GOODS_CD) IN
-		            <foreach collection="arrGoodsCd" item="item" index="index"  open="(" close=")" separator=",">
-		        UPPER(#{item})
-		            </foreach>
-		        </if>
-		         <if test="goodsNm != null and goodsNm != ''">
-		        AND UPPER(A.GOODS_NM) LIKE CONCAT('%',UPPER(#{goodsNm}),'%')
-		        </if>
-		        <if test="brandCd != null and brandCd != ''">
-		        AND A.BRAND_CD = #{brandCd}
-		        </if>
-		        <if test="multiBrand != null and multiBrand != ''">
-		        AND A.BRAND_CD IN
-		            <foreach collection="multiBrand" item="item" index="index"  open="(" close=")" separator=",">
-		        #{item}
-		            </foreach>
-		        </if>
-
-	            <if test="stDate != null and stDate != ''">
-		        AND A.REG_DT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
-	            </if>
-	            <if test="edDate != null and edDate != ''">
-	            <![CDATA[
-		        AND A.REG_DT < DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
-	            ]]>
-	            </if>
-
-		        <if test="apiType != null and apiType != ''">
-		        AND API_TYPE = #{apiType}
-		        </if>
-		        <if test="apiType == null or apiType == ''">
-		        AND API_TYPE in ('OPTION','PRODUCT','NOTI','CERT','IMAGE')
-		        </if>
-
-		        <if test="apiResult != null and apiResult != ''">
-		        AND API_RESULT = #{apiResult}
-		        </if>
-
-	</sql>
-
-
-	<!-- 샵링커주문수집 - 주문수집등록 -->
-	<insert id="insertShoplinkerOrder" parameterType="ShoplinkerOrder">
-		/* TsaShoplinkerDao.insertShoplinkerOrder */
-		INSERT INTO SHOPLINKER_ORDER (
-			ORDER_IF_IDX
-		    , SHOPLINKER_ORDER_ID
-			, MALL_ORDER_ID
-			, MALL_NAME
-			, BAESONG_STATUS
-			, ORDER_NAME
-			, ORDER_TEL
-			, ORDER_CEL
-			, ORDER_EMAIL
-			, RECEIVE
-			, RECEIVE_TEL
-			, RECEIVE_CEL
-			, RECEIVE_ZIPCODE
-			, RECEIVE_ADDR
-			, BAESONG_TYPE
-			, BAESONG_BI
-			, DELIVERY_MSG
-			, ORDER_PRODUCT_ID
-			, SHOPLINKER_PRODUCT_ID
-			, PARTNER_PRODUCT_ID
-			, PRODUCT_NAME
-			, QUANTITY
-			, ORDER_PRICE
-			, SALE_PRICE
-			, SUPPLY_PRICE
-			, SKU
-			, ORDERDATE
-			, ORDER_REG_DATE
-			, DELIVERY_INVOICE
-			, ORDER_SEQ
-			, TOTAL_COUNT
-			, TOTAL_PAGE
-			, TOTAL_STANDARD_COUNT
-			, CURRENTLY_PAGE
-			, CURRENTLY_COUNT
-			, SELLER_ID
-			, ONLY_SKU
-			, ADD_SKU
-			, MALL_ID
-			, DIS_PRICE_MALL
-			, DIS_PRICE_SELLER
-			, DIS_PRICE_COUPON
-			, DIS_PRICE_POINT
-			, DISTRIBUTION_DELIVERY
-			, SKU_MATCH_CODE
-			, SKU_BARCODE
-			, ORDER_CUSTOMS_NUMBER
-			, ORDER_INPUT_TYPE
-			, SUPPLY_ID
-			, DELIVERY
-			, ORDER_USER_ID
-			, CRSPIK_USE
-			, SHIP_NO
-			, DEAL_NO
-			, EXCHANGE_ORDER_YN
-			, ORDER_MAIN_KEY
-			, PAN_TYPE
-			, CHANNEL_TYPE
-			, SHIP_RSV_DATE
-			, EXTMALL_REG_YN
-			, REG_DT
-		)
-		SELECT
-			#{orderIfIdx}
-		    , #{shoplinkerOrderId}
-			, #{mallOrderId}
-			, #{mallName}
-			, #{baesongStatus}
-			, #{orderName}
-			, #{orderTel}
-			, #{orderCel}
-			, #{orderEmail}
-			, #{receive}
-			, #{receiveTel}
-			, #{receiveCel}
-			, #{receiveZipcode}
-			, #{receiveAddr}
-			, #{baesongType}
-			, #{baesongBi}
-			, #{deliveryMsg}
-			, #{orderProductId}
-			, #{shoplinkerProductId}
-			, #{partnerProductId}
-			, #{productName}
-			, #{quantity}
-			, #{orderPrice}
-			, #{salePrice}
-			, #{supplyPrice}
-			, #{sku}
-			, #{orderdate}
-			, #{orderRegDate}
-			, #{deliveryInvoice}
-			, #{orderSeq}
-			, #{totalCount}
-			, #{totalPage}
-			, #{totalStandardCount}
-			, #{currentlyPage}
-			, #{currentlyCount}
-			, #{sellerId}
-			, #{onlySku}
-			, #{addSku}
-			, #{mallId}
-			, #{disPriceMall}
-			, #{disPriceSeller}
-			, #{disPriceCoupon}
-			, #{disPricePoint}
-			, #{distributionDelivery}
-			, #{skuMatchCode}
-			, #{skuBarcode}
-			, #{orderCustomsNumber}
-			, #{orderInputType}
-			, #{supplyId}
-			, #{delivery}
-			, #{orderUserId}
-			, #{crspikUse}
-			, #{shipNo}
-			, #{dealNo}
-			, #{exchangeOrderYn}
-			, #{orderMainKey}
-			, #{panType}
-			, #{channelType}
-			, #{shipRsvDate}
-			, 'N'
-			, NOW()
-		FROM DUAL
-		WHERE NOT EXISTS(SELECT 1 FROM SHOPLINKER_ORDER WHERE SHOPLINKER_ORDER_ID = #{shoplinkerOrderId} )
-
-	</insert>
-
-	<!-- 샵링커주문수집-목록 건수 cnt -->
-	<select id="getShoplinkerOrderListCount" parameterType="ShoplinkerOrder" resultType="int">
-		/* ShoplinkerGoods.getShoplinkerOrderListCount */
-		select count(1) from (
-			SELECT
-				A.*
-				, B.VENDOR_ID
-				, B.EXTMALL_ID
-				, B.EXTMALL_NM
-				, B.AGENT_ORDER_ID
-				, B.UPLOAD_STAT
-				, B.UPLOAD_FAIL_CD
-				, B.UPLOAD_FAIL_REASON
-				, IFNULL(B.ORD_NO, '') AS ORD_NO
-				, B.DELV_ADDR_SQ
-			FROM SHOPLINKER_ORDER A
-				INNER JOIN TB_EXTMALL_ORDER_UPLOAD B
-					ON A.SHOPLINKER_ORDER_ID = B.AGENT_ORDER_ID
-					AND A.MALL_ORDER_ID = B.EXTMALL_ORDER_ID
-			WHERE A.SKU_MATCH_CODE IS NOT NULL
-			AND A.SKU_MATCH_CODE != ''
-			AND B.UPLOAD_GB = 'S'
-		) A
-		WHERE 1=1
-		<include refid="getSlkOrderListCondition_sql"/>
-
-	</select>
-
-	<!-- 샵링커주문수집-목록 -->
-	<select id="getShoplinkerOrderList" parameterType="ShoplinkerOrder" resultType="ShoplinkerOrder">
-		/* ShoplinkerGoods.getShoplinkerOrderList */
-		SELECT * FROM
-		(
-			SELECT
-				A.*
-				, B.VENDOR_ID
-				, B.EXTMALL_ID
-				, B.EXTMALL_NM
-				, B.AGENT_ORDER_ID
-				, B.UPLOAD_STAT
-				, B.UPLOAD_FAIL_CD
-				, B.UPLOAD_FAIL_REASON
-				, IFNULL(B.ORD_NO, '') AS ORD_NO
-				, B.DELV_ADDR_SQ
-			FROM SHOPLINKER_ORDER A
-				INNER JOIN TB_EXTMALL_ORDER_UPLOAD B
-					ON A.SHOPLINKER_ORDER_ID = B.AGENT_ORDER_ID
-					AND A.MALL_ORDER_ID = B.EXTMALL_ORDER_ID
-			WHERE A.SKU_MATCH_CODE IS NOT NULL
-			AND A.SKU_MATCH_CODE != ''
-			AND B.UPLOAD_GB = 'S'
-		) A
-		WHERE 1=1
-		<include refid="getSlkOrderListCondition_sql"/>
-		ORDER BY REG_DT DESC
-		LIMIT #{pageable.limitStartRow} ,  #{pageable.pageSize}
-
-	</select>
-
-	<!-- 샵링커주문수집-상세 -->
-	<select id="getShoplinkerOrderInfo" parameterType="ShoplinkerOrder" resultType="ShoplinkerOrder">
-		/* ShoplinkerGoods.getShoplinkerOrderInfo */
-		SELECT
-			*
-		FROM SHOPLINKER_ORDER
-		WHERE SHOPLINKER_ORDER_ID = #{shoplinkerOrderId}
-	</select>
-
-	<!-- 샵링커주문수집- 제휴몰 주문업로드여부 업데이트  -->
-	<update id="updateShoplinkerOrder" parameterType="ShoplinkerOrder">
-	/* ShoplinkerGoods.updateShoplinkerOrder */
-		UPDATE SHOPLINKER_ORDER
-		SET
-			EXTMALL_REG_YN = 'Y'
-		WHERE MALL_ID = #{mallId}
-		AND MALL_ORDER_ID = #{mallOrderId}
-		AND SHOPLINKER_ORDER_ID = #{shoplinkerOrderId}
-	</update>
-
-	<!-- 샵링커주문수집 조건 정보 -->
-	<sql id="getSlkOrderListCondition_sql">
-
-			<if test="dtGb != null and dtGb == 'orderRegDate'">
-				<if test="stDate != null and stDate != ''">
-		        AND A.ORDER_REG_DATE >= DATE_FORMAT(replace(#{stDate}, '-', ''), '%Y%m%d%H%i%S')
-	            </if>
-	            <if test="edDate != null and edDate != ''">
-	            <![CDATA[
-		        AND A.ORDER_REG_DATE < DATE_FORMAT(DATE_ADD(replace(#{edDate}, '-', ''), INTERVAL 1 DAY), '%Y%m%d%H%i%S')
-	            ]]>
-	            </if>
-			</if>
-			<if test="dtGb != null and dtGb == 'orderdate'">
-				<if test="stDate != null and stDate != ''">
-		        AND A.ORDERDATE >= DATE_FORMAT(replace(#{stDate}, '-', ''), '%Y%m%d%H%i%S')
-	            </if>
-	            <if test="edDate != null and edDate != ''">
-	            <![CDATA[
-		        AND A.ORDERDATE < DATE_FORMAT(DATE_ADD(replace(#{edDate}, '-', ''), INTERVAL 1 DAY), '%Y%m%d%H%i%S')
-	            ]]>
-	            </if>
-			</if>
-
-			<if test="extmallId != null and extmallId != ''">
-	        AND MALL_ID = #{extmallId}
-	        </if>
-
-			<if test="uploadStat != null and uploadStat != ''">
-	        AND UPLOAD_STAT = #{uploadStat}
-	        </if>
-	        <if test="uploadFailCd != null and uploadFailCd != ''">
-	        AND UPLOAD_FAIL_CD = #{uploadFailCd}
-	        </if>
-
-	        <if test="shoplinkerOrderId != null and shoplinkerOrderId != ''">
-	        AND SHOPLINKER_ORDER_ID = #{shoplinkerOrderId}
-	        </if>
-	        <if test="mallOrderId != null and mallOrderId != ''">
-	        AND MALL_ORDER_ID = #{mallOrderId}
-	        </if>
-	        <if test="ordNo != null and ordNo != ''">
-	        AND ORD_NO = #{ordNo}
-	        </if>
-	</sql>
-
-
-	<!-- 제휴몰 주문등록 상세 -->
-	<select id="getExtmallOrderInfo" parameterType="String" resultType="ExtmallOrder">
-		/* ShoplinkerGoods.getExtmallOrderInfo */
-		SELECT
-			A.*
-			, FN_GET_USER_NM(A.REG_NO) AS REG_NM
-			, FN_GET_CODE_NM('G021', UPLOAD_STAT) AS UPLOAD_STAT_NM
-			, FN_GET_CODE_NM('G022', UPLOAD_FAIL_CD) AS UPLOAD_FAIL_NM
-			, FN_GET_CODE_NM('G003', A.VENDOR_ID) AS VENDOR_NM
-		FROM TB_EXTMALL_ORDER_UPLOAD A
-		WHERE AGENT_ORDER_ID = #{agentOrderId}
-		AND A.UPLOAD_GB = 'S'
-
-	</select>
-
-	<!-- 제휴몰 주문등록 대상목록 SKU_MATCH_CODE가 없는 것은 딜상품(딜상품은 엑셀 수동등록)-->
-	<select id="getShoplinkerRegExtmallList" parameterType="ShoplinkerOrder" resultType="ShoplinkerOrder">
-		SELECT
-			  A.*
-		FROM SHOPLINKER_ORDER A
-		WHERE A.EXTMALL_REG_YN = 'N'
-		AND A.SKU_MATCH_CODE IS NOT NULL
-		AND A.SKU_MATCH_CODE != ''
-		ORDER BY A.MALL_ID, A.MALL_ORDER_ID, A.SHOPLINKER_ORDER_ID
-	</select>
-
-
-	<!-- 송장전송-전송 목록 건수 cnt -->
-	<select id="getSendInvoiceListCount" parameterType="ShoplinkerInvoice" resultType="int">
-		/* ShoplinkerGoods.getSendInvoiceListCount */
-		select count(1) from (
-			SELECT
-				OD.ORD_NO
-				, OD.ORD_DTL_NO
-				, (SELECT SHIP_COMP_NM FROM TB_SHIP_COMPANY S WHERE S.SHIP_COMP_CD = OD.SHIP_COMP_CD ) AS SHIP_COMP_NM
-				, OD.SHIP_COMP_CD AS DELIVERY_CODE-- 배송업체(택배사코드)
-				, OD.INVOICE_NO AS DELIVERY_INVOICE-- 송장번호
-
-				, OD.VENDOR_ID -- 외부몰벤더ID
-				, OD.EXTMALL_ID -- 외부몰ID(외부몰)
-				, OD.AGENT_ORDER_ID -- 에이전트주문번호
-				, OD.EXTMALL_ORDER_ID -- 외부몰주문번호
-				, OD.DELV_ASSIGN_STAT -- 출고지정상태(P:대기,Y:수락,N:거부)
-				, OD.ORD_EXCH_GB -- 주문교환구분(O:주문,E:교환)
-				, OD.ORD_DTL_STAT -- 주문상세상태(공통코드G013)
-				, FN_GET_CODE_NM('G013', OD.ORD_DTL_STAT) AS ORD_DTL_STAT_NM
-				, OD.DELV_STDT
-
-				, SL.API_RESULT
-				, SL.API_MESSAGE
-				, SL.XML_TXT
-				, FN_GET_USER_NM(SL.REG_NO) AS REG_NM
-			FROM
-				TB_ORDER_DETAIL OD
-				LEFT OUTER JOIN SHOPLINKER_SYNC_HST SL ON OD.ORD_DTL_NO = SL.ORD_DTL_NO AND SL.API_TYPE = 'INVOICE'
-			WHERE OD.VENDOR_ID = 'G003_V001'
-			ORDER BY OD.ORD_NO, OD.ORD_DTL_NO
-		) A
-		WHERE 1=1
-		<include refid="getSlkInvoiceCondition_sql"/>
-
-	</select>
-
-	<!-- 송장전송-전송 목록 -->
-	<select id="getSendInvoiceList" parameterType="ShoplinkerInvoice" resultType="ShoplinkerInvoice">
-		/* TsaShoplinkerDao.getSendInvoiceList */
-		SELECT * FROM
-		(
-			SELECT
-				OD.ORD_NO
-				, OD.ORD_DTL_NO
-				, (SELECT SHIP_COMP_NM FROM TB_SHIP_COMPANY S WHERE S.SHIP_COMP_CD = OD.SHIP_COMP_CD ) AS SHIP_COMP_NM
-				, OD.SHIP_COMP_CD AS DELIVERY_CODE-- 배송업체(택배사코드)
-				, OD.INVOICE_NO AS DELIVERY_INVOICE-- 송장번호
-
-				, OD.VENDOR_ID -- 외부몰벤더ID
-				, OD.EXTMALL_ID -- 외부몰ID(외부몰)
-				, OD.AGENT_ORDER_ID -- 에이전트주문번호
-				, OD.EXTMALL_ORDER_ID -- 외부몰주문번호
-				, OD.DELV_ASSIGN_STAT -- 출고지정상태(P:대기,Y:수락,N:거부)
-				, OD.ORD_EXCH_GB -- 주문교환구분(O:주문,E:교환)
-				, OD.ORD_DTL_STAT -- 주문상세상태(공통코드G013)
-				, FN_GET_CODE_NM('G013', OD.ORD_DTL_STAT) AS ORD_DTL_STAT_NM
-				, OD.DELV_STDT
-
-				, SL.API_RESULT
-				, SL.API_MESSAGE
-				, SL.XML_TXT
-				, FN_GET_USER_NM(SL.REG_NO) AS REG_NM
-			FROM
-				TB_ORDER_DETAIL OD
-				LEFT OUTER JOIN SHOPLINKER_SYNC_HST SL ON OD.ORD_DTL_NO = SL.ORD_DTL_NO AND SL.API_TYPE = 'INVOICE'
-			WHERE OD.VENDOR_ID = 'G003_V001'
-			ORDER BY OD.ORD_NO, OD.ORD_DTL_NO
-		) A
-		WHERE 1=1
-		<include refid="getSlkInvoiceCondition_sql"/>
-
-		LIMIT #{pageable.limitStartRow} ,  #{pageable.pageSize}
-	</select>
-
-	<!-- 송장전송-상세목록 -->
-	<select id="getShoplinkerInvoiceOrdDtlList" parameterType="ShoplinkerInvoice" resultType="ShoplinkerInvoice">
-		/* TsaShoplinkerDao.getShoplinkerInvoiceOrdDtlList */
-		SELECT
-			B.ORD_NO
-			, B.ORD_DTL_NO
-
-		  	, C.SHIP_COMP_NM AS DELIVERY_NAME -- 택배사명
-			, B.SHIP_COMP_CD AS DELIVERY_CODE-- 배송업체(택배사코드)
-			, B.INVOICE_NO AS DELIVERY_INVOICE-- 송장번호
-
-			, B.VENDOR_ID -- 외부몰벤더ID
-			, B.EXTMALL_ID -- 외부몰ID(외부몰)
-			, (select EXTMALL_NM from tb_extmall te where TE.USE_YN = 'N' and TE.EXTMALL_ID = B.EXTMALL_ID) as EXTMALL_NM
-			, B.AGENT_ORDER_ID -- 에이전트주문번호
-			, B.EXTMALL_ORDER_ID -- 외부몰주문번호
-			, DELV_ASSIGN_STAT -- 출고지정상태(P:대기,Y:수락,N:거부)
-			, ORD_EXCH_GB -- 주문교환구분(O:주문,E:교환)
-			, ORD_DTL_STAT -- 주문상세상태(공통코드G013)
-			, FN_GET_CODE_NM('G013', ORD_DTL_STAT) AS ORD_DTL_STAT_NM
-		from
-			TB_ORDER A
-			inner join TB_ORDER_DETAIL B on A.ORD_NO = B.ORD_NO
-		  	inner join TB_SHIP_COMPANY C on B.SHIP_COMP_CD = C.SHIP_COMP_CD
-
-		WHERE A.MALL_GB = 'G011_20'
-		and VENDOR_ID = 'G003_V001'
-	 	and B.INVOICE_NO is not null
-	 	and B.ORD_DTL_STAT = 'G013_50' -- 배송중
-		and DATE_FORMAT(B.DELV_STDT, '%Y-%m-%d' ) between DATE_FORMAT(#{stDate}, '%Y-%m-%d') and DATE_FORMAT(#{edDate}, '%Y-%m-%d')
-		and DATE_SUB(NOW(), INTERVAL 14 DAY) <![CDATA[ < ]]> DELV_STDT
-		and NOT EXISTS(SELECT 1 FROM SHOPLINKER_SYNC_HST s
-			where s.API_TYPE = 'INVOICE' and s.ord_dtl_no = B.ord_dtl_no
-			and api_result = 'true'
-			)
-		ORDER BY ORD_NO, ORD_DTL_NO
-	</select>
-
-	<!-- 상품 목록 조건 정보 -->
-	<sql id="getSlkInvoiceCondition_sql">
-
-			<if test="stDate != null and stDate != ''">
-	        AND DELV_STDT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
-            </if>
-            <if test="edDate != null and edDate != ''">
-            <![CDATA[
-	        AND DELV_STDT < DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
-            ]]>
-            </if>
-
-			<if test="extmallId != null and extmallId != ''">
-	        AND EXTMALL_ID = #{extmallId}
-	        </if>
-
-	        <if test="apiResult != null and apiResult != ''">
-	        AND API_RESULT = #{apiResult}
-	        </if>
-
-	        <if test="agentOrderId != null and agentOrderId != ''">
-	        AND AGENT_ORDER_ID = #{agentOrderId}
-	        </if>
-	        <if test="extmallOrderId != null and extmallOrderId != ''">
-	        AND EXTMALL_ORDER_ID = #{extmallOrderId}
-	        </if>
-	        <if test="ordNo != null and ordNo != ''">
-	        AND ORD_NO = #{ordNo}
-	        </if>
-	</sql>
-
-
-	<!-- 재고전송-목록 건수 -->
-	<select id="getStockListCount" parameterType="ShoplinkerSearch" resultType="int">
-		/* ShoplinkerGoods.getStockListCount */
-		SELECT COUNT(1) FROM (
-			SELECT
-				A.*
-				, B.GOODS_NM
-				, C.OPT_CD1
-				, C.OPT_CD2
-			FROM
-				SHOPLINKER_SYNC_HST A
-				INNER JOIN TB_GOODS B ON A.GOODS_CD = B.GOODS_CD
-				INNER JOIN TB_OPTION C ON A.GOODS_CD = C.GOODS_CD AND A.OPT_CD = C.OPT_CD
-			WHERE A.API_TYPE = 'STOCK'
-			ORDER BY A.REG_DT DESC, A.GOODS_CD, A.OPT_CD
-		) A
-		WHERE 1=1
-		<include refid="getListCondition_sql"/>
-
-	</select>
-
-	<!-- 재고전송-목록 -->
-	<select id="getStockListList" parameterType="ShoplinkerSearch" resultType="ShoplinkerGoods">
-		/* ShoplinkerGoods.getStockListList */
-		SELECT * FROM
-		(
-			SELECT
-				A.API_TYPE
-				, A.API_RESULT
-				, A.API_MESSAGE
-				, A.GOODS_CD
-				, A.OPT_CD
-				, A.QTY as QUANTITY
-				, A.REG_DT
-				, B.GOODS_NM
-				, C.OPT_CD1
-				, C.OPT_CD2
-			FROM
-				SHOPLINKER_SYNC_HST A
-				INNER JOIN TB_GOODS B ON A.GOODS_CD = B.GOODS_CD
-				INNER JOIN TB_OPTION C ON A.GOODS_CD = C.GOODS_CD AND A.OPT_CD = C.OPT_CD
-			WHERE A.API_TYPE = 'STOCK'
-			ORDER BY A.REG_DT DESC, A.GOODS_CD, A.OPT_CD
-		) A
-		WHERE 1=1
-		<include refid="getListCondition_sql"/>
-
-		LIMIT #{pageable.limitStartRow} ,  #{pageable.pageSize}
-	</select>
-
-</mapper>
-
-

+ 27 - 8
src/main/java/com/style24/persistence/mybatis/shop/TsaWithdraw.xml

@@ -160,7 +160,7 @@
 					AND A.USER_NAME_CREATED = #{userNameCreated}
 					</if>					
 				) A
-				LEFT OUTER JOIN TB_ORDER_CHANGE_DETAIL  CD ON A.ORDER_DTL_NO = CD.ORD_DTL_NO AND CD.DEL_YN ='N'
+				LEFT OUTER JOIN TB_ORDER_CHANGE_DETAIL  CD ON A.ORDER_DTL_NO = CD.ORD_DTL_NO AND CD.DEL_YN ='N' AND CD.CHG_STAT = 'G685_31'
 				LEFT OUTER JOIN TB_ORDER_CHANGE         OC ON CD.ORD_CHG_SQ = OC.ORD_CHG_SQ 
 				WHERE 1=1
 				<if test='chgGb != null and chgGb != "" and chgGb !="G680"'>
@@ -248,7 +248,7 @@
 							AND A.USER_NAME_CREATED = #{userNameCreated}
 							</if>
 				) A
-				LEFT OUTER JOIN TB_ORDER_CHANGE_DETAIL  CD ON A.ORDER_DTL_NO = CD.ORD_DTL_NO AND CD.DEL_YN ='N'
+				LEFT OUTER JOIN TB_ORDER_CHANGE_DETAIL  CD ON A.ORDER_DTL_NO = CD.ORD_DTL_NO AND CD.DEL_YN ='N' AND CD.CHG_STAT = 'G685_31'
 				LEFT OUTER JOIN TB_ORDER_CHANGE         OC ON CD.ORD_CHG_SQ = OC.ORD_CHG_SQ 
 				WHERE 1=1
 				<if test='chgGb != null and chgGb != "" and chgGb !="G680"'>
@@ -259,7 +259,7 @@
 				</if>
 				ORDER BY A.ORDER_NO, A.RECALL_EXCEPTION_NO, A.RECALL_EXCEPTION_ITEM_NO
 	<include refid="getListPagingCondition_sql"/> 
-	      WINDOW W AS (PARTITION BY ORDER_NO ORDER BY ORDER_NO , RECALL_EXCEPTION_ITEM_NO desc), T AS (PARTITION BY ORDER_NO ORDER BY ORDER_NO , RECALL_EXCEPTION_ITEM_NO ), S AS (PARTITION BY ORDER_NO, ORDER_DTL_NO ORDER BY ORDER_NO ,  ORDER_DTL_NO, RECALL_EXCEPTION_ITEM_NO DESC ), C AS (PARTITION BY ORDER_NO, ORDER_DTL_NO ORDER BY ORDER_NO, ORDER_DTL_NO)
+	      WINDOW W AS (PARTITION BY ORDER_NO ORDER BY ORDER_NO , RECALL_EXCEPTION_ITEM_NO ), T AS (PARTITION BY ORDER_NO ORDER BY ORDER_NO , RECALL_EXCEPTION_ITEM_NO desc), S AS (PARTITION BY ORDER_NO, ORDER_DTL_NO ORDER BY ORDER_NO ,  ORDER_DTL_NO, RECALL_EXCEPTION_ITEM_NO DESC ), C AS (PARTITION BY ORDER_NO, ORDER_DTL_NO ORDER BY ORDER_NO, ORDER_DTL_NO)
 	</select>
 
 
@@ -363,7 +363,7 @@
 				<include refid="getListPagingCondition_sql"/>
 	</select>
 
-    <!-- 환불관리 목록 조회 조건  -->
+    <!-- 회수지시 목록 조회 조건  -->
 	<sql id="getWithdrawDirectiveCondition_sql">
 		<if test="ordNm != null and ordNm != ''">
 			AND O.ORD_NM = #{ordNm}
@@ -405,7 +405,7 @@
 		AND    OCD.DEL_YN      = 'N'	
 	</sql>		
 			
-	<!-- 재회수지시-->
+	<!-- 재회수지시 Detail-->
 	<update id="updateReRecallOrder" parameterType="Withdraw" >
 		/* TsaWithdraw.updateReRecallOrder */
 		UPDATE TB_ORDER_CHANGE_DETAIL SET
@@ -413,11 +413,20 @@
 		, UPD_NO   = #{updNo}
 		, UPD_DT   = NOW()
 		WHERE ORD_CHG_SQ = #{ordChgSq} 
-		  AND ORD_DTL_NO = #{ordDtlNo}
-
 	</update>
 
+	<!-- 재회수지시 -->
+	<update id="updateReRecallOrderChange" parameterType="Withdraw" >
+		/* TsaWithdraw.updateReRecallOrderChange */
+		UPDATE TB_ORDER_CHANGE SET 
+			  WD_SHIP_STATE = '99'
+			, UPD_NO        = #{updNo}
+			, UPD_DT        = NOW()
+		WHERE ORD_CHG_SQ = #{ordChgSq} 
+
 
+	</update>
+	
 	<!-- 회수예외 사유변경 목록 -->
 	<select id="getWithdrawExceptionChangeList" parameterType="WithdrawExc" resultType="WithdrawExc">
 		/* TsaWithdraw.getWithdrawExceptionChangeList */
@@ -528,6 +537,16 @@
 		   AND B.CHG_STAT IN('G685_33','G685_60')		
 	</select>	
 	
-	
+	<!-- 주문변경번호 상세 조회  -->
+	<select id="getOrdChgDtlList" parameterType="Withdraw" resultType="Withdraw">
+		/* TsaWithdraw.getOrdChgDtlList */
+		SELECT  
+			  ORD_CHG_SQ 
+			, ORD_DTL_NO 
+			, CHG_STAT 
+		FROM TB_ORDER_CHANGE_DETAIL
+		WHERE ORD_CHG_SQ = 980
+		  AND DEL_YN     = 'N'
+	</select>	
 		
 </mapper>

+ 12 - 1
src/main/java/com/style24/persistence/mybatis/wms/TsaWmsWithdraw.xml

@@ -140,7 +140,18 @@
 		  AND OrderDtlNo = #{ordDtlNo}
 	</delete>		
 	
-	
+	<!-- 재회수지시      -->
+	<insert id="updateReRecallOrder" parameterType="Withdraw" >
+		/*TsaWmsWithdraw.updateReRecallOrder*/
+		UPDATE ISTYLE24_WMSIF.DBO.TB_IF_RECALLDELIVERY SET 
+		  IsDeleted   = 1
+		, DateDeleted = GETDATE() 
+		WHERE OrderExceptionNo  =  #{ordChgSq}
+		  AND OrderNo           =  #{ordNo}
+          and IfStat in ('0','1')
+          and IsDeleted = 0
+          		  
+	</insert>	
 	
 	
 </mapper>

+ 2 - 2
src/main/resources/config/application-style.yml

@@ -96,8 +96,8 @@ shoplinker:
     customer_id : a0024007
     shoplinker_id : istyle1
     xml:
-        path: http://stage.istyle24.com/Partner/ShopLinker/dev
-        view: http://stage.istyle24.com/Partner/ShopLinker/dev
+        path: /files/data/shoplinker
+        view: http://archive.style24.com/shoplinker
     url:
         option : /Product/attribute_insert.php?iteminfo_url=
         product : /Product/attribute_prod_insert.php?iteminfo_url=

+ 6 - 4
src/main/webapp/WEB-INF/views/board/NoticeForm.html

@@ -166,7 +166,8 @@
 							<textarea class="textareaR4" name="noticeContent" id="noticeContent"></textarea>
 						</td>
 					</tr>
-					<tr>
+					<!-- 2021.06.25 주석처리 -->
+					<!-- <tr>
 						<th>파일첨부</th>
 						<td colspan="5">
 							<div id="registeredFile"></div>
@@ -189,7 +190,7 @@
 								</div>
 							</th:block>
 						</td>
-					</tr>
+					</tr> -->
 				</table>
 			</form>
 			
@@ -344,6 +345,7 @@
 
 		// 공지내용. Summernote에 값 세팅
 		gagaSn.setContents('#noticeContent', event.data.noticeContent);
+		//$('#detailForm textarea[name=noticeContent]').val(event.data.noticeContent);
 
 		// 수신자 목록
 		fnGetNoticeReceiverList(event.data.noticeSq);
@@ -481,7 +483,7 @@
 		$('#detailForm input[name=noticeSq]').val('');
 		$('#detailForm input[name=noticeStdt]').val(_today);
 		$('#detailForm input[name=noticeEddt]').val(_today);
-		
+		//$('#detailForm input[name=noticeContent]').val('');
 		gagaSn.setContents('#noticeContent', ''); 
 	});
 	
@@ -618,7 +620,7 @@
 		gagaAgGrid.createGrid('gridList', gridOptions);
 		
 		// Create a summernote
-		let snOptions = gagaSn.getToolbarOptions();
+		let snOptions = gagaSn.getToolbarOptions('media');
 		gagaSn.createSummernote(snOptions, '#noticeContent');
 		
 		$("#fileCnt").trigger('change');

+ 3 - 1
src/main/webapp/WEB-INF/views/customer/CustomerActiveListForm.html

@@ -163,9 +163,11 @@
 			headerName: "사이트", field:'siteCd', width:100, cellClass: 'text-center',
 			valueGetter: function (params) { return gagaAgGrid.lookupValue(siteList, params.data.siteCd); }
 		},
-		{headerName: "회원ID", field:'maskingCustId', width:120, cellClass: 'text-left',
+		{
+			headerName: "회원ID", field:'maskingCustId', width:120, cellClass: 'text-left',
 			valueGetter: function (params) { return params.data.maskingCustId; }
 		},
+		{headerName: "회원NO", field: "custNo", width: 120, cellClass: 'text-center', hide: true},
 		{
 			headerName: "회원명", field:'maskingCustNm', width:100, cellClass: 'text-center',
 			cellRenderer: function(params) { return '<a href="javascript:void(0);">' + params.data.maskingCustNm + '</a>'; }

+ 57 - 54
src/main/webapp/WEB-INF/views/customer/LmsPopupForm.html

@@ -14,69 +14,72 @@
  * 1.0  2021.01.21   jsshin     최초 작성
  *******************************************************************************
  -->
-<div class="modelessPopup" data-width="800">
-	<div class="panelStyle">
-		<!-- TITLE -->
-		<div class="panelTitle">
-			<strong>LMS 발송</strong>
-			<button type="button" class="close" onclick="uifnPopupClose('popupLmsForm')"><em class="fa fa-times"></em></button>
-		</div>
-		<!-- //TITLE -->
-		<!-- CONTENT -->
-		<div class="panelContent">
-			<form id="lmsForm" name="lmsForm">
-				<table class="frmStyle">
-					<colgroup>
-						<col style="width:1%"/>
-						<col style="width:40%"/>
-					</colgroup>
-					<tbody>
-					<tr >
-						<th>수신자번호<em class="required" title="필수"></em></th>
-						<td th:if="${maskingCellPhnno == ''}">
-							<input type="text" class="w150" name="cellPhnno" data-valid-name="수신번호"  required="required"  maxlength="13" readonly="readonly"/>
-						</td>
-						<td th:unless="${maskingCellPhnno == ''}">
-							<input type="hidden" name="cellPhnno"/>
-							<input type="text" class="w150" name="maskingCellPhnno" readonly="readonly"/>
-						</td>
-					</tr>
-					<tr>
-						<th>발신자번호<em class="required" title="필수"></em></th>
-						<td>
-							<input type="text" class="w150" name="callBack" th:value="${callBack}" maxlength="11" readonly="readonly"/>
-						</td>
-					</tr>
-					<tr>
-						<th>메시지<em class="required" title="필수"></em></th>
-						<td>
-							<textarea class="textareaR4"  style="resize: none;" name ="content" ></textarea>
-							<span name="count">0</span> / 2000 byte
-						</td>
-					</tr>
-					</tbody>
-				</table>
-			</form>
+
+	<div class="modelessPopup draggable" data-width="800">
+		<div class="panelStyle">
+			<!-- TITLE -->
+			<div class="panelTitle">
+				<strong>LMS 발송</strong>
+				<button type="button" class="close" onclick="uifnPopupClose('popupLmsForm')"><em class="fa fa-times"></em></button>
+			</div>
+			<!-- //TITLE -->
+			<!-- CONTENT -->
+			<div class="panelContent">
+				<form id="lmsForm" name="lmsForm">
+					<table class="frmStyle">
+						<colgroup>
+							<col style="width:1%"/>
+							<col style="width:40%"/>
+						</colgroup>
+						<tbody>
+						<tr >
+							<th>수신자번호<em class="required" title="필수"></em></th>
+							<td th:if="${maskingCellPhnno == ''}">
+								<input type="text" class="w150" name="cellPhnno" data-valid-name="수신번호"  required="required"  maxlength="13" readonly="readonly"/>
+							</td>
+							<td th:unless="${maskingCellPhnno == ''}">
+								<input type="hidden" name="cellPhnno"/>
+								<input type="text" class="w150" name="maskingCellPhnno" readonly="readonly"/>
+							</td>
+						</tr>
+						<tr>
+							<th>발신자번호<em class="required" title="필수"></em></th>
+							<td>
+								<input type="text" class="w150" name="callBack" th:value="${callBack}" maxlength="11" readonly="readonly"/>
+							</td>
+						</tr>
+						<tr>
+							<th>메시지<em class="required" title="필수"></em></th>
+							<td>
+								<textarea class="textareaR4"  style="resize: none;" name ="content" ></textarea>
+								<span name="count">0</span> / 2000 byte
+							</td>
+						</tr>
+						</tbody>
+					</table>
+				</form>
+			</div>
+			<ul class="panelBar">
+				<li class="right">
+					<button type="button" class="btn btn-success btn-lg" id="btnSendSms">발송</button>
+					<button type="button" class="btn btn-gray btn-lg" onclick="uifnPopupClose('popupLmsForm')">취소</button>
+				</li>
+			</ul>
+			<!-- //CONTENT -->
 		</div>
-		<ul class="panelBar">
-			<li class="right">
-				<button type="button" class="btn btn-success btn-lg" id="btnSendSms">발송</button>
-				<button type="button" class="btn btn-gray btn-lg" onclick="uifnPopupClose('popupLmsForm')">취소</button>
-			</li>
-		</ul>
-		<!-- //CONTENT -->
 	</div>
-</div>
+
 <script th:inline="javascript">
 	/*<![CDATA[*/
 	const elementCellPhnno = [[${elementCellPhnno}]];
 	const elementCustNo = [[${elementCustNo}]];
 	const maskingCellPhnno = [[${maskingCellPhnno}]];
+	const pageGb = [[${pageGb}]];
 
 	// 메시지 전송
 	$("#btnSendSms").on("click",function() {
 		let formId = '#lmsForm';
-		let custNo = $(elementCustNo).val();
+		let custNo = gagajf.isNull(pageGb) ? $(elementCustNo).val() : elementCustNo;
 		const $content = $(formId+' textarea[name=content]');
 
 		if(gagajf.isNull($content.val())) {
@@ -112,11 +115,11 @@
 	});
 
 	var fnInitDataSet = function () {
-		let cellPhnno = $(elementCellPhnno).val();
+		let cellPhnno = gagajf.isNull(pageGb) ? $(elementCellPhnno).val() : elementCellPhnno;
 		if (gagajf.isNull(maskingCellPhnno)) {
 			$('#lmsForm input[name=cellPhnno]').val(cellPhnno);
 		} else {
-			let mkCellPhno = $(maskingCellPhnno).val();
+			let mkCellPhno = gagajf.isNull(pageGb) ? $(maskingCellPhnno).val() : maskingCellPhnno;
 			$('#lmsForm input[name=cellPhnno]').val(cellPhnno);
 			$('#lmsForm input[name=maskingCellPhnno]').val(mkCellPhno);
 		}

+ 2 - 1
src/main/webapp/WEB-INF/views/envset/CustomerGradePolicyForm.html

@@ -116,6 +116,7 @@
 							<button type="button" class="btn icn" onclick="fnOpenCouponRetrievePopup('input[name=gradeCpnId1]', 'input[name=gradeCpnNm1]');"><i class="fa fa-search cpn" aria-hidden="true"></i></button>
 							<input name="gradeCpnId1" type="text" class="w100" maxlength="20" readonly="readonly"/>
 							<button type="button" class="btn icn" onclick="$('input[name=gradeCpnId1], input[name=gradeCpnNm1]').val('');"><i class="fa fa-eraser" aria-hidden="true"></i></button>
+							<br/><span class="infoTxt cBlue"><i class="fa fa-info-circle" aria-hidden="true"></i>WELCOME 등급시 회원가입시 자동 지급하는 쿠폰</span>
 						</td>
 						<th>혜택쿠폰2</th>
 						<td colspan="3">
@@ -126,7 +127,7 @@
 						</td>
 					</tr>
 					<tr>
-						<th>혜택쿠폰3</th>
+						<th>혜택쿠폰3(생일쿠폰)</th>
 						<td colspan="3">
 							<input type="text" class="w300" name="gradeCpnNm3" onkeypress="if (window.event.keyCode == 13) { fnOpenCouponRetrievePopup('input[name=gradeCpnId3]', 'input[name=gradeCpnNm3]'); }"/>
 							<button type="button" class="btn icn" onclick="fnOpenCouponRetrievePopup('input[name=gradeCpnId3]', 'input[name=gradeCpnNm3]');"><i class="fa fa-search cpn" aria-hidden="true"></i></button>

+ 2 - 2
src/main/webapp/WEB-INF/views/marketing/PlanCornerListForm.html

@@ -57,13 +57,13 @@
 					<ul class="panelBar">
 						<li class="boxContentBtnT" style="margin-left: -20px; margin-right: -23px;">
 							<span class="btnLeft">
-								<button type="button" class="btn btn-warning btn-sm" id="btnAddRow">행추가</button>
+								<button type="button" class="btn btn-warning btn-sm" th:if="${planInfo.planGb != 'S'}" id="btnAddRow">행추가</button>
 								<button type="button" class="btn btn-danger btn-sm" id="btnDeleteRow">행삭제</button>
 							</span> 
 						</li>
 						<li class="right">
 							<span class="btnRight"> 
-								<button type="button" class="btn btn-default btn-lg" onclick="fnCornerCopyPopup();">코너복사</button>
+								<button type="button" class="btn btn-default btn-lg" th:if="${planInfo.planGb != 'S'}" onclick="fnCornerCopyPopup();">코너복사</button>
 								<button type="button" class="btn btn-success btn-lg" onclick="fnPlanCornerSave();">저장</button>
 						   </span>
 					   </li>

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

@@ -40,7 +40,7 @@
 
 				<ul class="panelBar padT20">
 					<li class="center">
-						<input type="button" class="btn btn-default btn-lg" id="btnExcelDown" onclick="cfnDownloadSampleFile('SF022');" value="제휴몰 주문등록양식 다운로드" />
+						<input type="button" class="btn btn-default btn-lg" id="btnExcelDown" onclick="cfnDownloadSampleFile('SF023');" value="제휴몰 주문등록양식 다운로드" />
 						<input type="button" class="btn btn-primary btn-lg" id="btnExcelUpload" value="엑셀업로드"/>
 						<input type="button" class="btn btn-success btn-lg" id="btnSaveExtmallOrderUpload" value="주문등록"/>
 						<input type="button" class="btn btn-danger btn-lg" id="btnSearchExtmallOrderUpload" value="결과확인"/>

+ 31 - 9
src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerGoodsSendForm.html

@@ -136,18 +136,15 @@
 <script type="text/javascript" src="/ux/plugins/gaga/gaga.paging.js?v=20210114"></script>
 <script th:inline="javascript">
 /*<![CDATA[*/
-
+	var sessRoleCd 		= [[${sessionInfo.roleCd}]];
 	var apiTypeValue = {"OPTION":"단품", "PRODUCT":"상품", "NOTI":"품목(고시)", "CERT":"인증", "IMAGE":"이미지" };
 	var procGbValue = {"true":"전송완료", "false":"전송실패", "error":"오류"};
 
-	//let vendorList = gagajf.convertToArray([[${vendorList}]]);
-	//let supplyCompList = gagajf.convertToArray([[${supplyCompList}]]);
-
-	let columnDefs = [
+	let columnDefs1 = [
 		{headerName: "No", width: 60, cellClass: 'text-center',
 			valueGetter: function(params) { return cfnGridNumner('searchForm',params.node.rowIndex, 'A');}
 		},
-		{headerName: "샵링커 상품코드", field: "apiProductId", width: 150, cellClass: 'text-center'},
+		{headerName: "샵링커 상품코드", field: "apiProductId", width: 130, cellClass: 'text-center'},
 		{
 			headerName: "API구분", field: "apiType", width: 100, cellClass: 'text-center',
 			valueFormatter: function (params) { return gagaAgGrid.lookupValue(apiTypeValue, params.value); }
@@ -158,11 +155,9 @@
 		{headerName: "IF결과메세지", field: "apiMessage", width: 300, cellClass: 'text-left'},
 		{headerName: "자사 상품코드", field: "goodsCd", width: 150, cellClass: 'text-center'},
 		{headerName: "상품명", field: "goodsNm", width: 300, cellClass: 'text-left'},
-
 		{headerName: "xml", field: "xmlTxt", width: 100, cellClass: 'text-center', editable: true,
 			cellEditor: 'agLargeTextCellEditor',
 			cellRenderer: function(params) {
-				/* params.value = '<a href="javascript:void(0);">보기</a>'; */
 				params.value = '<button type="button"class="btn btn-success">보기</button>';
 				return params.value;
 			}
@@ -174,7 +169,34 @@
 		}
 	];
 
-	let gridOptions = gagaAgGrid.getGridOptions(columnDefs);
+	let columnDefs2 = [
+		{headerName: "No", width: 60, cellClass: 'text-center',
+			valueGetter: function(params) { return cfnGridNumner('searchForm',params.node.rowIndex, 'A');}
+		},
+		{headerName: "샵링커 상품코드", field: "apiProductId", width: 130, cellClass: 'text-center'},
+		{
+			headerName: "API구분", field: "apiType", width: 100, cellClass: 'text-center',
+			valueFormatter: function (params) { return gagaAgGrid.lookupValue(apiTypeValue, params.value); }
+		},
+		{headerName: "IF결과", field: "apiResult", width: 100, cellClass: 'text-center',
+			valueFormatter: function (params) { return gagaAgGrid.lookupValue(procGbValue, params.value); }
+		},
+		{headerName: "IF결과메세지", field: "apiMessage", width: 300, cellClass: 'text-left'},
+		{headerName: "자사 상품코드", field: "goodsCd", width: 150, cellClass: 'text-center'},
+		{headerName: "상품명", field: "goodsNm", width: 300, cellClass: 'text-left'},
+		{headerName: "등록자", field: "regNm", width: 100, cellClass: 'text-center'},
+		{
+			headerName: "전송일자", field: "regDt", width: 150, cellClass: 'text-center',
+			cellRenderer: function (params) { return gagaAgGrid.toDateTimeFormat(params.value); }
+		}
+	];
+
+	let gridOptions;
+	if (sessRoleCd == "G001_0000") { // SUPER관리자
+		gridOptions = gagaAgGrid.getGridOptions(columnDefs1);
+	} else {
+		gridOptions = gagaAgGrid.getGridOptions(columnDefs2);
+	}
 
 
 	//페이징

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

@@ -87,7 +87,7 @@
 
 				<ul class="panelBar">
 					<li class="center">
-						<button type="button" class="btn btn-base btn-lg" id="btnSearch">결과조회</button>
+						<button type="button" class="btn btn-base btn-lg" id="btnSearch">조회</button>
 						<!-- <button type="button" class="btn btn-gray btn-lg" onclick="$('#searchForm')[0].reset();">초기화</button> -->
 						<button type="button" class="btn btn-primary btn-lg" id="btnSendInvoice">송장전송</button>
 						<!-- <button type="button" class="btn btn-primary btn-lg" id="btnInvoiceUpload">엑셀업로드</button> -->

+ 110 - 109
src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerOrderDetailForm.html

@@ -179,116 +179,117 @@
 			</table>
 			<!-- //TABLE -->
 			<br>
-			<h4>제휴몰 업로드정보</h4>
-			<!-- TABLE -->
-			<table class="tableStyle">
-				<colgroup>
-					<col width="10%">
-					<col width="23%">
-					<col width="10%">
-					<col width="23%">
-					<col width="10%">
-					<col width="23%">
-				</colgroup>
-				<tbody>
-					<tr>
-						<th>업로드상태</th>
-						<td class="aL padL10" th:text="${extOrderInfo.uploadStatNm}"></td>
-
-						<th>업로드실패코드</th>
-						<td class="aL padL10" colspan="3" th:text="${extOrderInfo.uploadFailNm}"></td>
-					</tr>
-					<tr>
-						<th>업로드실패사유</th>
-						<td class="aL padL10" colspan="5" th:text="${extOrderInfo.uploadFailReason}"></td>
-					</tr>
-					<tr>
-						<th>벤더명</th>
-						<td class="aL padL10" th:text="${extOrderInfo.vendorNm}"></td>
-						<th>제휴몰ID</th>
-						<td class="aL padL10" th:text="${extOrderInfo.extmallId}"></td>
-						<th>제휴몰명</th>
-						<td class="aL padL10" th:text="${extOrderInfo.extmallNm}"></td>
-					</tr>
-					<tr>
-						<th>에이전트주문번호</th>
-						<td class="aL padL10" th:text="${extOrderInfo.agentOrderId}"></td>
-						<th>제휴몰주문번호<br>(쇼핑몰주문번호)</th>
-						<td class="aL padL10" th:text="${extOrderInfo.extmallOrderId}"></td>
-						<th>제휴몰상품ID</th>
-						<td class="aL padL10" th:text="${extOrderInfo.extmallProdId}"></td>
-					</tr>
-					<tr>
-						<th>제휴몰상품명</th>
-						<td class="aL padL10" th:text="${extOrderInfo.extmallProdNm}"></td>
-						<th>상품코드(상품)</th>
-						<td class="aL padL10" th:text="${extOrderInfo.goodsCd}"></td>
-						<th>옵션명</th>
-						<td class="aL padL10" th:text="${extOrderInfo.sku}"></td>
-					</tr>
-					<tr>
-						<th>현재판매가</th>
-						<td class="aL padL10" th:text="${extOrderInfo.currPrice}"></td>
-						<th>주문수량</th>
-						<td class="aL padL10" th:text="${extOrderInfo.ordQty}"></td>
-						<th>주문금액</th>
-						<td class="aL padL10" th:text="${extOrderInfo.ordAmt}"></td>
-					</tr>
-					<tr>
-						<th>쿠폰할인금액</th>
-						<td class="aL padL10" th:text="${extOrderInfo.cpnDcAmt}"></td>
-						<th>포인트할인금액</th>
-						<td class="aL padL10" th:text="${extOrderInfo.pntDcAmt}"></td>
-						<th>배송비</th>
-						<td class="aL padL10" th:text="${extOrderInfo.delvFee}"></td>
-					</tr>
-					<tr>
-						<th>주문수집일</th>
-						<td class="aL padL10" th:text="${extOrderInfo.ordRecvDt}"></td>
-						<th>주문일</th>
-						<td class="aL padL10" th:text="${extOrderInfo.ordDt}"></td>
-						<th>주문자명</th>
-						<td class="aL padL10" th:text="${extOrderInfo.ordNm}"></td>
-					</tr>
-					<tr>
-						<th>주문자휴대전화번호</th>
-						<td class="aL padL10" th:text="${extOrderInfo.ordPhnno}"></td>
-						<th>주문자전화번호</th>
-						<td class="aL padL10" th:text="${extOrderInfo.ordTelno}"></td>
-						<th>주문자이메일</th>
-						<td class="aL padL10" th:text="${extOrderInfo.ordEmail}"></td>
-					</tr>
-					<tr>
-						<th>수령자명</th>
-						<td class="aL padL10" th:text="${extOrderInfo.recipNm}"></td>
-						<th>수령자휴대전화번호</th>
-						<td class="aL padL10" th:text="${extOrderInfo.recipPhnno}"></td>
-						<th>수령자전화번호</th>
-						<td class="aL padL10" th:text="${extOrderInfo.recipTelno}"></td>
-					</tr>
-					<tr>
-						<th>수령자우편번호</th>
-						<td class="aL padL10" th:text="${extOrderInfo.recipZipcode}"></td>
-						<th>수령자기본주소</th>
-						<td class="aL padL10" th:text="${extOrderInfo.recipBaseAddr}"></td>
-						<th>수령자상세주소</th>
-						<td class="aL padL10" th:text="${extOrderInfo.recipDtlAddr}"></td>
-					</tr>
-					<tr>
-						<th>배송메모</th>
-						<td class="aL padL10" colspan="5" th:text="${extOrderInfo.delvMemo}"></td>
-					</tr>
-					<tr>
-						<th>주문번호</th>
-						<td class="aL padL10" th:text="${extOrderInfo.ordNo}"></td>
-						<th>등록자</th>
-						<td class="aL padL10" th:text="${extOrderInfo.regNm}"></td>
-						<th>등록일시</th>
-						<td class="aL padL10" th:text="${extOrderInfo.regDt}"></td>
-					</tr>
-				</tbody>
-			</table>
+			<div th:if="${extOrderInfo}">
+				<h4>제휴몰 업로드정보</h4>
+				<!-- TABLE -->
+				<table class="tableStyle">
+					<colgroup>
+						<col width="10%">
+						<col width="23%">
+						<col width="10%">
+						<col width="23%">
+						<col width="10%">
+						<col width="23%">
+					</colgroup>
+					<tbody>
+						<tr>
+							<th>업로드상태</th>
+							<td class="aL padL10" th:text="${extOrderInfo.uploadStatNm}"></td>
 
+							<th>업로드실패코드</th>
+							<td class="aL padL10" colspan="3" th:text="${extOrderInfo.uploadFailNm}"></td>
+						</tr>
+						<tr>
+							<th>업로드실패사유</th>
+							<td class="aL padL10" colspan="5" th:text="${extOrderInfo.uploadFailReason}"></td>
+						</tr>
+						<tr>
+							<th>벤더명</th>
+							<td class="aL padL10" th:text="${extOrderInfo.vendorNm}"></td>
+							<th>제휴몰ID</th>
+							<td class="aL padL10" th:text="${extOrderInfo.extmallId}"></td>
+							<th>제휴몰명</th>
+							<td class="aL padL10" th:text="${extOrderInfo.extmallNm}"></td>
+						</tr>
+						<tr>
+							<th>에이전트주문번호</th>
+							<td class="aL padL10" th:text="${extOrderInfo.agentOrderId}"></td>
+							<th>제휴몰주문번호<br>(쇼핑몰주문번호)</th>
+							<td class="aL padL10" th:text="${extOrderInfo.extmallOrderId}"></td>
+							<th>제휴몰상품ID</th>
+							<td class="aL padL10" th:text="${extOrderInfo.extmallProdId}"></td>
+						</tr>
+						<tr>
+							<th>제휴몰상품명</th>
+							<td class="aL padL10" th:text="${extOrderInfo.extmallProdNm}"></td>
+							<th>상품코드(상품)</th>
+							<td class="aL padL10" th:text="${extOrderInfo.goodsCd}"></td>
+							<th>옵션명</th>
+							<td class="aL padL10" th:text="${extOrderInfo.sku}"></td>
+						</tr>
+						<tr>
+							<th>현재판매가</th>
+							<td class="aL padL10" th:text="${extOrderInfo.currPrice}"></td>
+							<th>주문수량</th>
+							<td class="aL padL10" th:text="${extOrderInfo.ordQty}"></td>
+							<th>주문금액</th>
+							<td class="aL padL10" th:text="${extOrderInfo.ordAmt}"></td>
+						</tr>
+						<tr>
+							<th>쿠폰할인금액</th>
+							<td class="aL padL10" th:text="${extOrderInfo.cpnDcAmt}"></td>
+							<th>포인트할인금액</th>
+							<td class="aL padL10" th:text="${extOrderInfo.pntDcAmt}"></td>
+							<th>배송비</th>
+							<td class="aL padL10" th:text="${extOrderInfo.delvFee}"></td>
+						</tr>
+						<tr>
+							<th>주문수집일</th>
+							<td class="aL padL10" th:text="${extOrderInfo.ordRecvDt}"></td>
+							<th>주문일</th>
+							<td class="aL padL10" th:text="${extOrderInfo.ordDt}"></td>
+							<th>주문자명</th>
+							<td class="aL padL10" th:text="${extOrderInfo.ordNm}"></td>
+						</tr>
+						<tr>
+							<th>주문자휴대전화번호</th>
+							<td class="aL padL10" th:text="${extOrderInfo.ordPhnno}"></td>
+							<th>주문자전화번호</th>
+							<td class="aL padL10" th:text="${extOrderInfo.ordTelno}"></td>
+							<th>주문자이메일</th>
+							<td class="aL padL10" th:text="${extOrderInfo.ordEmail}"></td>
+						</tr>
+						<tr>
+							<th>수령자명</th>
+							<td class="aL padL10" th:text="${extOrderInfo.recipNm}"></td>
+							<th>수령자휴대전화번호</th>
+							<td class="aL padL10" th:text="${extOrderInfo.recipPhnno}"></td>
+							<th>수령자전화번호</th>
+							<td class="aL padL10" th:text="${extOrderInfo.recipTelno}"></td>
+						</tr>
+						<tr>
+							<th>수령자우편번호</th>
+							<td class="aL padL10" th:text="${extOrderInfo.recipZipcode}"></td>
+							<th>수령자기본주소</th>
+							<td class="aL padL10" th:text="${extOrderInfo.recipBaseAddr}"></td>
+							<th>수령자상세주소</th>
+							<td class="aL padL10" th:text="${extOrderInfo.recipDtlAddr}"></td>
+						</tr>
+						<tr>
+							<th>배송메모</th>
+							<td class="aL padL10" colspan="5" th:text="${extOrderInfo.delvMemo}"></td>
+						</tr>
+						<tr>
+							<th>주문번호</th>
+							<td class="aL padL10" th:text="${extOrderInfo.ordNo}"></td>
+							<th>등록자</th>
+							<td class="aL padL10" th:text="${extOrderInfo.regNm}"></td>
+							<th>등록일시</th>
+							<td class="aL padL10" th:text="${extOrderInfo.regDt}"></td>
+						</tr>
+					</tbody>
+				</table>
+			</div>
 
 		</div>
 	</div>

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

@@ -38,7 +38,7 @@
 						<td colspan="7">
 							<input name="apiStDate" id="apiStDate" type="text" class="w80 schDate" maxlength="10" required="required" data-valid-name="주문수집일" />
 							&nbsp;&nbsp;&nbsp;&nbsp;
-							<button th:if="${sessionInfo.userId == 'jmh'}" type="button" class="btn btn-primary btn-lg" id="btnCollection">주문수집</button>
+							<button th:if="${sessionInfo.userId == 'jsh77b'}" type="button" class="btn btn-primary btn-lg" id="btnCollection">주문수집</button>
 							&nbsp;<span class="runable_info"></span>
 						</td>
 					</tr>
@@ -47,7 +47,7 @@
 				<p class="cRed">※ 샵링커 주문수집 => 제휴몰 주문등록 => (제휴몰 주문등록 성공목록만) STYLE24에 주문등록이 됩니다.</p>
 				<p class="cRed">※ 샵링커 주문수집 시 동일한 목록은 '제휴몰 주문등록'이 되지 않습니다. </p>
 				<p class="cRed">※ 주문수집 건수가 많아질 수록 대기시간이 오래걸리므로 하루씩 수집합니다.</p>
-				<p class="cRed">※ 옵션코드가없는 상품(딜상품)은 결과목록에서 제외됩니다.</p>
+				<p class="cRed">※ [제휴몰 주문등록 상태]가 '미매핑'건은 옵션정보가 없는것으로 딜상품입니다.</p>
 			</div>
 		</form>
 
@@ -120,7 +120,7 @@
 
 				<ul class="panelBar">
 					<li class="center">
-						<button type="button" class="btn btn-base btn-lg" id="btnSearch">결과조회</button>
+						<button type="button" class="btn btn-base btn-lg" id="btnSearch">조회</button>
 						<!-- <button type="button" class="btn btn-default btn-lg" onclick="fnTest();">테스트</button> -->
 						<!-- <button type="button" class="btn btn-gray btn-lg" onclick="$('#searchForm')[0].reset();">초기화</button> -->
 					</li>

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

@@ -77,7 +77,7 @@
 
 				<ul class="panelBar">
 					<li class="center">
-						<button type="button" class="btn btn-base btn-lg" id="btnSearch">결과조회</button>
+						<button type="button" class="btn btn-base btn-lg" id="btnSearch">조회</button>
 					</li>
 				</ul>
 

+ 26 - 3
src/main/webapp/WEB-INF/views/withdraw/WithdrawDirectiveListForm.html

@@ -185,13 +185,21 @@
 		{headerName: "미회수사유", 	field: "wdReasonCdNm", 	width: 100, cellClass: "text-center"},
 		{headerName: "재회수지시", 	field: "wdShipState", 		width: 100,	cellClass: 'text-center',
 			cellRenderer: function(params) {
-				return params.value == '12' && params.data.chgStat == 'G685_30' ? '<button type="button" class="btn btn-base btn-sm" onclick="fnReRecallOrder(\'' + params.data.chgGb + '\',\'' + params.data.ordDtlNo + '\',\''+params.data.ordChgSq+'\');">&nbsp;재회수지시&nbsp;</button>' : "";
+				return params.value == '12' && params.data.chgStat == 'G685_30' ? '<button type="button" class="btn btn-base btn-sm" onclick="fnReRecallOrder(\'' + params.data.chgGb + '\',\'' + params.data.ordDtlNo + '\',\''+params.data.ordChgSq+'\',\''+params.data.ordNo+'\');">&nbsp;재회수지시&nbsp;</button>' : "";
 			}
 		},	
 		{headerName: "교환선발송여부 ", 	field: "wdBfSendYn", 	width: 110, cellClass: "text-center"},
 		{headerName: "배송시작일시", 	field: "wdStdt", 		width: 120, cellClass: "text-center"},
 		{headerName: "배송종료일시", 	field: "wdEddt", 		width: 120, cellClass: "text-center"},
 		{headerName: "수취인명", 		field: "recipNm", 		width: 120, cellClass: "text-center"},
+		
+		{headerName: "LMS", 			field: "chgerPhnno", 	width: 120, cellClass: "text-center",
+			cellRenderer: function(params) {
+				return '<button type="button" class="btn btn-base btn-sm" onclick="fnLms(\'' + params.data.chgGb + '\',\'' + params.data.ordDtlNo + '\',\''+params.data.ordChgSq+'\',\''+params.data.ordNo+'\');">&nbsp;LMS&nbsp;</button>';
+			}			
+		},
+		
+		
 		{headerName: "변경자명", 		field: "chgerNm", 		width: 100, cellClass: "text-center"},
 		{headerName: "변경자휴대전화", 	field: "chgerPhnno", 	width: 120, cellClass: "text-center"},
 		{headerName: "변경자전화번호", 	field: "chgerTelno", 	width: 120, cellClass: "text-center"},
@@ -295,7 +303,7 @@
 	/*************************************************************************
 	*  재회수지시
 	**************************************************************************/	
-	var fnReRecallOrder = function(chgGb, ordDtlNo,ordChgSq ){
+	var fnReRecallOrder = function(chgGb, ordDtlNo, ordChgSq, ordNo ){
 		mcxDialog.confirm("재회수지시 하시겠습니까?", {
 		    cancelBtnText: "취소",
 		    sureBtnText: "확인",
@@ -303,6 +311,7 @@
 	            var param = new Object;
 	            param.chgGb    = chgGb;
 	            param.ordDtlNo = ordDtlNo;
+	            param.ordNo    = ordNo;
 	            param.ordChgSq = ordChgSq;
 	            var jsonData = JSON.stringify(param);
 	            gagajf.ajaxJsonSubmit('/withdraw/direct/recallorder', jsonData, fnSearchList);
@@ -310,9 +319,23 @@
 		});
 	}
 
+	/*************************************************************************
+	*  LMS
+	**************************************************************************/	
+	var fnLms = function(){
+		let param = {};
+		param.elementCellPhnno = '010-4016-1558'; //'#custInfoForm input[name=cellPhnno]';
+		param.elementCustNo =    '100025';// '#custInfoForm input[name=custNo]';
+		param.elementMaskingCellPhnno = ''; //  '#custInfoForm input[name=maskingCellPhnno]';
+		param.pageGb = 'delv';
+		cfnOpenLmsPopup(param);
+	}
+
+	
+	
 	//엑셀다운로드
 	$('#btnExcel').on('click', function() {
-		gagaAgGrid.exportToExcel('회수지시 목록', gridOptions);
+
 		
 		var totalRows = gridOptions.api.getDisplayedRowCount();
 		if(totalRows==0){

+ 19 - 2
src/main/webapp/WEB-INF/views/withdraw/WithdrawExceptionListForm.html

@@ -148,7 +148,7 @@
 	var columnDefs = [
 		{headerName: "반품예외처리번호",		field: "recallExceptionNo", width: 50,	cellClass: 'text-center', hide: true},
 		//{headerName: "No.",				field: "rnum",				width: 50,	cellClass: 'text-center'},
-		{headerName: "처리상태",			field: "recallStat",		width: 100,	cellClass: 'text-center',rowSpan: params => params.data.rowspanRank === 1 ? params.data.rowspanCnt : 1,
+		{headerName: "처리상태",			field: "recallStat",		width: 100,	cellClass: 'text-center',rowSpan: params => params.data.rowspanRank === 1 ? params.data.rowspanCnt : 1,  
 		    cellClassRules: {
 		        'cell-span': "data.rowspanRank == 1"
 		      },
@@ -184,7 +184,7 @@
 		{headerName: "WMS메시지",			field: "adminMemo",			width: 300,	cellClass: 'text-left'},
 		{headerName: "회수요청구분",		field: "chgGbNm",			width: 90,	cellClass: 'text-left'},
 		{headerName: "반품교환사유",		field: "chgReasonNm",		width: 150,	cellClass: 'text-left'},
-		{headerName: "반품/사유변경",		field: "chgReason",			width: 120,	cellClass: 'text-center',rowSpan: params => params.data.rowspanRank === 1 ? params.data.rowspanCnt : 1,
+		{headerName: "반품/사유변경",		field: "chgReason",			width: 120,	cellClass: 'text-center',rowSpan: params => params.data.rowspanRank === 1 ? params.data.rowspanCnt : 1,  
 			    cellClassRules: {
 			        'cell-span': "data.rowspanRank == 1"
 			      },
@@ -370,11 +370,28 @@
 				refreshFlag  = "ban";
 				var ordChgSq = 0;
 				var param    = "";
+				var ordDtlNoList ="";
+				
+				var allData =  gagaAgGrid.getAllRowData(gridOptions);
+
+				allData.forEach(function(item, index) {
+					if (event.data.orderNo == item.orderNo ){
+						ordDtlNoList = ordDtlNoList+","+item.orderDtlNo;
+					}
+				});
+				ordDtlNoList = ordDtlNoList.substring(1,ordDtlNoList.length);
+				
+				
+				
 				param += "&ordNo=" 			+ event.data.orderNo;
 				param += "&ordDtlNo=" 		+ event.data.orderDtlNo;
 				param += "&delvFeeCd="		+ event.data.delvFeeCd;
 				param += "&delvFeeCdGrp="	+ "WMS";
 				param += "&ordChgSq=" 		+ ordChgSq;
+				param += "&ordDtlNoArr=" 	+ ordDtlNoList.split(",");
+				
+
+				
 				var actionUrl = "/orderChange/rtn/req/form?" + param;
 				cfnOpenModalPopup(actionUrl, 'popupReturnRequestForm');
 			}

+ 4 - 0
src/main/webapp/ux/js/admin.popup.js

@@ -428,6 +428,7 @@ function cfnCouponCreatePopup(mode, cpnId, callbackfun){
  *     param.elementCellPhnno = 'input[name=cellPhnno]';
  *     param.elementCustNo = 'input[name=custNo]';
  *     param.elementMaskingCellPhnno = 'textarea[name=elementMaskingCellPhnno]'; //선택
+ *     paras.pageGb = 'delv'; // 선택
  *     cfnOpenLmsPopup(param);
  * </pre>
  * @since  : 2020/02/13
@@ -439,6 +440,9 @@ var cfnOpenLmsPopup = function(param) {
 	if (!gagajf.isNull(param.elementMaskingCellPhnno)) {
 		actionUrl +='&elementMaskingCellPhnno=' + encodeURIComponent(param.elementMaskingCellPhnno);
 	}
+	if (!gagajf.isNull(param.pageGb)) {
+		actionUrl +='&pageGb=' + param.pageGb;
+	}
 	cfnOpenModalPopup(actionUrl, 'popupLmsForm');
 }