Просмотр исходного кода

ST24PRJ-683 [결함] 주문취소 중복 처리

card007 4 лет назад
Родитель
Сommit
cf5232fcc7

+ 12 - 2
src/main/java/com/style24/core/biz/dao/TscOrderChangeDao.java

@@ -1146,10 +1146,20 @@ public interface TscOrderChangeDao {
 	/**
 	 * 취/반/교 가능 수량 조회
 	 *
-	 * @param OrderChange
-	 * @return Collection<OrderChange>
+	 * @param Order
+	 * @return OrderChange
 	 * @author card007
 	 * @since 2021. 12. 21
 	 */
 	OrderChange getClaimCanQty(Order order);
+
+	/**
+	 * 전체취소 가능 수량 조회
+	 *
+	 * @param OrderChange
+	 * @return Collection<OrderChange>
+	 * @author card007
+	 * @since 2021. 12. 22
+	 */
+	Collection<OrderChange> getAllCancelCanQty(OrderChange orderChange);
 }

+ 33 - 2
src/main/java/com/style24/core/biz/service/TscOrderChangeService.java

@@ -2160,6 +2160,11 @@ public class TscOrderChangeService {
 		String pgStat = orderChange.getPgStat();										// PG점프 여부
 		int depositAmt = orderChange.getDepositAmt();									// PG점프 입금액
 
+		// 2021.12.21 card007 취소 가능 수량 체크 로직 추가
+		if (!getAllCancelCanQtyYn(orderChange)) {
+			throw new IllegalStateException("취소 가능 수량이 부족합니다.");
+		}
+
 		// 원주문 결제정보 조회
 		Payment payment = new Payment();
 		payment.setOrdNo(ordNo);
@@ -5663,8 +5668,8 @@ public class TscOrderChangeService {
 	/**
 	 * 취/반/교 가능 수량 조회
 	 *
-	 * @param OrderChange
-	 * @return Collection<OrderChange>
+	 * @param Collection<Order>, String
+	 * @return Boolean
 	 * @author card007
 	 * @since 2021. 12. 21
 	 */
@@ -5696,4 +5701,30 @@ public class TscOrderChangeService {
 
 		return result;
 	}
+
+	/**
+	 * 전체취소 가능 수량 조회
+	 *
+	 * @param OrderChange
+	 * @return Boolean
+	 * @author card007
+	 * @since 2021. 12. 22
+	 */
+	public Boolean getAllCancelCanQtyYn(OrderChange orderChange) {
+		Boolean result = true;
+
+		for (OrderChange data : orderChangeDao.getAllCancelCanQty(orderChange)) {
+			int cnclRtnQty = data.getCnclRtnQty();
+			int ordReqChgQty = data.getOrdReqChgQty();
+
+			log.info("cnclRtnQty >>> {}", cnclRtnQty);
+			log.info("ordReqChgQty >>> {}", ordReqChgQty);
+
+			if (cnclRtnQty > 0 || ordReqChgQty > 0) {
+				result = false;
+			}
+		}
+
+		return result;
+	}
 }

+ 27 - 0
src/main/java/com/style24/persistence/mybatis/shop/TscOrderChange.xml

@@ -5329,6 +5329,33 @@
 		 WHERE OD.ORD_NO = #{ordNo}
 		   AND OD.ORD_DTL_NO = #{ordDtlNo}
 	</select>
+
+	<!-- 전체취소 가능 수량 조회 -->
+	<select id="getAllCancelCanQty" parameterType="OrderChange" resultType="OrderChange">
+		/* TscOrderChange.getAllCancelCanQty */
+		SELECT OD.ORD_DTL_NO
+		     , OD.ORD_QTY
+		     , OD.CNCL_RTN_QTY
+		     , IFNULL(OCD.ORD_REQ_CHG_QTY, 0) AS ORD_REQ_CHG_QTY
+		  FROM TB_ORDER_DETAIL OD
+		  LEFT OUTER JOIN (SELECT OCD.ORD_DTL_NO
+		                        , SUM(OCD.CHG_QTY) AS ORD_REQ_CHG_QTY
+		                     FROM TB_ORDER_CHANGE_DETAIL OCD
+		                    INNER JOIN TB_ORDER_CHANGE OC
+		                       ON OCD.ORD_CHG_SQ = OC.ORD_CHG_SQ
+		                    INNER JOIN TB_ORDER_DETAIL OD
+		                       ON OD.ORD_DTL_NO = OCD.ORD_DTL_NO
+		                    INNER JOIN TB_ORDER O
+		                       ON OD.ORD_NO = O.ORD_NO
+		                    WHERE O.ORD_NO = #{ordNo}
+		                      AND OCD.DEL_YN = 'N'
+		                      AND OCD.CHG_STAT IN ('G685_20', 'G685_21', 'G685_30', 'G685_31', 'G685_32', 'G685_33', 'G685_34', 'G685_50', 'G685_51')
+		                      AND OC.WD_BF_SEND_YN = 'N'
+		                    GROUP BY OCD.ORD_DTL_NO
+		                  ) OCD
+		    ON OD.ORD_DTL_NO = OCD.ORD_DTL_NO
+		 WHERE OD.ORD_NO = #{ordNo}
+	</select>
 </mapper>