浏览代码

출고처지정 소스 주석 처리 및 정리

jsh77b 4 年之前
父节点
当前提交
4c9dd81d31

+ 63 - 35
src/main/java/com/style24/batch/biz/job/delivery/TsbDeliveryOrderJob.java

@@ -35,7 +35,6 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
 
 	@Override
 	public Collection<Delivery> read() throws Exception {
-
 		// 1. 출고처지정 대상조회 
 		Collection<Delivery> ordnoList = deliveryService.getOrderNoList();
 		return ordnoList;
@@ -48,48 +47,52 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
 
 		/**
 		 * 1. 출고처지정 대상조회 
-		 * 
-		 * 2. WMS 재고체크 후  주문의상품재고가  다 있을경우 WMS로 출고처지정 
-		 * 
-		 * 3. WMS의  주문단위 상품재고가 없을경우  매장재고 체크 후  주문단위 상품이 모두있을경우 해당 매장으로 출고처 지정 
-		 * 
+		 * 2. WMS 재고체크 후  주문상품재고가 다 있을경우 WMS로 출고처지정 
+		 * 3. WMS의 주문단위 상품재고가 없을경우  매장재고 체크 후 주문단위 상품이 모두있을경우 해당 매장으로 출고처 지정 
 		 * 4. 주문상품의 모든재고가 (WMS, 매장) 모두 없을경우  WMS로 출고처지정 (부분배송) 이때 교환은  교환출고예외 테이블에 등록(tb_exchange_delv_fail)
-		 * 
-		 * 5. 출고처 WMS 리스트 조회 후  WMS_IF 테이블에 등록   
-		 * 
+		 * 5. 출고처 WMS 리스트 조회 후  WMS_IF 테이블에 등록
 		 * */
-
-		String ShopYn = "N";
-		String WmsYn = "N";
+		String ShopYn 	= "N";
+		String WmsYn 	= "N";
 
 		// WMS 창고 출고처 지정 
 		for (Delivery ordNoData : ordnoList) {
 			try {
-				ShopYn = "N";
-				WmsYn = "N";
-				//2. WMS 재고체크 후  주문의상품재고가  다 있을경우 WMS로 출고처지정 
+				WmsYn 	= "Y";
+				ShopYn 	= "N";
+				
+				// 2. WMS 재고체크 후 주문상품재고가 다 있을경우 WMS로 출고처지정 
 				// 주문상세번호 조회  
 				Collection<Delivery> ordDtlNoList = deliveryService.getOrderDtlNoList(ordNoData);
+				
 				int ordDtlCnt = 0;
 				for (Delivery ordDtlNoData : ordDtlNoList) {
 
 					// 주문상세아이템 조회  
 					Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(ordDtlNoData);
+					
 					int chkCnt = 0;
 					for (Delivery item : itemList) {
+						
 						// WMS 재고체크 
 						WmsDelivery wmsStock = deliveryService.getWmsRealStockChk(item);
+						
 						if (wmsStock != null) {
 							if (wmsStock.getLocQty() >= item.getOrdQty()) {
 								chkCnt = chkCnt + 1;
 							}
 						}
 					}
+					
 					if (chkCnt == itemList.size()) {
 						ordDtlCnt = ordDtlCnt + 1;
 					}
 				}
+				
 				log.info("ordDtlCnt" + ordDtlCnt + "  ordDtlNoList.size() " + ordDtlNoList.size());
+				
+				// 주문상세수량 과 주문상세목록크리가 같으면 창고 출고 (WMS) 아니면 매장출고
+				// 2021.10.19 전체재고 있으면 출고처 지정하고 END
 				if (ordDtlCnt == ordDtlNoList.size()) {
 					for (Delivery inOrdDtlNoData : ordDtlNoList) {
 						inOrdDtlNoData.setDelvLocCd(TscConstants.WMS_DELV_LOC_CD);
@@ -106,19 +109,22 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
 						deliveryService.updateTbOrderDtlAssign(inOrdDtlNoData);
 
 						Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(inOrdDtlNoData);
+						
 						// wms 재고차감 등록(TB_SELL_QTY)  
 						for (Delivery data : itemList) {
 							wmsDeliveryService.insertWmsTbIfDelifixQty(data);
 						}
 					}
-					WmsYn = "N";
+					
+					WmsYn 	= "N";	// WMS 출고처 지정 완료
 				} else {
-					ShopYn = "Y";
+					ShopYn 	= "Y";	// WMS의 전체재고 없을 시 매장 재고 체크 허용 
 				}
 
-				// 3. WMS의  주문단위 상품재고가 없을경우  매장재고 체크 후  주문단위 상품이 모두있을경우 해당 매장으로 출고처 지정  
+				// 3. WMS의  주문단위 상품재고가 없을경우  매장재고 체크 후  주문단위 상품이 모두있을경우 해당 매장으로 출고처 지정
 				// WMS 창고 출고처 지정 못한 주문건이 존재  매장 출고처 지정
 				/*
+				// 매장재고체크허용 사은품이 없는 주문 
 				if ("Y".equals(ShopYn) && "N".equals(ordNoData.getGiftyn())) {
 
 					Collection<Delivery> shopOrdDtlNoList = deliveryService.getOrderDtlNoList(ordNoData);
@@ -174,15 +180,22 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
 
 				}
 				*/
-				WmsYn = "Y"; // 직송매장 적용시 삭제 
+				
+				 
+				//WmsYn = "Y"; // 직송매장 적용시 삭제
+				
 				// 4. 주문상품의 모든재고가 (WMS, 매장) 모두 없을경우  WMS로 출고처지정 (부분배송) 이때 교환은  교환출고예외 테이블에 등록(tb_exchange_delv_fail)
 				if ("Y".equals(WmsYn)) {
+					// 교환주문 STA
 					if ("E".equals(ordNoData.getOrdExchGb())) {
 						Collection<Delivery> ordDtlNoWmsList = deliveryService.getOrderDtlNoList(ordNoData);
+						
 						for (Delivery chgData : ordDtlNoWmsList) {
+							
 							// 주문상세아이템 조회  
 							Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(chgData);
 							int chkCnt = 0;
+							
 							for (Delivery item : itemList) {
 								// WMS 재고체크 
 								WmsDelivery wmsStock = deliveryService.getWmsRealStockChk(item);
@@ -194,16 +207,18 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
 							}
 
 							//chgData.setRegNo(regNo);
-							chgData.setCnclRtnQty(chgData.getOrdQty() - chkCnt); // 취소수량(재고없는수량) 
-							// insert 
+							chgData.setCnclRtnQty(chgData.getOrdQty() - chkCnt); // 취소수량(재고없는수량)
+							
+							// insert
 							deliveryService.insertTbExchangeDelvFail(chgData);
-
-							// ddddd
 						}
-
-					} else {
-						if ("NAVER_ORDER".equals(ordNoData.getPgGb())) { // 네이버 주문형
-
+					}
+					// 교환주문 END
+					// 일반주문 STA
+					else {
+						// NAVER_ORDER STA
+						if ("NAVER_ORDER".equals(ordNoData.getPgGb())) {
+							
 							// 주문상세번호 조회  
 							Collection<Delivery> ordDtlNoWmsList = deliveryService.getOrderDtlNoList(ordNoData);
 
@@ -225,7 +240,6 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
 									wmsOrdDtlData.setDelvLocCd(TscConstants.WMS_DELV_LOC_CD);
 
 									// 출고처등록  및 history 등록   (TB_DELIVERY_ASSIGN & TB_DELIVERY_ASSIGN_HST) 
-
 									//log.info("네이버주문형Y  DTL_NO"+ wmsOrdDtlData.getOrdDtlNo());
 									wmsOrdDtlData.setDelvArGb("Y"); // 수락  
 									wmsOrdDtlData.setLocQty(wmsOrdDtlData.getOrdQty());
@@ -249,13 +263,18 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
 									deliveryService.saveDeliveryAssign(wmsOrdDtlData);
 								}
 							}
-						} else { // 일반 
+						}
+						// NAVER_ORDER END
+						// 일반 주문 STA
+						else {  
 							//log.info("last:"+ordNoData.getOrdNo());
+							
 							// 주문상세번호 조회  
 							Collection<Delivery> ordDtlNoWmsList = deliveryService.getOrderDtlNoList(ordNoData);
 							int chkCnt = 0;
+							
 							for (Delivery wmsOrdDtlData : ordDtlNoWmsList) {
-
+								// 세트상품
 								if ("G056_S".equals(wmsOrdDtlData.getGoodsType())) {
 
 									// 주문상세아이템 조회  
@@ -271,14 +290,18 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
 											}
 										}
 									}
+									
 									if (setCnt == itemList.size()) {
 										chkCnt = chkCnt + 1;
 									}
-								} else {
+								}
+								// 일반상품
+								else {
 									// 주문상세아이템 조회  
 									Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(wmsOrdDtlData);
 
 									for (Delivery item : itemList) {
+										
 										// WMS 재고체크 
 										WmsDelivery wmsStock = deliveryService.getWmsRealStockChk(item);
 										if (wmsStock != null) {
@@ -288,13 +311,13 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
 										}
 									}
 								}
-
 							}
+							
 							if (chkCnt > 0) {
 								for (Delivery wmsOrdDtlData : ordDtlNoList) {
-
 									// log.info("라스트  N   DTL_NO"+ wmsOrdDtlData.getOrdDtlNo());
 									wmsOrdDtlData.setDelvLocCd(TscConstants.WMS_DELV_LOC_CD);
+									
 									// 출고처등록  및 history 등록   (TB_DELIVERY_ASSIGN & TB_DELIVERY_ASSIGN_HST) 
 									wmsOrdDtlData.setDelvArGb("Y"); // 수락  
 									wmsOrdDtlData.setLocQty(wmsOrdDtlData.getOrdQty());
@@ -307,6 +330,7 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
 
 									// 주문상세아이템 조회  
 									Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(wmsOrdDtlData);
+									
 									// wms 재고차감 등록(TB_SELL_QTY)  
 									for (Delivery data : itemList) {
 										wmsDeliveryService.insertWmsTbIfDelifixQty(data);
@@ -325,6 +349,7 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
 								}
 							}
 						}
+						// 일반주문 END
 					}
 				}
 			} catch (Exception e) {
@@ -336,17 +361,20 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
 		// wms 출고처 지정 대상 조회 
 		// 사은품 조회  차후 작업!!!! 
 		Collection<Delivery> ordList = deliveryService.getWmsDeliveryOrdNoList();
+		
 		for (Delivery ordData : ordList) {
 			try {
 				// wms 출고 정보 조회(mall_DB) 
-				Collection<Delivery> wmsDelvList = deliveryService.getWmsDeliveryList(ordData);
-				Collection<Delivery> giftList = deliveryService.getWmsDeliveryGiftList(ordData);
+				Collection<Delivery> wmsDelvList 	= deliveryService.getWmsDeliveryList(ordData);
+				Collection<Delivery> giftList 		= deliveryService.getWmsDeliveryGiftList(ordData);
+				
 				// wms 출고 정보 등록 (wms_DB)
 				wmsDeliveryService.insertWmsDelivery(wmsDelvList, giftList);
 
 				// 주문상세상태 변경  상품준비중~
 				String statGb = "PREPARE";
 				deliveryService.updateTbOrderDtlStat(wmsDelvList, statGb);
+				
 			} catch (Exception e) {
 				log.debug("TsbDeliveryOrderJob insertWmsDelivery " + e.getStackTrace().toString());
 			}

+ 9 - 5
src/main/java/com/style24/batch/biz/service/TsbWmsDeliveryService.java

@@ -340,7 +340,7 @@ public class TsbWmsDeliveryService {
 	 * @since  2021. 04. 08
 	 */
 	@Transactional("wmsTxnManager")
-	public void insertWmsDelivery(Collection<Delivery> list, Collection<Delivery>giftList) {
+	public void insertWmsDelivery(Collection<Delivery> list, Collection<Delivery> giftList) {
 
 		// TB_IF_DeliveryOrder
 		String uuid = UUID.randomUUID().toString();
@@ -348,19 +348,23 @@ public class TsbWmsDeliveryService {
 
 		dataM.setOrderguid(uuid);
 
-		
 		wmsDeliveryDao.insertWmsTbIfDeliveryOrder(dataM);
 		Integer ordPk = dataM.getDeliveryorderno();
 		String exchGb = dataM.getShippingtypecd(); // 10:일반, 20:  교환
-		log.info("ordPk: "+ordPk);
+		
+		log.info("ordPk: " + ordPk);
+		
+		// 주문정보
 		for (Delivery data : list) {
 			// TB_IF_DeliveryOrderItem
 			data.setDeliveryorderno(ordPk);
 			data.setIfyn("N");
 			wmsDeliveryDao.insertWmsTbIfDeliveryOrderItem(data);
 		}
-		if("10".equals(exchGb)) {
-			for(Delivery gift : giftList) {
+		
+		// 교환정보
+		if ("10".equals(exchGb)) {
+			for (Delivery gift : giftList) {
 				gift.setDeliveryorderno(ordPk);
 				gift.setIfyn("N");
 				wmsDeliveryDao.insertWmsTbIfDeliveryOrderItem(gift);

+ 44 - 26
src/main/java/com/style24/persistence/mybatis/shop/TsbDelivery.xml

@@ -606,36 +606,49 @@
 	<select id="getOrderNoList" resultType="Delivery" timeout="600">
 		/*TsbDelivery.getOrderNoList*/
 	<![CDATA[	
-	  SELECT DISTINCT ORD_NO, ORD_EXCH_GB, PG_GB
-		FROM (
-			SELECT A.ORD_NO, B.ORD_EXCH_GB, (SELECT MAX(PG_GB) FROM TB_PAYMENT WHERE ORD_NO= A.ORD_NO AND PAY_GB ='O') AS PG_GB /* 주문 상품 */
-			     , CASE WHEN (SELECT COUNT(*) FROM TB_ORD_FREEGIFT ODF WHERE ODF.ORD_NO = A.ORD_NO) > 0 THEN 'Y' ELSE 'N' END AS GIFT_YN 
+	  SELECT DISTINCT ORD_NO
+	       , ORD_EXCH_GB
+	       , PG_GB
+	       , GIFT_YN
+	    FROM (
+	        SELECT A.ORD_NO
+	             , B.ORD_EXCH_GB
+	             , (SELECT IFNULL(MAX(PG_GB), '외부몰입금') 
+	                FROM   TB_PAYMENT 
+	                WHERE  ORD_NO= A.ORD_NO 
+	                AND    PAY_GB ='O') AS PG_GB /* 주문 상품 */
+	             , CASE WHEN (SELECT COUNT(1) FROM TB_ORD_FREEGIFT ODF WHERE ODF.ORD_NO = A.ORD_NO) > 0 THEN 'Y' ELSE 'N' END AS GIFT_YN
 			  FROM TB_ORDER        A
 			  JOIN TB_ORDER_DETAIL B ON A.ORD_NO = B.ORD_NO 
 			  JOIN TB_GOODS        C ON B.GOODS_CD = C.GOODS_CD 
 			 WHERE C.SELF_GOODS_YN = 'Y'       -- 자사 
 			   AND B.ORD_DTL_STAT  = 'G013_20' -- 결제완료 
 			   AND B.ORD_EXCH_GB   = 'O'       -- 주문
-			   AND 1 >= FN_GET_BIZDAYS(DATE_FORMAT(A.ORD_DT, '%Y%m%d') , DATE_FORMAT(DATE_ADD(NOW(),INTERVAL -1 DAY ), '%Y%m%d')) -- 영업일 기준 -1일   
+			   AND 1 >= FN_GET_BIZDAYS(DATE_FORMAT(A.ORD_DT, '%Y%m%d') , DATE_FORMAT(DATE_ADD(NOW(),INTERVAL -1 DAY ), '%Y%m%d')) -- 영업일 기준 -1일
 			   AND NOT EXISTS (SELECT '1' FROM TB_GOODS_RES_SELL WHERE GOODS_CD = B.GOODS_CD AND USE_YN ='Y') 
-			   AND 'Y' = CASE WHEN B.GIFT_PACK_YN ='Y' AND B.GIFT_ADDR_INP_YN = 'N' THEN 'N' ELSE 'Y' END 
+			   AND 'Y' = CASE WHEN B.GIFT_PACK_YN ='Y' AND B.GIFT_ADDR_INP_YN = 'N' 
+			                  THEN 'N' 
+			                  ELSE 'Y' 
+			                  END 
 			   AND A.ORD_DT <= DATE_ADD(NOW(), INTERVAL -30 SECOND) -- 30초 DELAY
-			   AND 'Y' = (SELECT BI.BIZDAY_YN FROM TB_BIZDAY BI WHERE BIZDAY  = DATE_FORMAT(NOW(),'%Y%m%d'))
+			   AND 'Y' = (SELECT BI.BIZDAY_YN FROM TB_BIZDAY BI WHERE BIZDAY = DATE_FORMAT(NOW(),'%Y%m%d'))
 			   AND NOT EXISTS (
 			                SELECT 1
 			                  FROM TB_DELIVERY_ASSIGN
 			                 WHERE ORD_NO      = B.ORD_NO
 			                   AND ORD_DTL_NO  = B.ORD_DTL_NO
 			                   AND DELV_LOC_CD = 'ST0001'
-			                   AND DELV_AR_GB  = 'N'
-			              )
-
-			 GROUP BY A.ORD_NO, B.ORD_EXCH_GB
-			
+			                   AND DELV_AR_GB  = 'N')
+			 GROUP BY A.ORD_NO
+			     , B.ORD_EXCH_GB
 			UNION ALL /* 교환  상품 */
-			
-			SELECT A.ORD_NO, B.ORD_EXCH_GB, (SELECT MAX(PG_GB) FROM TB_PAYMENT WHERE ORD_NO= A.ORD_NO AND PAY_GB ='O') AS PG_GB
-			    , 'N' AS GIFT_YN
+			SELECT A.ORD_NO
+			     , B.ORD_EXCH_GB
+			     , (SELECT IFNULL(MAX(PG_GB), '외부몰입금') 
+			        FROM   TB_PAYMENT 
+			        WHERE  ORD_NO = A.ORD_NO 
+			        AND    PAY_GB ='O') AS PG_GB
+			     , 'N'AS GIFT_YN
 			  FROM TB_ORDER        A
 			  JOIN TB_ORDER_DETAIL B        ON A.ORD_NO = B.ORD_NO 
 			  JOIN TB_GOODS        C        ON B.GOODS_CD = C.GOODS_CD 
@@ -657,12 +670,16 @@
 			                   AND DELV_LOC_CD = 'ST0001'
 			                   AND DELV_AR_GB  = 'N'
 			              )
-			 GROUP BY A.ORD_NO, B.ORD_EXCH_GB
-
+			 GROUP BY A.ORD_NO
+			     , B.ORD_EXCH_GB
 			UNION ALL  /* 예약상품 */
-			   
-			SELECT A.ORD_NO, B.ORD_EXCH_GB, (SELECT MAX(PG_GB) FROM TB_PAYMENT WHERE ORD_NO= A.ORD_NO AND PAY_GB ='O') AS PG_GB  -- 예약상품    
-			     , CASE WHEN (SELECT COUNT(*) FROM TB_ORD_FREEGIFT ODF WHERE ODF.ORD_NO = A.ORD_NO) > 0 THEN 'Y' ELSE 'N' END AS GIFT_YN 
+			SELECT A.ORD_NO
+			     , B.ORD_EXCH_GB
+			     , (SELECT IFNULL(MAX(PG_GB), '외부몰입금') 
+			        FROM   TB_PAYMENT 
+			        WHERE  ORD_NO= A.ORD_NO 
+			        AND    PAY_GB ='O') AS PG_GB  -- 예약상품 
+			     , CASE WHEN (SELECT COUNT(1) FROM TB_ORD_FREEGIFT ODF WHERE ODF.ORD_NO = A.ORD_NO) > 0 THEN 'Y' ELSE 'N' END AS GIFT_YN
 			  FROM TB_ORDER          A
 			  JOIN TB_ORDER_DETAIL   B ON A.ORD_NO = B.ORD_NO 
 			  JOIN TB_GOODS          C ON B.GOODS_CD = C.GOODS_CD 
@@ -683,11 +700,13 @@
 			                   AND DELV_AR_GB  = 'N'
 			              )
 			   AND (SELECT COUNT(*) FROM TB_GOODS_RES_SELL WHERE DELV_RES_DT > NOW() AND GOODS_CD = B.GOODS_CD) = 0
-			 GROUP BY A.ORD_NO, B.ORD_EXCH_GB
-
-			
+			 GROUP BY A.ORD_NO
+			     , B.ORD_EXCH_GB
 		) A
-		WHERE 'Y' = CASE WHEN PG_GB = 'NAVER_ORDER' AND DATE_FORMAT(NOW(),'%H%i%S') > '140000' THEN 'N' ELSE 'Y' END   --  오픈시점 주석풀기  네이버 주문형은 14시까지 
+		WHERE 'Y' = CASE WHEN PG_GB = 'NAVER_ORDER' AND DATE_FORMAT(NOW(),'%H%i%S') > '140000' 
+		                 THEN 'N' 
+		                 ELSE 'Y' 
+		                 END   --  오픈시점 주석풀기  네이버 주문형은 14시까지 
 		ORDER BY ORD_NO
 		LIMIT 0, 400
 		]]>
@@ -710,8 +729,7 @@
 		   AND C.SELF_GOODS_YN = 'Y'       -- 자사 
 		 ORDER BY B.ORD_DTL_NO		
 	</select>
-		
-		
+
 	<!-- 출고대상 주문상세아이템 조회  -->	
 	<select id="getOrderDtlItemList" resultType="Delivery">
 		/*TsbDelivery.getOrderDtlItemList*/