Просмотр исходного кода

샵링커 수정, 소스분리

jmh 4 лет назад
Родитель
Сommit
8eca527a18

+ 0 - 327
src/main/java/com/style24/admin/biz/dao/TsaOcmDao.java

@@ -5,11 +5,8 @@ import java.util.Collection;
 import com.style24.core.support.annotation.ShopDs;
 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;
 
 /**
  * 영업망관리 Dao
@@ -72,328 +69,4 @@ public interface TsaOcmDao {
 	 */
 	void saveExtmallPriceSync(ExtmallPriceSync extmallPriceSync);
 
-
-
-
-	/**
-	 * 제휴몰주문등록 - 주문업로드 그룹별 목록
-	 *
-	 * @param extmallOrder
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 31
-	 */
-	Collection<ExtmallOrder> getExtmallMasterOrderList(ExtmallOrder extmallOrder);
-
-	/**
-	 * 제휴몰주문등록 - 주문업로드 전체 목록
-	 *
-	 * @param extmallOrder
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 31
-	 */
-	Collection<ExtmallOrder> getExtmallOrderList(ExtmallOrder extmallOrder);
-
-	/**
-	 * 제휴몰주문등록 - 주문등록
-	 *
-	 * @param extmallOrder
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 31
-	 */
-	void insertExtmallOrder(ExtmallOrder extmallOrder);
-
-	/**
-	 * 제휴몰주문등록 - 주문등록 상태값 업데이트
-	 * @param extmallOrder
-	 * @return
-	 * @author xodud1202
-	 * @since 2021. 01. 28
-	 */
-	void updateExtmallOrder(ExtmallOrder extmallOrder);
-
-	/**
-	 * 제휴몰주문등록 - 주문등록체크정보
-	 * @param extmallOrder
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 31
-	 */
-	ExtmallOrder getExtmallOrderInfo(ExtmallOrder extmallOrder);
-
-
-	// ------------------------- 주문등록 소스 -------------------------------------------//
-	// ------------------------- 주문등록 소스 -------------------------------------------//
-	/**
-	 * 1. 주문기본정보 등록
-	 *
-	 * @param extmallOrder - 주문 정보
-	 * @return
-	 * @author jmh
-	 * @since 2021. 03. 09
-	 */
-	int createOrder(ExtmallOrder extmallOrder);
-
-	/**
-	 * 2. 주문배송지정보 등록
-	 *
-	 * @param extmallOrder - 주문 정보
-	 * @return
-	 * @author jmh
-	 * @since 2021. 03. 09
-	 */
-	int createDeliveryAddr(ExtmallOrder extmallOrder);
-
-	/**
-	 * 3. 주문배송비정보등록 등록
-	 *
-	 * @param extmallOrder - 주문 정보
-	 * @return
-	 * @author jmh
-	 * @since 2021. 03. 09
-	 */
-	int createDeliveryFee(ExtmallOrder extmallOrder);
-
-	/**
-	 * 4. 주문상세정보등록 등록
-	 *
-	 * @param extmallOrder - 주문 정보
-	 * @return
-	 * @author jmh
-	 * @since 2021. 03. 09
-	 */
-	int createOrderDetail(ExtmallOrder extmallOrder);
-
-	/**
-	 * 4-2 주문상세 이력 등록
-	 *
-	 * @param extmallOrder
-	 * @return
-	 * @author jmh
-	 * @since 2020. 11. 30
-	 */
-	int createOrderDetailHst(ExtmallOrder extmallOrder);
-
-	/**
-	 * 5. 주문상세단품정보등록 등록
-	 *
-	 * @param extmallOrder - 주문 정보
-	 * @return
-	 * @author jmh
-	 * @since 2021. 03. 09
-	 */
-	Collection<ExtmallOrder> getOrderDetailItem(ExtmallOrder extmallOrder);
-
-	/**
-	 * 6. 주문상세단품정보등록 등록
-	 *
-	 * @param extmallOrder - 주문 정보
-	 * @return
-	 * @author jmh
-	 * @since 2021. 03. 09
-	 */
-	int createOrderDetailItem(ExtmallOrder extmallOrder);
-
-	/**
-	 * 7. 주문상세단품이력정보등록 등록
-	 *
-	 * @param extmallOrder - 주문 정보
-	 * @return
-	 * @author jmh
-	 * @since 2021. 03. 09
-	 */
-	int createOrderDetailItemHst(ExtmallOrder extmallOrder);
-
-	/**
-	 * 8. 주문사은품 마스터 정보 등록
-	 *
-	 * @param extmallOrder - 주문 정보
-	 * @return
-	 * @author jmh
-	 * @since 2021. 03. 09
-	 */
-	int createOrdFreegift(ExtmallOrder extmallOrder);
-
-	/**
-	 * 9. 주문사은품 상품 정보 등록
-	 *
-	 * @param extmallOrder - 주문 정보
-	 * @return
-	 * @author jmh
-	 * @since 2021. 03. 09
-	 */
-	int createOrdFreegiftVal(ExtmallOrder extmallOrder);
-
-	/**
-	 * 10. 주문사은품 주문상세 정보 등록
-	 * @param extmallOrder - 주문 정보
-	 * @return
-	 * @author jmh
-	 * @since 2021. 03. 09
-	 */
-	int createOrdFreegiftDtl(ExtmallOrder extmallOrder);
-
-	/**
-	 * 11. PAYMENT INSERT
-	 * @param param
-	 * @return
-	 */
-	int insertPayment(Payment param);
-
-	/**
-	 * 12. 재고정보등록
-	 * @param extmallOrder - 주문 정보
-	 * @return
-	 * @author jmh
-	 * @since 2021. 03. 09
-	 */
-	int createSellQty(ExtmallOrder extmallOrder);
-
-	/**
-	 * 13. 사은품 남은수량 업데이트
-	 * @param extmallOrder - 주문 정보
-	 * @return
-	 * @author jmh
-	 * @since 2021. 04. 13
-	 */
-	int updateFreegiftValLeftQty(ExtmallOrder extmallOrder);
-
-	/**
-	 * 상품 재고 조회
-	 * @param goodsStock
-	 * @return
-	 * @author xodud1202
-	 * @since 2021. 01. 28
-	 */
-	GoodsStock getGoodsStockInfo(GoodsStock goodsStock);
-
-	/**
-	 * 사은품 : 1차조건 적용된 사음품 정보, 상품 금액 조회
-	 *
-	 * @param Order
-	 * @author jsh77b
-	 * @since 2021. 02. 02
-	 */
-	Collection<ExtmallOrder> getFreeGiftGoodsApplyAmt(ExtmallOrder extmallOrder);
-
-	/**
-	 * 사은품 : 2차조건 적용된 사은품상품금액 구간정보조회
-	 *
-	 * @param Order
-	 * @author jsh77b
-	 * @since 2021. 02. 02
-	 */
-	Collection<ExtmallOrder> getFreeGiftGoodsApplySection(ExtmallOrder extmallOrder);
-
-	/**
-	 * 사은품 : 3차조건 적용된 구간정보의 사은품정보조회
-	 *
-	 * @param Order
-	 * @author jsh77b
-	 * @since 2021. 02. 02
-	 */
-	Collection<ExtmallOrder> getFreeGiftGoodsApplyVal(ExtmallOrder extmallOrder);
-	// ------------------------- 주문등록 소스 끝 -------------------------------------------//
-	// ------------------------- 주문등록 소스 끝 -------------------------------------------//
-
-
-
-
-
-
-
-	/**
-	 * 제휴몰주문 임시 테이블 삭제
-	 *
-	 * @param userNo - 사용자아이디
-	 * @return int
-	 * @author jmh
-	 * @since 2021. 06. 17
-	 */
-	int deleteExtmallOrderUploadTmp(int userNo);
-
-	/**
-	 * 외부몰주문등록 테이블 실패목록 데이터 삭제
-	 *
-	 * @param userNo - 사용자아이디
-	 * @return int
-	 * @author jmh
-	 * @since 2021. 06. 17
-	 */
-	int deleteExtmallOrderUploadFail(int userNo);
-
-	/**
-	 * 제휴몰주문등록 (TB_EXTMALL_ORDER_UPLOAD_TMP)
-	 *
-	 * @param extmallOrderUpload - 제휴몰주문업로드정보
-	 * @return int
-	 * @author jmh
-	 * @since 2021. 06. 17
-	 */
-	int createExtmallOrderUploadTmp(ExtmallOrder extmallOrder);
-
-	/**
-	 * 제휴몰주문등록 업로드 후 목록
-	 *
-	 * @param extmallOrder - 제휴몰주문업로드정보
-	 * @return Collection<ExtmallOrder>
-	 * @author jmh
-	 * @since 2021. 06. 17
-	 */
-	Collection<ExtmallOrder> getExtmallOrderUploadTmpList(ExtmallOrder extmallOrder);
-
-	/**
-	 * 제휴몰주문업로드 생성 - 제휴몰 벤더ID 가져오기
-	 *
-	 * @param regId -
-	 * @return String
-	 * @author jmh
-	 * @since 2021. 06. 17
-	 */
-	String getVendorId(String regId);
-
-	/**
-	 * 제휴몰주문등록 업로드 후 주문업로드 생성
-	 *
-	 * @param extmallOrderUpload - 제휴몰주문업로드정보
-	 * @return int
-	 * @author jmh
-	 * @since 2021. 06. 17
-	 */
-	int createExtmallOrderUploadSecond(ExtmallOrder extmallOrder);
-
-	/**
-	 * 제휴몰주문등록 주문업로드 후 목록
-	 *
-	 * @param extmallOrder - 제휴몰주문업로드정보
-	 * @return Collection<ExtmallOrder>
-	 * @author jmh
-	 * @since 2021. 06. 17
-	 */
-	Collection<ExtmallOrder> getExtmallOrderUploadSecondList(ExtmallOrder extmallOrder);
-
-	/**
-	 * 제휴몰 주문 업로드 목록
-	 *
-	 * @param extmallOrder - 외부몰주문업로드 정보
-	 * @return Collection<ExtmallOrder>
-	 * @author jmh
-	 * @since 2021. 06. 17
-	 */
-	Collection<ExtmallOrder> getExtmallOrderUploadList(ExtmallOrder extmallOrder);
-
-	/**
-	 * 제휴몰 주문 업로드 결과정보
-	 *
-	 * @param extmallOrder - 외부몰주문업로드 정보
-	 * @return Collection<ExtmallOrder>
-	 * @author jmh
-	 * @since 2021. 06. 17
-	 */
-	ExtmallOrder getExtmallOrderUploadResultInfo(ExtmallOrder extmallOrder);
-
-
-	void insertTestNotiInfo(ExtmallOrder extmallOrder);
 }

+ 176 - 3
src/main/java/com/style24/admin/biz/dao/TsaShoplinkerDao.java

@@ -4,6 +4,8 @@ import java.util.Collection;
 
 import com.gagaframework.web.parameter.GagaMap;
 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;
@@ -17,6 +19,86 @@ import com.style24.persistence.domain.ShoplinkerSearch;
 @ShopDs
 public interface TsaShoplinkerDao {
 
+	/**
+	 * 상품등록-단품 목록 조회
+	 *
+	 * @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);
+
 	/**
 	 * 상품등록-상품 목록 엑셀
 	 *
@@ -27,6 +109,36 @@ public interface TsaShoplinkerDao {
 	 */
 	Collection<GagaMap> getGoodsSendExcelList(ShoplinkerSearch shoplinkerSearch);
 
+	/**
+	 * 재고-단품 등록
+	 *
+	 * @param shoplinkerGoods
+	 * @return
+	 * @author jmh
+	 * @since 2021. 5. 20
+	 */
+	void insertStockOption(ShoplinkerGoods shoplinkerGoods);
+
+	/**
+	 * 재고전송-목록 건수
+	 *
+	 * @param shoplinkerSearch
+	 * @return
+	 * @author jmh
+	 * @since 2021. 5. 20
+	 */
+	int getStockListCount(ShoplinkerSearch shoplinkerSearch);
+
+	/**
+	 * 재고전송-목록
+	 *
+	 * @param shoplinkerSearch
+	 * @return
+	 * @author jmh
+	 * @since 2021. 5. 20
+	 */
+	Collection<ShoplinkerGoods> getStockList(ShoplinkerSearch shoplinkerSearch);
+
 	/**
 	 * 재고- 목록 엑셀
 	 *
@@ -37,20 +149,81 @@ public interface TsaShoplinkerDao {
 	 */
 	Collection<GagaMap> getStockExcelList(ShoplinkerSearch shoplinkerSearch);
 
+
 	/**
-	 * 주문- 목록 엑셀
+	 * 샵링커주문수집-목록 건수
 	 *
-	 * @param shoplinkerSearch
+	 * @param shoplinkerOrder
+	 * @return
+	 * @author jmh
+	 * @since 2021. 5. 20
+	 */
+	int getShoplinkerOrderListCount(ShoplinkerOrder shoplinkerOrder);
+
+	/**
+	 * 샵링커주문수집-목록
+	 *
+	 * @param shoplinkerOrder
+	 * @return
+	 * @author jmh
+	 * @since 2021. 5. 20
+	 */
+	Collection<ShoplinkerOrder> getShoplinkerOrderList(ShoplinkerOrder shoplinkerOrder);
+
+	/**
+	 * 샵링커주문수집-상세
+	 *
+	 * @param shoplinkerOrder
+	 * @return
+	 * @author jmh
+	 * @since 2021. 5. 20
+	 */
+	ShoplinkerOrder getShoplinkerOrderInfo(ShoplinkerOrder shoplinkerOrder);
+
+	/**
+	 * 샵링커주문수집-제휴몰 주문등록 상세
+	 *
+	 * @param extmallOrder
+	 * @return
+	 * @author jmh
+	 * @since 2021. 5. 31
+	 */
+	ExtmallOrder getExtmallOrderInfo(String extmallOrder);
+
+	/**
+	 * 샵링커주문수집- 엑셀
+	 *
+	 * @param shoplinkerOrder
 	 * @return
 	 * @author jmh
 	 * @since 2021. 5. 20
 	 */
 	Collection<GagaMap> getOrderExcelList(ShoplinkerOrder shoplinkerOrder);
 
+	/**
+	 * 송장전송-전송 목록 건수
+	 *
+	 * @param shoplinkerInvoice
+	 * @return
+	 * @author jmh
+	 * @since 2021. 5. 20
+	 */
+	int getSendInvoiceListCount(ShoplinkerInvoice shoplinkerInvoice);
+
+	/**
+	 * 송장전송-전송 목록
+	 *
+	 * @param shoplinkerInvoice
+	 * @return
+	 * @author jmh
+	 * @since 2021. 5. 20
+	 */
+	Collection<ShoplinkerInvoice> getSendInvoiceList(ShoplinkerInvoice shoplinkerInvoice);
+
 	/**
 	 * 송장- 목록 엑셀
 	 *
-	 * @param shoplinkerSearch
+	 * @param shoplinkerInvoice
 	 * @return
 	 * @author jmh
 	 * @since 2021. 5. 20

+ 0 - 11
src/main/java/com/style24/admin/biz/service/TsaOcmService.java

@@ -3,14 +3,11 @@ package com.style24.admin.biz.service;
 import java.util.Collection;
 
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
 import com.style24.admin.biz.dao.TsaOcmDao;
 import com.style24.admin.support.security.session.TsaSession;
-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;
@@ -32,17 +29,9 @@ public class TsaOcmService {
     @Autowired
     private TscMessageByLocale message;
 
-    @Autowired
-	private TscKakaotalkService kakaotalkService;
-
-    @Autowired
-	private Environment env;
-
     @Autowired
     private TsaOcmDao ocmDao;
 
-    @Autowired
-	private ObjectMapper mapper;
 
     /**
      * 제휴몰 목록

Разница между файлами не показана из-за своего большого размера
+ 928 - 9
src/main/java/com/style24/admin/biz/service/TsaShoplinkerService.java


+ 219 - 216
src/main/java/com/style24/admin/biz/web/TsaShoplinkerController.java

@@ -6,6 +6,7 @@ import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
 
@@ -69,7 +70,7 @@ public class TsaShoplinkerController extends TsaBaseController {
 	private Environment env;
 
 	@Autowired
-	private TscShoplinkerService shoplinkerService;
+	private TscShoplinkerService tscShoplinkerService;
 
 	@Autowired
 	private TsaShoplinkerService admShoplinkerService;
@@ -86,7 +87,7 @@ public class TsaShoplinkerController extends TsaBaseController {
 	@Autowired
 	private ObjectMapper mapper;
 
-	private static final int EXCEL_ROW_COUNT = 1000;
+	private static final int EXCEL_ROW_COUNT = 500;
 
 
 
@@ -109,7 +110,7 @@ public class TsaShoplinkerController extends TsaBaseController {
 	/**
 	 * 샵링커상품등록-전송목록조회
 	 *
-	 * @return
+	 * @return shoplinkerSearch
 	 * @author jmh
 	 * @since 2021. 5. 20
 	 */
@@ -136,10 +137,10 @@ public class TsaShoplinkerController extends TsaBaseController {
 
 		shoplinkerSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
 		shoplinkerSearch.setPageable(new TscPageRequest(shoplinkerSearch.getPageNo() - 1, shoplinkerSearch.getPageSize()));
-		shoplinkerSearch.getPageable().setTotalCount(shoplinkerService.getGoodsSendListCount(shoplinkerSearch));
+		shoplinkerSearch.getPageable().setTotalCount(admShoplinkerService.getGoodsSendListCount(shoplinkerSearch));
 
 		result.set("pageing", shoplinkerSearch);
-		result.set("goodsList", shoplinkerService.getGoodsSendList(shoplinkerSearch));
+		result.set("goodsList", admShoplinkerService.getGoodsSendList(shoplinkerSearch));
 
 		return result;
 	}
@@ -147,7 +148,7 @@ public class TsaShoplinkerController extends TsaBaseController {
 	/**
 	 * 샵링커상품등록-상품등록엑셀업로드
 	 *
-	 * @param shoplinkerGoods
+	 * @param paramMap
 	 * @return GagaMap
 	 * @throws Exception
 	 * @author jmh
@@ -168,14 +169,14 @@ public class TsaShoplinkerController extends TsaBaseController {
 		// API 호출 중인건수 있는지 확인
 		ShoplinkerSearch slkSearch = new ShoplinkerSearch();
 		slkSearch.setApiType("GOODS");
-		ShoplinkerSearch runMap = shoplinkerService.getCallRunableInfo(slkSearch);
+		ShoplinkerSearch runMap = tscShoplinkerService.getCallRunableInfo(slkSearch);
 
 		if( runMap.getRunCnt() < 1 ) {
 			try {
 				// 1. API 호출 이력 저장 시작(실행중 재호출 금지하기 위함)
 				slkSearch.setSid(GagaDateUtil.getTodayDateTime());
 				slkSearch.setRegNo(TsaSession.getInfo().getUserNo());
-				shoplinkerService.saveCallApiRunable(slkSearch);
+				tscShoplinkerService.saveCallApiRunable(slkSearch);
 
 				// 2. 엑셀데이터 확인 및 xml 관련 위치 확인
 				String[] goodsNames = {"goodsCd"};
@@ -206,7 +207,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);
+				rtnMap = admShoplinkerService.createShoplinkerXml(ecxelGoodsList, shoplinkerGoods);
 
 				// 4. 파일 삭제
 				GagaFileUtil.deleteFile(GagaFileUtil.getConcatenationPath(targetPath, shoplinkerGoods.getExcelFileNm()));
@@ -223,9 +224,138 @@ public class TsaShoplinkerController extends TsaBaseController {
 			}finally {
 				// 4. API 호출 이력 저장 종료
 				slkSearch.setRunStat("END");
-				shoplinkerService.saveCallApiRunable(slkSearch);
+				tscShoplinkerService.saveCallApiRunable(slkSearch);
+			}
+		}
+	}
+
+	/**
+	 * 샵링커상품등록- 엑셀다운로드
+	 *
+	 * @param shoplinkerSearch
+	 * @return
+	 * @author jmh
+	 * @since 2021. 06. 29
+	 */
+	@GetMapping("/goods/excel/list")
+	public ResponseEntity<InputStreamResource> downloadGoodsInfoExcelList(HttpServletRequest request, ShoplinkerSearch shoplinkerSearch) throws Exception {
+		String excelfileName = "샵링커_상품_" + GagaDateUtil.getTodayDateTime() + ".xlsx";
+		String excelFilenameWithPath = GagaFileUtil.getConcatenationPath(env.getProperty("download.path"), "excel", excelfileName);
+
+		if (!StringUtils.isBlank(shoplinkerSearch.getBrandList())) {
+			try {
+				String[] arrBrandCd = mapper.readValue(shoplinkerSearch.getBrandList(), String[].class);
+				shoplinkerSearch.setMultiBrand(arrBrandCd);
+			} catch (Exception e) {
+				e.printStackTrace();
+				throw new IllegalStateException("브랜드코드 검색중 오류로 인해 조회되지 않았습니다.");
 			}
 		}
+
+		// multi row 검색관련 처리
+		if (!StringUtils.isBlank(shoplinkerSearch.getCondition())) {
+			shoplinkerSearch.setConditionList(shoplinkerSearch.getCondition().replaceAll("\r", "").trim().split("\n"));
+		}
+
+		shoplinkerSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
+		shoplinkerSearch.setPageable(new TscPageRequest(shoplinkerSearch.getPageNo() - 1, shoplinkerSearch.getPageSize()));
+		shoplinkerSearch.getPageable().setTotalCount(admShoplinkerService.getGoodsSendListCount(shoplinkerSearch));
+
+		admShoplinkerService.getGoodsSendExcelList(shoplinkerSearch, excelFilenameWithPath);
+
+		return GagaFileUtil.writeFile(request, excelFilenameWithPath);
+	}
+
+
+	/**
+	 * 재고이력-화면
+	 * @return ModelAndView
+	 * @author jmh
+	 * @since 2021. 5. 20
+	 */
+	@GetMapping("/stock/result/form")
+	public ModelAndView stockHistoryForm() {
+		ModelAndView mav = new ModelAndView();
+
+		mav.setViewName("shoplinker/ShoplinkerStockForm");
+
+		return mav;
+	}
+
+	/**
+	 * 재고이력-목록조회
+	 *
+	 * @param shoplinkerSearch
+	 * @return GagaMap
+	 * @author jmh
+	 * @since 2021. 5. 20
+	 */
+	@PostMapping("/stock/result/list")
+	@ResponseBody
+	public GagaMap getStockHistoryList(@RequestBody ShoplinkerSearch shoplinkerSearch) {
+
+		GagaMap result = new GagaMap();
+
+		if (!StringUtils.isBlank(shoplinkerSearch.getBrandList())) {
+			try {
+				String[] arrBrandCd = mapper.readValue(shoplinkerSearch.getBrandList(), String[].class);
+				shoplinkerSearch.setMultiBrand(arrBrandCd);
+			} catch (Exception e) {
+				e.printStackTrace();
+				throw new IllegalStateException("브랜드코드 검색중 오류로 인해 조회되지 않았습니다.");
+			}
+		}
+
+		// multi row 검색관련 처리
+		if (!StringUtils.isBlank(shoplinkerSearch.getCondition())) {
+			shoplinkerSearch.setConditionList(shoplinkerSearch.getCondition().replaceAll("\r", "").trim().split("\n"));
+		}
+
+		shoplinkerSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
+		shoplinkerSearch.setPageable(new TscPageRequest(shoplinkerSearch.getPageNo() - 1, shoplinkerSearch.getPageSize()));
+		shoplinkerSearch.getPageable().setTotalCount(admShoplinkerService.getStockListCount(shoplinkerSearch));
+
+		result.set("pageing", shoplinkerSearch);
+		result.set("stockList", admShoplinkerService.getStockList(shoplinkerSearch));
+
+		return result;
+	}
+
+	/**
+	 * 재고이력-엑셀다운로드
+	 *
+	 * @param shoplinkerSearch
+	 * @return
+	 * @author jmh
+	 * @since 2021. 06. 29
+	 */
+	@GetMapping("/stock/excel/list")
+	public ResponseEntity<InputStreamResource> downloadStockInfoExcelList(HttpServletRequest request, ShoplinkerSearch shoplinkerSearch) throws Exception {
+		String excelfileName = "샵링커_재고_" + GagaDateUtil.getTodayDateTime() + ".xlsx";
+		String excelFilenameWithPath = GagaFileUtil.getConcatenationPath(env.getProperty("download.path"), "excel", excelfileName);
+
+		if (!StringUtils.isBlank(shoplinkerSearch.getBrandList())) {
+			try {
+				String[] arrBrandCd = mapper.readValue(shoplinkerSearch.getBrandList(), String[].class);
+				shoplinkerSearch.setMultiBrand(arrBrandCd);
+			} catch (Exception e) {
+				e.printStackTrace();
+				throw new IllegalStateException("브랜드코드 검색중 오류로 인해 조회되지 않았습니다.");
+			}
+		}
+
+		// multi row 검색관련 처리
+		if (!StringUtils.isBlank(shoplinkerSearch.getCondition())) {
+			shoplinkerSearch.setConditionList(shoplinkerSearch.getCondition().replaceAll("\r", "").trim().split("\n"));
+		}
+
+		shoplinkerSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
+		shoplinkerSearch.setPageable(new TscPageRequest(shoplinkerSearch.getPageNo() - 1, shoplinkerSearch.getPageSize()));
+		shoplinkerSearch.getPageable().setTotalCount(admShoplinkerService.getStockListCount(shoplinkerSearch));
+
+		admShoplinkerService.getStockExcelList(shoplinkerSearch, excelFilenameWithPath);
+
+		return GagaFileUtil.writeFile(request, excelFilenameWithPath);
 	}
 
 
@@ -265,7 +395,7 @@ public class TsaShoplinkerController extends TsaBaseController {
 	/**
 	 * 주문수집관리-목록조회
 	 *
-	 * @return
+	 * @return shoplinkerOrder
 	 * @author jmh
 	 * @since 2021. 5. 20
 	 */
@@ -282,10 +412,10 @@ public class TsaShoplinkerController extends TsaBaseController {
 
 		shoplinkerOrder.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
 		shoplinkerOrder.setPageable(new TscPageRequest(shoplinkerOrder.getPageNo() - 1, shoplinkerOrder.getPageSize()));
-		shoplinkerOrder.getPageable().setTotalCount(shoplinkerService.getShoplinkerOrderListCount(shoplinkerOrder));
+		shoplinkerOrder.getPageable().setTotalCount(admShoplinkerService.getShoplinkerOrderListCount(shoplinkerOrder));
 
 		result.set("pageing", shoplinkerOrder);
-		result.set("shoplinkerOrderList", shoplinkerService.getShoplinkerOrderList(shoplinkerOrder));
+		result.set("shoplinkerOrderList", admShoplinkerService.getShoplinkerOrderList(shoplinkerOrder));
 
 		return result;
 	}
@@ -295,8 +425,8 @@ public class TsaShoplinkerController extends TsaBaseController {
 	 *
 	 * @param ordNo - 주문번호
 	 * @return ModelAndView
-	 * @author jsh77b
-	 * @since 2020. 11. 26
+	 * @author jmh
+	 * @since 2021. 5. 20
 	 */
 	@GetMapping("/order/collection/info")
 	@ResponseBody
@@ -306,8 +436,8 @@ public class TsaShoplinkerController extends TsaBaseController {
 		ShoplinkerOrder order = new ShoplinkerOrder();
 		order.setShoplinkerOrderId(shoplinkerOrderId);
 
-		mav.addObject("slkOrderInfo", shoplinkerService.getShoplinkerOrderInfo(order));
-		mav.addObject("extOrderInfo", shoplinkerService.getExtmallOrderInfo(shoplinkerOrderId));
+		mav.addObject("slkOrderInfo", admShoplinkerService.getShoplinkerOrderInfo(order));
+		mav.addObject("extOrderInfo", admShoplinkerService.getExtmallOrderInfo(shoplinkerOrderId));
 
 		mav.setViewName("shoplinker/ShoplinkerOrderDetailForm");
 
@@ -316,7 +446,7 @@ public class TsaShoplinkerController extends TsaBaseController {
 
 	/**
 	 * 주문수집관리-주문수집 api 호출
-	 * @return
+	 * @param apiStDate
 	 * @author jmh
 	 * @throws IOException
 	 * @since 2021. 5. 20
@@ -350,13 +480,13 @@ public class TsaShoplinkerController extends TsaBaseController {
 		ShoplinkerSearch slkSearch = new ShoplinkerSearch();
 		slkSearch.setApiType("ORDER");
 		slkSearch.setRegNo(TsaSession.getInfo().getUserNo());
-		ShoplinkerSearch runMap = shoplinkerService.getCallRunableInfo(slkSearch);
+		ShoplinkerSearch runMap = tscShoplinkerService.getCallRunableInfo(slkSearch);
 
 		if( runMap.getRunCnt() < 1 ) {
 			try {
 				// 1. API 호출 이력 저장 시작(실행중 재호출 금지하기 위함)
 				slkSearch.setSid(GagaDateUtil.getTodayDateTime());
-				shoplinkerService.saveCallApiRunable(slkSearch);
+				tscShoplinkerService.saveCallApiRunable(slkSearch);
 
 				// 2. 샵링커 api 호출 샵링커주문수집 등록
 				shoplinkerOrder.setSid(slkSearch.getSid());
@@ -365,16 +495,16 @@ public class TsaShoplinkerController extends TsaBaseController {
 				shoplinkerOrder.setShoplinkerId(env.getProperty("shoplinker.shoplinker_id"));
 				shoplinkerOrder.setRegNo(TsaSession.getInfo().getUserNo());
 				shoplinkerOrder.setAcType("ADMMIN");
-				rtnMap = shoplinkerService.insertShoplinkerOrderStep1(shoplinkerOrder);
+				rtnMap = tscShoplinkerService.insertShoplinkerOrderStep1(shoplinkerOrder);
 
 				// 3. 제휴몰 주문등록
 				slkSearch.setTxt("=>제휴몰");
-				shoplinkerService.updateCallApiRunable(slkSearch);
-				shoplinkerService.insertShoplinkerOrderStep2(shoplinkerOrder);
+				tscShoplinkerService.updateCallApiRunable(slkSearch);
+				tscShoplinkerService.insertShoplinkerOrderStep2(shoplinkerOrder);
 
 				// 4. 스타일24 주문등록 (제휴몰 - 대기상태인 것들)
 				slkSearch.setTxt("=>스타일24");
-				shoplinkerService.updateCallApiRunable(slkSearch);
+				tscShoplinkerService.updateCallApiRunable(slkSearch);
 				orderOcmService.createShoplinkerOrder("S", TsaSession.getInfo().getUserNo());
 
 			}catch (Exception e) {
@@ -393,15 +523,37 @@ public class TsaShoplinkerController extends TsaBaseController {
 					slkSearch.setRunStat("END");
 					slkSearch.setTxt("=>FINISH");
 				}
-				shoplinkerService.saveCallApiRunable(slkSearch);
+				tscShoplinkerService.saveCallApiRunable(slkSearch);
 			}
 		}
+	}
+
+	/**
+	 * 주문수집관리-엑셀다운로드
+	 *
+	 * @param shoplinkerOrder
+	 * @return
+	 * @author jmh
+	 * @since 2021. 06. 29
+	 */
+	@GetMapping("/order/excel/list")
+	public ResponseEntity<InputStreamResource> downloadOrderInfoExcelList(HttpServletRequest request, ShoplinkerOrder shoplinkerOrder) throws Exception {
+		String excelfileName = "샵링커_주문_" + GagaDateUtil.getTodayDateTime() + ".xlsx";
+		String excelFilenameWithPath = GagaFileUtil.getConcatenationPath(env.getProperty("download.path"), "excel", excelfileName);
+
+		shoplinkerOrder.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
+		shoplinkerOrder.setPageable(new TscPageRequest(shoplinkerOrder.getPageNo() - 1, shoplinkerOrder.getPageSize()));
+		shoplinkerOrder.getPageable().setTotalCount(admShoplinkerService.getShoplinkerOrderListCount(shoplinkerOrder));
 
+		admShoplinkerService.getOrderExcelList(shoplinkerOrder, excelFilenameWithPath);
+
+		return GagaFileUtil.writeFile(request, excelFilenameWithPath);
 	}
 
+
 	/**
 	 * 송장전송관리-화면
-	 * @return
+	 * @return ModelAndView
 	 * @author jmh
 	 * @since 2021. 5. 20
 	 */
@@ -425,7 +577,8 @@ public class TsaShoplinkerController extends TsaBaseController {
 	/**
 	 * 송장전송관리-전송목록조회
 	 *
-	 * @return
+	 * @param shoplinkerInvoice
+	 * @return GagaMap
 	 * @author jmh
 	 * @since 2021. 5. 20
 	 */
@@ -442,10 +595,10 @@ public class TsaShoplinkerController extends TsaBaseController {
 
 		shoplinkerInvoice.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
 		shoplinkerInvoice.setPageable(new TscPageRequest(shoplinkerInvoice.getPageNo() - 1, shoplinkerInvoice.getPageSize()));
-		shoplinkerInvoice.getPageable().setTotalCount(shoplinkerService.getSendInvoiceListCount(shoplinkerInvoice));
+		shoplinkerInvoice.getPageable().setTotalCount(admShoplinkerService.getSendInvoiceListCount(shoplinkerInvoice));
 
 		result.set("pageing", shoplinkerInvoice);
-		result.set("invoiceList", shoplinkerService.getSendInvoiceList(shoplinkerInvoice));
+		result.set("invoiceList", admShoplinkerService.getSendInvoiceList(shoplinkerInvoice));
 
 		return result;
 	}
@@ -453,8 +606,7 @@ public class TsaShoplinkerController extends TsaBaseController {
 	/**
 	 * 송장전송관리-송장전송
 	 *
-	 * @param shoplinkerGoods
-	 * @return GagaMap
+	 * @param
 	 * @throws Exception
 	 * @author jmh
 	 * @since 2021.5.20
@@ -467,14 +619,14 @@ public class TsaShoplinkerController extends TsaBaseController {
 		// API 호출 중인건수 있는지 확인
 		ShoplinkerSearch slkSearch = new ShoplinkerSearch();
 		slkSearch.setApiType("INVOICE");
-		ShoplinkerSearch runMap = shoplinkerService.getCallRunableInfo(slkSearch);
+		ShoplinkerSearch runMap = tscShoplinkerService.getCallRunableInfo(slkSearch);
 
 		if( runMap.getRunCnt() < 1 ) {
 			try {
 				// 1. API 호출 이력 저장 시작(실행중 재호출 금지하기 위함)
 				slkSearch.setSid(GagaDateUtil.getTodayDateTime());
 				slkSearch.setRegNo(TsaSession.getInfo().getUserNo());
-				shoplinkerService.saveCallApiRunable(slkSearch);
+				tscShoplinkerService.saveCallApiRunable(slkSearch);
 
 				ShoplinkerInvoice shoplinkerInvoice = new ShoplinkerInvoice();
 				shoplinkerInvoice.setStDate(stDate);
@@ -500,8 +652,8 @@ public class TsaShoplinkerController extends TsaBaseController {
 
 				// 2. xml 데이터 생성
 				shoplinkerInvoice.setCustomerId(env.getProperty("shoplinker.customer_id"));
-				Collection<ShoplinkerInvoice> sendList = shoplinkerService.getShoplinkerInvoiceOrdDtlList();
-				shoplinkerService.createShoplinkerInvoiceXml(shoplinkerInvoice, sendList);
+				Collection<ShoplinkerInvoice> sendList = tscShoplinkerService.getShoplinkerInvoiceOrdDtlSendList();
+				tscShoplinkerService.createShoplinkerInvoiceXml(shoplinkerInvoice, sendList);
 
 				rtnMap.setString("RESULT_TYPE", "TRUE");
 
@@ -521,13 +673,37 @@ public class TsaShoplinkerController extends TsaBaseController {
 					slkSearch.setRunStat("END");
 					slkSearch.setTxt("=>FINISH");
 				}
-				shoplinkerService.saveCallApiRunable(slkSearch);
+				tscShoplinkerService.saveCallApiRunable(slkSearch);
 			}
 		}
 	}
 
 	/**
-	 * 송장전송관리-송장전송(엑셀용)
+	 * 송장전송- 엑셀다운로드
+	 *
+	 * @param shoplinkerInvoice
+	 * @return
+	 * @author jmh
+	 * @since 2021. 06. 29
+	 */
+	@GetMapping("/invoice/excel/list")
+	public ResponseEntity<InputStreamResource> downloadOrderInfoExcelList(HttpServletRequest request, ShoplinkerInvoice shoplinkerInvoice) throws Exception {
+		String excelfileName = "샵링커_송장_" + GagaDateUtil.getTodayDateTime() + ".xlsx";
+		String excelFilenameWithPath = GagaFileUtil.getConcatenationPath(env.getProperty("download.path"), "excel", excelfileName);
+
+
+
+		shoplinkerInvoice.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
+		shoplinkerInvoice.setPageable(new TscPageRequest(shoplinkerInvoice.getPageNo() - 1, shoplinkerInvoice.getPageSize()));
+		shoplinkerInvoice.getPageable().setTotalCount(admShoplinkerService.getSendInvoiceListCount(shoplinkerInvoice));
+
+		admShoplinkerService.getInvoiceExcelList(shoplinkerInvoice, excelFilenameWithPath);
+
+		return GagaFileUtil.writeFile(request, excelFilenameWithPath);
+	}
+
+	/**
+	 * 송장전송관리-송장전송(업로드엑셀용)
 	 *
 	 * @param shoplinkerGoods
 	 * @return GagaMap
@@ -566,7 +742,7 @@ public class TsaShoplinkerController extends TsaBaseController {
 				// 1. API 호출 이력 저장 시작(실행중 재호출 금지하기 위함)
 				slkSearch.setSid(datestr);
 				slkSearch.setRegNo(TsaSession.getInfo().getUserNo());
-				shoplinkerService.saveCallApiRunable(slkSearch);
+				tscShoplinkerService.saveCallApiRunable(slkSearch);
 
 				// 2. 엑셀데이터 확인 및 xml 관련 위치 확인
 				String[] goodsNames = {"ordNo", "supplyCompCd"};
@@ -619,7 +795,7 @@ public class TsaShoplinkerController extends TsaBaseController {
 					slkSearch.setRunStat("END");
 					slkSearch.setTxt("=>FINISH");
 				}
-				shoplinkerService.saveCallApiRunable(slkSearch);
+				tscShoplinkerService.saveCallApiRunable(slkSearch);
 			}
 		}
 
@@ -627,64 +803,12 @@ public class TsaShoplinkerController extends TsaBaseController {
 	}
 	 ******************************************************************************************/
 
-	/**
-	 * 재고이력-화면
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	@GetMapping("/stock/result/form")
-	public ModelAndView stockHistoryForm() {
-		ModelAndView mav = new ModelAndView();
-
-		mav.setViewName("shoplinker/ShoplinkerStockForm");
-
-		return mav;
-	}
-
-	/**
-	 * 재고이력-목록조회
-	 *
-	 * @return
-	 * @author jmh
-	 * @since 2021. 5. 20
-	 */
-	@PostMapping("/stock/result/list")
-	@ResponseBody
-	public GagaMap getStockHistoryList(@RequestBody ShoplinkerSearch shoplinkerSearch) {
-
-		GagaMap result = new GagaMap();
-
-		if (!StringUtils.isBlank(shoplinkerSearch.getBrandList())) {
-			try {
-				String[] arrBrandCd = mapper.readValue(shoplinkerSearch.getBrandList(), String[].class);
-				shoplinkerSearch.setMultiBrand(arrBrandCd);
-			} catch (Exception e) {
-				e.printStackTrace();
-				throw new IllegalStateException("브랜드코드 검색중 오류로 인해 조회되지 않았습니다.");
-			}
-		}
-
-		// multi row 검색관련 처리
-		if (!StringUtils.isBlank(shoplinkerSearch.getCondition())) {
-			shoplinkerSearch.setConditionList(shoplinkerSearch.getCondition().replaceAll("\r", "").trim().split("\n"));
-		}
-
-		shoplinkerSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
-		shoplinkerSearch.setPageable(new TscPageRequest(shoplinkerSearch.getPageNo() - 1, shoplinkerSearch.getPageSize()));
-		shoplinkerSearch.getPageable().setTotalCount(shoplinkerService.getStockListCount(shoplinkerSearch));
-
-		result.set("pageing", shoplinkerSearch);
-		result.set("stockList", shoplinkerService.getStockList(shoplinkerSearch));
-
-		return result;
-	}
 
 	/**
 	 * 공통-api 실행여부확인
 	 *
 	 * @param slkSearch - 주문번호
-	 * @return ModelAndView
+	 * @return ShoplinkerSearch
 	 * @author jmh
 	 * @since 2020. 11. 26
 	 */
@@ -693,131 +817,10 @@ public class TsaShoplinkerController extends TsaBaseController {
 	public ShoplinkerSearch apiRunable(@RequestBody ShoplinkerSearch slkSearch) throws IOException {
 
 		slkSearch.setRegNo(TsaSession.getInfo().getUserNo());
-		ShoplinkerSearch runMap = shoplinkerService.getCallRunableInfo(slkSearch);
+		ShoplinkerSearch runMap = tscShoplinkerService.getCallRunableInfo(slkSearch);
 		return runMap;
 	}
 
-	/**
-	 * 상품목록 - 기본정보 엑셀다운로드
-	 *
-	 * @param shoplinkerSearch
-	 * @return
-	 * @author jmh
-	 * @since 2021. 06. 29
-	 */
-	@GetMapping("/goods/excel/list")
-	public ResponseEntity<InputStreamResource> downloadGoodsInfoExcelList(HttpServletRequest request, ShoplinkerSearch shoplinkerSearch) throws Exception {
-		String excelfileName = "샵링커_상품_" + GagaDateUtil.getTodayDateTime() + ".xlsx";
-		String excelFilenameWithPath = GagaFileUtil.getConcatenationPath(env.getProperty("download.path"), "excel", excelfileName);
-
-		if (!StringUtils.isBlank(shoplinkerSearch.getBrandList())) {
-			try {
-				String[] arrBrandCd = mapper.readValue(shoplinkerSearch.getBrandList(), String[].class);
-				shoplinkerSearch.setMultiBrand(arrBrandCd);
-			} catch (Exception e) {
-				e.printStackTrace();
-				throw new IllegalStateException("브랜드코드 검색중 오류로 인해 조회되지 않았습니다.");
-			}
-		}
-
-		// multi row 검색관련 처리
-		if (!StringUtils.isBlank(shoplinkerSearch.getCondition())) {
-			shoplinkerSearch.setConditionList(shoplinkerSearch.getCondition().replaceAll("\r", "").trim().split("\n"));
-		}
-
-		shoplinkerSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
-		shoplinkerSearch.setPageable(new TscPageRequest(shoplinkerSearch.getPageNo() - 1, shoplinkerSearch.getPageSize()));
-		shoplinkerSearch.getPageable().setTotalCount(shoplinkerService.getGoodsSendListCount(shoplinkerSearch));
-
-		admShoplinkerService.getGoodsSendExcelList(shoplinkerSearch, excelFilenameWithPath);
-
-		return GagaFileUtil.writeFile(request, excelFilenameWithPath);
-	}
-
-	/**
-	 * 재고이력- 엑셀다운로드
-	 *
-	 * @param shoplinkerSearch
-	 * @return
-	 * @author jmh
-	 * @since 2021. 06. 29
-	 */
-	@GetMapping("/stock/excel/list")
-	public ResponseEntity<InputStreamResource> downloadStockInfoExcelList(HttpServletRequest request, ShoplinkerSearch shoplinkerSearch) throws Exception {
-		String excelfileName = "샵링커_재고_" + GagaDateUtil.getTodayDateTime() + ".xlsx";
-		String excelFilenameWithPath = GagaFileUtil.getConcatenationPath(env.getProperty("download.path"), "excel", excelfileName);
-
-		if (!StringUtils.isBlank(shoplinkerSearch.getBrandList())) {
-			try {
-				String[] arrBrandCd = mapper.readValue(shoplinkerSearch.getBrandList(), String[].class);
-				shoplinkerSearch.setMultiBrand(arrBrandCd);
-			} catch (Exception e) {
-				e.printStackTrace();
-				throw new IllegalStateException("브랜드코드 검색중 오류로 인해 조회되지 않았습니다.");
-			}
-		}
-
-		// multi row 검색관련 처리
-		if (!StringUtils.isBlank(shoplinkerSearch.getCondition())) {
-			shoplinkerSearch.setConditionList(shoplinkerSearch.getCondition().replaceAll("\r", "").trim().split("\n"));
-		}
-
-		shoplinkerSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
-		shoplinkerSearch.setPageable(new TscPageRequest(shoplinkerSearch.getPageNo() - 1, shoplinkerSearch.getPageSize()));
-		shoplinkerSearch.getPageable().setTotalCount(shoplinkerService.getStockListCount(shoplinkerSearch));
-
-		admShoplinkerService.getStockExcelList(shoplinkerSearch, excelFilenameWithPath);
-
-		return GagaFileUtil.writeFile(request, excelFilenameWithPath);
-	}
-
-	/**
-	 * 주문수집- 엑셀다운로드
-	 *
-	 * @param shoplinkerOrder
-	 * @return
-	 * @author jmh
-	 * @since 2021. 06. 29
-	 */
-	@GetMapping("/order/excel/list")
-	public ResponseEntity<InputStreamResource> downloadOrderInfoExcelList(HttpServletRequest request, ShoplinkerOrder shoplinkerOrder) throws Exception {
-		String excelfileName = "샵링커_주문_" + GagaDateUtil.getTodayDateTime() + ".xlsx";
-		String excelFilenameWithPath = GagaFileUtil.getConcatenationPath(env.getProperty("download.path"), "excel", excelfileName);
-
-
-
-		shoplinkerOrder.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
-		shoplinkerOrder.setPageable(new TscPageRequest(shoplinkerOrder.getPageNo() - 1, shoplinkerOrder.getPageSize()));
-		shoplinkerOrder.getPageable().setTotalCount(shoplinkerService.getShoplinkerOrderListCount(shoplinkerOrder));
-
-		admShoplinkerService.getOrderExcelList(shoplinkerOrder, excelFilenameWithPath);
-
-		return GagaFileUtil.writeFile(request, excelFilenameWithPath);
-	}
-
-	/**
-	 * 송장전송- 엑셀다운로드
-	 *
-	 * @param shoplinkerInvoice
-	 * @return
-	 * @author jmh
-	 * @since 2021. 06. 29
-	 */
-	@GetMapping("/invoice/excel/list")
-	public ResponseEntity<InputStreamResource> downloadOrderInfoExcelList(HttpServletRequest request, ShoplinkerInvoice shoplinkerInvoice) throws Exception {
-		String excelfileName = "샵링커_송장_" + GagaDateUtil.getTodayDateTime() + ".xlsx";
-		String excelFilenameWithPath = GagaFileUtil.getConcatenationPath(env.getProperty("download.path"), "excel", excelfileName);
-
-
-
-		shoplinkerInvoice.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
-		shoplinkerInvoice.setPageable(new TscPageRequest(shoplinkerInvoice.getPageNo() - 1, shoplinkerInvoice.getPageSize()));
-		shoplinkerInvoice.getPageable().setTotalCount(shoplinkerService.getSendInvoiceListCount(shoplinkerInvoice));
-
-		admShoplinkerService.getInvoiceExcelList(shoplinkerInvoice, excelFilenameWithPath);
-
-		return GagaFileUtil.writeFile(request, excelFilenameWithPath);
-	}
 
 
 	/*
@@ -965,10 +968,10 @@ 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/order_time.xml";
+			testXmlUrl = "http://ts5000.ipdisk.co.kr:8999/shoplinker/order/order_time.xml"; // 20210401  143000 ~ 150000
 			//testXmlUrl = "http://ts5000.ipdisk.co.kr:8999/shoplinker/order/0528/order_real_1.xml";	// 28~31일 15시~07시
 			//testXmlUrl = "http://ts5000.ipdisk.co.kr:8999/shoplinker/order/0528/order_real_28.xml";	// 28 15시~235959  7개
-			testXmlUrl = "http://ts5000.ipdisk.co.kr:8999/shoplinker/order/0528/order_real_31.xml";	// 31일 000000시~07시  5582개
+			//testXmlUrl = "http://ts5000.ipdisk.co.kr:8999/shoplinker/order/0528/order_real_31.xml";	// 31일 000000시~07시  5582개
 			responseXmlData =   shoplinkerUtil.callShoplinkerApiByGet(GagaShoplinkerConstants.API_DOMAIN+"/Order/orderlist.php?iteminfo_url="+testXmlUrl, "");
 
 

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

@@ -2,8 +2,241 @@
 <!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">
 
+	<!-- 상품등록-단품 목록 조회 -->
+	<select id="getOptionList" parameterType="ShoplinkerGoods" resultType="ShoplinkerGoods">
+		/* TsaShoplinker.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">
+		/* TsaShoplinker.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">
+		/* TsaShoplinker.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">
+		/* TsaShoplinker.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">
+		/* TsaShoplinker.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">
+		/* TsaShoplinker.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">
+		/* TsaShoplinker.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
+
+			WHERE 1=1
+			<include refid="getListCondition_sql"/>
+		) A
+
+
+	</select>
+
+	<!-- 상품등록-상품 목록 -->
+	<select id="getGoodsSendList" parameterType="ShoplinkerSearch" resultType="ShoplinkerGoods">
+		/* TsaShoplinker.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
+
+			WHERE 1=1
+			<include refid="getListCondition_sql"/>
+		) A
+
+		ORDER BY REG_DT DESC
+		LIMIT #{pageable.limitStartRow} ,  #{pageable.pageSize}
+	</select>
+
+	<!-- 상품등록-상품 목록 엑셀 -->
 	<select id="getGoodsSendExcelList" parameterType="ShoplinkerSearch" resultType="paramMap">
-		/* TsaShoplinkerDao.getGoodsSendExcelList */
+		/* TsaShoplinker.getGoodsSendExcelList */
 		SELECT
 			 IFNULL(B.GOODS_NM, '') AS GOODS_NM
 			, IFNULL(B.BRAND_CD, '') AS BRAND_CD
@@ -31,7 +264,107 @@
 		ORDER BY REG_DT DESC
 	</select>
 
-	<!-- 상품 목록 조건 정보 -->
+	<!-- 재고-단품 등록 -->
+	<insert id="insertStockOption" parameterType="ShoplinkerGoods">
+		/* TsaShoplinker.insertStockOption */
+		INSERT INTO SHOPLINKER_STOCK (
+		    GOODS_CD
+			, OPT_CD
+			, STOCK_QTY
+			, SEND_YN
+			, SEND_DT
+			, REG_DT
+			, UPD_DT
+		)
+		VALUES (
+			#{goodsCd}
+			, #{optCd}
+			, #{quantity}
+			, 'Y'
+			, now()
+			, now()
+			, now()
+		) ON DUPLICATE KEY UPDATE
+		  	UPD_DT = now()
+	</insert>
+
+	<!-- 재고전송-목록 건수 -->
+	<select id="getStockListCount" parameterType="ShoplinkerSearch" resultType="int">
+		/* TsaShoplinker.getStockListCount */
+		SELECT COUNT(1) FROM (
+			SELECT
+				A.*
+				, B.GOODS_NM
+				, B.BRAND_CD
+				, 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'
+
+			<include refid="getListCondition_sql"/>
+		) A
+	</select>
+
+	<!-- 재고전송-목록 -->
+	<select id="getStockList" parameterType="ShoplinkerSearch" resultType="ShoplinkerGoods">
+		/* TsaShoplinker.getStockList */
+		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
+				, B.BRAND_CD
+				, 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'
+
+			<include refid="getListCondition_sql"/>
+		) A
+		ORDER BY A.REG_DT DESC, A.GOODS_CD, A.OPT_CD
+
+		LIMIT #{pageable.limitStartRow} ,  #{pageable.pageSize}
+	</select>
+
+	<!-- 재고- 목록 엑셀 -->
+	<select id="getStockExcelList" parameterType="ShoplinkerSearch" resultType="paramMap">
+	/* TsaShoplinker.getStockList */
+		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
+			, B.BRAND_CD
+			, 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'
+		<include refid="getListCondition_sql"/>
+
+		ORDER BY A.REG_DT DESC, A.GOODS_CD, A.OPT_CD
+
+	</select>
+
+	<!-- 상품/재고 목록 조건 정보 -->
 	<sql id="getListCondition_sql">
 
 		        <if test="goodsCd != null and goodsCd != ''">
@@ -48,10 +381,10 @@
 		        AND UPPER(B.GOODS_NM) LIKE CONCAT('%',UPPER(#{goodsNm}),'%')
 		        </if>
 		        <if test="brandCd != null and brandCd != ''">
-		        AND B.BRAND_CD = #{brandCd}
+		        AND BRAND_CD = #{brandCd}
 		        </if>
 		        <if test="multiBrand != null and multiBrand != ''">
-		        AND B.BRAND_CD IN
+		        AND BRAND_CD IN
 		            <foreach collection="multiBrand" item="item" index="index"  open="(" close=")" separator=",">
 		        #{item}
 		            </foreach>
@@ -79,35 +412,151 @@
 
 	</sql>
 
+	<!-- 샵링커주문수집-목록 건수 cnt -->
+	<select id="getShoplinkerOrderListCount" parameterType="ShoplinkerOrder" resultType="int">
+		/* TsaShoplinker.getShoplinkerOrderListCount */
+		select count(1) from (
+			SELECT
+				A.*
+				, B.VENDOR_ID
+				, B.EXTMALL_ID
+				, B.EXTMALL_NM
+				, B.AGENT_ORDER_ID
+				, B.EXTMALL_ORDER_ID
+				, IFNULL(B.UPLOAD_STAT, 'G021_50') AS 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
+				LEFT OUTER JOIN TB_EXTMALL_ORDER_UPLOAD B
+					ON A.SHOPLINKER_ORDER_ID = B.AGENT_ORDER_ID
 
-	<select id="getStockExcelList" parameterType="ShoplinkerSearch" resultType="paramMap">
-	/* TscShoplinkerDao.getStockList */
+			WHERE 1=1
+			<include refid="getSlkOrderListCondition_sql"/>
+		) A
+
+	</select>
+
+	<!-- 샵링커주문수집-목록 -->
+	<select id="getShoplinkerOrderList" parameterType="ShoplinkerOrder" resultType="ShoplinkerOrder">
+		/* TsaShoplinker.getShoplinkerOrderList */
+		SELECT * FROM
+		(
+			SELECT
+				A.*
+				, B.VENDOR_ID
+				, B.EXTMALL_ID
+				, B.EXTMALL_NM
+				, B.AGENT_ORDER_ID
+				, B.EXTMALL_ORDER_ID
+				, IFNULL(B.UPLOAD_STAT, 'G021_50') AS UPLOAD_STAT
+				, B.UPLOAD_FAIL_CD
+				, B.UPLOAD_FAIL_REASON
+				, IFNULL(B.ORD_NO, '') AS ORD_NO
+				, B.DELV_ADDR_SQ
+				, B.REG_DT AS EXTMALL_REG_DT
+			FROM SHOPLINKER_ORDER A
+				LEFT OUTER JOIN TB_EXTMALL_ORDER_UPLOAD B
+					ON A.SHOPLINKER_ORDER_ID = B.AGENT_ORDER_ID
+			WHERE 1=1
+
+			<include refid="getSlkOrderListCondition_sql"/>
+		) A
+
+		ORDER BY EXTMALL_REG_DT, REG_DT DESC
+		LIMIT #{pageable.limitStartRow} ,  #{pageable.pageSize}
+
+	</select>
+
+	<!-- 샵링커주문수집-상세 -->
+	<select id="getShoplinkerOrderInfo" parameterType="ShoplinkerOrder" resultType="ShoplinkerOrder">
+		/* TsaShoplinker.getShoplinkerOrderInfo */
 		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
-			, B.BRAND_CD
-			, 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
+			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
+			, STR_TO_DATE(ORDERDATE, '%Y%m%d%H%i%S') as ORDERDATE
+			, STR_TO_DATE(ORDER_REG_DATE, '%Y%m%d%H%i%S') as 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
+			, ORDER_FLAG
+			, EXTMALL_REG_YN
+			, REG_DT
+		FROM SHOPLINKER_ORDER
+		WHERE SHOPLINKER_ORDER_ID = #{shoplinkerOrderId}
+	</select>
 
-		<include refid="getListCondition_sql"/>
+	<!-- 제휴몰 주문등록 상세 -->
+	<select id="getExtmallOrderInfo" parameterType="String" resultType="ExtmallOrder">
+		/* TsaShoplinker.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>
 
-	<!-- 샵링커주문수집-목록 -->
+	<!-- 샵링커주문수집-목록엑셀 -->
 	<select id="getOrderExcelList" parameterType="ShoplinkerOrder" resultType="paramMap">
-		/* TscShoplinkerDao.getShoplinkerOrderList */
+		/* TsaShoplinker.getOrderExcelList */
 		SELECT * FROM
 		(
 			SELECT
@@ -184,10 +633,83 @@
 	        </if>
 	</sql>
 
+	<!-- 송장전송-전송 목록 건수 cnt -->
+	<select id="getSendInvoiceListCount" parameterType="ShoplinkerInvoice" resultType="int">
+		/* TsaShoplinker.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">
+		/* TsaShoplinker.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
+				, SL.REG_DT
+			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="getInvoiceExcelList" parameterType="ShoplinkerInvoice" resultType="paramMap">
-		/* TscShoplinkerDao.getInvoiceExcelList */
+		/* TsaShoplinker.getInvoiceExcelList */
 		SELECT * FROM
 		(
 			SELECT
@@ -234,8 +756,15 @@
             ]]>
             </if>
 
-	        <if test="apiResult != null and apiResult != ''">
+            <if test="extmallId != null and extmallId != ''">
+	        AND EXTMALL_ID = #{extmallId}
+            </if>
+
+	        <if test='apiResult != null and apiResult != "" and apiResult != "default"'>
 	        AND API_RESULT = #{apiResult}
+	        </if>
+	        <if test='apiResult != null and apiResult == "default"'>
+	        AND API_RESULT != 'true'
 	        </if>
 
 			<if test='conditionList != null and conditionList.length>0'>

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

@@ -76,11 +76,22 @@
 		{headerName: "상품코드",			field: "goodsCd",				width: 150, cellClass: 'text-center'},
 		{headerName: "상품명",			field: "sku",					width: 150, cellClass: 'text-center'},
 		{headerName: "옵션코드",			field: "optCd",					width: 150, cellClass: 'text-center'},
-		{headerName: "판매금액",			field: "currPrice",				width: 100, cellClass: 'text-center'},
-		{headerName: "할인금액",			field: "cpnDcAmt",				width: 100, cellClass: 'text-center'},
+		{headerName: "판매금액", 			field: "currPrice",				width: 100, cellClass: 'text-center'
+			,valueFormatter: function(params) {return params.value.addComma();},
+			cellEditor: 'textCellEditor',
+			cellEditorParams: { maxlength: 14, validType: 'numeric'}
+		},
 		{headerName: "주문수량",			field: "ordQty",				width: 100, cellClass: 'text-center'},
-		{headerName: "주문금액",			field: "ordAmt",				width: 200, cellClass: 'text-center'},
-		{headerName: "배송비",			field: "delvFee",				width: 100, cellClass: 'text-center'},
+		{headerName: "주문금액", 			field: "ordAmt", 				width: 100, cellClass: 'text-center'
+			,valueFormatter: function(params) {return params.value.addComma();},
+			cellEditor: 'textCellEditor',
+			cellEditorParams: { maxlength: 14, validType: 'numeric'}
+		},
+		{headerName: "배송비", 			field: "delvFee", 				width: 100, cellClass: 'text-center'
+			,valueFormatter: function(params) {return params.value.addComma();},
+			cellEditor: 'textCellEditor',
+			cellEditorParams: { maxlength: 14, validType: 'numeric'}
+		},
 		{headerName: "주문자",			field: "ordNm",					width: 100, cellClass: 'text-center'},
 		{headerName: "주문자전화번호",		field: "ordTelno",				width: 130, cellClass: 'text-center'},
 		{headerName: "주문자핸드폰번호",		field: "ordPhnno",				width: 130, cellClass: 'text-center'},

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

@@ -92,7 +92,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-gray btn-lg" onclick="$('#searchForm')[0].reset();">초기화</button>
+							<button type="button" class="btn btn-gray btn-lg" id="btnInit">초기화</button>
 							<button type="button" class="btn btn-primary btn-lg" id="btnGoodsUpload">엑셀업로드</button>
 							<!-- <button th:if="${sessionInfo.userId == 'jmh'}" type="button" class="btn btn-default btn-lg" onclick="fnTest();">테스트</button> -->
 						</li>
@@ -328,6 +328,15 @@
 	}
 	/**************** 검색 // *****************************************************/
 
+	/**************** 초기화 클릭시 *****************************************************/
+	$('#btnInit').on('click', function() {
+
+		$('#searchForm')[0].reset();
+		$("#multiBrand").empty();
+		$('#searchForm input[name=brandList]').val('');
+		$('#searchForm').find('#brandText').html('');
+	});
+	/**************** 초기화 클릭시 // *****************************************************/
 
 	/**************** 엑셀업로드 ********************************************************/
 	$('#btnGoodsUpload').on('click', function() {

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

@@ -93,7 +93,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-gray btn-lg" onclick="$('#searchForm')[0].reset();">초기화</button> -->
+							<button type="button" class="btn btn-gray btn-lg" id="btnInit">초기화</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> -->
 						</li>
@@ -284,6 +284,15 @@
 	}
 	/**************** 검색 // *****************************************************/
 
+	/**************** 초기화 클릭시 *****************************************************/
+	$('#btnInit').on('click', function() {
+
+		$('#searchForm')[0].reset();
+		$("#multiBrand").empty();
+		$('#searchForm input[name=brandList]').val('');
+		$('#searchForm').find('#brandText').html('');
+	});
+	/**************** 초기화 클릭시 // *****************************************************/
 
 	/**************** 송장전송 ********************************************************/
 	$('#btnSendInvoice').on('click', function() {

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

@@ -122,8 +122,8 @@
 				<ul class="panelBar">
 					<li class="center">
 						<button type="button" class="btn btn-base btn-lg" id="btnSearch">조회</button>
+						<button type="button" class="btn btn-gray btn-lg" id="btnInit">초기화</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>
 				</ul>
 			</div>
@@ -354,6 +354,16 @@
 	}
 	/**************** 검색 // *****************************************************/
 
+	/**************** 초기화 클릭시 *****************************************************/
+	$('#btnInit').on('click', function() {
+
+		$('#searchForm')[0].reset();
+		$("#multiBrand").empty();
+		$('#searchForm input[name=brandList]').val('');
+		$('#searchForm').find('#brandText').html('');
+	});
+	/**************** 초기화 클릭시 // *****************************************************/
+
 	/**************** 엑셀다운로드 *****************************************************/
 	var fnExcelDownLoad = function(){
 		var formId = '#searchForm';

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

@@ -86,6 +86,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-gray btn-lg" id="btnInit">초기화</button>
 						</li>
 					</ul>
 				</div>
@@ -158,6 +159,33 @@
 		fnListSearch();
 	});
 
+	// 브랜드 조회 선택시
+	$('#btnSearchBrand').on('click', function() {
+		cfnOpenBrandListPopup('fnSetBrandInfo', 'M');
+	});
+
+	// 브랜드 조회 팝업에서 호출
+	var fnSetBrandInfo = function(result) {
+		var arrbrandCd = [];
+		var brandText = "";
+		var bIndex = 0;
+		$('#searchForm').find('#brandText').html('');
+		$('#searchForm input[name=searchTxt]').val('');
+		result.forEach(function(brand){
+			bIndex++;
+			arrbrandCd.push(brand.brandCd);
+		});
+
+		// 조회값이 하나일 경우 화면에 코드 노출 그외는 갯수 처리
+		if (bIndex == 1) {
+			$('#searchForm input[name=searchTxt]').val(arrbrandCd[0]);
+		}else{
+			brandText = bIndex + " 개";
+			$('#searchForm').find('#brandText').html(brandText);
+		}
+		var jsonData = JSON.stringify(arrbrandCd);
+		$("#searchForm input[name=brandList]").val(jsonData);
+	}
 
 	/**************** 검색 ********************************************************/
 	$('#btnSearch').on('click', function() {
@@ -249,6 +277,16 @@
 	}
 	/**************** 검색 // *****************************************************/
 
+	/**************** 초기화 클릭시 *****************************************************/
+	$('#btnInit').on('click', function() {
+
+		$('#searchForm')[0].reset();
+		$("#multiBrand").empty();
+		$('#searchForm input[name=brandList]').val('');
+		$('#searchForm').find('#brandText').html('');
+	});
+	/**************** 초기화 클릭시 // *****************************************************/
+
 	/**************** 엑셀다운로드 *****************************************************/
 	var fnExcelDownLoad = function(){
 		var formId = '#searchForm';

Некоторые файлы не были показаны из-за большого количества измененных файлов