jmh 4 年 前
コミット
4ad0c90821

+ 261 - 258
src/main/java/com/style24/admin/biz/service/TsaOcmService.java

@@ -135,265 +135,271 @@ public class TsaOcmService {
      * TscOrderService.createPreOrder 참조
      * 샵링커 주문수집으로 외부몰주문등록된 건 중 '대기'상태인 것들에 대해 주문등록처리를 한다.
      */
-    @Transactional("shopTxnManager")
     public void createShoplinkerOrder(String uploadGb) {
-
     	Collection<ExtmallOrder> orderList = this.sortOrderList(uploadGb);
 
     	if (orderList != null && !orderList.isEmpty()) {
 	    	for( ExtmallOrder order : orderList ) {
+	    		createShoplinkerOrderSub(order);
+	        }
+    	}
+    }
 
-	    		GagaMap result = this.orderValidationCheck(order);
-
-	    		if ("SUCCESS".equals(result.get("message").toString())) {
-	    			// 1. 주문기본정보등록
-	                ocmDao.createOrder(order);
-
-	                // 2. 주문배송정보등록
-	                ocmDao.createDeliveryAddr(order);
-
-	                // 3. 주문배송비정보등록
-	                ocmDao.createDeliveryFee(order);
-
-					// 4. 주문상세정보등록
-	                String dtlNos = "";			// 주문상세번호
-	                String cancelGoodsNms = ""; // 콤마로 구분
-	                int cancelAmt = 0;
-	                int payAmt = 0;
-	                GagaMap vdMap;
-	    			for( ExtmallOrder orderDetail : order.getOrderDetailList()) {
-
-	    				vdMap = this.checkGoodsInfo(orderDetail);
-
-	    				orderDetail.setOrdNo(order.getOrdNo());
-	    				orderDetail.setDelvAddrSq(order.getDelvAddrSq());
-
-
-	    				if (!"SUCCESS".equals(vdMap.get("message").toString())) {
-	    					cancelGoodsNms += orderDetail.getGoodsNm()+",";
-	    					cancelAmt += orderDetail.getOrdAmt();
-
-	    					orderDetail.setUploadStat(TsaConstants.ExtmallUploadStat.FAIL.value());	// 실패
-	    					orderDetail.setOrdNo(null);
-	    					orderDetail.setUploadFailCd(vdMap.getString("uploadFailCd"));
-	    					orderDetail.setUploadFailReason(vdMap.getString("message"));
-	    					ocmDao.updateExtmallOrder(orderDetail);
-
-	    				}else {
-
-	    					orderDetail.setOrdNo(order.getOrdNo());
-	    					orderDetail.setDelvAddrSq(order.getDelvAddrSq());
-
-	    					// TODO 총알배송, 구매대행상품여부 체크
-	                        ocmDao.createOrderDetail(orderDetail); // 주문상세정보등록
-
-	                        ocmDao.createOrderDetailHst(orderDetail); // 주문상세이력정보등록
-
-	                        Collection<ExtmallOrder> orderDetailItemList = ocmDao.getOrderDetailItem(orderDetail); // 주문상세단품정보조회
-
-	                        // 주문상세단품단위 금액 등록
-	                        int length				= orderDetailItemList.size();
-	                        int index				= 1;
-	                        int leftOrdAmt 			= orderDetail.getOrdAmt();
-	                        int leftCpn1DcAmt 		= orderDetail.getCpn1DcAmt();
-	                        int leftTmtb1DcAmt 		= orderDetail.getTmtb1DcAmt();
-	                        int leftTmtb2DcAmt 		= orderDetail.getTmtb2DcAmt();
-	                        int leftGoodsCpnDcAmt 	= orderDetail.getGoodsCpnDcAmt();
-	                        int leftCartCpnDcAmt 	= orderDetail.getCartCpnDcAmt();
-	                        int leftPntDcAmt 		= orderDetail.getPntDcAmt();
-	                        int leftPrePntDcAmt 	= orderDetail.getPrePntDcAmt();
-	                        int leftSavePntAmt 		= orderDetail.getSavePntAmt();
-	                        int leftRealOrdAmt 		= orderDetail.getRealOrdAmt();
-	                        int leftGfcdUseAmt 		= orderDetail.getGfcdUseAmt();
-
-	                        for (ExtmallOrder orderDetailItem : orderDetailItemList) {
-	                            int itemPrice 		= orderDetailItem.getItemPrice();
-	                            int optAddPrice 	= orderDetailItem.getOptAddPrice();
-	                            int itemQty 		= orderDetailItem.getItemQty();
-	                            double currPrice	= orderDetailItem.getCurrPrice();
-	                            double itemOrdAmt	= (itemPrice + optAddPrice) * itemQty;
-	                            double tempDivD		= (itemOrdAmt / currPrice) * 100;
-	                            int tempDiv 		= Integer.parseInt(String.valueOf(Math.round(tempDivD)));
-
-	                            if (index == length) {
-	                                orderDetailItem.setOrdAmt(leftOrdAmt);
-	                                orderDetailItem.setCpn1DcAmt(leftCpn1DcAmt);
-	                                orderDetailItem.setTmtb1DcAmt(leftTmtb1DcAmt);
-	                                orderDetailItem.setTmtb2DcAmt(leftTmtb2DcAmt);
-	                                orderDetailItem.setGoodsCpnDcAmt(leftGoodsCpnDcAmt);
-	                                orderDetailItem.setCartCpnDcAmt(leftCartCpnDcAmt);
-	                                orderDetailItem.setPntDcAmt(leftPntDcAmt);
-	                                orderDetailItem.setPrePntDcAmt(leftPrePntDcAmt);
-	                                orderDetailItem.setSavePntAmt(leftSavePntAmt);
-	                                orderDetailItem.setRealOrdAmt(leftRealOrdAmt);
-	                                orderDetailItem.setGfcdUseAmt(leftGfcdUseAmt);
-	                            } else {
-	                                orderDetailItem.setOrdAmt((orderDetail.getOrdAmt() * tempDiv) / 100);
-	                                orderDetailItem.setCpn1DcAmt((orderDetail.getCpn1DcAmt() * tempDiv) / 100);
-	                                orderDetailItem.setTmtb1DcAmt((orderDetail.getTmtb1DcAmt() * tempDiv) / 100);
-	                                orderDetailItem.setTmtb2DcAmt((orderDetail.getTmtb2DcAmt() * tempDiv) / 100);
-	                                orderDetailItem.setGoodsCpnDcAmt((orderDetail.getGoodsCpnDcAmt() * tempDiv) / 100);
-	                                orderDetailItem.setCartCpnDcAmt((orderDetail.getCartCpnDcAmt() * tempDiv) / 100);
-	                                orderDetailItem.setPntDcAmt((orderDetail.getPntDcAmt() * tempDiv) / 100);
-	                                orderDetailItem.setPrePntDcAmt((orderDetail.getPrePntDcAmt() * tempDiv) / 100);
-	                                orderDetailItem.setSavePntAmt((orderDetail.getSavePntAmt() * tempDiv) / 100);
-	                                orderDetailItem.setRealOrdAmt((orderDetail.getRealOrdAmt() * tempDiv) / 100);
-	                                orderDetailItem.setGfcdUseAmt((orderDetail.getGfcdUseAmt() * tempDiv) / 100);
-
-	                                leftOrdAmt 			= leftOrdAmt 			- ((orderDetail.getOrdAmt() * tempDiv) / 100);
-	                                leftCpn1DcAmt 		= leftCpn1DcAmt 		- ((orderDetail.getCpn1DcAmt() * tempDiv) / 100);
-	                                leftTmtb1DcAmt 		= leftTmtb1DcAmt 		- ((orderDetail.getTmtb1DcAmt() * tempDiv) / 100);
-	                                leftTmtb2DcAmt 		= leftTmtb2DcAmt 		- ((orderDetail.getTmtb2DcAmt() * tempDiv) / 100);
-	                                leftGoodsCpnDcAmt 	= leftGoodsCpnDcAmt 	- ((orderDetail.getGoodsCpnDcAmt() * tempDiv) / 100);
-	                                leftCartCpnDcAmt 	= leftCartCpnDcAmt 		- ((orderDetail.getCartCpnDcAmt() * tempDiv) / 100);
-	                                leftPntDcAmt 		= leftPntDcAmt 			- ((orderDetail.getPntDcAmt() * tempDiv) / 100);
-	                                leftPrePntDcAmt 	= leftPrePntDcAmt 		- ((orderDetail.getPrePntDcAmt() * tempDiv) / 100);
-	                                leftSavePntAmt 		= leftSavePntAmt 		- ((orderDetail.getSavePntAmt() * tempDiv) / 100);
-	                                leftRealOrdAmt 		= leftRealOrdAmt 		- ((orderDetail.getRealOrdAmt() * tempDiv) / 100);
-	                                leftGfcdUseAmt 		= leftGfcdUseAmt 		- ((orderDetail.getGfcdUseAmt() * tempDiv) / 100);
-	                            }
-
-	                            // 2021.05.06 옵션금액 단품 추가
-	                            orderDetailItem.setOptAddPrice(optAddPrice);
-	                            orderDetailItem.setCustNo(order.getCustNo());
-
-	                            ocmDao.createOrderDetailItem(orderDetailItem); // 주문상세단품정보등록
-
-	                            ocmDao.createOrderDetailItemHst(orderDetailItem); // 주문상세단품이력정보등록
-
-	                            index++;
-
-
-	                            // 5. 재고등록(샵링커 주문목록을 보면 동일한 몰 주문번호에 동일한 상품(sku)이 수량이 아닌 개별로 있는 데이터가 존재하므로 > 주문번호로 한번에 처리가 아닌 개별로 처리 함)
-	            				orderDetail.setSellGb(TscConstants.SellGb.ORDER.value());			// 판매구분(10:주문(-),
-	            				ocmDao.createSellQty(orderDetail);
-
-	                            // 외부몰 정보 업데이트
-	            				orderDetail.setUploadStat(TsaConstants.ExtmallUploadStat.SUCC.value());	// 성공
-	        					ocmDao.updateExtmallOrder(orderDetail);
-
-	        					dtlNos += orderDetail.getOrdDtlNo()+",";
-	        				}
-	    				}
-	            	}
-
-
-	    			// 6. 주문사은품정보등록
-	        		dtlNos = dtlNos.substring(0, dtlNos.length()-1);
-	    	        String [] dtlNdsArr = dtlNos.split(",");	// 주문상세번호
-	    	        order.setItemCdArr(dtlNdsArr);
-	    			order.setOrdDtlStat(TscConstants.OrderDetailStat.PAYMENT_COMPLETE.value());		//주문상세상태 - 결제완료처리
-					GagaMap giftMap = this.getOrderFreegift(order);
-
-	    	        if( null != giftMap) {
-	    		        if( null != giftMap.get("freegiftList")) {
-	    		        	if( !"".equals(giftMap.get("freegiftList"))) {
-
-	    		    			// 상품코드
-	    		        		String dtlGoodsCds = "";	// 사은품관련 상품코드. 콤마로구분
-	    		        		String[] dtlGoodsCdsArr;
-	    		        		Collection<ExtmallOrder> freegiftApplyAmtList = (Collection<ExtmallOrder>) giftMap.get("freegiftApplyAmtList");
-
-	    		        		for(ExtmallOrder ftMap : freegiftApplyAmtList ) {
-	    		        			dtlGoodsCds += ftMap.getGoodsCd() +",";
-	    		        		}
-
-	    		        		dtlGoodsCds = dtlGoodsCds.substring(0, dtlGoodsCds.length()-1);
-	    		        		dtlGoodsCdsArr = dtlGoodsCds.split(",");
-	    		        		order.setFreegiftGoodsArr(dtlGoodsCdsArr);
-
-	    		        		Collection<ExtmallOrder> freegiftList = (Collection<ExtmallOrder>) giftMap.get("freegiftList");
-	    		                ArrayList<Integer> fitValSqArr = new ArrayList<Integer>();
-	    		                for(ExtmallOrder ftMap : freegiftList ) {
-	    		                	fitValSqArr.add(ftMap.getFreegiftValSq());
-	    		                }
-	    		                int[] freegiftValArr = new int[fitValSqArr.size()];
-	    		                for( int i=0; i<fitValSqArr.size(); i++) {
-	    		                	freegiftValArr[i] = fitValSqArr.get(i);
-	    		                }
-
-	    		                order.setFreegiftValArr(freegiftValArr);
-	    		                order.setCustNo(0);
-	    		                if(order.getFreegiftValArr() != null && order.getFreegiftValArr().length > 0) {
-	    		                    ocmDao.createOrdFreegift(order);
-
-	    		                    // 6. 주문사은품 상품 정보 등록
-	    		                    ocmDao.createOrdFreegiftVal(order);
-
-	    		                    // 7. 주문사은품 주문상세정보 등록
-	    		                    for(ExtmallOrder ftMap : freegiftApplyAmtList ) {
-	    			    		    	order.setFreegiftSq(ftMap.getFreegiftSq());
-	    				    			order.setGoodsCd(ftMap.getGoodsCd());
-	    				    			ocmDao.createOrdFreegiftDtl(order);
-	    			    		    }
-	    		                }
-
-	    		                // 14. 사은품 수량 차감 로직 TB_FREEGIFT_VAL LEFT_QTY
-	    		                ocmDao.updateFreegiftValLeftQty(order);
-
-	    		        	}
-	    		        }
-	    	        }
-
-	    			// 7. 결제 TB_PAYMENT
-	                Payment payment = new Payment();
-	                payment.setOrdNo(order.getOrdNo());
-	                payment.setPayMeans(TscConstants.PayMeans.EXTMALL.value());					// 결제수단
-	                payAmt = order.getRealOrdSumAmt() + order.getDelvFee() - cancelAmt;			// 결제금액 = 실결제금액 + 배송비 - 취소금액
-	                payment.setPayAmt(payAmt);
-	                payment.setPgCpnAmt(0);														// PG쿠폰금액
-	                payment.setNpayPntAmt(0);   												// 네이버페이포인트금액
-	                payment.setPayGb("O");														// 결제구분(O:주문시결제, D:배송시결제, E:에러(강제 결제 태울 때 또는 에러일 때)
-	                payment.setPayStat(TscConstants.PaymentStat.PAYMENT_COMPLETE.value());		// 결제상태 - 결제완료
-	                payment.setRegNo(0);
-	                payment.setUpdNo(0);
-
-	                ocmDao.insertPayment(payment);
-
-	    		}else {
-
-    				// 주문등록 전체실패시 상태 업데이트
-    				GagaMap vdMap;
-    				for( ExtmallOrder orderDetail : order.getOrderDetailList()) {
-    					vdMap = this.checkGoodsInfo(orderDetail);
-    					orderDetail.setUploadStat(TsaConstants.ExtmallUploadStat.FAIL.value());	// 실패
-    					orderDetail.setOrdNo(vdMap.getInt("ordNo"));	// 실패
-    					orderDetail.setUploadFailCd(vdMap.getString("uploadFailCd"));
-    					orderDetail.setUploadFailReason(vdMap.getString("message"));
+    @SuppressWarnings("unchecked")
+    @Transactional("shopTxnManager")
+    public void createShoplinkerOrderSub(ExtmallOrder order) {
+
+		GagaMap result = this.orderValidationCheck(order);
+
+		// validation 체크 값
+		Collection<ExtmallOrder> newOrderDetailList = (Collection<ExtmallOrder>) result.get("orderDetailList");
+
+		if ("SUCCESS".equals(result.get("message").toString())) {
+			// 1. 주문기본정보등록
+            ocmDao.createOrder(order);
+
+            // 2. 주문배송정보등록
+            ocmDao.createDeliveryAddr(order);
+
+            // 3. 주문배송비정보등록
+            ocmDao.createDeliveryFee(order);
+
+			// 4. 주문상세정보등록
+            String dtlNos = "";			// 주문상세번호
+            String cancelGoodsNms = ""; // 콤마로 구분
+            int cancelAmt = 0;
+            int payAmt = 0;
+            GagaMap vdMap;
+			for( ExtmallOrder orderDetail : newOrderDetailList) {
+
+				//vdMap = this.checkGoodsInfo(orderDetail);
+				orderDetail.setOrdNo(order.getOrdNo());
+				orderDetail.setDelvAddrSq(order.getDelvAddrSq());
+
+
+				if (!"SUCCESS".equals(orderDetail.getUploadFailReason())){
+					cancelGoodsNms += orderDetail.getGoodsNm()+",";
+					cancelAmt += orderDetail.getOrdAmt();
+
+					orderDetail.setUploadStat(TsaConstants.ExtmallUploadStat.FAIL.value());	// 실패
+					orderDetail.setOrdNo(null);
+					orderDetail.setUploadFailCd(orderDetail.getUploadFailCd());
+					orderDetail.setUploadFailReason(orderDetail.getUploadFailReason());
+					ocmDao.updateExtmallOrder(orderDetail);
+
+				}else {
+
+					orderDetail.setOrdNo(order.getOrdNo());
+					orderDetail.setDelvAddrSq(order.getDelvAddrSq());
+
+					// TODO 총알배송, 구매대행상품여부 체크
+                    ocmDao.createOrderDetail(orderDetail); // 주문상세정보등록
+
+                    ocmDao.createOrderDetailHst(orderDetail); // 주문상세이력정보등록
+
+                    Collection<ExtmallOrder> orderDetailItemList = ocmDao.getOrderDetailItem(orderDetail); // 주문상세단품정보조회
+
+                    // 주문상세단품단위 금액 등록
+                    int length				= orderDetailItemList.size();
+                    int index				= 1;
+                    int leftOrdAmt 			= orderDetail.getOrdAmt();
+                    int leftCpn1DcAmt 		= orderDetail.getCpn1DcAmt();
+                    int leftTmtb1DcAmt 		= orderDetail.getTmtb1DcAmt();
+                    int leftTmtb2DcAmt 		= orderDetail.getTmtb2DcAmt();
+                    int leftGoodsCpnDcAmt 	= orderDetail.getGoodsCpnDcAmt();
+                    int leftCartCpnDcAmt 	= orderDetail.getCartCpnDcAmt();
+                    int leftPntDcAmt 		= orderDetail.getPntDcAmt();
+                    int leftPrePntDcAmt 	= orderDetail.getPrePntDcAmt();
+                    int leftSavePntAmt 		= orderDetail.getSavePntAmt();
+                    int leftRealOrdAmt 		= orderDetail.getRealOrdAmt();
+                    int leftGfcdUseAmt 		= orderDetail.getGfcdUseAmt();
+
+                    for (ExtmallOrder orderDetailItem : orderDetailItemList) {
+                        int itemPrice 		= orderDetailItem.getItemPrice();
+                        int optAddPrice 	= orderDetailItem.getOptAddPrice();
+                        int itemQty 		= orderDetailItem.getItemQty();
+                        double currPrice	= orderDetailItem.getCurrPrice();
+                        double itemOrdAmt	= (itemPrice + optAddPrice) * itemQty;
+                        double tempDivD		= (itemOrdAmt / currPrice) * 100;
+                        int tempDiv 		= Integer.parseInt(String.valueOf(Math.round(tempDivD)));
+
+                        if (index == length) {
+                            orderDetailItem.setOrdAmt(leftOrdAmt);
+                            orderDetailItem.setCpn1DcAmt(leftCpn1DcAmt);
+                            orderDetailItem.setTmtb1DcAmt(leftTmtb1DcAmt);
+                            orderDetailItem.setTmtb2DcAmt(leftTmtb2DcAmt);
+                            orderDetailItem.setGoodsCpnDcAmt(leftGoodsCpnDcAmt);
+                            orderDetailItem.setCartCpnDcAmt(leftCartCpnDcAmt);
+                            orderDetailItem.setPntDcAmt(leftPntDcAmt);
+                            orderDetailItem.setPrePntDcAmt(leftPrePntDcAmt);
+                            orderDetailItem.setSavePntAmt(leftSavePntAmt);
+                            orderDetailItem.setRealOrdAmt(leftRealOrdAmt);
+                            orderDetailItem.setGfcdUseAmt(leftGfcdUseAmt);
+                        } else {
+                            orderDetailItem.setOrdAmt((orderDetail.getOrdAmt() * tempDiv) / 100);
+                            orderDetailItem.setCpn1DcAmt((orderDetail.getCpn1DcAmt() * tempDiv) / 100);
+                            orderDetailItem.setTmtb1DcAmt((orderDetail.getTmtb1DcAmt() * tempDiv) / 100);
+                            orderDetailItem.setTmtb2DcAmt((orderDetail.getTmtb2DcAmt() * tempDiv) / 100);
+                            orderDetailItem.setGoodsCpnDcAmt((orderDetail.getGoodsCpnDcAmt() * tempDiv) / 100);
+                            orderDetailItem.setCartCpnDcAmt((orderDetail.getCartCpnDcAmt() * tempDiv) / 100);
+                            orderDetailItem.setPntDcAmt((orderDetail.getPntDcAmt() * tempDiv) / 100);
+                            orderDetailItem.setPrePntDcAmt((orderDetail.getPrePntDcAmt() * tempDiv) / 100);
+                            orderDetailItem.setSavePntAmt((orderDetail.getSavePntAmt() * tempDiv) / 100);
+                            orderDetailItem.setRealOrdAmt((orderDetail.getRealOrdAmt() * tempDiv) / 100);
+                            orderDetailItem.setGfcdUseAmt((orderDetail.getGfcdUseAmt() * tempDiv) / 100);
+
+                            leftOrdAmt 			= leftOrdAmt 			- ((orderDetail.getOrdAmt() * tempDiv) / 100);
+                            leftCpn1DcAmt 		= leftCpn1DcAmt 		- ((orderDetail.getCpn1DcAmt() * tempDiv) / 100);
+                            leftTmtb1DcAmt 		= leftTmtb1DcAmt 		- ((orderDetail.getTmtb1DcAmt() * tempDiv) / 100);
+                            leftTmtb2DcAmt 		= leftTmtb2DcAmt 		- ((orderDetail.getTmtb2DcAmt() * tempDiv) / 100);
+                            leftGoodsCpnDcAmt 	= leftGoodsCpnDcAmt 	- ((orderDetail.getGoodsCpnDcAmt() * tempDiv) / 100);
+                            leftCartCpnDcAmt 	= leftCartCpnDcAmt 		- ((orderDetail.getCartCpnDcAmt() * tempDiv) / 100);
+                            leftPntDcAmt 		= leftPntDcAmt 			- ((orderDetail.getPntDcAmt() * tempDiv) / 100);
+                            leftPrePntDcAmt 	= leftPrePntDcAmt 		- ((orderDetail.getPrePntDcAmt() * tempDiv) / 100);
+                            leftSavePntAmt 		= leftSavePntAmt 		- ((orderDetail.getSavePntAmt() * tempDiv) / 100);
+                            leftRealOrdAmt 		= leftRealOrdAmt 		- ((orderDetail.getRealOrdAmt() * tempDiv) / 100);
+                            leftGfcdUseAmt 		= leftGfcdUseAmt 		- ((orderDetail.getGfcdUseAmt() * tempDiv) / 100);
+                        }
+
+                        // 2021.05.06 옵션금액 단품 추가
+                        orderDetailItem.setOptAddPrice(optAddPrice);
+                        orderDetailItem.setCustNo(order.getCustNo());
+
+                        ocmDao.createOrderDetailItem(orderDetailItem); // 주문상세단품정보등록
+
+                        ocmDao.createOrderDetailItemHst(orderDetailItem); // 주문상세단품이력정보등록
+
+                        index++;
+
+
+                        // 5. 재고등록(샵링커 주문목록을 보면 동일한 몰 주문번호에 동일한 상품(sku)이 수량이 아닌 개별로 있는 데이터가 존재하므로 > 주문번호로 한번에 처리가 아닌 개별로 처리 함)
+        				orderDetail.setSellGb(TscConstants.SellGb.ORDER.value());			// 판매구분(10:주문(-),
+        				ocmDao.createSellQty(orderDetail);
+
+                        // 외부몰 정보 업데이트
+        				orderDetail.setUploadStat(TsaConstants.ExtmallUploadStat.SUCC.value());	// 성공
     					ocmDao.updateExtmallOrder(orderDetail);
-    				}
 
-	    		}
-
-	    		// 8. 알림톡발송 (임시 히스토리 쌓음.)
-	    		if( !"style".equals(env.getProperty("spring.profiles.active").toLowerCase())){
-		    		ExtmallOrder testNoti = new ExtmallOrder();
-		    		testNoti.setExtmallId(order.getExtmallId());
-		    		testNoti.setExtmallOrderId(order.getExtmallOrderId());
-		    		if( "ALL_FAIL".equals(result.getString("sendNotiType"))) {
-		    			// 전체실패 알림톡발송
-		    			testNoti.setSku("미할당 전체품절 > 실패 총 "+result.getString("failCnt")+"건 / 재고실패 "+result.getString("stockFailCnt")+"건 ("+result.getString("failGoods")+")");
-		    		}else if( "ALL_SUCCESS".equals(result.getString("sendNotiType"))) {
-		    			// 전체성공 알림톡발송
-		    			testNoti.setSku("전체성공");
-		    		}else if( "PART_SUCCESS".equals(result.getString("sendNotiType"))) {
-
-		    			if( !"".equals(result.getString("failGoods"))) {
-		    				// 부분성공 알림톡발송
-			    			testNoti.setSku("부분결품 품절 > 실패 총 "+result.getString("failCnt")+"건 / 재고실패 "+result.getString("stockFailCnt")+"건 ("+result.getString("failGoods")+")");
-		    			}else {
-		    				// 전체성공알림톡
-			    			testNoti.setSku("성공 > 실패한건이 있지만, 재고로인한건이 아님.");
-		    			}
-
-		    		}else {
-		    			// "NOT" 알림톡 발송안함. 이미 발송한건
-		    			testNoti.setSku("알림톡 발송안함. 동일수집건 ");
-		    		}
-		    		ocmDao.insertTestNotiInfo(testNoti);
-	    		}
+    					dtlNos += orderDetail.getOrdDtlNo()+",";
+    				}
+				}
+        	}
+
+
+			// 6. 주문사은품정보등록
+    		dtlNos = dtlNos.substring(0, dtlNos.length()-1);
+	        String [] dtlNdsArr = dtlNos.split(",");	// 주문상세번호
+	        order.setItemCdArr(dtlNdsArr);
+			order.setOrdDtlStat(TscConstants.OrderDetailStat.PAYMENT_COMPLETE.value());		//주문상세상태 - 결제완료처리
+			GagaMap giftMap = this.getOrderFreegift(order);
+
+	        if( null != giftMap) {
+		        if( null != giftMap.get("freegiftList")) {
+		        	if( !"".equals(giftMap.get("freegiftList"))) {
+
+		    			// 상품코드
+		        		String dtlGoodsCds = "";	// 사은품관련 상품코드. 콤마로구분
+		        		String[] dtlGoodsCdsArr;
+		        		Collection<ExtmallOrder> freegiftApplyAmtList = (Collection<ExtmallOrder>) giftMap.get("freegiftApplyAmtList");
+
+		        		for(ExtmallOrder ftMap : freegiftApplyAmtList ) {
+		        			dtlGoodsCds += ftMap.getGoodsCd() +",";
+		        		}
+
+		        		dtlGoodsCds = dtlGoodsCds.substring(0, dtlGoodsCds.length()-1);
+		        		dtlGoodsCdsArr = dtlGoodsCds.split(",");
+		        		order.setFreegiftGoodsArr(dtlGoodsCdsArr);
+
+		        		Collection<ExtmallOrder> freegiftList = (Collection<ExtmallOrder>) giftMap.get("freegiftList");
+		                ArrayList<Integer> fitValSqArr = new ArrayList<Integer>();
+		                for(ExtmallOrder ftMap : freegiftList ) {
+		                	fitValSqArr.add(ftMap.getFreegiftValSq());
+		                }
+		                int[] freegiftValArr = new int[fitValSqArr.size()];
+		                for( int i=0; i<fitValSqArr.size(); i++) {
+		                	freegiftValArr[i] = fitValSqArr.get(i);
+		                }
+
+		                order.setFreegiftValArr(freegiftValArr);
+		                order.setCustNo(0);
+		                if(order.getFreegiftValArr() != null && order.getFreegiftValArr().length > 0) {
+		                    ocmDao.createOrdFreegift(order);
+
+		                    // 6. 주문사은품 상품 정보 등록
+		                    ocmDao.createOrdFreegiftVal(order);
+
+		                    // 7. 주문사은품 주문상세정보 등록
+		                    for(ExtmallOrder ftMap : freegiftApplyAmtList ) {
+			    		    	order.setFreegiftSq(ftMap.getFreegiftSq());
+				    			order.setGoodsCd(ftMap.getGoodsCd());
+				    			ocmDao.createOrdFreegiftDtl(order);
+			    		    }
+		                }
+
+		                // 14. 사은품 수량 차감 로직 TB_FREEGIFT_VAL LEFT_QTY
+		                ocmDao.updateFreegiftValLeftQty(order);
+
+		        	}
+		        }
 	        }
-    	}
+
+			// 7. 결제 TB_PAYMENT
+            Payment payment = new Payment();
+            payment.setOrdNo(order.getOrdNo());
+            payment.setPayMeans(TscConstants.PayMeans.EXTMALL.value());					// 결제수단
+            payAmt = order.getRealOrdSumAmt() + order.getDelvFee() - cancelAmt;			// 결제금액 = 실결제금액 + 배송비 - 취소금액
+            payment.setPayAmt(payAmt);
+            payment.setPgCpnAmt(0);														// PG쿠폰금액
+            payment.setNpayPntAmt(0);   												// 네이버페이포인트금액
+            payment.setPayGb("O");														// 결제구분(O:주문시결제, D:배송시결제, E:에러(강제 결제 태울 때 또는 에러일 때)
+            payment.setPayStat(TscConstants.PaymentStat.PAYMENT_COMPLETE.value());		// 결제상태 - 결제완료
+            payment.setRegNo(0);
+            payment.setUpdNo(0);
+
+            ocmDao.insertPayment(payment);
+
+		}else {
+
+			// 주문등록 전체실패시 상태 업데이트
+			GagaMap vdMap;
+			for( ExtmallOrder orderDetail : order.getOrderDetailList()) {
+				vdMap = this.checkGoodsInfo(orderDetail);
+				orderDetail.setUploadStat(TsaConstants.ExtmallUploadStat.FAIL.value());	// 실패
+				orderDetail.setOrdNo(vdMap.getInt("ordNo"));	// 실패
+				orderDetail.setUploadFailCd(vdMap.getString("uploadFailCd"));
+				orderDetail.setUploadFailReason(vdMap.getString("message"));
+				ocmDao.updateExtmallOrder(orderDetail);
+			}
+
+		}
+
+		// 8. 알림톡발송 (임시 히스토리 쌓음.)
+		if( !"style".equals(env.getProperty("spring.profiles.active").toLowerCase())){
+    		ExtmallOrder testNoti = new ExtmallOrder();
+    		testNoti.setExtmallId(order.getExtmallId());
+    		testNoti.setExtmallOrderId(order.getExtmallOrderId());
+    		if( "ALL_FAIL".equals(result.getString("sendNotiType"))) {
+    			// 전체실패 알림톡발송
+    			testNoti.setSku("미할당 전체품절 > 실패 총 "+result.getString("failCnt")+"건 / 재고실패 "+result.getString("stockFailCnt")+"건 ("+result.getString("failGoods")+")");
+    		}else if( "ALL_SUCCESS".equals(result.getString("sendNotiType"))) {
+    			// 전체성공 알림톡발송
+    			testNoti.setSku("전체성공");
+    		}else if( "PART_SUCCESS".equals(result.getString("sendNotiType"))) {
+
+    			if( !"".equals(result.getString("failGoods"))) {
+    				// 부분성공 알림톡발송
+	    			testNoti.setSku("부분결품 품절 > 실패 총 "+result.getString("failCnt")+"건 / 재고실패 "+result.getString("stockFailCnt")+"건 ("+result.getString("failGoods")+")");
+    			}else {
+    				// 전체성공알림톡
+	    			testNoti.setSku("성공 > 실패한건이 있지만, 재고로인한건이 아님.");
+    			}
+
+    		}else {
+    			// "NOT" 알림톡 발송안함. 이미 발송한건
+    			testNoti.setSku("알림톡 발송안함. 동일수집건 ");
+    		}
+    		ocmDao.insertTestNotiInfo(testNoti);
+		}
     }
 
     /**
@@ -463,14 +469,6 @@ public class TsaOcmService {
                     	ordGroup.setSupplyCompCd(ordDtl.getSupplyCompCd());					// 공급업체코드
                     }
 
-                    // 운영이 아닐때 고객연락처 000 처리(알림톡 발송방지)
-                    if( !"style".equals(env.getProperty("spring.profiles.active").toLowerCase())){
-                    	ordDtl.setOrdPhnno("011-0000-0000");
-                    	ordDtl.setOrdTelno("011-0000-0000");
-                    	ordDtl.setRecipPhnno("017-0000-0000");
-                    	ordDtl.setRecipTelno("017-0000-0000");
-                    }
-
             		tmpList.add(ordDtl);
             		ordGroup.setOrderDetailList(tmpList);
             	}
@@ -501,6 +499,9 @@ public class TsaOcmService {
 
 			GagaMap resultMap = this.checkGoodsInfo(orderDetail);
 
+			orderDetail.setUploadFailCd(resultMap.getString("uploadFailCd"));
+			orderDetail.setUploadFailReason(resultMap.getString("message"));
+
 			if ("SUCCESS".equals(resultMap.get("message").toString())) {
 				succCnt ++;
 			}else {
@@ -512,6 +513,8 @@ public class TsaOcmService {
 			}
 		}
 
+		result.set("orderDetailList", orderDetailList);
+
 		// 주문생성 여부
 		if( 0 < succCnt ) {
 			// 주문등록

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

@@ -345,12 +345,12 @@ public class TsaShoplinkerController extends TsaBaseController {
 				rtnMap = shoplinkerService.insertShoplinkerOrderStep1(shoplinkerOrder);
 
 				// 3. 제휴몰 주문등록
-				slkSearch.setTxt("=>제휴몰 등록중");
+				slkSearch.setTxt("=>제휴몰");
 				shoplinkerService.updateCallApiRunable(slkSearch);
 				shoplinkerService.insertShoplinkerOrderStep2(shoplinkerOrder);
 
 				// 4. 스타일24 주문등록 (제휴몰 - 대기상태인 것들)
-				slkSearch.setTxt("=>스타일24 주문등록 중");
+				slkSearch.setTxt("=>스타일24");
 				shoplinkerService.updateCallApiRunable(slkSearch);
 				ocmService.createShoplinkerOrder("S");
 

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

@@ -50,6 +50,8 @@ public class ShoplinkerSearch extends TscBaseDomain {
 	private String apiResult;
 	private String apiStDate;
 
+	private Integer remainExtCnt;		// 주문수집시-제휴몰주문업로드 남은수
+	private Integer remainStyleCnt;		// 주문수집시-스타일24주문업로드 남은수
 
 	//@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	//private String[] siteCd;

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

@@ -45,7 +45,8 @@
 			, RUN_EDDT
 			, TXT
 			, (SELECT COUNT(1) FROM SHOPLINKER_RUNABLE S WHERE S.API_TYPE = A.API_TYPE AND S.RUN_EDDT IS NULL ) AS RUN_CNT
-			, (SELECT COUNT(1) FROM SHOPLINKER_ORDER S WHERE S.EXTMALL_REG_YN = 'N' AND S.SKU_MATCH_CODE != '') AS EXT_ORD_REG_CNT
+			, (SELECT COUNT(1) FROM SHOPLINKER_ORDER S WHERE S.EXTMALL_REG_YN = 'N' AND S.SKU_MATCH_CODE != '') AS REMAIN_EXT_CNT
+			, (SELECT COUNT(1) FROM TB_EXTMALL_ORDER_UPLOAD WHERE UPLOAD_STAT = 'G021_00' AND UPLOAD_GB = 'S') AS REMAIN_STYLE_CNT
 		FROM SHOPLINKER_RUNABLE A
 		WHERE A.API_TYPE = #{apiType}
 		ORDER BY RUN_STDT DESC

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

@@ -365,8 +365,8 @@
 		}
 
 		var testDate = Number($("#orderCollectionForm input[name=apiStDate]").val().replaceAll("-", ""));
-		if( testDate < 20210401 || 20210510 < testDate){
-			mcxDialog.alert("※ 테스트 주문수집시 ※<br>실제운영 주문건을 가져오므로 4월부터 ~ 5/10 사이 날짜로 조회해주세요.");
+		if( testDate < 20210401 || 20210515 < testDate){
+			mcxDialog.alert("※ 테스트 주문수집시 ※<br>실제운영 주문건을 가져오므로 4월부터 ~ 5/5 사이 날짜로 조회해주세요.");
 			return;
 		}
 
@@ -405,7 +405,10 @@
 					// 재호출 안함.
 				}else{
 					// 현재 진행중
-					$(".runable_info").html(result.txt);
+					var resultTxt = result.txt;
+					resultTxt = resultTxt.replace("제휴몰", "제휴몰남은수 "+result.remainExtCnt);
+					resultTxt = resultTxt.replace("스타일24", "스타일24남은수 "+result.remainStyleCnt )
+					$(".runable_info").html(resultTxt);
 
 					setTimeout(function(){
 						fnGetCallRunableInfo();