Browse Source

제휴몰검색기능

jsh77b 4 years ago
parent
commit
3e3a4f2af0

+ 1 - 29
src/main/java/com/style24/admin/biz/service/TsaDeliveryService.java

@@ -401,40 +401,12 @@ public class TsaDeliveryService {
 	 * @since 2021. 04. 19
 	 */
 	public Collection<Delivery> getAssignList(Delivery delivery) {
-		// multi row 검색관련 처리
-//		
-//		if (StringUtils.isNotBlank(delivery.getCondition())) {
-//			TsitUtil tsitUtil = new TsitUtil();
-//			String searchCondition = tsitUtil.replaceMultiSelectParamsArr(delivery.getCondition());
-//			delivery.setConditions(searchCondition.split(","));
-//		}
-
+		
 		// 외부몰권한일 때 외부몰벤더ID 설정
 		if (TsaSession.getInfo().getRoleCd().startsWith("G001_C")) {
 			delivery.setMallGb(TsaConstants.MallGb.EXTMALL.value());
 			delivery.setVendorId(TsaSession.getInfo().getVendorId());
 		}
-//		
-//		if (!StringUtils.isBlank(delivery.getBrandList())) {
-//			try {
-//				String [] arrBrandCd = mapper.readValue(delivery.getBrandList(), String[].class);
-//				delivery.setMultiBrand(arrBrandCd);
-//			} catch (Exception e) {
-//				e.printStackTrace();
-//				throw new IllegalStateException("브랜드코드 검색중 오류로 인해 조회되지 않았습니다.");
-//			}
-//		}
-//
-//		if (!StringUtils.isBlank(delivery.getSupplyCompList())) {
-//			try {
-//				String [] arrSupplyComp = mapper.readValue(delivery.getSupplyCompList(), String[].class);
-//				delivery.setMultiSupplyCompCd(arrSupplyComp);
-//			} catch (Exception e) {
-//				e.printStackTrace();
-//				throw new IllegalStateException("업체코드 검색중 오류로 인해 조회되지 않았습니다.");
-//			}
-//		}
-		
 		
 		return deliveryDao.getAssignList(delivery);
 	}	

+ 30 - 17
src/main/java/com/style24/admin/biz/web/TsaDeliveryController.java

@@ -1,6 +1,5 @@
 package com.style24.admin.biz.web;
 
-import java.util.ArrayList;
 import java.util.Collection;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -8,29 +7,30 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.servlet.ModelAndView;
 
-import com.style24.admin.biz.service.TsaRendererService;
+import com.gagaframework.web.parameter.GagaMap;
+import com.gagaframework.web.rest.server.GagaResponse;
 import com.style24.admin.biz.service.TsaDeliveryService;
+import com.style24.admin.biz.service.TsaOcmService;
+import com.style24.admin.biz.service.TsaRendererService;
 import com.style24.admin.support.controller.TsaBaseController;
 import com.style24.admin.support.security.session.TsaSession;
-import com.style24.core.support.session.TscSession;
+import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.message.TscMessageByLocale;
+import com.style24.core.support.session.TscSession;
 import com.style24.persistence.TscPageRequest;
 import com.style24.persistence.domain.Delivery;
-
+import com.style24.persistence.domain.Extmall;
 
 import lombok.extern.slf4j.Slf4j;
 
-import com.gagaframework.web.parameter.GagaMap;
-import com.gagaframework.web.rest.server.GagaResponse;
-
 /**
  * 배송 Controller
  *
@@ -53,10 +53,10 @@ public class TsaDeliveryController extends TsaBaseController {
 
 	@Autowired
 	private TsaDeliveryService deliveryService;
-
-	
-	
 	
+	@Autowired
+	private TsaOcmService ocmService;
+
 	@Value("${upload.default.target.path}")
 	private String uploadTargetPath;
 
@@ -306,6 +306,7 @@ public class TsaDeliveryController extends TsaBaseController {
 
 		// 공급업체
 		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList("","Y"));
+		
 		// 출고처 목록
 		mav.addObject("getDeliveryLocList", rendererService.getDeliveryLocAllList());
 		
@@ -413,15 +414,23 @@ public class TsaDeliveryController extends TsaBaseController {
 
 		// 몰구분
 		mav.addObject("mallGbList", rendererService.getAvailCommonCodeList("G011"));
+		
 		// 주문상세상태코드
 		mav.addObject("ordDtlStatList", rendererService.getAvailCommonCodeList("G013"));
+		
 		// 출고처
 		mav.addObject("deliveryLocList", rendererService.getDeliveryLocList(""));
+		
 		// 사이트구분
 		mav.addObject("siteCdList", rendererService.getAvailCommonCodeList("G000"));
-
-		
 		
+		// 제휴몰
+		Extmall extmall = new Extmall();
+		extmall.setVendorId(TscConstants.VendorId.SHOPLINKER.value()); // 샵링커
+		mav.addObject("extmallList", ocmService.getExtmallList(extmall));
+		mav.addObject("vendorId", TscConstants.VendorId.SHOPLINKER.value());
+		mav.setViewName("delivery/ExchangeDelvFailListForm");
+
 		mav.setViewName("delivery/AssignListForm");
 
 		return mav;
@@ -445,7 +454,6 @@ public class TsaDeliveryController extends TsaBaseController {
 		delivery.setPageable(new TscPageRequest(delivery.getPageNo() - 1, delivery.getPageSize()));
 		delivery.getPageable().setTotalCount(deliveryService.getAssignListCount(delivery));
 
-
 		if ("N".equals(delivery.getPageingYn())) {
 			delivery.setPageable(null);
 		}
@@ -457,7 +465,7 @@ public class TsaDeliveryController extends TsaBaseController {
 	}
 
 	/**
-	 * 출고처지정 팝업 화
+	 * 출고처지정 팝업 화
 	 *
 	 * @param
 	 * @return
@@ -551,9 +559,14 @@ public class TsaDeliveryController extends TsaBaseController {
 	@RequestMapping(value = "/exchangeDelvFail/list/form")
 	public ModelAndView deliveryExchangeDelvFailListForm() throws Exception {
 		ModelAndView mav = new ModelAndView();
-
+		
+		// 제휴몰
+		Extmall extmall = new Extmall();
+		extmall.setVendorId(TscConstants.VendorId.SHOPLINKER.value()); // 샵링커
+		mav.addObject("extmallList", ocmService.getExtmallList(extmall));
+		mav.addObject("vendorId", TscConstants.VendorId.SHOPLINKER.value());
 		mav.setViewName("delivery/ExchangeDelvFailListForm");
-
+		
 		return mav;
 	}
 	

+ 3 - 2
src/main/java/com/style24/persistence/domain/Delivery.java

@@ -201,7 +201,8 @@ public class Delivery extends TscBaseDomain {
 		return TscSession.getAttribute("maskingYn").equals("Y") ? MaskingUtils.address(this.recipDtlAddr) : this.recipDtlAddr;
 	}
 
-	
-	
+	private String chgRegDt;
+	private String wdRegDt;
+	private int chgQty;
 	
 }

+ 182 - 119
src/main/java/com/style24/persistence/mybatis/shop/TsaDelivery.xml

@@ -781,35 +781,30 @@
 	<!-- 출고처지정 목록 건수 -->
 	<select id="getAssignListCount" parameterType="Delivery" resultType="int">
 		/* TsaDelivery.getAssignListCount */
-		SELECT COUNT(*) AS TOTCNT
+		SELECT COUNT(1) AS TOTCNT
 		  FROM (
-				SELECT
-					  B.ORD_DTL_NO   -- 주문상세번호
-					, B.GOODS_CD     -- 상품코드
-				  FROM TB_ORDER A
-				  JOIN TB_ORDER_DETAIL B      ON A.ORD_NO = B.ORD_NO
-				  JOIN TB_ORDER_DETAIL_ITEM C ON B.ORD_NO = C.ORD_NO AND B.ORD_DTL_NO = C.ORD_DTL_NO
-				  JOIN TB_GOODS D             ON B.GOODS_CD = D.GOODS_CD
-				  JOIN VW_STOCK E             ON C.ITEM_CD = E.GOODS_CD AND C.OPT_CD = E.OPT_CD
-				 WHERE D.SELF_GOODS_YN  = 'Y'  -- 자사상품만
-				   AND B.ORD_DTL_STAT IN ('G013_20','G013_35')
-				   AND B.GOODS_TYPE    != 'G056_S'
-				   <include refid="getAssignListCondition_sql"/>
-
-				 UNION ALL
-
-				SELECT
-					  B.ORD_DTL_NO   -- 주문상세번호
-					, B.GOODS_CD     -- 상품코드
-				  FROM TB_ORDER A
-				  JOIN TB_ORDER_DETAIL B      ON A.ORD_NO = B.ORD_NO
-				  JOIN TB_GOODS D             ON B.GOODS_CD = D.GOODS_CD
-				 WHERE D.SELF_GOODS_YN  = 'Y'  -- 자사상품만
-				   AND B.ORD_DTL_STAT IN ('G013_20','G013_35')
-				   AND B.GOODS_TYPE    = 'G056_S'
-				   <include refid="getAssignListCondition_sql"/>
-		       ) A
-
+		    SELECT B.ORD_DTL_NO   -- 주문상세번호
+		         , B.GOODS_CD     -- 상품코드
+		      FROM TB_ORDER A
+		      JOIN TB_ORDER_DETAIL B      ON A.ORD_NO = B.ORD_NO
+		      JOIN TB_ORDER_DETAIL_ITEM C ON B.ORD_NO = C.ORD_NO AND B.ORD_DTL_NO = C.ORD_DTL_NO
+		      JOIN TB_GOODS D             ON B.GOODS_CD = D.GOODS_CD
+		      JOIN VW_STOCK E             ON C.ITEM_CD = E.GOODS_CD AND C.OPT_CD = E.OPT_CD
+		     WHERE D.SELF_GOODS_YN  = 'Y'  -- 자사상품만
+		       AND B.ORD_DTL_STAT IN ('G013_20','G013_35')
+		       AND B.GOODS_TYPE    != 'G056_S'
+			<include refid="getAssignListCondition_sql"/>
+		     UNION ALL
+		    SELECT B.ORD_DTL_NO   -- 주문상세번호
+		         , B.GOODS_CD     -- 상품코드
+		      FROM TB_ORDER A
+		      JOIN TB_ORDER_DETAIL B      ON A.ORD_NO = B.ORD_NO
+		      JOIN TB_GOODS D             ON B.GOODS_CD = D.GOODS_CD
+		     WHERE D.SELF_GOODS_YN  = 'Y'  -- 자사상품만
+		       AND B.ORD_DTL_STAT IN ('G013_20','G013_35')
+		       AND B.GOODS_TYPE    = 'G056_S'
+			<include refid="getAssignListCondition_sql"/>
+		) A
 	</select>
 
 	<!-- 출고처지정 목록 -->
@@ -821,90 +816,89 @@
 		     , FN_GET_CODE_NM('G056', Z.GOODS_TYPE) AS GOODS_TYPE_NM
 		     , CASE WHEN ORD_EXCH_GB ='O' THEN '주문' ELSE '교환' END AS ORD_EXCH_NM     -- 상품코드
 		     , FN_GET_CODE_NM('G013', Z.ORD_DTL_STAT) AS ORD_DTL_STAT_NM
-			 , (SELECT MAX(EE.EXTMALL_NM)
-			      FROM TB_EXTMALL EE
-			     WHERE EE.VENDOR_ID  = Z.VENDOR_ID
-				   AND EE.EXTMALL_ID = Z.EXTMALL_ID) AS EXTMALL_NM
-			 , (SELECT L.DELV_LOC_NM FROM TB_DELIVERY_LOC L WHERE L.DELV_LOC_CD = Z.DELV_LOC_CD AND L.SUPPLY_COMP_CD = Z.SUPPLY_COMP_CD ) AS DELV_LOC_NM
-			 , (SELECT DL.DELV_LOC_CLSF FROM TB_DELIVERY_LOC DL WHERE DL.DELV_LOC_CD = Z.DELV_LOC_CD AND DL.SUPPLY_COMP_CD = Z.SUPPLY_COMP_CD  ) AS DELV_LOC_CLSF
+		     , (SELECT MAX(EE.EXTMALL_NM)
+		          FROM TB_EXTMALL EE
+		         WHERE EE.VENDOR_ID  = Z.VENDOR_ID
+		           AND EE.EXTMALL_ID = Z.EXTMALL_ID) AS EXTMALL_NM
+		     , (SELECT L.DELV_LOC_NM FROM TB_DELIVERY_LOC L WHERE L.DELV_LOC_CD = Z.DELV_LOC_CD AND L.SUPPLY_COMP_CD = Z.SUPPLY_COMP_CD ) AS DELV_LOC_NM
+		     , (SELECT DL.DELV_LOC_CLSF FROM TB_DELIVERY_LOC DL WHERE DL.DELV_LOC_CD = Z.DELV_LOC_CD AND DL.SUPPLY_COMP_CD = Z.SUPPLY_COMP_CD  ) AS DELV_LOC_CLSF
 		  FROM (
-				SELECT A.*, ROW_NUMBER() OVER(ORDER BY  A.ORD_NO DESC, A.ORD_DTL_NO) RNUM
-				FROM (
-					SELECT A.* FROM (
-						SELECT
-							  A.SITE_CD      -- 사이트
-							, A.ORD_NO       -- 주문번호
-							, B.ORD_DTL_NO   -- 주문상세번호
-							, B.DELV_LOC_CD  -- 출고처
-							, A.ORD_DT       -- 주문일시
-							, A.PAY_DT       -- 결제일시
-							, A.MALL_GB      -- 몰구분
-							, B.EXTMALL_ID   -- 외부몰
-							, A.ORD_NM       -- 주문자
-							, B.GOODS_TYPE   -- 구성유형  (신규)
-							, D.GOODS_NM     -- 상품명
-							, B.GOODS_CD     -- 상품코드
-							, C.OPT_CD       -- 옵션
-							, C.OPT_CD1      -- 옵션1
-							, C.OPT_CD2      -- 옵션2
-							, B.ORD_QTY - B.CNCL_RTN_QTY  AS ORD_QTY -- 주문수량
-							, E.CURR_STOCK_QTY 	-- 현재고
-							, E.BASE_STOCK_QTY 	-- 안전재고
-							, B.ORD_AMT - B.CNCL_RTN_AMT AS ORD_AMT -- 주문금액
-							, B.ORD_EXCH_GB 	-- 주문교환
-							, B.ORD_DTL_STAT 	-- 주문상세상태
-							, B.VENDOR_ID
-							, B.SUPPLY_COMP_CD
-						  FROM TB_ORDER A
-						  JOIN TB_ORDER_DETAIL B      ON A.ORD_NO = B.ORD_NO
-						  JOIN TB_ORDER_DETAIL_ITEM C ON B.ORD_NO = C.ORD_NO AND B.ORD_DTL_NO = C.ORD_DTL_NO
-						  JOIN TB_GOODS D             ON B.GOODS_CD = D.GOODS_CD
-						  JOIN VW_STOCK E             ON C.ITEM_CD = E.GOODS_CD AND C.OPT_CD = E.OPT_CD
-						 WHERE D.SELF_GOODS_YN  = 'Y'  -- 자사상품만
-						   AND B.ORD_DTL_STAT IN ('G013_20','G013_35')
-						   AND B.GOODS_TYPE    != 'G056_S'
-						   <include refid="getAssignListCondition_sql"/>
-
-					UNION ALL
-
-						SELECT
-							  A.SITE_CD      -- 사이트
-							, A.ORD_NO       -- 주문번호
-							, B.ORD_DTL_NO   -- 주문상세번호
-							, B.DELV_LOC_CD  -- 출고처
-							, A.ORD_DT       -- 주문일시
-							, A.PAY_DT       -- 결제일시
-							, A.MALL_GB      -- 몰구분
-							, B.EXTMALL_ID   -- 외부몰
-							, A.ORD_NM       -- 주문자
-							, B.GOODS_TYPE   -- 구성유형  (신규)
-							, D.GOODS_NM     -- 상품명
-							, B.GOODS_CD     -- 상품코드
-							, '-' AS OPT_CD       -- 옵션
-							, '-' AS OPT_CD1      -- 옵션1
-							, '-' AS OPT_CD2      -- 옵션2
-							, B.ORD_QTY - B.CNCL_RTN_QTY  AS ORD_QTY -- 주문수량
-							, NULL AS CURR_STOCK_QTY 	-- 현재고
-							, NULL AS BASE_STOCK_QTY 	-- 안전재고
-							, B.ORD_AMT - B.CNCL_RTN_AMT AS ORD_AMT -- 주문금액
-							, B.ORD_EXCH_GB 	-- 주문교환
-							, B.ORD_DTL_STAT 	-- 주문상세상태
-							, B.VENDOR_ID
-							, B.SUPPLY_COMP_CD
-						  FROM TB_ORDER A
-						  JOIN TB_ORDER_DETAIL B      ON A.ORD_NO = B.ORD_NO
-						  JOIN TB_GOODS D             ON B.GOODS_CD = D.GOODS_CD
-						 WHERE D.SELF_GOODS_YN  = 'Y'  -- 자사상품만
-						   AND B.ORD_DTL_STAT IN ('G013_20','G013_35')
-						   AND B.GOODS_TYPE     = 'G056_S'
-						   <include refid="getAssignListCondition_sql"/>
-
-				       ) A
-				       ORDER BY A.ORD_NO, A.ORD_DTL_NO, A.OPT_CD
+		    SELECT A.*
+		         , ROW_NUMBER() OVER(ORDER BY  A.ORD_NO DESC, A.ORD_DTL_NO) RNUM
+		    FROM (
+		        SELECT A.* FROM (
+		            SELECT A.SITE_CD      -- 사이트
+		                 , A.ORD_NO       -- 주문번호
+		                 , B.ORD_DTL_NO   -- 주문상세번호
+		                 , B.DELV_LOC_CD  -- 출고처
+		                 , A.ORD_DT       -- 주문일시
+		                 , A.PAY_DT       -- 결제일시
+		                 , A.MALL_GB      -- 몰구분
+		                 , B.EXTMALL_ID   -- 외부몰
+		                 , A.ORD_NM       -- 주문자
+		                 , B.GOODS_TYPE   -- 구성유형  (신규)
+		                 , D.GOODS_NM     -- 상품명
+		                 , B.GOODS_CD     -- 상품코드
+		                 , C.OPT_CD       -- 옵션
+		                 , C.OPT_CD1      -- 옵션1
+		                 , C.OPT_CD2      -- 옵션2
+		                 , B.ORD_QTY - B.CNCL_RTN_QTY  AS ORD_QTY -- 주문수량
+		                 , E.CURR_STOCK_QTY 	-- 현재고
+		                 , E.BASE_STOCK_QTY 	-- 안전재고
+		                 , B.ORD_AMT - B.CNCL_RTN_AMT AS ORD_AMT -- 주문금액
+		                 , B.ORD_EXCH_GB 	-- 주문교환
+		                 , B.ORD_DTL_STAT 	-- 주문상세상태
+		                 , B.VENDOR_ID
+		                 , B.SUPPLY_COMP_CD
+		            FROM   TB_ORDER A
+		            JOIN   TB_ORDER_DETAIL B      ON A.ORD_NO = B.ORD_NO
+		            JOIN   TB_ORDER_DETAIL_ITEM C ON B.ORD_NO = C.ORD_NO AND B.ORD_DTL_NO = C.ORD_DTL_NO
+		            JOIN   TB_GOODS D             ON B.GOODS_CD = D.GOODS_CD
+		            JOIN   VW_STOCK E             ON C.ITEM_CD = E.GOODS_CD AND C.OPT_CD = E.OPT_CD
+		            WHERE  1=1
+		            AND    D.SELF_GOODS_YN  = 'Y'  -- 자사상품만
+		            AND    B.ORD_DTL_STAT IN ('G013_20','G013_35')
+		            AND    B.GOODS_TYPE    != 'G056_S'
+					<include refid="getAssignListCondition_sql"/>
+		            UNION ALL
+		            SELECT A.SITE_CD      -- 사이트
+		                 , A.ORD_NO       -- 주문번호
+		                 , B.ORD_DTL_NO   -- 주문상세번호
+		                 , B.DELV_LOC_CD  -- 출고처
+		                 , A.ORD_DT       -- 주문일시
+		                 , A.PAY_DT       -- 결제일시
+		                 , A.MALL_GB      -- 몰구분
+		                 , B.EXTMALL_ID   -- 외부몰
+		                 , A.ORD_NM       -- 주문자
+		                 , B.GOODS_TYPE   -- 구성유형  (신규)
+		                 , D.GOODS_NM     -- 상품명
+		                 , B.GOODS_CD     -- 상품코드
+		                 , '-' AS OPT_CD       -- 옵션
+		                 , '-' AS OPT_CD1      -- 옵션1
+		                 , '-' AS OPT_CD2      -- 옵션2
+		                 , B.ORD_QTY - B.CNCL_RTN_QTY  AS ORD_QTY -- 주문수량
+		                 , NULL AS CURR_STOCK_QTY 	-- 현재고
+		                 , NULL AS BASE_STOCK_QTY 	-- 안전재고
+		                 , B.ORD_AMT - B.CNCL_RTN_AMT AS ORD_AMT -- 주문금액
+		                 , B.ORD_EXCH_GB 	-- 주문교환
+		                 , B.ORD_DTL_STAT 	-- 주문상세상태
+		                 , B.VENDOR_ID
+		                 , B.SUPPLY_COMP_CD
+		            FROM TB_ORDER A
+		            JOIN TB_ORDER_DETAIL B      ON A.ORD_NO = B.ORD_NO
+		            JOIN TB_GOODS D             ON B.GOODS_CD = D.GOODS_CD
+		            WHERE D.SELF_GOODS_YN  = 'Y'  -- 자사상품만
+		            AND B.ORD_DTL_STAT IN ('G013_20','G013_35')
+		            AND B.GOODS_TYPE     = 'G056_S'
+					<include refid="getAssignListCondition_sql"/>
+		        ) A
+		        ORDER  BY A.ORD_NO
+		             , A.ORD_DTL_NO
+		             , A.OPT_CD
 		<include refid="getListPagingCondition_sql"/>
 	</select>
 
-    <!-- 출고처지정 조회 조건  -->
+	<!-- 출고처지정 조회 조건  -->
 	<sql id="getAssignListCondition_sql">
 		<if test='ordNo != null and ordNo != ""'>
 			AND A.ORD_NO = #{ordNo}
@@ -948,22 +942,22 @@
 		<if test='edDate != null and edDate != ""'>
 			AND A.ORD_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(replace(#{edDate},'-',''), '%Y%m%d%H%i%S'), INTERVAL 1 DAY)
 		</if>
-
 	</sql>
 
 	<!-- 출고처 수동지정 대상 조회  -->
 	<select id="getDeliveryAssignPopup" parameterType="Delivery" resultType="Delivery">
 		/* TsaDelivery.getDeliveryAssignPopup */
-        SELECT
-              A.ORD_NO
-            , B.ORD_DTL_NO
-            , GROUP_CONCAT(G.ITEM_CD ORDER BY G.ITEM_CD SEPARATOR '\r\n') AS GOODS_CD
-            , B.CURR_PRICE
-        FROM  TB_ORDER A
-        JOIN  TB_ORDER_DETAIL B      ON A.ORD_NO = B.ORD_NO
-        JOIN  TB_ORDER_DETAIL_ITEM G ON B.ORD_NO = G.ORD_NO AND B.ORD_DTL_NO = G.ORD_DTL_NO
-        WHERE B.ORD_DTL_NO     = #{ordDtlNo}
-      GROUP BY A.ORD_NO, B.ORD_DTL_NO, B.CURR_PRICE
+		SELECT A.ORD_NO
+		     , B.ORD_DTL_NO
+		     , GROUP_CONCAT(G.ITEM_CD ORDER BY G.ITEM_CD SEPARATOR '\r\n') AS GOODS_CD
+		     , B.CURR_PRICE
+		FROM   TB_ORDER A
+		JOIN   TB_ORDER_DETAIL B      ON A.ORD_NO = B.ORD_NO
+		JOIN   TB_ORDER_DETAIL_ITEM G ON B.ORD_NO = G.ORD_NO AND B.ORD_DTL_NO = G.ORD_DTL_NO
+		WHERE  B.ORD_DTL_NO     = #{ordDtlNo}
+		GROUP  BY A.ORD_NO
+		     , B.ORD_DTL_NO
+		     , B.CURR_PRICE
 	</select>
 
 
@@ -1220,6 +1214,7 @@
 		     , G1.GOODS_CD
 		     , G1.GOODS_NM
 		     , G1.GOODS_TYPE
+		     , FN_GET_CODE_NM('G056', G1.GOODS_TYPE) AS GOODS_TYPE_NM
 		     , O.ORD_NM
 		     , O.ORD_PHNNO
 		     , O.ORD_EMAIL
@@ -1228,15 +1223,43 @@
 		            THEN 'WMS'
 		            ELSE OD.DELV_FEE_CD
 		            END  DELV_FEE_CD_GRP
+		     , DATE_FORMAT(OC.REG_DT, '%Y-%m-%d') AS CHG_REG_DT
+		     , CASE WHEN O.MALL_GB IN ('G011_20')
+		            THEN '제휴몰'
+		            ELSE '자사몰'
+		            END  MALL_GB_NM
+		     , (SELECT EXTMALL_NM
+		        FROM   TB_EXTMALL X
+		        WHERE  X.EXTMALL_ID = OD.EXTMALL_ID) AS EXTMALL_NM
+		     , OD.EXTMALL_ORDER_ID
+		     , ODI.OPT_CD
+		     , ODI.OPT_CD1
+		     , ODI.OPT_CD2
+		     , DATE_FORMAT(WD.REG_DT, '%Y-%m-%d') AS WD_REG_DT        -- 회수등록일
+		     , O.CUST_NO
 		FROM   TB_EXCHANGE_DELV_FAIL EDF
 		INNER  JOIN TB_ORDER_DETAIL OD
 		ON     OD.ORD_DTL_NO = EDF.ORD_DTL_NO
 		INNER  JOIN TB_GOODS G1
 		ON     OD.GOODS_CD = G1.GOODS_CD
+		INNER  JOIN TB_ORDER_DETAIL_ITEM ODI
+		ON     ODI.ORD_DTL_NO = OD.ORD_DTL_NO
 		INNER  JOIN TB_ORDER O
 		ON     EDF.ORD_NO = O.ORD_NO
+		INNER  JOIN TB_ORDER_CHANGE OC
+		ON     EDF.ORD_CHG_SQ = OC.ORD_CHG_SQ 
+		INNER  JOIN TB_WITHDRAW_DETAIL WD     
+		ON     OC.ORD_CHG_SQ = WD.ORD_CHG_SQ 
 		WHERE  1=1
 		AND    EDF.DEL_YN = 'N'
+		AND    NOT EXISTS (
+		    SELECT 1
+		    FROM   TB_ORDER_DETAIL X
+		    WHERE  1=1
+		    AND    X.ORD_NO = EDF.ORD_NO
+		    AND    X.ORD_DTL_NO = EDF.ORD_DTL_NO
+		    AND    X.ORD_DTL_STAT IN ('G013_99', 'G013_60', 'G013_50', 'G013_70')
+		)		
 		<if test='ordNm != null and ordNm != ""'>
 		AND    O.ORD_NM = #{ordNm}
 		</if>
@@ -1249,6 +1272,46 @@
 		<if test="stDate != null and stDate != '' and edDate != null and edDate != ''">
 		AND    EDF.REG_DT BETWEEN STR_TO_DATE(CONCAT(#{stDate},' 000000'),'%Y-%m-%d %H%i%S') AND STR_TO_DATE(CONCAT(#{edDate},' 235959'), '%Y-%m-%d %H%i%S')
 		</if>
+		<if test="optCd != null and optCd != ''">
+		AND    ODI.OPT_CD LIKE CONCAT('%',#{optCd},'%')
+		</if>
+		<if test="extmallId != null and extmallId != ''">
+		AND    OD.VENDOR_ID = #{vendorId}
+		AND    OD.EXTMALL_ID = #{extmallId}
+		</if>
+		<if test="extmallOrderId != null and extmallOrderId != ''">
+		AND    OD.EXTMALL_ORDER_ID LIKE CONCAT('%',#{extmallOrderId},'%')
+		</if>
+		<if test="ordPhnno != null and ordPhnno != ''">
+		AND    O.ORD_PHNNO = #{ordPhnno}
+		</if>
+		<if test="goodsCd != null and goodsCd != ''">
+		AND    OD.GOODS_CD = #{goodsCd}
+		</if>
+		GROUP  BY EDF.EXCHANGE_DELV_FAIL_SQ
+		     , EDF.ORD_CHG_SQ
+		     , EDF.ORD_NO
+		     , EDF.ORD_DTL_NO
+		     , EDF.DELV_CNCL_YN
+		     , EDF.ORD_QTY
+		     , EDF.CNCL_RTN_QTY
+		     , EDF.DELV_FAIL_REASON
+		     , G1.GOODS_CD
+		     , G1.GOODS_NM
+		     , G1.GOODS_TYPE
+		     , O.ORD_NM
+		     , O.ORD_PHNNO
+		     , O.ORD_EMAIL
+		     , OD.DELV_FEE_CD
+		     , G1.SELF_GOODS_YN 
+		     , OC.REG_DT
+		     , O.MALL_GB
+		     , OD.EXTMALL_ORDER_ID
+		     , ODI.OPT_CD
+		     , ODI.OPT_CD1
+		     , ODI.OPT_CD2
+		     , WD.REG_DT
+		     , O.CUST_NO
 		ORDER  BY EDF.REG_DT ASC
 	</select>
 

+ 34 - 23
src/main/webapp/WEB-INF/views/delivery/AssignListForm.html

@@ -61,19 +61,12 @@
 							<td>
 								<input type="text" class="" name="ordDtlNo" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');"  placeholder="" maxlength="9" />
 							</td>
-							<th>외부몰주문번호</th>
+							<th>제휴몰주문번호</th>
 							<td>
-								<input type="text" class="" name="extmallOrderId" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');"  placeholder="" maxlength="20" />
+								<input type="text" class="" name="extmallOrderId" placeholder="" maxlength="40" />
 							</td>
 						</tr>
 						<tr>
-							<th>사이트</th>
-							<td>
-								<select name="siteCd" id="siteCd">
-									<option value="">[전체]</option>
-									<option th:if="${siteCdList}" th:each="oneData, status : ${siteCdList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>
-								</select>
-							</td>
 							<th>몰구분</th>
 							<td>
 								<select name="mallGb" id="mallGb">
@@ -81,10 +74,24 @@
 									<option th:if="${mallGbList}" th:each="oneData, status : ${mallGbList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>
 								</select>
 							</td>
+							<th>제휴몰명</th>
+							<td>
+								<input type="hidden" name="vendorId" placeholder="" maxlength="20" th:value="${vendorId}"/>
+								<select name="extmallId">
+									<option value="">선택안함</option>
+									<option th:if="${extmallList}" th:each="oneData, status : ${extmallList}" th:value="${oneData.extmallId}" th:text="${'[' + oneData.extmallId + '] ' + oneData.extmallNm}"></option>
+								</select>
+							</td>
 							<th>상품코드</th>
 							<td>
 								<input type="text" class="" name="goodsCd" placeholder="" maxlength="20" />
 							</td>
+							<th>SKU-CODE</th>
+							<td>
+								<input type="text" class="" name="optCd" placeholder="" maxlength="40" />
+							</td>
+						</tr>
+						<tr>
 							<th>주문교환</th>
 							<td>
 								<select name="ordExchGb" id="ordExchGb">
@@ -93,8 +100,6 @@
 									<option value="N">주문</option>
 								</select>
 							</td>
-						</tr>
-						<tr>
 							<th>출고처지정상태</th>
 							<td>
 								<select name="delvAssignStat" id="delvAssignStat">
@@ -104,14 +109,16 @@
 								</select>
 							</td>
 							<th>출고처</th>
-							<td>
+							<td colspan="3">
 								<select name="delvLocCd" id="delvLocCd">
 									<option value="">[전체]</option>
 									<option th:if="${deliveryLocList}" th:each="oneData, status : ${deliveryLocList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>
 								</select>
 							</td>
+						</tr>
+						<tr>
 							<th>주문등록일</th>
-							<td colspan="3">
+							<td colspan="7">
 								<span id="terms"></span>
 							</td>
 						</tr>
@@ -242,16 +249,8 @@
 	
 	/*************************************************************************
 	* init
-	**************************************************************************/		
-	$(document).ready(function() {
-	    gagaAgGrid.createGrid('gridAssignList', gridOptions);
-	    var hideList = ["btnThisWeek", "btnYesterWeek", "btnRecentMonth", "btnThisMonth", "btnYesterMonth", "btnRecent3Month"];
-		cfnCreateCalendar('#terms', 'stDate', 'edDate', true, '주문', '', hideList);
-		$(".btnToday").trigger('click');
-
-		
-	});
-
+	**************************************************************************/
+	
 	/*************************************************************************
 	* 초기화 
 	**************************************************************************/		
@@ -259,6 +258,18 @@
 		$(".btnToday").trigger('click');
 	}
 	
+	$(document).ready(function() {
+	    gagaAgGrid.createGrid('gridAssignList', gridOptions);
+	    
+	    //var hideList = ["btnThisWeek", "btnYesterWeek", "btnRecentMonth", "btnThisMonth", "btnYesterMonth", "btnRecent3Month"];
+		//cfnCreateCalendar('#terms', 'stDate', 'edDate', true, '주문', '', hideList);
+		
+		cfnCreateCalendar('#terms', 'stDate', 'edDate', true, '주문');
+		fnInitCalendar();
+		
+		$(".btnToday").trigger('click');
+	});
+
 	/*************************************************************************
 	* 조회 클릭
 	**************************************************************************/

+ 56 - 15
src/main/webapp/WEB-INF/views/delivery/ExchangeDelvFailListForm.html

@@ -51,11 +51,11 @@
 						<tr>
 							<th class="dashR">주문자명</th>
 							<td class="dashR">
-								<input type="text" class="w40p" name="ordNm" placeholder="" maxlength="20" />
+								<input type="text" name="ordNm" placeholder="" maxlength="20" />
 							</td>
 							<th class="dashR">주문번호</th>
 							<td class="dashR">
-								<input type="text" class="w40p" name="ordNo" placeholder="" maxlength="20" data-valid-type="numeric"/>
+								<input type="text" name="ordNo" placeholder="" maxlength="20" data-valid-type="numeric"/>
 							</td>
 							<th class="dashR">처리상태</th>
 							<td class="dashR" colspan="2">
@@ -82,7 +82,7 @@
 							</td>
 							<th class="dashR">주문자휴대폰번호</th>
 							<td class="dashR">
-								<input type="text" name="ordPhnno" placeholder="" maxlength="40"/>
+								<input type="text" name="ordPhnno" placeholder="" maxlength="20"/>
 							</td>
 						</tr>
 						<tr>
@@ -126,10 +126,30 @@
 <script th:inline="javascript">
 /*<![CDATA[*/ 
 var columnDefs = [
+	{headerName: "클레임접수일",		field: "chgRegDt",				width: 100,	cellClass: 'text-center'},
+	{headerName: "몰구분",			field: "mallGbNm",				width: 100,	cellClass: 'text-center'},
+	{headerName: "제휴몰명",			field: "extmallNm",				width: 120,	cellClass: 'text-center'},
+	{headerName: "제휴몰주문번호",		field: "extmallOrderId",		width: 140,	cellClass: 'text-center'},
 	{headerName: "교환배송취소번호",	field: "exchangeDelvFailSq",	width: 50,	cellClass: 'text-center', hide: true},
 	{headerName: "변경요청번호",		field: "ordChgSq",				width: 100,	cellClass: 'text-center', hide: true},
+	{headerName: "고객고유번호", 		field: "custNo", 				width: 120, cellClass: 'text-center', hide: true},
 	{
-		headerName		: "변경요청"
+		headerName		: "주문번호"
+		, field			: 'ordNo'
+		, width			: 80
+		, cellClass		: 'text-center'
+		, sortable		: true
+		, cellRenderer	: function (params) {
+			var roleCd = [[${sessionInfo.roleCd}]];
+			if (!roleCd.startsWith("C")) {
+				return "<a href=\"javascript:void(0);\" onclick=\"fnOpenOrderDetailPopup('" + params.value + "');\">" + params.value + "</a>";
+			} else {
+				return params.value;
+			}
+		}
+	},
+	{
+		headerName		: "주문변경번호"
 		, field			: "ordChgSq"
 		, width			: 100
 		, cellClass		: 'text-center'
@@ -150,17 +170,35 @@ var columnDefs = [
 			return rtnStr;
 		}
 	},
-	{headerName: "주문번호",			field: "ordNo",					width: 100,	cellClass: 'text-center'},
 	{headerName: "주문상세번호",		field: "ordDtlNo",				width: 100,	cellClass: 'text-center'},
-	{headerName: "교환배송취소여부",	field: "delvCnclYn",			width: 120,	cellClass: 'text-center'},
-	{headerName: "출고가능수량",		field: "ordQty",				width: 100,	cellClass: 'text-center'},
-	{headerName: "품절취소수량",		field: "cnclRtnQty",			width: 100,	cellClass: 'text-center'},
-	{headerName: "품절취소사유",		field: "delvFailReason",		width: 120,	cellClass: 'text-center'},
+	{
+		headerName		: "주문자명"
+		, field			: "maskingOrdNm"
+		, width			: 120
+		, cellClass		: 'text-center'
+		, sortable		: true
+		, cellRenderer	: function (params) {
+			if (params.data.custNo > 0) {
+				return '<a href="javascript:void(0);" onclick=\"cfnOpenCustDetailPopup(' + params.data.custNo + ');\">' + params.value + '</a>';
+			} else {
+				return params.value;
+			}
+		}
+	},
+	{headerName: "핸드폰번호",			field: "ordPhnno",				width: 120,	cellClass: 'text-center'},
+	{headerName: "교환배송취소여부",	field: "delvCnclYn",			width: 120,	cellClass: 'text-center', hide: true},
+	{headerName: "품절취소사유",		field: "delvFailReason",		width: 120,	cellClass: 'text-center', hide: true},
+	{headerName: "상품타입",			field: "goodsTypeNm",			width: 130,	cellClass: 'text-center'},
 	{headerName: "상품코드",			field: "goodsCd",				width: 130,	cellClass: 'text-center'},
+	{headerName: "SKU-CODE",		field: "optCd",					width: 130,	cellClass: 'text-center'},
 	{headerName: "상품명",			field: "goodsNm",				width: 180,	cellClass: 'text-center'},
-	{headerName: "주문자",			field: "ordNm",					width: 120,	cellClass: 'text-center'},
-	{headerName: "핸드폰번호",			field: "ordPhnno",				width: 120,	cellClass: 'text-center'},
-	{headerName: "이메일",			field: "ordEmail",				width: 160,	cellClass: 'text-center'}
+	{headerName: "옵션1",			field: "optCd1",				width: 130,	cellClass: 'text-center'},
+	{headerName: "옵션2",			field: "optCd2",				width: 130,	cellClass: 'text-center'},
+	{headerName: "요청수량",			field: "ordQty",				width: 100,	cellClass: 'text-center'},
+	{headerName: "품절취소수량",		field: "cnclRtnQty",			width: 100,	cellClass: 'text-center'},
+	{headerName: "회수등록일",			field: "wdRegDt",				width: 100,	cellClass: 'text-center'},
+	{headerName: "이메일",			field: "ordEmail",				width: 160,	cellClass: 'text-center', hide: true},
+	{headerName: "변경상태",			field: "chgStat",				width: 100,	cellClass: 'text-center', hide: true},
 ];
 
 var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
@@ -229,13 +267,16 @@ var fnCancelRequest = function (paramData, ordChgSq) {
 	if (paramArr[4] == "Y") {
 		actionUrl = "/orderChange/cnclRtn/complete/view?" + param;	
 	}
-	
-	
-	
+
 	cfnOpenModalPopup(actionUrl, 'popupCancelRequestForm');
 	
 	return false;
 };
+
+var fnOpenOrderDetailPopup = function (ordNo) {
+	currOrdNo = ordNo;
+	cfnOpenOrderDetailPopup(ordNo);
+};
 /*]]>*/
 </script>
 </html>

+ 1 - 1
src/main/webapp/WEB-INF/views/withdraw/RefundRegisterListForm.html

@@ -243,7 +243,7 @@
 				}
 			}
 		},
-		{headerName: "고객고유번호", field: "custNo"				, width: 120, cellClass: 'text-center', hide: true},
+		{headerName: "고객고유번호", 		field: "custNo", 			width: 120, cellClass: 'text-center', hide: true},
 		{headerName: "주문자연락처", 		field: "maskingOrdPhnno",	width: 120, cellClass: 'text-center'},
 		{headerName: "회수송장번호", 		field: "wdInvoiceNo", 		width: 100, cellClass: 'text-center'},
 		{headerName: "도착일", 			field: "arrivalDt", 		width: 100,  cellClass: 'text-center'},