Ver Fonte

ST24PRJ-678 [결함] 배송 출고 누락 문의

card007 há 4 anos atrás
pai
commit
e998699c8f

+ 20 - 0
src/main/java/com/style24/core/biz/dao/TscOrderDao.java

@@ -1104,6 +1104,26 @@ public interface TscOrderDao {
 	 * @since  2021. 11. 02
 	 */
 	void updateCustEntryNo(Order order);
+
+	/**
+	 * 배송지수정 주문상세 상태값 조회
+	 * 
+	 * @param Order
+	 * @return Collection<Order>
+	 * @author card007
+	 * @since 2022. 01. 06
+	 */
+	Collection<Order> getOrderDetailStatInfo(Order order);
+
+	/**
+	 * 배송지수정 주문상세번호 조회
+	 *
+	 * @param Order
+	 * @return Order
+	 * @author card007
+	 * @since 2022. 01. 06
+	 */
+	Collection<Order> getOrderDtlNoForModifyAddr(Order order);
 }
 
 

+ 30 - 0
src/main/java/com/style24/core/biz/dao/TscWmsDao.java

@@ -161,4 +161,34 @@ public interface TscWmsDao {
 	 * @since 2021. 10. 21
 	 */
 	int updateWmsRecallChangeMemo(Order order);
+
+	/**
+	 * WMS 배송주문번호 조회
+	 * 
+	 * @param Order
+	 * @return Collection<Order>
+	 * @author card007
+	 * @since 2022. 01. 06
+	 */
+	Collection<Order> getDeliveryOrderNo(Order order);
+
+	/**
+	 * WMS 주소수정 가능 여부 체크
+	 *
+	 * @param Order
+	 * @return int
+	 * @author card007
+	 * @since 2022. 01. 06
+	 */
+	int getCanModifyAddr(Order order);
+
+	/**
+	 * WMS 택배사 수정
+	 *
+	 * @param Order
+	 * @return int
+	 * @author card007
+	 * @since 2022. 01. 06
+	 */
+	int updateWmsDeliveryShipComp(Order order);
 }

+ 97 - 1
src/main/java/com/style24/core/biz/service/TscOrderService.java

@@ -2,6 +2,7 @@ package com.style24.core.biz.service;
 
 import java.text.NumberFormat;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -649,8 +650,48 @@ public class TscOrderService {
 	 */
 	@Transactional("shopTxnManager")
 	public void updateOrderAddr(Order order) {
+		// 2022.01.06 card007 주소 수정 시 총알배송여부 체크 후 일반배송으로 변경처리 추가
+		// 총알배송여부 체크
+		String shotDelvYn = "N";
+		for (Order tmp : orderDao.getOrderDetailStatInfo(order)) {
+			if ("Y".equals(tmp.getShotDelvYn())) {
+				shotDelvYn = "Y";
+				break;
+			}
+		}
+
+		// 총알배송 날짜 및 시간 조건 체크
+		if ("Y".equals(shotDelvYn)) {
+			Collection<Order> tmp = orderDao.getOrderDtlNoForModifyAddr(order);
+			if (tmp.size() > 0) {
+				shotDelvYn = tmp.iterator().next().getShotDelvYn();
+			}
+		}
+
+		// 총알배송 가능 배송지 체크
+		if ("Y".equals(shotDelvYn)) {
+			int result = orderDao.getDailyDeliveryZoneInfo(order);
+
+			if (result == 0) {
+				shotDelvYn = "N";
+			}
+		}
+
+		// 주문 배송정보 수정
 		orderDao.updateOrderAddr(order);
-		coreWmsService.updateWmsDeliveryChangeAddr(order);
+
+		if (order.getDeliveryorderno() > 0) {
+			// WMS 배송정보 수정
+			coreWmsService.updateWmsDeliveryChangeAddr(order);
+
+			// WMS 택배사 수정 (총알배송 -> 일반배송)
+			if ("N".equals(shotDelvYn)) {
+				order.setShipCompCd("05");
+				order.setShipCompNm("CJ 대한통운");
+
+				coreWmsService.updateWmsDeliveryShipComp(order);
+			}
+		}
 	}
 	
 	/**
@@ -3511,6 +3552,61 @@ public class TscOrderService {
 	public Order getAddDelvFee(Order order) {
 		return scmDao.getAddDelvFee(order);
 	}
+
+	/**
+	 * 주소수정 가능 여부
+	 * 
+	 * @param Order
+	 * @return Boolean
+	 * @author card007
+	 * @since 2022. 01. 06
+	 */
+	public GagaMap canModifyAddress(Order order) {
+		GagaMap result = new GagaMap();
+		int rst = 1;
+		Integer deliveryorderno = 0;
+
+		// 주소수정 가능 주문상세상태값 설정
+		String[] canModifyStat = {"G013_10", "G013_20", "G013_25", "G013_30", "G013_35"};
+		List<String> canModifyStatList = Arrays.asList(canModifyStat);
+
+		Order goodsPrepare = new Order();
+		for (Order data : orderDao.getOrderDetailStatInfo(order)) {
+			String ordDtlStat = data.getOrdDtlStat();
+			if (!canModifyStatList.contains(ordDtlStat)) {
+				rst = 0;
+				break;
+			}
+
+			if (OrderDetailStat.GOODS_PREPARE.value().equals(ordDtlStat) && "Y".equals(data.getSelfGoodsYn())) {
+				goodsPrepare = data;
+			}
+		}
+
+		// 상품준비중 WMS IF 상태값 체크 (10일떄 수정가능)
+		List<Integer> deliveryOrderNoList = new ArrayList<>();
+		if (rst > 0 && goodsPrepare.getOrdNo() > 0) {
+			// WMS 배송정보 조회 용 주문상세번호 조회
+			List<Integer> ordDtlNoList = new ArrayList<>();
+			for(Order tmp : orderDao.getOrderDtlNoForModifyAddr(goodsPrepare)) {
+				ordDtlNoList.add(tmp.getOrdDtlNo());
+			}
+			goodsPrepare.setOrdDtlNoArr(ordDtlNoList.stream().mapToInt(Integer::intValue).toArray());
+
+			// WMS 배송정보 조회 용 배송주문번호 조회
+			for (Order tmp : coreWmsService.getDeliveryOrderNo(goodsPrepare)) {
+				deliveryOrderNoList.add(tmp.getDeliveryorderno());
+			}
+			goodsPrepare.setDeliveryOrderNoArr(deliveryOrderNoList.stream().mapToInt(Integer::intValue).toArray());
+
+			rst = coreWmsService.getCanModifyAddr(goodsPrepare);
+		}
+
+		result.setInt("result", rst);
+		result.setInt("deliveryorderno", deliveryorderno);
+
+		return result;
+	}
 }
 
 

+ 37 - 2
src/main/java/com/style24/core/biz/service/TscWmsService.java

@@ -11,7 +11,6 @@ import com.style24.core.biz.dao.TscDeliveryDao;
 import com.style24.core.biz.dao.TscWmsDao;
 import com.style24.core.biz.thirdparty.HansaeErp;
 import com.style24.core.support.env.TscConstants;
-import com.style24.persistence.domain.Erp;
 import com.style24.persistence.domain.Order;
 import com.style24.persistence.domain.WmsDelivery;
 
@@ -228,7 +227,7 @@ public class TscWmsService {
 	}
 	
 	/**
-	 *WMS 회수 주소변경
+	 * WMS 회수 주소변경
 	 * @param Order
 	 * @author moon
 	 * @since 2021. 06. 30
@@ -263,4 +262,40 @@ public class TscWmsService {
 	public void updateWmsRecallChangeMemo(Order order) {
 		wmsDao.updateWmsRecallChangeMemo(order);
 	}
+
+	/**
+	 * WMS 배송주문번호 조회
+	 *
+	 * @param Order
+	 * @return Collection<Order>
+	 * @author card007
+	 * @since 2022. 01. 06
+	 */
+	public Collection<Order> getDeliveryOrderNo(Order order) {
+		return wmsDao.getDeliveryOrderNo(order);
+	}
+
+	/**
+	 * WMS 주소수정 가능 여부 체크
+	 *
+	 * @param Order
+	 * @return int
+	 * @author card007
+	 * @since 2022. 01. 06
+	 */
+	public int getCanModifyAddr(Order order) {
+		return wmsDao.getCanModifyAddr(order);
+	}
+
+	/**
+	 * WMS 택배사 수정
+	 *
+	 * @param Order
+	 * @return int
+	 * @author card007
+	 * @since 2022. 01. 06
+	 */
+	public int updateWmsDeliveryShipComp(Order order) {
+		return wmsDao.updateWmsDeliveryShipComp(order);
+	}
 }

+ 3 - 1
src/main/java/com/style24/persistence/domain/Order.java

@@ -843,5 +843,7 @@ public class Order extends TscBaseDomain {
 	private String addPayCostPgGb;
 	
 	private String csChargeNm;		/*CS담당자*/
-	
+	private Integer deliveryorderno;
+	private int[] deliveryOrderNoArr;
+	private String statuscd;
 }

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

@@ -6113,6 +6113,33 @@
 		AND    DEL_YN = 'N'
 	</update>
 	
+	<!-- 배송지수정 주문상세 상태값 조회 -->
+	<select id="getOrderDetailStatInfo" parameterType="Order" resultType="Order">
+		/* TscOrder.getOrderInfo */
+		SELECT OD.ORD_DTL_STAT
+		     , G.SELF_GOODS_YN
+		     , OD.SHOT_DELV_YN
+		  FROM TB_ORDER_DETAIL OD
+		 INNER JOIN TB_GOODS G
+		    ON OD.GOODS_CD = G.GOODS_CD
+		 WHERE OD.ORD_NO = #{ordNo}
+		   AND OD.DELV_ADDR_SQ = #{delvAddrSq}
+		   AND OD.ORD_DTL_STAT NOT IN ('G013_00', 'G013_97', 'G013_98', 'G013_99')
+	</select>
+	
+	<!-- 배송지수정 주문상세번호 조회 -->
+	<select id="getOrderDtlNoForModifyAddr" parameterType="Order" resultType="Order">
+		/* TscOrder.getOrderDtlNoForModifyAddr */
+		SELECT ORD_DTL_NO
+		     , CASE WHEN DATE_FORMAT(NOW(), '%Y-%m-%d') <![CDATA[<>]]> DATE_FORMAT(REG_DT, '%Y-%m-%d') THEN 'N'
+					WHEN DATE_FORMAT(NOW(), '%H') <![CDATA[>=]]> 10 THEN 'N'
+					ELSE 'Y'
+			   END AS SHOT_DELV_YN
+		  FROM TB_ORDER_DETAIL
+		 WHERE ORD_NO = #{ordNo}
+		   AND DELV_ADDR_SQ = #{delvAddrSq}
+		 LIMIT 1
+	</select>
 </mapper>
 
 

+ 35 - 2
src/main/java/com/style24/persistence/mybatis/wms/TscWmsDelivery.xml

@@ -208,7 +208,7 @@
 		     , DeliveryAddr2      = #{recipDtlAddr}
 		     , IsChangeAddress    = 1
 		     , DeliveryMemo       = #{delvMemo}
-		 WHERE OrderNo  = #{ordNo}
+		 WHERE DeliveryOrderNo = #{deliveryorderno}
 		   AND IsCancel = 0
 	</update>
 
@@ -232,7 +232,7 @@
 		UPDATE istyle24_Wmsif.dbo.TB_IF_DeliveryOrder
 		   SET IsChangeAddress = 1
 		     , DeliveryMemo = #{delvMemo}
-		 WHERE OrderNo  = #{ordNo}
+		 WHERE DeliveryOrderNo = #{deliveryorderno}
 		   AND IsCancel = 0
 	</update>
 
@@ -247,5 +247,38 @@
 		   AND IsDeleted = 0
 	</update>
 	
+	<!-- WMS 배송주문번호 조회 -->
+	<select id="getDeliveryOrderNo" parameterType="Order" resultType="Order">
+		/* TscWmsDelivery.getDeliveryOrderNo */
+		SELECT DeliveryOrderNo
+		  FROM istyle24_Wmsif.dbo.TB_IF_DeliveryOrderItem
+		 WHERE OrderDtlNo IN
+			<foreach collection="ordDtlNoArr" item="item" index="index"  open="(" close=")" separator=",">
+		       #{item}
+			</foreach>
+	</select>
+	
+	<!-- WMS 주소수정 가능 여부 체크 -->
+	<select id="getCanModifyAddr" parameterType="Order" resultType="int">
+		/* TscWmsDelivery.getCanModifyAddr */
+		SELECT CASE StatusCd WHEN '10' THEN 1
+		                     ELSE 0
+		        END AS CAN_MODIFY_ADDR_YN
+		  FROM istyle24_Wmsif.dbo.TB_IF_DeliveryOrder
+		 WHERE DeliveryOrderNo IN
+		<foreach collection="deliveryOrderNoArr" item="item" index="index"  open="(" close=")" separator=",">
+			#{item}
+		</foreach>
+	</select>
+	
+	<!-- WMS 택배사 수정 -->
+	<update id="updateWmsDeliveryShipComp" parameterType="Order">
+		UPDATE istyle24_Wmsif.dbo.TB_IF_DeliveryOrder
+		   SET LogisticsNo = #{shipCompCd}
+		     , LogisticsName = #{shipCompNm}
+		 WHERE DeliveryOrderNo = #{deliveryorderno}
+		   AND IsCancel = 0
+		   AND LogisticsNo != #{shipCompCd}
+	</update>
 </mapper>