tsit05 пре 4 година
родитељ
комит
6ddc7f59b7

+ 225 - 263
src/main/java/com/style24/batch/biz/job/delivery/TsbDeliveryOrderJob.java

@@ -64,151 +64,124 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
 		
 		 // WMS 창고 출고처 지정 
 		 for(Delivery ordNoData : ordnoList) {
-			 ShopYn = "N";
-			 WmsYn  = "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;
+			 try {
+				 ShopYn = "N";
+				 WmsYn  = "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());
-			 if(ordDtlCnt == ordDtlNoList.size()) {
-				 for(Delivery inOrdDtlNoData : ordDtlNoList) {
-					 inOrdDtlNoData.setDelvLocCd("DL001");
-
-					 // 출고처등록  및 history 등록   (TB_DELIVERY_ASSIGN & TB_DELIVERY_ASSIGN_HST) 
-					// log.info("WMS 창고 출고처 지정  DTL_NO"+ inOrdDtlNoData.getOrdDtlNo());
-					 inOrdDtlNoData.setDelvArGb("Y"); // 수락  
-					 inOrdDtlNoData.setLocQty(inOrdDtlNoData.getOrdQty()); 
-					 deliveryService.saveDeliveryAssign(inOrdDtlNoData);
-					 
-					 // 주문상태변경 및 출고처코드 등록 (TB_ORDER_DETAIL & TB_ORDER_DETAIL_HST)
-					 inOrdDtlNoData.setOrdDtlStat("G013_35");  // 출고처지정 
-					 inOrdDtlNoData.setDelvAssignStat("Y");    // 출고처지정상태 
-					 deliveryService.updateTbOrderDtlAssign(inOrdDtlNoData);
-					 
-					 Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(inOrdDtlNoData);
-					 // wms 재고차감 등록(TB_SELL_QTY)  
-					 for(Delivery data : itemList) {	
-					    wmsDeliveryService.insertWmsTbIfDelifixQty(data);
+					 if(chkCnt == itemList.size()) {
+						 ordDtlCnt = ordDtlCnt+1;
 					 }
 				 }
-				 WmsYn = "N";
-			 } else {
-				 ShopYn = "Y";
-			 }
-			 
-			// 3. WMS의  주문단위 상품재고가 없을경우  매장재고 체크 후  주문단위 상품이 모두있을경우 해당 매장으로 출고처 지정  
-			// WMS 창고 출고처 지정 못한 주문건이 존재  매장 출고처 지정
+				 log.info("ordDtlCnt"+ordDtlCnt+"  ordDtlNoList.size() "+ordDtlNoList.size());
+				 if(ordDtlCnt == ordDtlNoList.size()) {
+					 for(Delivery inOrdDtlNoData : ordDtlNoList) {
+						 inOrdDtlNoData.setDelvLocCd("DL001");
 	
-			 if("Y".equals(ShopYn)) {
-				 
-				 Collection<Delivery> shopOrdDtlNoList = deliveryService.getOrderDtlNoList(ordNoData);
-				 
-				 // 출고처지정 임시 테이블 초기화 
-				 deliveryService.deleteTbDeliveryLocTmp();
-				 
-				 for(Delivery shopOrdDtlNoData : shopOrdDtlNoList) {
-					 
-					 // 주문상세아이템 조회  
-					 Collection<Delivery> shopItemList = deliveryService.getOrderDtlItemList(shopOrdDtlNoData);
-					 
-					 if("G056_S".equals(shopOrdDtlNoData.getGoodsType())) {
-						 deliveryService.getShopRealStockSetChk(shopItemList, shopOrdDtlNoData.getOrdDtlNo());
-					 } else {
-						 deliveryService.getShopRealStockChk(shopItemList);
-					 }
-				 }
-				 
-
-				 // 출고처지정 임시테이블 조회 
-				 int toTalOrdDtlCnt = shopOrdDtlNoList.size();
-				 Delivery temp = deliveryService.getDeliveryLocTmp(toTalOrdDtlCnt);
-				 if(temp != null) {
-					 if(toTalOrdDtlCnt == temp.getGoodsLocCnt()) {
-						 String[] ordDtlNoArr = temp.getOrdDtlNoList().split(",");
-						 for(int j=0; j<ordDtlNoArr.length; j++) {
-
-							 // 출고처등록  및 history 등록   (TB_DELIVERY_ASSIGN & TB_DELIVERY_ASSIGN_HST) 
-							 Delivery saveData = new Delivery();
-							 saveData.setOrdNo(ordNoData.getOrdNo());
-							 saveData.setOrdDtlNo(Integer.parseInt(ordDtlNoArr[j]));
-							 saveData.setDelvLocCd(temp.getDelvLocCd());
-							 saveData.setLocQty(temp.getLocQty());
-							
-							 saveData.setDelvArGb("P"); // 대기  
-							 deliveryService.saveDeliveryAssign(saveData);
-							 
-							 // 주문상태변경 및 출고처코드 등록 (TB_ORDER_DETAIL & TB_ORDER_DETAIL_HST)
-							 saveData.setOrdDtlStat("G013_35");  // 출고처지정 
-							 saveData.setDelvAssignStat("P");    // 출고처지정상태 
-							 deliveryService.updateTbOrderDtlAssign(saveData);
-							 
+						 // 출고처등록  및 history 등록   (TB_DELIVERY_ASSIGN & TB_DELIVERY_ASSIGN_HST) 
+						// log.info("WMS 창고 출고처 지정  DTL_NO"+ inOrdDtlNoData.getOrdDtlNo());
+						 inOrdDtlNoData.setDelvArGb("Y"); // 수락  
+						 inOrdDtlNoData.setLocQty(inOrdDtlNoData.getOrdQty()); 
+						 deliveryService.saveDeliveryAssign(inOrdDtlNoData);
+						 
+						 // 주문상태변경 및 출고처코드 등록 (TB_ORDER_DETAIL & TB_ORDER_DETAIL_HST)
+						 inOrdDtlNoData.setOrdDtlStat("G013_35");  // 출고처지정 
+						 inOrdDtlNoData.setDelvAssignStat("Y");    // 출고처지정상태 
+						 deliveryService.updateTbOrderDtlAssign(inOrdDtlNoData);
+						 
+						 Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(inOrdDtlNoData);
+						 // wms 재고차감 등록(TB_SELL_QTY)  
+						 for(Delivery data : itemList) {	
+						    wmsDeliveryService.insertWmsTbIfDelifixQty(data);
 						 }
-					 
-					 } else {
-						 WmsYn = "Y";
-						 ShopYn = "N";
 					 }
+					 WmsYn = "N";
 				 } else {
-					 WmsYn = "Y";
-					 ShopYn = "N";
+					 ShopYn = "Y";
 				 }
-
-			 }
+				 
+				// 3. WMS의  주문단위 상품재고가 없을경우  매장재고 체크 후  주문단위 상품이 모두있을경우 해당 매장으로 출고처 지정  
+				// WMS 창고 출고처 지정 못한 주문건이 존재  매장 출고처 지정
 		
-			 // 4. 주문상품의 모든재고가 (WMS, 매장) 모두 없을경우  WMS로 출고처지정 (부분배송) 이때 교환은  교환출고예외 테이블에 등록(tb_exchange_delv_fail)
-			 if("Y".equals(WmsYn)) {
-				 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);
-							 if(wmsStock !=null) {
-								 if(wmsStock.getLocQty() >= item.getOrdQty()) {
-									 chkCnt = chkCnt+1;
-								 }
-							 }
-						 }
+				 if("Y".equals(ShopYn)) {
+					 
+					 Collection<Delivery> shopOrdDtlNoList = deliveryService.getOrderDtlNoList(ordNoData);
+					 
+					 // 출고처지정 임시 테이블 초기화 
+					 deliveryService.deleteTbDeliveryLocTmp();
+					 
+					 for(Delivery shopOrdDtlNoData : shopOrdDtlNoList) {
 						 
-						 //chgData.setRegNo(regNo);
-						 chgData.setCnclRtnQty(chgData.getOrdQty() - chkCnt); // 취소수량(재고없는수량) 
-						 // insert 
-						 deliveryService.insertTbExchangeDelvFail(chgData);
+						 // 주문상세아이템 조회  
+						 Collection<Delivery> shopItemList = deliveryService.getOrderDtlItemList(shopOrdDtlNoData);
 						 
-						// ddddd
+						 if("G056_S".equals(shopOrdDtlNoData.getGoodsType())) {
+							 deliveryService.getShopRealStockSetChk(shopItemList, shopOrdDtlNoData.getOrdDtlNo());
+						 } else {
+							 deliveryService.getShopRealStockChk(shopItemList);
+						 }
 					 }
 					 
-				 } else {
-					 if("NAVER_ORDER".equals(ordNoData.getPgGb())) { // 네이버 주문형
-						 
-						 // 주문상세번호 조회  
-						 Collection<Delivery> ordDtlNoWmsList = deliveryService.getOrderDtlNoList(ordNoData);
+	
+					 // 출고처지정 임시테이블 조회 
+					 int toTalOrdDtlCnt = shopOrdDtlNoList.size();
+					 Delivery temp = deliveryService.getDeliveryLocTmp(toTalOrdDtlCnt);
+					 if(temp != null) {
+						 if(toTalOrdDtlCnt == temp.getGoodsLocCnt()) {
+							 String[] ordDtlNoArr = temp.getOrdDtlNoList().split(",");
+							 for(int j=0; j<ordDtlNoArr.length; j++) {
+	
+								 // 출고처등록  및 history 등록   (TB_DELIVERY_ASSIGN & TB_DELIVERY_ASSIGN_HST) 
+								 Delivery saveData = new Delivery();
+								 saveData.setOrdNo(ordNoData.getOrdNo());
+								 saveData.setOrdDtlNo(Integer.parseInt(ordDtlNoArr[j]));
+								 saveData.setDelvLocCd(temp.getDelvLocCd());
+								 saveData.setLocQty(temp.getLocQty());
+								
+								 saveData.setDelvArGb("P"); // 대기  
+								 deliveryService.saveDeliveryAssign(saveData);
+								 
+								 // 주문상태변경 및 출고처코드 등록 (TB_ORDER_DETAIL & TB_ORDER_DETAIL_HST)
+								 saveData.setOrdDtlStat("G013_35");  // 출고처지정 
+								 saveData.setDelvAssignStat("P");    // 출고처지정상태 
+								 deliveryService.updateTbOrderDtlAssign(saveData);
+								 
+							 }
 						 
-						 for(Delivery wmsOrdDtlData : ordDtlNoWmsList) {
+						 } else {
+							 WmsYn = "Y";
+							 ShopYn = "N";
+						 }
+					 } else {
+						 WmsYn = "Y";
+						 ShopYn = "N";
+					 }
+	
+				 }
+			
+				 // 4. 주문상품의 모든재고가 (WMS, 매장) 모두 없을경우  WMS로 출고처지정 (부분배송) 이때 교환은  교환출고예외 테이블에 등록(tb_exchange_delv_fail)
+				 if("Y".equals(WmsYn)) {
+					 if("E".equals(ordNoData.getOrdExchGb())) {
+						  Collection<Delivery> ordDtlNoWmsList = deliveryService.getOrderDtlNoList(ordNoData);
+						 for(Delivery chgData : ordDtlNoWmsList) {
 							 // 주문상세아이템 조회  
-							 Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(wmsOrdDtlData);
+							 Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(chgData);
 							 int chkCnt = 0;
 							 for(Delivery item : itemList) {
 								 // WMS 재고체크 
@@ -219,64 +192,25 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
 									 }
 								 }
 							 }
-
-							 if(chkCnt >= itemList.size()) {
-								 wmsOrdDtlData.setDelvLocCd("DL001");
-									
-								 // 출고처등록  및 history 등록   (TB_DELIVERY_ASSIGN & TB_DELIVERY_ASSIGN_HST) 
-								 
-								 //log.info("네이버주문형Y  DTL_NO"+ wmsOrdDtlData.getOrdDtlNo());
-								 wmsOrdDtlData.setDelvArGb("Y"); // 수락  
-								 wmsOrdDtlData.setLocQty(wmsOrdDtlData.getOrdQty()); 
-								 deliveryService.saveDeliveryAssign(wmsOrdDtlData);
-								 
-								 // 주문상태변경 및 출고처코드 등록 (TB_ORDER_DETAIL & TB_ORDER_DETAIL_HST)
-								 wmsOrdDtlData.setOrdDtlStat("G013_35");  // 출고처지정 
-								 wmsOrdDtlData.setDelvAssignStat("Y");    // 출고처지정상태 
-								 deliveryService.updateTbOrderDtlAssign(wmsOrdDtlData);
-								 
-								 // wms 재고차감 등록(TB_SELL_QTY)  
-								 for(Delivery data : itemList) {	
-								    wmsDeliveryService.insertWmsTbIfDelifixQty(data);
-								 }
-							 } else {
-								 // 출고처등록  및 history 등록   (TB_DELIVERY_ASSIGN & TB_DELIVERY_ASSIGN_HST) 
-								 log.info("네이버주문형N   DTL_NO"+ wmsOrdDtlData.getOrdDtlNo());
-								 wmsOrdDtlData.setDelvLocCd("DL001");
-								 wmsOrdDtlData.setDelvArGb("N"); // 수락  
-								 wmsOrdDtlData.setLocQty(wmsOrdDtlData.getOrdQty()); 
-								 deliveryService.saveDeliveryAssign(wmsOrdDtlData);
-							 }
+							 
+							 //chgData.setRegNo(regNo);
+							 chgData.setCnclRtnQty(chgData.getOrdQty() - chkCnt); // 취소수량(재고없는수량) 
+							 // insert 
+							 deliveryService.insertTbExchangeDelvFail(chgData);
+							 
+							// ddddd
 						 }
-					 } else { // 일반 
-						 //log.info("last:"+ordNoData.getOrdNo());
-						 // 주문상세번호 조회  
-						 Collection<Delivery> ordDtlNoWmsList = deliveryService.getOrderDtlNoList(ordNoData);
-						 int chkCnt = 0;
-						 for(Delivery wmsOrdDtlData : ordDtlNoWmsList) {
+						 
+					 } else {
+						 if("NAVER_ORDER".equals(ordNoData.getPgGb())) { // 네이버 주문형
 							 
-							 if("G056_S".equals(wmsOrdDtlData.getGoodsType())) {
-								
-								 // 주문상세아이템 조회  
-								 int setCnt =0;
-								 Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(wmsOrdDtlData);
-								 
-								 for(Delivery item : itemList) {
-									 // WMS 재고체크 
-									 WmsDelivery wmsStock = deliveryService.getWmsRealStockChk(item);
-									 if(wmsStock !=null) {
-										 if(wmsStock.getLocQty() >= item.getOrdQty()) {
-											 setCnt = setCnt+1;
-										 }
-									 }
-								 }
-								 if(setCnt == itemList.size() ) {
-									 chkCnt = chkCnt+1;
-								 }
-							 } else {
+							 // 주문상세번호 조회  
+							 Collection<Delivery> ordDtlNoWmsList = deliveryService.getOrderDtlNoList(ordNoData);
+							 
+							 for(Delivery wmsOrdDtlData : ordDtlNoWmsList) {
 								 // 주문상세아이템 조회  
 								 Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(wmsOrdDtlData);
-								 
+								 int chkCnt = 0;
 								 for(Delivery item : itemList) {
 									 // WMS 재고체크 
 									 WmsDelivery wmsStock = deliveryService.getWmsRealStockChk(item);
@@ -286,91 +220,115 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
 										 }
 									 }
 								 }
-							 }
 	
-						 }
-						 if(chkCnt > 0) {
-							 for(Delivery wmsOrdDtlData : ordDtlNoList) {
-								 
-								// log.info("라스트  N   DTL_NO"+ wmsOrdDtlData.getOrdDtlNo());
-								 wmsOrdDtlData.setDelvLocCd("DL001");
-								 // 출고처등록  및 history 등록   (TB_DELIVERY_ASSIGN & TB_DELIVERY_ASSIGN_HST) 
-								 wmsOrdDtlData.setDelvArGb("Y"); // 수락  
-								 wmsOrdDtlData.setLocQty(wmsOrdDtlData.getOrdQty()); 
-								 deliveryService.saveDeliveryAssign(wmsOrdDtlData);
-								 
-								 // 주문상태변경 및 출고처코드 등록 (TB_ORDER_DETAIL & TB_ORDER_DETAIL_HST)
-								 wmsOrdDtlData.setOrdDtlStat("G013_35");  // 출고처지정 
-								 wmsOrdDtlData.setDelvAssignStat("Y");    // 출고처지정상태 
-								 deliveryService.updateTbOrderDtlAssign(wmsOrdDtlData);
-								 
-								 // 주문상세아이템 조회  
-								 Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(wmsOrdDtlData);
-								 // wms 재고차감 등록(TB_SELL_QTY)  
-								 for(Delivery data : itemList) {	
-								    wmsDeliveryService.insertWmsTbIfDelifixQty(data);
+								 if(chkCnt >= itemList.size()) {
+									 wmsOrdDtlData.setDelvLocCd("DL001");
+										
+									 // 출고처등록  및 history 등록   (TB_DELIVERY_ASSIGN & TB_DELIVERY_ASSIGN_HST) 
+									 
+									 //log.info("네이버주문형Y  DTL_NO"+ wmsOrdDtlData.getOrdDtlNo());
+									 wmsOrdDtlData.setDelvArGb("Y"); // 수락  
+									 wmsOrdDtlData.setLocQty(wmsOrdDtlData.getOrdQty()); 
+									 deliveryService.saveDeliveryAssign(wmsOrdDtlData);
+									 
+									 // 주문상태변경 및 출고처코드 등록 (TB_ORDER_DETAIL & TB_ORDER_DETAIL_HST)
+									 wmsOrdDtlData.setOrdDtlStat("G013_35");  // 출고처지정 
+									 wmsOrdDtlData.setDelvAssignStat("Y");    // 출고처지정상태 
+									 deliveryService.updateTbOrderDtlAssign(wmsOrdDtlData);
+									 
+									 // wms 재고차감 등록(TB_SELL_QTY)  
+									 for(Delivery data : itemList) {
+									    wmsDeliveryService.insertWmsTbIfDelifixQty(data);
+									 }
+								 } else {
+									 // 출고처등록  및 history 등록   (TB_DELIVERY_ASSIGN & TB_DELIVERY_ASSIGN_HST) 
+									 log.info("네이버주문형N   DTL_NO"+ wmsOrdDtlData.getOrdDtlNo());
+									 wmsOrdDtlData.setDelvLocCd("DL001");
+									 wmsOrdDtlData.setDelvArGb("N"); // 수락  
+									 wmsOrdDtlData.setLocQty(wmsOrdDtlData.getOrdQty()); 
+									 deliveryService.saveDeliveryAssign(wmsOrdDtlData);
 								 }
 							 }
-						 } else {
-							 for(Delivery wmsOrdDtlData : ordDtlNoList) {
-								// log.info("라스트  N   DTL_NO"+ wmsOrdDtlData.getOrdDtlNo());
+						 } else { // 일반 
+							 //log.info("last:"+ordNoData.getOrdNo());
+							 // 주문상세번호 조회  
+							 Collection<Delivery> ordDtlNoWmsList = deliveryService.getOrderDtlNoList(ordNoData);
+							 int chkCnt = 0;
+							 for(Delivery wmsOrdDtlData : ordDtlNoWmsList) {
 								 
-								 wmsOrdDtlData.setDelvLocCd("DL001");
-								 // 출고처등록  및 history 등록   (TB_DELIVERY_ASSIGN & TB_DELIVERY_ASSIGN_HST) 
-								 wmsOrdDtlData.setDelvArGb("N"); // 거절
-								 wmsOrdDtlData.setLocQty(wmsOrdDtlData.getOrdQty()); 
-								 deliveryService.saveDeliveryAssign(wmsOrdDtlData);
-							 }
-						 }
-						 /****
-						 
-						 // 주문상세번호 조회  
-						 Collection<Delivery> ordDtlNoSetList = deliveryService.getSetOrderDtlNoList(ordNoData);
-						 
-						 for(Delivery setOrdDtlData : ordDtlNoSetList) {
-							 // 주문상세아이템 조회  
-							 Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(setOrdDtlData);
-							 int chkSetCnt = 0;
-							 for(Delivery item : itemList) {
-								 // WMS 재고체크 
-								 WmsDelivery wmsStock = deliveryService.getWmsRealStockChk(item);
-								 if(wmsStock !=null) {
-									 if(wmsStock.getLocQty() >= item.getOrdQty()) {
-										 chkSetCnt = chkSetCnt+1;
+								 if("G056_S".equals(wmsOrdDtlData.getGoodsType())) {
+									
+									 // 주문상세아이템 조회  
+									 int setCnt =0;
+									 Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(wmsOrdDtlData);
+									 
+									 for(Delivery item : itemList) {
+										 // WMS 재고체크 
+										 WmsDelivery wmsStock = deliveryService.getWmsRealStockChk(item);
+										 if(wmsStock !=null) {
+											 if(wmsStock.getLocQty() >= item.getOrdQty()) {
+												 setCnt = setCnt+1;
+											 }
+										 }
+									 }
+									 if(setCnt == itemList.size() ) {
+										 chkCnt = chkCnt+1;
+									 }
+								 } else {
+									 // 주문상세아이템 조회  
+									 Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(wmsOrdDtlData);
+									 
+									 for(Delivery item : itemList) {
+										 // WMS 재고체크 
+										 WmsDelivery wmsStock = deliveryService.getWmsRealStockChk(item);
+										 if(wmsStock !=null) {
+											 if(wmsStock.getLocQty() >= item.getOrdQty()) {
+												 chkCnt = chkCnt+1;
+											 }
+										 }
 									 }
 								 }
+		
 							 }
-						
-							 if(chkSetCnt > 0) {
-								 setOrdDtlData.setDelvLocCd("DL001");
-									
-								 // 출고처등록  및 history 등록   (TB_DELIVERY_ASSIGN & TB_DELIVERY_ASSIGN_HST) 
-								 setOrdDtlData.setDelvArGb("Y"); // 수락  
-								 setOrdDtlData.setLocQty(setOrdDtlData.getOrdQty()); 
-								 deliveryService.saveDeliveryAssign(setOrdDtlData);
-								 
-								 // 주문상태변경 및 출고처코드 등록 (TB_ORDER_DETAIL & TB_ORDER_DETAIL_HST)
-								 setOrdDtlData.setOrdDtlStat("G013_35");  // 출고처지정 
-								 setOrdDtlData.setDelvAssignStat("Y");    // 출고처지정상태 
-								 deliveryService.updateTbOrderDtlAssign(setOrdDtlData);
-								 
-								 // wms 재고차감 등록(TB_SELL_QTY)  
-								 for(Delivery data : itemList) {	
-								    wmsDeliveryService.insertWmsTbIfDelifixQty(data);
+							 if(chkCnt > 0) {
+								 for(Delivery wmsOrdDtlData : ordDtlNoList) {
+									 
+									// log.info("라스트  N   DTL_NO"+ wmsOrdDtlData.getOrdDtlNo());
+									 wmsOrdDtlData.setDelvLocCd("DL001");
+									 // 출고처등록  및 history 등록   (TB_DELIVERY_ASSIGN & TB_DELIVERY_ASSIGN_HST) 
+									 wmsOrdDtlData.setDelvArGb("Y"); // 수락  
+									 wmsOrdDtlData.setLocQty(wmsOrdDtlData.getOrdQty()); 
+									 deliveryService.saveDeliveryAssign(wmsOrdDtlData);
+									 
+									 // 주문상태변경 및 출고처코드 등록 (TB_ORDER_DETAIL & TB_ORDER_DETAIL_HST)
+									 wmsOrdDtlData.setOrdDtlStat("G013_35");  // 출고처지정 
+									 wmsOrdDtlData.setDelvAssignStat("Y");    // 출고처지정상태 
+									 deliveryService.updateTbOrderDtlAssign(wmsOrdDtlData);
+									 
+									 // 주문상세아이템 조회  
+									 Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(wmsOrdDtlData);
+									 // wms 재고차감 등록(TB_SELL_QTY)  
+									 for(Delivery data : itemList) {	
+									    wmsDeliveryService.insertWmsTbIfDelifixQty(data);
+									 }
 								 }
 							 } else {
-								 // 출고처등록  및 history 등록   (TB_DELIVERY_ASSIGN & TB_DELIVERY_ASSIGN_HST) 
-								 setOrdDtlData.setDelvLocCd("DL001");
-								 setOrdDtlData.setDelvArGb("N"); // 수락  
-								 setOrdDtlData.setLocQty(setOrdDtlData.getOrdQty()); 
-								 deliveryService.saveDeliveryAssign(setOrdDtlData);
+								 for(Delivery wmsOrdDtlData : ordDtlNoList) {
+									// log.info("라스트  N   DTL_NO"+ wmsOrdDtlData.getOrdDtlNo());
+									 
+									 wmsOrdDtlData.setDelvLocCd("DL001");
+									 // 출고처등록  및 history 등록   (TB_DELIVERY_ASSIGN & TB_DELIVERY_ASSIGN_HST) 
+									 wmsOrdDtlData.setDelvArGb("N"); // 거절
+									 wmsOrdDtlData.setLocQty(wmsOrdDtlData.getOrdQty()); 
+									 deliveryService.saveDeliveryAssign(wmsOrdDtlData);
+								 }
 							 }
 						 }
-						 ***/
 					 }
 				 }
+			 }catch(Exception e) {
+				 log.debug("TsbDeliveryOrderJob "+ e.getStackTrace().toString());
 			 }
-			
 		 } // for(Delivery ordNoData : ordnoList)
 
 		 
@@ -379,15 +337,19 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
 		 // 사은품 조회  차후 작업!!!! 
 		 Collection<Delivery> ordList = deliveryService.getWmsDeliveryOrdNoList();
 		 for(Delivery ordData : ordList) {
-			 // wms 출고 정보 조회(mall_DB) 
-			 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);
+			 try {
+				 // wms 출고 정보 조회(mall_DB) 
+				 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());
+			 }
 		 }
 		 
 		 succCnt = 1;

+ 2 - 2
src/main/java/com/style24/batch/biz/service/TsbDeliveryService.java

@@ -208,7 +208,7 @@ public class TsbDeliveryService {
 			}
 		}
 		
-		/*
+	
 		// 교환 재고부족시 TB_EXCHANGE_DELV_FAIL 등록 
 		for (Delivery excData : excList) {
 			Collection<Delivery> chgExcList = deliveryDao.getChgDelvExcList(excData);	
@@ -217,7 +217,7 @@ public class TsbDeliveryService {
 				deliveryDao.insertTbExchangeDelvFail(data);
 			}
 		}
-		*/
+		
 
 	}
 

+ 24 - 12
src/main/java/com/style24/persistence/mybatis/shop/TsbDelivery.xml

@@ -260,6 +260,7 @@
 				, GIFT_YN
 				, PRODUCT_NO
 				, PRODUCT_CODE
+				, SKU_CODE
 				, REG_NO
 				, REG_DT
 				, UPD_NO
@@ -278,6 +279,7 @@
 				, #{giftyn}
 				, #{productno}
 				, #{productcode}
+				, #{skucode}
 				, #{regNo}
 				, NOW()
 				, #{regNo}
@@ -625,7 +627,7 @@
 			                   AND DELV_AR_GB  = 'N'
 			              )
 			    AND A.REG_DT >= DATE_ADD(DATE_FORMAT(STR_TO_DATE(NOW(), '%Y-%m-%d'),'%Y%m%d%H%i%S') , INTERVAL -1 DAY)   -- 테스트 임시 
-			--	 AND A.MALL_GB ='G011_10'   -- 테스트 임시 
+				 AND A.MALL_GB ='G011_20'   -- 테스트 임시 
 			 GROUP BY A.ORD_NO, B.ORD_EXCH_GB
 			
 			UNION ALL /* 교환  상품 */
@@ -674,7 +676,7 @@
 			                   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
-			AND A.MALL_GB ='G011_10'     -- 테스트 임시 
+			AND A.MALL_GB ='G011_20'     -- 테스트 임시 
 			 GROUP BY A.ORD_NO, B.ORD_EXCH_GB
 
 			
@@ -1721,16 +1723,26 @@
 	<select id="getChgDelvExcList" resultType="Delivery">
 		/*TsbDelivery.getChgDelvExcList*/
 			SELECT 
-				  A.ORD_NO 
-				, B.ORD_DTL_NO 
-				, C.ORD_QTY - C.CNCL_RTN_QTY AS ORD_QTY
-				, B.EXCEPTION_QTY  AS CNCL_RTN_QTY
-			  FROM TB_ORDER_DELIVERY_EXCEPTION      A
-			  JOIN TB_ORDER_DELIVERY_EXCEPTION_ITEM B ON A.DELIVERY_EXCEPTION_SQ = B.DELIVERY_EXCEPTION_SQ 
-			  JOIN TB_ORDER_DETAIL                  C ON A.ORD_NO = C.ORD_NO AND B.ORD_DTL_NO = C.ORD_DTL_NO 
-			 WHERE A.ORD_NO = #{orderno}
-			   AND B.GIFT_YN = 'N'
-			   AND C.ORD_EXCH_GB = 'E'
+				  ORD_NO
+				, ORD_DTL_NO
+				, MAX(ORD_QTY) AS ORD_QTY
+				, MAX(CNCL_RTN_QTY) AS CNCL_RTN_QTY
+			FROM (
+						SELECT 
+							  A.ORD_NO 
+							, B.ORD_DTL_NO 
+							, C.ORD_QTY - C.CNCL_RTN_QTY AS ORD_QTY
+							, B.EXCEPTION_QTY   -- AS CNCL_RTN_QTY
+							, (C.ORD_QTY - C.CNCL_RTN_QTY) - TRUNCATE((((C.ORD_QTY - C.CNCL_RTN_QTY) * D.ITEM_QTY) -  B.EXCEPTION_QTY) / D.ITEM_QTY,1)   AS CNCL_RTN_QTY
+						  FROM TB_ORDER_DELIVERY_EXCEPTION      A
+						  JOIN TB_ORDER_DELIVERY_EXCEPTION_ITEM B ON A.DELIVERY_EXCEPTION_SQ = B.DELIVERY_EXCEPTION_SQ 
+						  JOIN TB_ORDER_DETAIL                  C ON A.ORD_NO = C.ORD_NO AND B.ORD_DTL_NO = C.ORD_DTL_NO 
+						  JOIN TB_ORDER_DETAIL_ITEM             D ON C.ORD_DTL_NO =  D.ORD_DTL_NO AND B.SKU_CODE = D.OPT_CD 
+						 WHERE   A.ORD_NO = #{orderno}
+						   AND B.GIFT_YN = 'N'
+						   AND C.ORD_EXCH_GB = 'E'
+			) A 
+			GROUP BY ORD_NO, ORD_DTL_NO 
 	</select>			
 	
 	<!-- 교환 회수예외 조회        -->