Explorar el Código

SCM 출고 로직 수정

card007 hace 4 años
padre
commit
04c5cfc65a
Se han modificado 1 ficheros con 91 adiciones y 82 borrados
  1. 91 82
      src/main/java/com/style24/core/biz/service/TscOrderService.java

+ 91 - 82
src/main/java/com/style24/core/biz/service/TscOrderService.java

@@ -2468,78 +2468,89 @@ public class TscOrderService {
 	 * @since 2021. 04. 21
 	 */
 	@Transactional("shopTxnManager")
-	public Collection<OrderChange> updateSellerDelvStartAndPartCancel(Collection<Order> params, int userNo) {
+	public Collection<OrderChange> getCancelDataList(Collection<Order> params, int userNo) {
 		
 		// 주문번호별 상세번호, 취소수량 및 주문정보 세팅
 		List<OrderChange> cancelDataList = new ArrayList<OrderChange>();
 		
-		// 배송중 주문 목록 (알림톡 송부 위함)
-		List<Order> delvStartList = new ArrayList<Order>();
-		
-		// 네이버페이 주문형 일반 배송중 주문 목록
-		List<Order> delvStartDtlList = new ArrayList<Order>();
-
-		try {
+		for(Order param : params) {
 			
-			for(Order param : params) {
+			log.info("param.getCancelQty() ::: {} ", param.getCancelQty());
+			log.info("param.getDelvFeeCd() ::: {} ", param.getDelvFeeCd());
+			log.info("param.getOrdChgSq() ::: {} ", param.getOrdChgSq());
+			
+			// 품절취소 수량이 존재하면 취소대상목록에 추가등록
+			if (param.getCancelQty() > 0) {
 				
-				log.info("param.getCancelQty() ::: {} ", param.getCancelQty());
-				log.info("param.getDelvFeeCd() ::: {} ", param.getDelvFeeCd());
-				log.info("param.getOrdChgSq() ::: {} ", param.getOrdChgSq());
+				boolean chkOrd = true;
 				
-				// 품절취소 수량이 존재하면 취소대상목록에 추가등록
-				if (param.getCancelQty() > 0) {
-					
-					boolean chkOrd = true;
-					
-					// TODO 2021.07.14 교환일때 교환변경번호가 한번에 출고되는 상황인지 체크
-					// 취소대상목록에 주문번호 존재하면 취소상세번호, 취소수량만 배열에 추가
-					for(OrderChange cancelData : cancelDataList) {
-						// 2021.07.15 정책단위 체크
-						// 2021.09.06 결제건은일반출고 
-						if (cancelData.getOrdChgSq() != null && cancelData.getOrdChgSq() > 0) {
-							if (param.getOrdNo().equals(cancelData.getOrdNo()) && param.getDelvFeeCd().equals(cancelData.getDelvFeeCd()) 
-									&& param.getOrdChgSq().equals(cancelData.getOrdChgSq())) {
-								chkOrd = false;
-								cancelData.getOrdDtlNoList().add(param.getOrdDtlNo());
-								cancelData.getCnclRtnReqQtyList().add(param.getCancelQty());
-							}
+				// TODO 2021.07.14 교환일때 교환변경번호가 한번에 출고되는 상황인지 체크
+				// 취소대상목록에 주문번호 존재하면 취소상세번호, 취소수량만 배열에 추가
+				for(OrderChange cancelData : cancelDataList) {
+					// 2021.07.15 정책단위 체크
+					// 2021.09.06 결제건은일반출고 
+					if (cancelData.getOrdChgSq() != null && cancelData.getOrdChgSq() > 0) {
+						if (param.getOrdNo().equals(cancelData.getOrdNo()) && param.getDelvFeeCd().equals(cancelData.getDelvFeeCd()) 
+								&& param.getOrdChgSq().equals(cancelData.getOrdChgSq())) {
+							chkOrd = false;
+							cancelData.getOrdDtlNoList().add(param.getOrdDtlNo());
+							cancelData.getCnclRtnReqQtyList().add(param.getCancelQty());
 						}
 					}
-					
-					// 취소대상목록에 존재하지 않으면 신규등록
-					if (chkOrd) {
-						OrderChange change = new OrderChange();
-						change.setOrdNo(param.getOrdNo());
-						change.setCustNo(param.getCustNo());
-						change.setOrderNm(param.getOrdNm());
-						change.setOrdNm(param.getOrdNm());
-						change.setOrdPhnno(param.getOrdPhnno());
-						change.setUserNo(userNo);
-						change.setPgGb(param.getPgGb());
-						change.setPayMeans(param.getPayMeans());
-						change.setBankCd(param.getBankCd());
-						change.setAccountNm(param.getAccountNm());
-						change.setAccountNo(CryptoUtils.decryptAES(param.getAccountNo()));
-						change.getOrdDtlNoList().add(param.getOrdDtlNo());
-						change.getCnclRtnReqQtyList().add(param.getCancelQty());
-						change.setChgReason(TscConstants.OrderCancelReason.SOLDOUT_CANCEL.value());
-						change.setChgReasonNm("품절취소");
-						change.setDelvFeeCd(param.getDelvFeeCd());
-						change.setOrdChgSq(param.getOrdChgSq());
-						cancelDataList.add(change);
-					}
+				}
+				
+				// 취소대상목록에 존재하지 않으면 신규등록
+				if (chkOrd) {
+					OrderChange change = new OrderChange();
+					change.setOrdNo(param.getOrdNo());
+					change.setCustNo(param.getCustNo());
+					change.setOrderNm(param.getOrdNm());
+					change.setOrdNm(param.getOrdNm());
+					change.setOrdPhnno(param.getOrdPhnno());
+					change.setUserNo(userNo);
+					change.setPgGb(param.getPgGb());
+					change.setPayMeans(param.getPayMeans());
+					change.setBankCd(param.getBankCd());
+					change.setAccountNm(param.getAccountNm());
+					change.setAccountNo(CryptoUtils.decryptAES(param.getAccountNo()));
+					change.getOrdDtlNoList().add(param.getOrdDtlNo());
+					change.getCnclRtnReqQtyList().add(param.getCancelQty());
+					change.setChgReason(TscConstants.OrderCancelReason.SOLDOUT_CANCEL.value());
+					change.setChgReasonNm("품절취소");
+					change.setDelvFeeCd(param.getDelvFeeCd());
+					change.setOrdChgSq(param.getOrdChgSq());
+					cancelDataList.add(change);
 				}
 			}
+		}
+		
+		
+		return cancelDataList;
+	}
+
+	/**
+	 * 입점 발주 최종 처리
+	 * @param Order
+	 * @return List<Order>
+	 * @author xodud1202
+	 * @since 2021. 04. 21
+	 */
+	public void updateSellerDelvStart(Collection<Order> params, Collection<OrderChange> cancelDataList, int userNo) {
+		// 배송중 주문 목록 (알림톡 송부 위함)
+		List<Order> delvStartList = new ArrayList<Order>();
 
-			int exchangeDelvFailCnt = 0;
+		// 네이버페이 주문형 일반 배송중 주문 목록
+		List<Order> delvStartDtlList = new ArrayList<Order>();
 
+		int exchangeDelvFailCnt = 0;
+
+		try {
 			// 결품 취소 후 수량이 남은 경우 배송중처리
 			for(Order param : params) {
-				
+	
 				// TODO 2021.07.14 교환일때 교환변경번호가 한번에 출고되는 상황인지 체크
 				Boolean temp = true;
-				
+	
 				// 2021.07.15 교환출고중에 혹시 ORD_CHG_SQ 번호로 묶인 상품중 품절취소건이 있으면 출고 대기
 				if (param.getOrdChgSq() != null && param.getOrdChgSq() > 0) {
 					for(OrderChange cancelData : cancelDataList) {
@@ -2548,29 +2559,29 @@ public class TscOrderService {
 						}
 					}
 				}
-				
+	
 				// 결품 취소 후 수량이 남은 경우 배송중 변경 처리
 				if (temp) {
-					
+	
 					// 변경번호 ORD_CHG_SQ 로 출고대상목록 조회 후 한번에 출고되는지 체크
 					// 한번에 출고되지 않으면 결제완료로 변경
 					if (param.getOrdQty() - param.getCnclRtnQty() - param.getCancelQty() > 0) {
-						
+	
 						// 주문 상세 (TB_ORDER_DETAIL) 배송중으로 변경
 						param.setOrdDtlStat(TscConstants.OrderDetailStat.SHIPPING.value());
 						param.setRegNo(userNo);
 						param.setUpdNo(userNo);
 						orderDao.changedOrdDtlStatDelvStart(param);
-						
+	
 						// 주문 상품 상세 (TB_ORDER_DETAIL_ITEM) 배송중으로 변경
 						scmDao.updateOrderDetailItemStat(param);
-						
+	
 						// 주문 상세 송장번호 등록
 						scmDao.createOrderDetailInvoice(param);
-						
+	
 						// 주문 변경 이력 저장
 						orderDao.createOrderDetailHst(param);
-						
+	
 						// 주문 상세 아이템 이력 저장
 						// 2021.08.06 card007 TB_ORDER_DETAIL_ITEM_HST.ORD_DTL_STAT G013 -> G720으로 변경
 						// 뒷로직에서 G013으로 사용하는지 확인 후 안쓰면 하기 G013으로 변경 로직 제거 필요
@@ -2578,7 +2589,7 @@ public class TscOrderService {
 						param.setOrdDtlStat(TscConstants.OrdDtlItemStat.SALE_SHIPPING.value());
 						orderDao.createOrderDetailItemHstFromDtlNo(param);
 						param.setOrdDtlStat(ordDtlStat);
-
+	
 						Order tmp = naverPayDao.getOrderDetailInfoFromOrdDtlNo(param);
 						if(TscConstants.PgGb.NAVER_ORDER.value().equals(tmp.getPgGb())) {
 							if ("E".equals(tmp.getOrdExchGb())) {
@@ -2637,38 +2648,36 @@ public class TscOrderService {
 					delvFailVo.setOrdQty(param.getOrdQty() - param.getCnclRtnQty());
 					delvFailVo.setChgQty(param.getCancelQty());
 					delvFailVo.setRegNo(userNo);
-						
+	
 					// 교환상품 출고예외등록
 					orderChangeDao.insertTbExchangeDelvFail(delvFailVo);
-					
+	
 					exchangeDelvFailCnt++;
 				}
 			}
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw new IllegalArgumentException(e);
+		}
 
-			log.info("exchangeDelvFailCnt ::: {}", exchangeDelvFailCnt);
+		log.info("exchangeDelvFailCnt ::: {}", exchangeDelvFailCnt);
 
-			try {
-				// 2021.06.08 알림톡전송 배송중 주문 알림톡 송부
-				for(Order kakaoSend : delvStartList) {
-					if (StringUtils.isNotBlank(kakaoSend.getOrdPhnno())) {
-						try {
-							kakaotalkService.sendDeliveryStart(kakaoSend, userNo);
-						} catch (Exception e) {
-							e.printStackTrace();
-							// Do nothing
-						}
+		try {
+			// 2021.06.08 알림톡전송 배송중 주문 알림톡 송부
+			for(Order kakaoSend : delvStartList) {
+				if (StringUtils.isNotBlank(kakaoSend.getOrdPhnno())) {
+					try {
+						kakaotalkService.sendDeliveryStart(kakaoSend, userNo);
+					} catch (Exception e) {
+						e.printStackTrace();
+						// Do nothing
 					}
 				}
-			} catch (Exception e) {
-				// 카카오 발송 에러시에는 그냥 진행되어야함
-				e.printStackTrace();
 			}
 		} catch (Exception e) {
+			// 카카오 발송 에러시에는 그냥 진행되어야함
 			e.printStackTrace();
-			throw new IllegalArgumentException(e);
 		}
-		
-		return cancelDataList;
 	}
 
 	/**