ソースを参照

샵링커수정,엑셀업로드(임시)

jmh 4 年 前
コミット
2ea53a7fc5

+ 97 - 1
src/main/java/com/style24/admin/biz/dao/TsaOcmDao.java

@@ -123,7 +123,7 @@ public interface TsaOcmDao {
 	 * @author jmh
 	 * @since 2021. 5. 31
 	 */
-	int getExtmallOrderCnt(Order order);
+	Order getExtmallOrderCnt(Order order);
 
 
 	// ------------------------- 주문등록 소스 -------------------------------------------//
@@ -308,4 +308,100 @@ public interface TsaOcmDao {
 	Collection<Order> getFreeGiftGoodsApplyVal(Order order);
 	// ------------------------- 주문등록 소스 끝 -------------------------------------------//
 	// ------------------------- 주문등록 소스 끝 -------------------------------------------//
+
+
+
+
+
+
+
+	/**
+	 * 제휴몰주문 임시 테이블 삭제
+	 *
+	 * @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);
 }

+ 168 - 36
src/main/java/com/style24/admin/biz/service/TsaOcmService.java

@@ -1,18 +1,21 @@
 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;
+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.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.biz.service.TscOrderChangeService;
 import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.persistence.domain.Extmall;
@@ -40,9 +43,15 @@ public class TsaOcmService {
     @Autowired
     private TscMessageByLocale message;
 
+    @Autowired
+	private Environment env;
+
     @Autowired
     private TsaOcmDao ocmDao;
 
+    @Autowired
+	private ObjectMapper mapper;
+
     /**
      * 제휴몰 목록
      * @param extmall - 제휴몰 정보
@@ -133,9 +142,9 @@ public class TsaOcmService {
      * 샵링커 주문수집으로 외부몰주문등록된 건 중 '대기'상태인 것들에 대해 주문등록처리를 한다.
      */
     @Transactional("shopTxnManager")
-    public void createShoplinkerOrder() {
+    public void createShoplinkerOrder(String uploadGb) {
 
-    	Collection<Order> orderList = this.sortOrderList();
+    	Collection<Order> orderList = this.sortOrderList(uploadGb);
 
     	if (orderList != null && !orderList.isEmpty()) {
 	    	for( Order order : orderList ) {
@@ -178,7 +187,7 @@ public class TsaOcmService {
 	    					cancelGoodsNms += orderDetail.getGoodsNm()+",";
 	    					cancelAmt += orderDetail.getOrdAmt();
 
-	    					exOrdDtl.setUploadStat("G021_40");	// 실패
+	    					exOrdDtl.setUploadStat(TsaConstants.ExtmallUploadStat.FAIL.value());	// 실패
 	    					exOrdDtl.setOrdNo(null);
 	    					exOrdDtl.setUploadFailCd(vdMap.getString("uploadFailCd"));
 	    					exOrdDtl.setUploadFailReason(vdMap.getString("message"));
@@ -274,7 +283,7 @@ public class TsaOcmService {
 	            				ocmDao.createSellQty(orderDetail);
 
 	                            // 외부몰 정보 업데이트
-	                            exOrdDtl.setUploadStat("G021_30");	// 성공
+	                            exOrdDtl.setUploadStat(TsaConstants.ExtmallUploadStat.SUCC.value());	// 성공
 	        					ocmDao.updateExtmallOrder(exOrdDtl);
 
 	        					dtlNos += orderDetail.getOrdDtlNo()+",";
@@ -302,7 +311,7 @@ public class TsaOcmService {
 	    		        		for(Order ftMap : freegiftApplyAmtList ) {
 	    		        			dtlGoodsCds += ftMap.getGoodsCd() +",";
 	    		        		}
-	    		        		System.out.println("hmj 2dtlGoodsCds ; "+dtlGoodsCds );
+
 	    		        		dtlGoodsCds = dtlGoodsCds.substring(0, dtlGoodsCds.length()-1);
 	    		        		dtlGoodsCdsArr = dtlGoodsCds.split(",");
 	    		        		order.setFreegiftGoodsArr(dtlGoodsCdsArr);
@@ -359,45 +368,44 @@ public class TsaOcmService {
 	                // 8. 알림톡 발송
 	                if( 0 == cancelAmt ) {
 	                	// 전체성공
-	                	System.out.println(" hmj :: 전체성공 !! ");
+	                	System.out.println(" ######  :: 전체성공 !! ");
 
 	                }else {
 	                	// 부분품절 - 제휴몰에서 자동 취소 문자 발송을 하지 않는 경우에만 발송
 	                	// coupang, WEMAPE, ST11TH, GMARKET, AUCTION, Fashion Plus, 판다코리아, 예스24, 홈플러스, LOTTE ON
 	                	cancelGoodsNms = cancelGoodsNms.substring(0, cancelGoodsNms.length()-1);
-	                	System.out.println(" hmj :: 부분성공  (실패 상품명 : "+cancelGoodsNms);
+	                	System.out.println(" ######  :: 부분성공  (실패 상품명 : "+cancelGoodsNms);
 	                }
 
 
 	    		}else {
-
+	    			System.out.println("### 전체실패 :: "+ordCheckMsg);
 	    			if( "ALL_FAIL".equals(ordCheckMsg) ) {	// NOT = 이미 등록된 주문건
 	    				// 전체실패 일때만 알림톡 발송
 	    				// 제휴몰에서 자동 취소 문자 발송을 하지 않는 경우에만 발송
 	        			// coupang, WEMAPE, ST11TH, GMARKET, AUCTION, Fashion Plus, 판다코리아, 예스24, 홈플러스, LOTTE ON
+	    			}
 
+    				// 외부몰 주문등록 상태 업데이트
+    				ExtmallOrder exOrdDtl;
+    				GagaMap vdMap;
+    				for( Order orderDetail : order.getOrderDetailList()) {
+    					System.out.println("### 전체실패2 :: "+ordCheckMsg);
+    					vdMap = this.saveGoodsInfo(orderDetail);
+
+    					exOrdDtl = new ExtmallOrder();
+    					exOrdDtl.setVendorId(orderDetail.getVendorId());
+    					exOrdDtl.setExtmallId(orderDetail.getExtmallId());
+    					exOrdDtl.setAgentOrderId(orderDetail.getAgentOrderId());
+    					exOrdDtl.setExtmallOrderId(orderDetail.getExtmallOrderId());
+    					exOrdDtl.setUploadStat(TsaConstants.ExtmallUploadStat.FAIL.value());	// 실패
+    					exOrdDtl.setOrdNo(vdMap.getInt("ordNo"));	// 실패
+
+    					exOrdDtl.setUploadFailCd(vdMap.getString("uploadFailCd"));
+    					exOrdDtl.setUploadFailReason(vdMap.getString("message"));
+    					ocmDao.updateExtmallOrder(exOrdDtl);
+    				}
 
-	    				// 외부몰 주문등록 상태 업데이트
-	    				ExtmallOrder exOrdDtl;
-	    				GagaMap vdMap;
-	    				for( Order orderDetail : order.getOrderDetailList()) {
-
-	    					vdMap = this.saveGoodsInfo(orderDetail);
-
-	    					exOrdDtl = new ExtmallOrder();
-	    					exOrdDtl.setVendorId(orderDetail.getVendorId());
-	    					exOrdDtl.setExtmallId(orderDetail.getExtmallId());
-	    					exOrdDtl.setAgentOrderId(orderDetail.getAgentOrderId());
-	    					exOrdDtl.setExtmallOrderId(orderDetail.getExtmallOrderId());
-	    					exOrdDtl.setUploadStat("G021_40");	// 실패
-
-	    					exOrdDtl.setUploadFailCd(vdMap.getString("uploadFailCd"));
-	    					exOrdDtl.setUploadFailReason(vdMap.getString("message"));
-	    					ocmDao.updateExtmallOrder(exOrdDtl);
-	    				}
-
-
-	    			}
 	    		}
 	        }
 
@@ -412,15 +420,19 @@ public class TsaOcmService {
      * @author jsh77b
      * @since 2021. 03. 09
     */
-    private Collection<Order> sortOrderList() {
+    private Collection<Order> sortOrderList(String uploadGb) {
     	Collection<Order> orderList = new ArrayList<Order>();
         Collection<Order> tmpOrdDtlList = new ArrayList<Order>();
 
         // 1. 외부몰주문등록 대기목록 조회
         ExtmallOrder params = new ExtmallOrder();
-        params.setUploadStat("G021_00");	// 대기
-        Collection<ExtmallOrder> exMastList = ocmDao.getExtmallMasterOrderList(params);
+        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>();
 
@@ -564,7 +576,7 @@ public class TsaOcmService {
 				succCnt ++;
 			}
 
-			// 동일한 주문건이 있을경우, 전체 중지
+			// 동일한 주문건이 있을경우, 전체 중지 (이미 알림톡 결과발송을 했으므로)
 			if (ExtmallUploadFailStat.ORDER.value().equals(resultMap.get("uploadFailCd").toString())) {
 				succCnt = -1;	// 알림톡 발송도 안함.
 				break;
@@ -601,9 +613,11 @@ public class TsaOcmService {
 
 		// 중복저장확인
 		param.setVendorId(TsaConstants.VendorId.SHOPLINKER.value());
-		int extRegCnt = ocmDao.getExtmallOrderCnt(param);
-		if( 0 < extRegCnt) {
+		//int extRegCnt = ocmDao.getExtmallOrderCnt(param);
+		Order dtlOrd = ocmDao.getExtmallOrderCnt(param);
+		if( null != dtlOrd) {
 			result.put("uploadFailCd", ExtmallUploadFailStat.ORDER.value());
+			result.put("ordNo", dtlOrd.getOrdNo());
 			result.put("message", "동일한 주문건이 존재합니다.");
 			return result;
 		}
@@ -823,4 +837,122 @@ public class TsaOcmService {
 	}
 
 
+
+
+
+
+	/**
+	 * 외부몰주문등록 엑셀 저장
+	 *
+	 * @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();
+
+
+			/*if (index == 0) {
+				vendorId = extmallOrder.getVendorId();
+			}*/
+
+			for (int validation = 0; validation < params.length; validation++) {
+				if( validation != 0 && validation != 15 ) {	// 첫번재열, 이메일 미체크
+					if ("".equals(params[validation]) || params[validation] == null) {
+						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);
+	}
+
+
 }

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

@@ -1249,8 +1249,9 @@ public class TsaShoplinkerService {
 			extmallOrder = new ExtmallOrder();
 			extmallOrder.setAllParams(slOrder);
 			extmallOrder.setVendorId(TsaConstants.VendorId.SHOPLINKER.value());	// 샵링커
-			extmallOrder.setUploadStat("G021_00"); // 대기
+			extmallOrder.setUploadStat(TsaConstants.ExtmallUploadStat.WAIT.value()); 	// 대기
 			extmallOrder.setRegNo(TsaSession.getInfo().getUserNo());
+			extmallOrder.setUploadGb("S");										// 업로드구분(샵링커:S, 엑셀:E)
 
 			try {
 
@@ -1284,9 +1285,8 @@ public class TsaShoplinkerService {
 
 			}catch(Exception e) {
 				log.error("TsaShoplinkerService.insertShoplinkerOrderStep2 Error : "+e);
-				extmallOrder.setUploadStat("G021_40");	//실패
-				extmallOrder.setUploadFailCd("G022_90");
-				//extmallOrder.setUploadFailCd(xmlUrl);
+				extmallOrder.setUploadStat(TsaConstants.ExtmallUploadStat.FAIL.value());	//실패
+				extmallOrder.setUploadFailCd(TsaConstants.ExtmallUploadFailStat.ETC.value());
 				extmallOrder.setUploadFailReason("제휴몰 등록오류 :: "+StringUtils.abbreviate(e.getMessage(), 0 , 120)); // 실패사유
 				ocmDao.insertExtmallOrder(extmallOrder);
 			}
@@ -1308,7 +1308,7 @@ public class TsaShoplinkerService {
 
 		GagaMap rMap = new GagaMap();
 		rMap.setString("RESULT_MSG", "FAIL");
-		rMap.setString("UploadStat", "G021_40");
+		rMap.setString("UploadStat", TsaConstants.ExtmallUploadStat.FAIL.value());
 
 		/*if( null != slOrder.getDeliveryInvoice() && !slOrder.getDeliveryInvoice().isEmpty()) {
 		    rMap.setString("UploadFailCd", "G022_70");
@@ -1317,7 +1317,7 @@ public class TsaShoplinkerService {
 		}*/
 
 		if( null == slOrder.getReceiveAddr() || slOrder.getReceiveAddr().isEmpty()) {
-			rMap.setString("UploadFailCd", "G022_90");
+			rMap.setString("UploadFailCd", TsaConstants.ExtmallUploadFailStat.ETC.value());
 			rMap.setString("UploadFailReason", "주소정보 없음.");
 			return rMap;
 		}

+ 94 - 14
src/main/java/com/style24/admin/biz/web/TsaOcmController.java

@@ -1,8 +1,10 @@
 package com.style24.admin.biz.web;
 
+import java.util.ArrayList;
 import java.util.Collection;
 
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -11,15 +13,18 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 
+import com.gagaframework.excel.GagaExcelUtil;
+import com.gagaframework.web.parameter.GagaMap;
 import com.gagaframework.web.rest.server.GagaResponse;
+import com.gagaframework.web.util.GagaFileUtil;
 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.env.TsaConstants;
 import com.style24.admin.support.security.session.TsaSession;
 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;
 
@@ -39,12 +44,16 @@ public class TsaOcmController extends TsaBaseController {
 	@Autowired
 	private TscMessageByLocale message;
 
+	@Autowired
+	private Environment env;
+
 	@Autowired
 	private TsaOcmService ocmService;
 
 	@Autowired
 	private TsaRendererService rendererService;
 
+
 	/**
 	 * 제휴몰관리 화면
 	 * @return
@@ -226,8 +235,14 @@ public class TsaOcmController extends TsaBaseController {
 		return super.ok(message.getMessage("SUCC_0001"));
 	}
 
+
+
+
+
+
+
 	/**
-	 * 주문업로드 화면
+	 * 제휴몰주문업로드 화면
 	 * @param
 	 * @return
 	 * @author jmh
@@ -237,22 +252,87 @@ public class TsaOcmController extends TsaBaseController {
 	public ModelAndView extmallOrderUploadForm() {
 		ModelAndView mav = new ModelAndView();
 
-		// 제휴몰벤더
-		mav.addObject("vendorList", rendererService.getCommonCodeList("G003", "Y", TsaSession.getInfo().getSupplyCompCd()));
+		mav.setViewName("ocm/ExtmallOrderRegisterForm");
 
-		// 제휴몰
-		Extmall extmall = new Extmall();
-		extmall.setVendorId(TsaConstants.VendorId.SHOPLINKER.value()); // 샵링커
-		mav.addObject("extmallList", ocmService.getExtmallList(extmall));
+		return mav;
+	}
 
-		// 업로드상태 콤보박스 목록
-		mav.addObject("uploadStatList", rendererService.getCommonCodeList("G021"));
 
-		// 업로드실패사유 콤보박스 목록
-		mav.addObject("uploadFailList", rendererService.getCommonCodeList("G022"));
+	/**
+	 * 제휴몰주문업로드 엑셀 업로드
+	 *
+	 * @param extmallOrder - 외부몰주문정보
+	 * @return GagaResponse
+	 * @throws Exception -exception
+	 * @author jmh
+	 * @since 2021. 06. 17
+	 */
+	@PostMapping("/extmallorder/excelupload/save")
+	@ResponseBody
+	public GagaResponse saveExtmallorderExcelupload(@RequestBody ExtmallOrder extmallOrder) throws Exception {
 
-		mav.setViewName("ocm/ExtmallOrderRegisterForm");
+		String targetPath = env.getProperty("upload.excel.target.path") + "/excel/";
+		Collection<GagaMap> ecxelGoodsList = new ArrayList<>();
 
-		return mav;
+		// 외부몰주문등록
+		if ("createExtmallOrder".equals(extmallOrder.getProcJob())) {
+			// DB 처리 시 사용되는 파라미터명(셀명) 설정
+			String[] extMallOrderNames = {"ordDt", "extmallId", "extmallOrderId", "agentOrderId", "extmallProdId", "goodsCd", "sku", "optCd", "currPrice", "cpnDcAmt", "ordQty", "delvFee", "ordNm", "ordTelno", "ordPhnno", "ordEmail", "recipNm", "recipTelno", "recipPhnno", "recipZipcode", "recipBaseAddr", "recipDtlAddr", "delvMemo"};
+
+			ecxelGoodsList = GagaExcelUtil.getList(
+				GagaFileUtil.getConcatenationPath(targetPath, extmallOrder.getExcelFileNm()), 0, extMallOrderNames, 0);
+		}
+		ocmService.createExtmallOrderExcelupload(ecxelGoodsList, extmallOrder.getExcelFileNm());
+
+		// 파일 삭제
+		GagaFileUtil.deleteFile(GagaFileUtil.getConcatenationPath(targetPath, extmallOrder.getExcelFileNm()));
+
+		return super.ok(message.getMessage("SUCC_0007"));
+	}
+
+	/**
+	 * 제휴몰주문업로드 업로드 후 목록
+	 *
+	 * @return Collection<ExtmallOrder>
+	 * @throws Exception -exception
+	 * @author jmh
+	 * @since 2021. 06. 17
+	 */
+	@PostMapping("/extmallorder/upload/tmp/list")
+	@ResponseBody
+	public Collection<ExtmallOrder> getExtmallOrderUploadTmpList() throws Exception {
+		return ocmService.getExtmallOrderUploadTmpList();
+	}
+
+	/**
+	 * 제휴몰주문업로드 업로드 후 저장 처리
+	 *
+	 * @param extmallOrder - 외부몰주문업로드 정보
+	 * @return GagaResponse
+	 * @throws Exception -exception
+	 * @author jmh
+	 * @since 2021. 06. 17
+	 */
+	@PostMapping("/extmallorder/save")
+	@ResponseBody
+	public GagaResponse saveExtmallorder(@RequestBody ExtmallOrder extmallOrder) {
+		String resultMsg = ocmService.saveExtmallorder(extmallOrder);
+		return super.ok(resultMsg);
 	}
+
+	/**
+	 * 제휴몰주문업로드 업로드 후 목록(결과확인)
+	 *
+	 * @return Collection<ExtmallOrder>
+	 * @throws Exception -exception
+	 * @author jmh
+	 * @since 2021. 06. 17
+	 */
+	@PostMapping("/extmallorder/upload/second/list")
+	@ResponseBody
+	public Collection<ExtmallOrder> getExtmallOrderUploadSecondList() {
+		return ocmService.getExtmallOrderUploadSecondList();
+	}
+
+
 }

+ 1 - 11
src/main/java/com/style24/admin/biz/web/TsaShoplinkerController.java

@@ -365,7 +365,7 @@ public class TsaShoplinkerController extends TsaBaseController {
 				// 4. 스타일24 주문등록 (제휴몰 - 대기상태인 것들)
 				slkSearch.setTxt("=>스타일24 주문등록 처리중");
 				shoplinkerService.saveCallApiRunable(slkSearch);
-				ocmService.createShoplinkerOrder();
+				ocmService.createShoplinkerOrder("S");
 
 			}catch (Exception e) {
 
@@ -735,16 +735,6 @@ public class TsaShoplinkerController extends TsaBaseController {
 					+ "<message><![CDATA[택배사 명칭이 일치하지 않거나 코드가 일치하지 않습니다. 재전송 바랍니다.]]></message>\r\n"
 					+ "</ResultMessage>";
 
-			String responseXmlData2 = "<?xml version=\"1.0\" encoding=\"euc-kr\"?>\r\n"
-					+ "			<Shoplinker>\r\n"
-					+ "				<ResultMessage>\r\n"
-					+ "					<result>true</result>\r\n"
-					+ "					<product_id>P1524578</product_id>\r\n"
-					+ "					<message>등록성공</message>\r\n"
-					+ "				</ResultMessage>\r\n"
-					+ "			</Shoplinker>";
-
-
 
 			//xx invoceMsg = (com.gagaframework.shoplinker.domain.invoice.ResultMessage) shoplinkerUtil.unmarshal(null, responseXmlData);
 			//xx obf = (com.gagaframework.shoplinker.domain.invoice.ObjectFactory) shoplinkerUtil.unmarshal(com.gagaframework.shoplinker.domain.invoice.ObjectFactory.class, responseXmlData);

+ 18 - 0
src/main/java/com/style24/admin/support/env/TsaConstants.java

@@ -106,6 +106,24 @@ public class TsaConstants {
 		}
 	}
 
+	// 제휴몰 파일업로드 상태유형
+	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"),				// 상품코드미매핑

+ 23 - 10
src/main/java/com/style24/persistence/domain/ExtmallOrder.java

@@ -2,7 +2,6 @@ package com.style24.persistence.domain;
 
 import java.util.Collection;
 
-import com.gagaframework.shoplinker.domain.orderlist.Order;
 import com.style24.persistence.TscBaseDomain;
 
 import lombok.Data;
@@ -19,12 +18,12 @@ 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 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 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 sku; 				// 옵션명(필수옵션+추가옵션)
@@ -55,17 +54,21 @@ public class ExtmallOrder extends TscBaseDomain {
 	private Integer ordNo; 				// 주문번호(주문)
 	private Integer delvAddrSq; 		// 배송지일련번호(배송지)
 	private String optCd;				// 옵션코드
-
-	private String stDate;
-	private String edDate;
-
+	private String uploadGb;			// 업로드구분(샵링커:S, 엑셀:E)
+	private String excelFileNm;			// 엑셀업로드 파일명
+	private String procJob;
+	private String warningYn;			// 주의여부(엑셀업로드 결과표시관련)
 	private String supplyCompCd;		// 공급업체코드
 	private Integer totalOrdAmt;		// 총 주문금액
 
+	private String stDate;
+	private String edDate;
 	private String regNm;				// 자사-등록자명
 	private Integer regNo;				// 자사-등록자번호
 	private String regDt;				// 자사-등록일시
 
+	private String succCnt;				// 엑셀업로드 성공수
+	private String failCnt;				// 엑셀업로드 실패수
 
 
 	Collection<ExtmallOrder> orderDetailList;		// 주문상세목록
@@ -99,6 +102,16 @@ public class ExtmallOrder extends TscBaseDomain {
 		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;
+	}
 }
 
 

+ 406 - 18
src/main/java/com/style24/persistence/mybatis/shop/TsaOcm.xml

@@ -189,6 +189,10 @@
 		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.RECIP_NM, A.RECIP_PHNNO, A.RECIP_BASE_ADDR, A.RECIP_DTL_ADDR
 		ORDER BY A.VENDOR_ID, A.EXTMALL_ID, A.EXTMALL_ORDER_ID
 	</select>
@@ -240,6 +244,10 @@
 			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>
@@ -293,9 +301,10 @@
 			, UPLOAD_FAIL_REASON
 			, ORD_NO
 			, DELV_ADDR_SQ
+			, OPT_CD
+			, UPLOAD_GB
 			, REG_NO
 			, REG_DT
-			, OPT_CD
 		)
 		SELECT
 			#{vendorId}
@@ -331,9 +340,10 @@
 			, #{uploadFailReason}
 			, #{ordNo}
 			, #{delvAddrSq}
+			, #{optCd}
+			, #{uploadGb}
 			, #{regNo}
 			, now()
-			, #{optCd}
 		FROM DUAL
 		WHERE NOT EXISTS(
 				SELECT 1 FROM TB_EXTMALL_ORDER_UPLOAD
@@ -341,6 +351,7 @@
 				AND EXTMALL_ID = #{extmallId}
 				AND AGENT_ORDER_ID = #{agentOrderId}
 				AND EXTMALL_ORDER_ID = #{extmallOrderId}
+				AND UPLOAD_GB = #{uploadGb}
 			  )
 	</insert>
 
@@ -359,20 +370,16 @@
 		AND EXTMALL_ID = #{extmallId}
 		AND AGENT_ORDER_ID = #{agentOrderId}
 		AND EXTMALL_ORDER_ID = #{extmallOrderId}
+		AND UPLOAD_STAT != 'G021_30'
 
 	</update>
 
 	<!-- 제휴몰주문등록 - 주문등록 cnt -->
-	<select id="getExtmallOrderCnt" parameterType="Order" resultType="int">
+	<select id="getExtmallOrderCnt" parameterType="Order" resultType="Order">
 	/* TsaOcm.getExtmallOrderCnt */
 		SELECT
-			COUNT(1)
+			*
 		FROM TB_ORDER_DETAIL A
-				LEFT OUTER JOIN TB_EXTMALL_ORDER_UPLOAD B
-					ON 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
 		WHERE A.VENDOR_ID = #{vendorId}
 		AND A.EXTMALL_ID = #{extmallId}
 		AND A.AGENT_ORDER_ID = #{agentOrderId}
@@ -413,7 +420,7 @@
 		     , #{email}
 		     , 'G000_10'
 		     , #{npayOrdNo}
-		     , #{frontGb}
+		     , 'P'
 		     , #{custNo}
 		     , NOW()
 		     , #{custNo}
@@ -1204,11 +1211,11 @@
 		     , G.ITEMKIND_CD
 		     , G.FORMAL_GB
 		     , G.LIST_PRICE
-		     , FN_GET_APPLY_CPN1_PRICE(G.GOODS_CD, #{frontGb})  AS CURR_PRICE
+		     , FN_GET_APPLY_CPN1_PRICE(G.GOODS_CD, #{shoplinkerFrontGb})  AS CURR_PRICE
 		     , G.SELF_GOODS_YN
 		     , G.GOODS_STAT
-		     , (CASE WHEN #{frontGb} = 'P' THEN G.PNT_PRATE ELSE G.PNT_MRATE END) AS PNT_RATE
-		     , (CASE WHEN #{frontGb} = 'P' THEN G.PRE_PPNT_USABLE_YN ELSE G.PRE_MPNT_USABLE_YN END) AS PRE_PNT_USABLE_YN
+		     , (CASE WHEN #{shoplinkerFrontGb} = 'P' THEN G.PNT_PRATE ELSE G.PNT_MRATE END) AS PNT_RATE
+		     , (CASE WHEN #{shoplinkerFrontGb} = 'P' THEN G.PRE_PPNT_USABLE_YN ELSE G.PRE_MPNT_USABLE_YN END) AS PRE_PNT_USABLE_YN
 		     , G.MIN_ORD_QTY
 		     , G.MAX_ORD_QTY
 		     , G.DAY_MAX_ORD_QTY
@@ -1223,7 +1230,7 @@
 		        FROM TB_ITEMKIND
 		        WHERE ITEMKIND_CD = G.ITEMKIND_CD) AS NI_CLSF_CD
 		     , G.MAIN_COLOR_CD
-		     , (IFNULL(NULLIF(#{colorCd},'') , G.MAIN_COLOR_CD )) AS COLOR_CD
+		     , (IFNULL(NULLIF(#{shoplinkerColorCd},'') , G.MAIN_COLOR_CD )) AS COLOR_CD
 		     , G.SUPPLY_COMP_CD
 		     , G.SELF_MALL_YN
 		     , G.AGE_GRP_CD
@@ -1239,8 +1246,8 @@
 		     , FN_GET_CODE_NM('G008',G.GOODS_STAT) AS GOODS_STAT_NM
 		     , DATE_FORMAT(G.REG_DT ,'%Y%m%d%H%i%S') AS REG_DT
 		     , DATE_FORMAT(G.UPD_DT ,'%Y%m%d%H%i%S') AS UPD_DT
-		     , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = IFNULL(#{colorCd}, IFNULL(G.MAIN_COLOR_CD,'XX')) AND DEFAULT_IMG_YN = 'Y') AS SYS_IMG_NM
-		     , (SELECT COLOR_KNM FROM TB_COLOR C WHERE COLOR_CD = IFNULL(NULLIF(#{colorCd},'') , G.MAIN_COLOR_CD ) AND USE_YN  = 'Y') AS COLOR_NM
+		     , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = IFNULL(#{shoplinkerColorCd}, IFNULL(G.MAIN_COLOR_CD,'XX')) AND DEFAULT_IMG_YN = 'Y') AS SYS_IMG_NM
+		     , (SELECT COLOR_KNM FROM TB_COLOR C WHERE COLOR_CD = IFNULL(NULLIF(#{shoplinkerColorCd},'') , G.MAIN_COLOR_CD ) AND USE_YN  = 'Y') AS COLOR_NM
 		     -- , BP.CURR_PRICE AS BENEFIT_PRICE
 		     , (CASE WHEN W.GOODS_CD IS NULL THEN 'N' ELSE 'Y' END) AS WISH_YN
 		     , (CASE WHEN G.GOODS_TYPE = 'G056_N' THEN (SELECT IFNULL(MAX(CASE WHEN SOLDOUT_YN = 'Y' THEN 0
@@ -1249,7 +1256,7 @@
 		                                                FROM  VW_STOCK
 		                                                WHERE GOODS_CD = G.GOODS_CD
 		                                                AND OPT_CD1 =  (CASE WHEN G.SELF_GOODS_YN = 'N' THEN OPT_CD1
-		                                                                    ELSE  IFNULL(#{colorCd}, IFNULL(G.MAIN_COLOR_CD,'XX')) END)
+		                                                                    ELSE  IFNULL(#{shoplinkerColorCd}, IFNULL(G.MAIN_COLOR_CD,'XX')) END)
 		                                                GROUP BY GOODS_CD )
 		            ELSE (SELECT IFNULL(MAX(CASE WHEN SOLDOUT_YN = 'Y' THEN 0
 		                                      ELSE CURR_STOCK_QTY
@@ -1293,7 +1300,7 @@
 		INNER JOIN TB_DELV_FEE_POLICY E ON G.SUPPLY_COMP_CD = E.SUPPLY_COMP_CD
 		                                     AND G.DELV_FEE_CD =  E.DELV_FEE_CD
 		LEFT OUTER JOIN TB_WISHLIST W ON G.GOODS_CD = W.GOODS_CD
-		                              AND IFNULL(#{custNo}, 0) = W.CUST_NO
+		                              AND IFNULL(#{shoplinkerCustNo}, 0) = W.CUST_NO
 		LEFT OUTER JOIN TB_GOODS_SHOT_DELV_SKIP DS ON G.GOODS_CD =DS.GOODS_CD
 		WHERE G.GOODS_CD = #{goodsCd}
 		AND NOW() BETWEEN SELL_STDT AND SELL_EDDT	/*판매기간 확인*/
@@ -1444,4 +1451,385 @@
 <!--***** 주문정보등록 **************************************************************** -->
 
 
+
+
+
+
+
+	<!--외부몰주문등록 전 임시 테이블 삭제-->
+	<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}
+		 /*AND NOT EXISTS (
+                         SELECT 1
+                         FROM   TB_EXTMALL_ORDER_UPLOAD
+                         WHERE  VENDOR_ID = A.VENDOR_ID
+                         AND    EXTMALL_ID = A.EXTMALL_ID
+                         AND    AGENT_ORDER_ID = A.AGENT_ORDER_ID
+                         AND    EXTMALL_ORDER_ID = A.EXTMALL_ORDER_ID
+                         AND    UPLOAD_STAT = 'G021_30'
+                         )
+          */
+	</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
+					, 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
+					, 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
+					, 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
+			     , 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>
+
+	<!-- 외부몰주문업로드 선처리 -->
+	<update id="updateExtmallOrderUploadPrehandle" parameterType="ExtmallOrder">
+		/* TsaOcm.updateExtmallOrderUploadPrehandle */
+		UPDATE TB_EXTMALL_ORDER_UPLOAD
+		SET    UPLOAD_STAT = '20' --유효성검증
+		WHERE  VENDOR_ID = #{vendorId}
+		AND    REG_NO = #{regNo}
+		AND    UPLOAD_GB = 'E'
+		<choose>
+		    <when test="agentOrderId != null and agentOrderId != '' and extmallOrderId != null and extmallOrderId != ''"> <!-- 주문수집 출고 수작업 처리 시 -->
+		AND    AGENT_ORDER_ID = #{agentOrderId}
+		AND    EXTMALL_ORDER_ID = #{extmallOrderId}
+		AND    UPLOAD_STAT = '40' --실패
+		    </when>
+		    <otherwise>
+		AND    UPLOAD_STAT = '00' --대기
+		    </otherwise>
+		</choose>
+	</update>
+
 </mapper>

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

@@ -180,7 +180,7 @@
 			  	ELSE 'N'
 			  END KIDS_YN
 		FROM TB_GOODS A
-			LEFT OUTER JOIN TEMP_ITEMKIND B ON A.ITEMKIND_CD = B.ITEMKIND_CD
+			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'
@@ -520,6 +520,7 @@
 					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"/>
@@ -548,6 +549,7 @@
 					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"/>
@@ -634,6 +636,7 @@
 			, 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>
 

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

@@ -25,14 +25,14 @@
 		</div>
 		<!-- //메뉴 설명 -->
 
-
-		<form id="searchForm" name="searchForm" action="#" th:action="@{'/shoplinker/order/collection/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
+		<!-- <form id="searchForm" name="searchForm" action="#" th:action="@{'/shoplinker/order/collection/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;"> -->
+		<form id="extmallOrderForm" name="extmallOrderForm" >
 			<!-- 검색조건 영역 -->
 			<div class="panelStyle">
 				<ul class="lrStyle">
 					<li>
 						<p class="dot">주문등록샘플 엑셀파일을 다운로드 할 경우 <font color="red">[샘플다운로드]</font> 버튼을 클릭한다.</p>
-						<p class="dot"><font color="red">[엑셀업로드]</font> 버튼을 눌러 데이터를 업로드 한다. 업로드 된 데이터가 목록에 나타난다.</p>
+						<p class="dot"><font color="red">[엑셀업로드]</font> 버튼을 눌러 데이터를 업로드 한다. 업로드 된 데이터가 목록에 나타난다.(※ 미매핑이 표시될경우 주문등록이 실패처리된다.)</p>
 						<p class="dot"><font color="red">[주문등록]</font> 버튼을 눌러 주문등록을 완료한다.</p>
 						<p class="dot"><font color="red">주문등록 처리는 몇 분이 소요되기도 하며</font> 결과는 <font color="red">[결과확인]</font> 버튼을 눌러 확인할 수 있다.</p>
 					</li>
@@ -40,7 +40,7 @@
 
 				<ul class="panelBar padT20">
 					<li class="center">
-						<input type="button" class="btn btn-default btn-lg" id="btnExcelDown" onclick="cfnDownloadSampleFile('SF003');" value="외부몰 주문등록양식 다운로드" />
+						<input type="button" class="btn btn-default btn-lg" id="btnExcelDown" onclick="cfnDownloadSampleFile('SF003');" 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="결과확인"/>
@@ -60,98 +60,87 @@
 
 	</div>
 
-<script type="text/javascript" src="/ux/plugins/gaga/gaga.paging.js?v=20210114"></script>
 <script th:inline="javascript">
 /*<![CDATA[*/
-	var sessRoleCd 		= [[${sessionInfo.roleCd}]];
-
-	var statusValue = {"Y":"판매중", "N":"판매중지"};
-	var apiGbValue = {"10":"상품등록", "11":"상품수정"};
-	var procGbValue = {"1":"전송완료", "0":"전송실패"};
-
-	let vendorList = gagajf.convertToArray([[${vendorList}]]);
-	let extmallList = gagajf.convertToArray([[${extmallList}]]);
-	let uploadStatList = gagajf.convertToArray([[${uploadStatList}]]);
-	let uploadFailList = gagajf.convertToArray([[${uploadFailList}]]);
-
 	var columnDefs = [
-		{headerName: "업로드상태",			field: "uploadStat",			width: 150, cellClass: 'text-center'},
-		{headerName: "업로드실패사유",		field: "uploadFailCd",			width: 150, cellClass: 'text-center'},
+		{headerName: "업로드상태",			field: "uploadStatNm",			width: 150, cellClass: 'text-center'},
+		{headerName: "업로드실패사유",		field: "uploadFailNm",			width: 150, cellClass: 'text-center'},
 		{headerName: "업로드실패사유상세",	field: "uploadFailReason",		width: 200, cellClass: 'text-center'},
-		{headerName: "샵링커주문번호",		field: "agentOrderId", 			width: 150, cellClass: 'text-center'},
+		{headerName: "제휴몰ID",			field: "extmallId",				width: 130, cellClass: 'text-center'},
+		{headerName: "제휴몰명",			field: "extmallNm",				width: 130, cellClass: 'text-center'},
 		{headerName: "쇼핑몰주문번호",		field: "extmallOrderId",		width: 150, cellClass: 'text-center'},
-		{headerName: "쇼핑몰주문일련번호",	field: "extmallOrderDtlId",		width: 150, cellClass: 'text-center'},
-		{headerName: "수집일시",			field: "regDt",					width: 150, cellClass: 'text-center'},
-		{headerName: "주문일시",			field: "ordDt",					width: 150, cellClass: 'text-center'},
-		{headerName: "결제일시",			field: "payDt",					width: 150, cellClass: 'text-center'},
-		{headerName: "외부몰벤더ID",		field: "vendorId",				width: 100, cellClass: 'text-center'},
-		{headerName: "외부몰ID",			field: "extmallId",				width: 100, cellClass: 'text-center'},
-		{headerName: "외부몰사용자ID",		field: "extmallUserId",			width: 100, cellClass: 'text-center'},
-		{headerName: "외부몰명",			field: "extmallNm",				width: 130, cellClass: 'text-center'},
+		{headerName: "샵링커주문번호",		field: "agentOrderId", 			width: 150, cellClass: 'text-center'},
+		{headerName: "제휴상품코드",		field: "extmallProdId",			width: 150, cellClass: 'text-center'},
 		{headerName: "상품코드",			field: "goodsCd",				width: 150, cellClass: 'text-center'},
-		{headerName: "사이즈코드",			field: "sizeCd",				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: "ordQty",				width: 100, cellClass: 'text-center'},
-		{headerName: "판매금액",			field: "ordAmt",				width: 100, cellClass: 'text-center'},
-		{headerName: "실판매금액",			field: "realOrdAmt",			width: 100, cellClass: 'text-center'},
-		{headerName: "배송비",			field: "delvFee",				width: 200, cellClass: 'text-center'},
-		{headerName: "주문자명",			field: "orderNm",				width: 200, cellClass: 'text-center'},
-		{headerName: "주문자핸드폰번호",		field: "orderPhnno",			width: 200, cellClass: 'text-center'},
-		{headerName: "주문자전화번호",		field: "orderTelno",			width: 200, cellClass: 'text-center'},
-		{headerName: "주문자이메일",		field: "orderEmail",			width: 200, cellClass: 'text-center'},
-		{headerName: "수령자명",			field: "recipNm",				width: 200, cellClass: 'text-center'},
-		{headerName: "수령자핸드폰번호",		field: "recipPhnno",			width: 200, cellClass: 'text-center'},
-		{headerName: "수령자전화번호",		field: "recipTelno",			width: 200, cellClass: 'text-center'},
-		{headerName: "수령자이메일",		field: "recipEmail",			width: 200, cellClass: 'text-center'},
-		{headerName: "수령자우편번호",		field: "recipPostNo",			width: 200, cellClass: 'text-center'},
+		{headerName: "주문금액",			field: "ordAmt",				width: 200, cellClass: 'text-center'},
+		{headerName: "배송비",			field: "delvFee",				width: 100, cellClass: 'text-center'},
+		{headerName: "주문자",			field: "ordNm",					width: 100, cellClass: 'text-center'},
+		{headerName: "주문자전화번호",		field: "ordTelno",				width: 130, cellClass: 'text-center'},
+		{headerName: "주문자핸드폰번호",		field: "ordPhnno",				width: 130, cellClass: 'text-center'},
+		{headerName: "주문자이메일",		field: "ordEmail",				width: 130, cellClass: 'text-center'},
+		{headerName: "수령자",			field: "recipNm",				width: 100, cellClass: 'text-center'},
+		{headerName: "수령자전화번호",		field: "recipTelno",			width: 130, cellClass: 'text-center'},
+		{headerName: "수령자핸드폰번호",		field: "recipPhnno",			width: 130, cellClass: 'text-center'},
+		{headerName: "수령자우편번호",		field: "recipZipcode",			width: 130, cellClass: 'text-center'},
 		{headerName: "수령자기본주소",		field: "recipBaseAddr",			width: 300, cellClass: 'text-center'},
 		{headerName: "수령자상세주소",		field: "recipDtlAddr",			width: 200, cellClass: 'text-center'},
 		{headerName: "배송메모",			field: "delvMemo",				width: 200, cellClass: 'text-center'},
-		{headerName: "주문번호",			field: "ordNo",					width: 200, cellClass: 'text-center'}
+		{headerName: "주문번호",			field: "ordNo",					width: 130, cellClass: 'text-center'}
+		// {headerName: "수집일시",		field: "regDt",					width: 150, cellClass: 'text-center'},
+		// {headerName: "주문일시",		field: "ordDt",					width: 150, cellClass: 'text-center'},
+		// {headerName: "결제일시",		field: "payDt",					width: 150, cellClass: 'text-center'},
 	];
 
 
 	let gridOptions = gagaAgGrid.getGridOptions(columnDefs);
 
-	// Cell click
-	gridOptions.onCellClicked = function(event) {
-		if (event.colDef.field != 'extmallId')
-			return;
-
-		$('#detailForm select[name=vendorId]').val(event.data.vendorId);
-		$('#detailForm input[name=extmallId]').val(event.data.extmallId);
-		$('#detailForm input[name=extmallUserId]').val(event.data.extmallUserId);
-		$('#detailForm input[name=extmallNm]').val(event.data.extmallNm);
-		$('#detailForm select[name=supplyCompCd]').val(event.data.supplyCompCd);
-		$('#detailForm input[name=sellStoreCd]').val(event.data.sellStoreCd);
-		$('#detailForm input[name=stockSellRate]').val(event.data.stockSellRate);
-		$('#detailForm input[name=priceAcceptRate]').val(event.data.priceAcceptRate);
-
-		if (event.data.dwdpYn == 'Y') {
-			$('#detailForm input:radio[name=dwdpYn]').eq(0).trigger('click');
-		} else {
-			$('#detailForm input:radio[name=dwdpYn]').eq(1).trigger('click');
-		}
-
-		if (event.data.cnclsmsSendYn == 'Y') {
-			$('#detailForm input:radio[name=cnclsmsSendYn]').eq(0).trigger('click');
-		} else {
-			$('#detailForm input:radio[name=cnclsmsSendYn]').eq(1).trigger('click');
-		}
-
-		if (event.data.useYn == 'Y') {
-			$('#detailForm input:radio[name=useYn]').eq(0).trigger('click');
-		} else {
-			$('#detailForm input:radio[name=useYn]').eq(1).trigger('click');
+	gridOptions.getRowStyle = function(params) {
+		if ("Y" == params.data.warningYn) {
+			return { background: '#FF8383' };
 		}
 	}
 
 	$(document).ready(function() {
-
 		// Create a agGrid
 		gagaAgGrid.createGrid('gridList', gridOptions);
 
 	});
 
+	//엑셀업로드 클릭 시
+	$('#btnExcelUpload').on('click', function() {
+		cfnExcelUploadPopup('createExtmallOrder', 'createExtmallOrder');
+	});
+
+	//주문등록 클릭 시
+	$('#btnSaveExtmallOrderUpload').on('click', function() {
+		var jsonData = JSON.stringify($('#extmallOrderForm').serializeObject());
+		gagajf.ajaxJsonSubmit('/ocm/extmallorder/save', jsonData);
+	});
+
+	$('#btnSearchExtmallOrderUpload').on('click', function() {
+		var url = '/ocm/extmallorder/upload/second/list';
+		gagaAgGrid.fetch(url, gridOptions, 'extmallOrderForm');
+		gridOptions.columnApi.setColumnsVisible(['uploadStatNm','uploadFailNm','uploadFailReason','ordAmt','ordNo'], true);
+	});
+
+	var createExtmallOrder = function(result){
+		var data = {procJob : result.procJob
+					,excelFileNm : result.excelFileNm
+					};
+		var jsonData = JSON.stringify(data);
+		gagajf.ajaxJsonSubmit('/ocm/extmallorder/excelupload/save', jsonData, fnExtmallOrderCreateCallBack);
+	}
+
+	var fnExtmallOrderCreateCallBack = function(result){
+		var url = '/ocm/extmallorder/upload/tmp/list';
+		gagaAgGrid.fetch(url, gridOptions, 'extmallOrderForm');
+		gridOptions.columnApi.setColumnsVisible(['uploadStatNm','uploadFailNm','uploadFailReason','ordAmt','ordNo'], false);
+	}
 
 /*]]>*/
 </script>