Browse Source

Merge branch 'develop' of http://112.172.147.34:4936/style24/style24.batch.git into develop

tsit05 4 years ago
parent
commit
e483398d31

+ 4 - 0
src/main/java/com/style24/batch/biz/dao/TsbStatisticsDao.java

@@ -24,6 +24,10 @@ public interface TsbStatisticsDao {
 
 	int createOrderDateTime(String currDay);
 
+	int createStatPay(String currDay);
+
+	int createStatSubPay(String currDay);
+
 	/**
 	 * 당일 매출문자 조회
 	 * @return

+ 2 - 2
src/main/java/com/style24/batch/biz/job/statistics/TsbDateTimeOrderStaticsJob.java

@@ -29,8 +29,8 @@ public class TsbDateTimeOrderStaticsJob extends TsbAbstractJob<String, String, S
 	public String process(String result) throws Exception {
 
 		// 기간
-		String startDay = "20210601";
-		String endDay = "20210712";
+		String startDay = "20180101";
+		String endDay = "20210831";
 		int days = GagaDateUtil.getOffsetDays(endDay, startDay) + 1;
 
 		System.out.println("term === " + days);

+ 2 - 2
src/main/java/com/style24/batch/biz/job/statistics/TsbDayOrderStaticsJob.java

@@ -31,8 +31,8 @@ public class TsbDayOrderStaticsJob extends TsbAbstractJob<String, String, String
 	public String process(String result) throws Exception {
 
 		// 기간
-		String startDay = "20210601";
-		String endDay = "20210712";
+		String startDay = "20180101";
+		String endDay = "20210831";
 		int days = GagaDateUtil.getOffsetDays(endDay, startDay) + 1;
 
 		System.out.println("term === " + days);

+ 62 - 0
src/main/java/com/style24/batch/biz/job/statistics/TsbPayStaticsJob.java

@@ -0,0 +1,62 @@
+package com.style24.batch.biz.job.statistics;
+
+import com.gagaframework.web.util.GagaDateUtil;
+import com.style24.batch.biz.job.TsbAbstractJob;
+import com.style24.batch.biz.service.TsbStatisticsService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * 결제수단통계
+ *
+ * @author swkim
+ * @since 2021.05.17
+ */
+@Component
+@Slf4j
+public class TsbPayStaticsJob extends TsbAbstractJob<String, String, String> {
+
+	@Autowired
+	private TsbStatisticsService statisticsService;
+
+	@Override
+	public String read() throws Exception {
+		return "OK";
+	}
+
+	@Override
+	public String process(String result) throws Exception {
+
+		// 기간
+		/*String startDay = "20210601";
+		String endDay = "20210731";
+		int days = GagaDateUtil.getOffsetDays(endDay, startDay) + 1;
+
+		System.out.println("term === " + days);
+
+		for (int i=0; i<days; i++) {
+			String currDay = GagaDateUtil.getOffsetDate(startDay, i, "yyyyMMdd");
+			System.out.println(currDay);
+
+			statisticsService.createStatPay(currDay);
+		}
+*/
+		String toDay = GagaDateUtil.getToday();
+		String currDay = GagaDateUtil.getOffsetDate(toDay, -1, "yyyyMMdd");
+
+		statisticsService.createStatPay(currDay);
+
+		return result;
+	}
+
+	@Override
+	public String write(String result) throws Exception {
+		return result;
+	}
+
+	@Override
+	public void notify(String result) throws Exception {
+		// Do nothing
+	}
+}

+ 62 - 0
src/main/java/com/style24/batch/biz/job/statistics/TsbSubPayStaticsJob.java

@@ -0,0 +1,62 @@
+package com.style24.batch.biz.job.statistics;
+
+import com.gagaframework.web.util.GagaDateUtil;
+import com.style24.batch.biz.job.TsbAbstractJob;
+import com.style24.batch.biz.service.TsbStatisticsService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * 부결제수단통계
+ *
+ * @author swkim
+ * @since 2021.05.17
+ */
+@Component
+@Slf4j
+public class TsbSubPayStaticsJob extends TsbAbstractJob<String, String, String> {
+
+	@Autowired
+	private TsbStatisticsService statisticsService;
+
+	@Override
+	public String read() throws Exception {
+		return "OK";
+	}
+
+	@Override
+	public String process(String result) throws Exception {
+
+		// 기간
+		String startDay = "20200101";
+		String endDay = "20210731";
+		int days = GagaDateUtil.getOffsetDays(endDay, startDay) + 1;
+
+		System.out.println("days === " + days);
+
+		for (int i=0; i<days; i++) {
+			String currDay = GagaDateUtil.getOffsetDate(startDay, i, "yyyyMMdd");
+			System.out.println(currDay);
+
+			statisticsService.createStatSubPay(currDay);
+		}
+
+		/*String toDay = GagaDateUtil.getToday();
+		String currDay = GagaDateUtil.getOffsetDate(toDay, -1, "yyyyMMdd");
+
+		statisticsService.createStatSubPay(currDay);*/
+
+		return result;
+	}
+
+	@Override
+	public String write(String result) throws Exception {
+		return result;
+	}
+
+	@Override
+	public void notify(String result) throws Exception {
+		// Do nothing
+	}
+}

+ 10 - 0
src/main/java/com/style24/batch/biz/service/TsbStatisticsService.java

@@ -44,6 +44,16 @@ public class TsbStatisticsService {
 		return statisticsDao.createOrderDateTime(currDay);
 	}
 
+	@Transactional("shopTxnManager")
+	public int createStatPay(String currDay) {
+		return statisticsDao.createStatPay(currDay);
+	}
+
+	@Transactional("shopTxnManager")
+	public int createStatSubPay(String currDay) {
+		return statisticsDao.createStatSubPay(currDay);
+	}
+
 	/**
 	 * 당일 매출문자 조회
 	 * @return

+ 30 - 0
src/main/java/com/style24/batch/biz/task/TsbStatisticsTask.java

@@ -1,5 +1,6 @@
 package com.style24.batch.biz.task;
 
+import com.style24.batch.biz.job.statistics.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Scheduled;
@@ -34,9 +35,16 @@ public class TsbStatisticsTask {
 	@Autowired
 	private TsbDateTimeOrderStaticsJob dateTimeOrderStaticsJob;
 
+	@Autowired
+	private TsbPayStaticsJob payStaticsJob;
+
+	@Autowired
+	private TsbSubPayStaticsJob subPayStaticsJob;
+
 	@Autowired
 	private TsbSalesSmsSendJob salesSmsSendJob;
 
+
 	/**
 	 * 초 분 시 일 월 주(년)
 	 * 0 0 12 * * ?" : 아무 요일, 매월, 매일 12:00:00
@@ -103,6 +111,28 @@ public class TsbStatisticsTask {
 		//dateTimeOrderStaticsJob.runById("cron.statistics.order.datetime.create");
 	}
 
+	/**
+	 * 결제수단통계
+	 */
+	//@Scheduled(fixedDelay = 999999999)
+	@Scheduled(cron = "${cron.statistics.pay.create}")
+	@Async
+	public void payStaticsJob() throws Exception {
+		//payStaticsJob.run("payStaticsJob");
+		payStaticsJob.runById("cron.statistics.pay.create");
+	}
+
+	/**
+	 * 부결제수단통계
+	 */
+	//@Scheduled(fixedDelay = 999999999)
+	@Scheduled(cron = "${cron.statistics.pay.sub.create}")
+	@Async
+	public void subPayStaticsJob() throws Exception {
+		subPayStaticsJob.run("subPayStaticsJob");
+		//payStaticsJob.runById("cron.statistics.pay.sub.create");
+	}
+
 	/**
 	 * 전일자 매출문자 발송
 	 */

+ 248 - 8
src/main/java/com/style24/persistence/mybatis/shop/TsbStatistics.xml

@@ -96,7 +96,7 @@
 					, B.TMTB2_DC_AMT
 					, B.CART_CPN_DC_AMT
 					, B.SAVE_PNT_AMT
-					, IFNULL(B.AF_LINK_CD, 'AF999')                                     AS AF_LINK_CD
+					, IFNULL(B.AF_LINK_CD, 'AF001')                                     AS AF_LINK_CD
 					, B.EXTMALL_ID
 					, A.PAY_DT
 					, A.FRONT_GB
@@ -186,7 +186,7 @@
 			SELECT DATE_FORMAT(COMPLETE_DT, '%Y-%m-%d') AS TERM
 				, SUM(CHG_QTY) AS VAL
 				, '6' AS GBN
-				, E.GOODS_CD, B.FORMAL_GB, C.FRONT_GB, EXTMALL_ID, (CASE WHEN DISTRIBUTION_GB = 'G065_20' THEN 'SCM' ELSE 'WMS' END) AS DISTRIBUTION_GB, E.SUPPLY_COMP_CD, IFNULL(B.AF_LINK_CD, 'AF999') AS AF_LINK_CD, BRAND_CD, ITEMKIND_CD
+				, E.GOODS_CD, B.FORMAL_GB, C.FRONT_GB, EXTMALL_ID, (CASE WHEN DISTRIBUTION_GB = 'G065_20' THEN 'SCM' ELSE 'WMS' END) AS DISTRIBUTION_GB, E.SUPPLY_COMP_CD, IFNULL(B.AF_LINK_CD, 'AF001') AS AF_LINK_CD, BRAND_CD, ITEMKIND_CD
 				, IFNULL(FN_DEC_AES(G.SEX_GB), 'G007_X') AS SEX_GB
 				, CASE WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(FN_DEC_AES(G.BIRTH_YMD), '%Y') + 1) BETWEEN 10 AND 19 THEN '10'
 					WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(FN_DEC_AES(G.BIRTH_YMD), '%Y') + 1) BETWEEN 20 AND 29 THEN '20'
@@ -209,7 +209,7 @@
 			SELECT DATE_FORMAT(COMPLETE_DT, '%Y-%m-%d') AS TERM
 				, SUM(CHG_QTY) AS VAL
 				, '7' AS GBN
-				, E.GOODS_CD, B.FORMAL_GB, C.FRONT_GB, EXTMALL_ID, (CASE WHEN DISTRIBUTION_GB = 'G065_20' THEN 'SCM' ELSE 'WMS' END) AS DISTRIBUTION_GB, E.SUPPLY_COMP_CD, IFNULL(B.AF_LINK_CD, 'AF999') AS AF_LINK_CD, BRAND_CD, ITEMKIND_CD
+				, E.GOODS_CD, B.FORMAL_GB, C.FRONT_GB, EXTMALL_ID, (CASE WHEN DISTRIBUTION_GB = 'G065_20' THEN 'SCM' ELSE 'WMS' END) AS DISTRIBUTION_GB, E.SUPPLY_COMP_CD, IFNULL(B.AF_LINK_CD, 'AF001') AS AF_LINK_CD, BRAND_CD, ITEMKIND_CD
 				, IFNULL(FN_DEC_AES(G.SEX_GB), 'G007_X') AS SEX_GB
 				, CASE WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(FN_DEC_AES(G.BIRTH_YMD), '%Y') + 1) BETWEEN 10 AND 19 THEN '10'
 					WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(FN_DEC_AES(G.BIRTH_YMD), '%Y') + 1) BETWEEN 20 AND 29 THEN '20'
@@ -288,7 +288,7 @@
 			SELECT DATE_FORMAT(COMPLETE_DT, '%Y-%m-%d') AS TERM
 				, SUM(CHG_QTY) AS VAL
 				, '11' AS GBN
-				, E.GOODS_CD, B.FORMAL_GB, C.FRONT_GB, EXTMALL_ID, (CASE WHEN DISTRIBUTION_GB = 'G065_20' THEN 'SCM' ELSE 'WMS' END) AS DISTRIBUTION_GB, E.SUPPLY_COMP_CD, IFNULL(B.AF_LINK_CD, 'AF999') AS AF_LINK_CD, BRAND_CD, ITEMKIND_CD
+				, E.GOODS_CD, B.FORMAL_GB, C.FRONT_GB, EXTMALL_ID, (CASE WHEN DISTRIBUTION_GB = 'G065_20' THEN 'SCM' ELSE 'WMS' END) AS DISTRIBUTION_GB, E.SUPPLY_COMP_CD, IFNULL(B.AF_LINK_CD, 'AF001') AS AF_LINK_CD, BRAND_CD, ITEMKIND_CD
 				, IFNULL(FN_DEC_AES(G.SEX_GB), 'G007_X') AS SEX_GB
 				, CASE WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(FN_DEC_AES(G.BIRTH_YMD), '%Y') + 1) BETWEEN 10 AND 19 THEN '10'
 					WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(FN_DEC_AES(G.BIRTH_YMD), '%Y') + 1) BETWEEN 20 AND 29 THEN '20'
@@ -311,7 +311,7 @@
 			SELECT DATE_FORMAT(COMPLETE_DT, '%Y-%m-%d') AS TERM
 				, SUM(A.DELV_FEE) AS VAL
 				, '12' AS GBN
-				, E.GOODS_CD, B.FORMAL_GB, C.FRONT_GB, EXTMALL_ID, (CASE WHEN DISTRIBUTION_GB = 'G065_20' THEN 'SCM' ELSE 'WMS' END) AS DISTRIBUTION_GB, E.SUPPLY_COMP_CD, IFNULL(B.AF_LINK_CD, 'AF999') AS AF_LINK_CD, BRAND_CD, ITEMKIND_CD
+				, E.GOODS_CD, B.FORMAL_GB, C.FRONT_GB, EXTMALL_ID, (CASE WHEN DISTRIBUTION_GB = 'G065_20' THEN 'SCM' ELSE 'WMS' END) AS DISTRIBUTION_GB, E.SUPPLY_COMP_CD, IFNULL(B.AF_LINK_CD, 'AF001') AS AF_LINK_CD, BRAND_CD, ITEMKIND_CD
 				, IFNULL(FN_DEC_AES(G.SEX_GB), 'G007_X') AS SEX_GB
 				, CASE WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(FN_DEC_AES(G.BIRTH_YMD), '%Y') + 1) BETWEEN 10 AND 19 THEN '10'
 					WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(FN_DEC_AES(G.BIRTH_YMD), '%Y') + 1) BETWEEN 20 AND 29 THEN '20'
@@ -383,12 +383,76 @@
 			FROM TAB A
 			GROUP BY TERM, GOODS_CD, FORMAL_GB, FRONT_GB, EXTMALL_ID, DISTRIBUTION_GB, SUPPLY_COMP_CD, AF_LINK_CD, BRAND_CD, ITEMKIND_CD, SEX_GB, AGE, SHOT_DELV_YN
 		)
+	   -- 주문수
+	   , TAB_ORD_CNT AS (
+			SELECT
+				TERM
+				 , SUM(VAL) AS VAL
+				 , '15' AS GBN
+				 , GOODS_CD, FORMAL_GB, FRONT_GB, EXTMALL_ID, DISTRIBUTION_GB, SUPPLY_COMP_CD, AF_LINK_CD, BRAND_CD, ITEMKIND_CD, SEX_GB, AGE, SHOT_DELV_YN
+			FROM (
+					 SELECT
+						 DATE_FORMAT(PAY_DT, '%Y-%m-%d') AS TERM
+						  , 1 AS VAL
+						  , ORD_NO
+						  , GOODS_CD, FORMAL_GB, FRONT_GB, EXTMALL_ID, DISTRIBUTION_GB, SUPPLY_COMP_CD, AF_LINK_CD, BRAND_CD, ITEMKIND_CD, SEX_GB, AGE, SHOT_DELV_YN
+					 FROM TAB
+					 GROUP BY TERM, ORD_NO, GOODS_CD, FORMAL_GB, FRONT_GB, EXTMALL_ID, DISTRIBUTION_GB, SUPPLY_COMP_CD, AF_LINK_CD, BRAND_CD, ITEMKIND_CD, SEX_GB, AGE, SHOT_DELV_YN
+				 ) A
+			GROUP BY TERM, GOODS_CD, FORMAL_GB, FRONT_GB, EXTMALL_ID, DISTRIBUTION_GB, SUPPLY_COMP_CD, AF_LINK_CD, BRAND_CD, ITEMKIND_CD, SEX_GB, AGE, SHOT_DELV_YN
+		)
+	   -- 자사직방문
+	   , TAB_SELF AS (
+			SELECT
+				DATE_FORMAT(PAY_DT, '%Y-%m-%d') AS TERM
+				 , SUM(ORD_AMT + CPN1_DC_AMT + (SELECT SUM(OPT_ADD_PRICE * ITEM_QTY) FROM TB_ORDER_DETAIL_ITEM X WHERE X.ORD_DTL_NO = A.ORD_DTL_NO)) AS VAL
+				 , '16' AS GBN
+				 , GOODS_CD, FORMAL_GB, FRONT_GB, EXTMALL_ID, DISTRIBUTION_GB, SUPPLY_COMP_CD, AF_LINK_CD, BRAND_CD, ITEMKIND_CD, SEX_GB, AGE, SHOT_DELV_YN
+			FROM TAB A
+			WHERE EXISTS(
+					  SELECT 1
+					  FROM TB_AF_LINK X
+					  WHERE X.AF_LINK_CD = A.AF_LINK_CD
+						AND X.AF_CHANNEL = 'G053_01'
+				  )
+				AND EXTMALL_ID IS NULL
+			GROUP BY TERM, GOODS_CD, FORMAL_GB, FRONT_GB, EXTMALL_ID, DISTRIBUTION_GB, SUPPLY_COMP_CD, AF_LINK_CD, BRAND_CD, ITEMKIND_CD, SEX_GB, AGE, SHOT_DELV_YN
+		)
+	   -- 채널
+	   , TAB_CHANNEL AS (
+			SELECT
+				DATE_FORMAT(PAY_DT, '%Y-%m-%d') AS TERM
+				 , SUM(ORD_AMT + CPN1_DC_AMT + (SELECT SUM(OPT_ADD_PRICE * ITEM_QTY) FROM TB_ORDER_DETAIL_ITEM X WHERE X.ORD_DTL_NO = A.ORD_DTL_NO)) AS VAL
+				 , '17' AS GBN
+				 , GOODS_CD, FORMAL_GB, FRONT_GB, EXTMALL_ID, DISTRIBUTION_GB, SUPPLY_COMP_CD, AF_LINK_CD, BRAND_CD, ITEMKIND_CD, SEX_GB, AGE, SHOT_DELV_YN
+			FROM TAB A
+			WHERE EXISTS(
+					  SELECT 1
+					  FROM TB_AF_LINK X
+					  WHERE X.AF_LINK_CD = A.AF_LINK_CD
+						AND X.AF_CHANNEL != 'G053_01'
+				  )
+				AND EXTMALL_ID IS NULL
+			GROUP BY TERM, GOODS_CD, FORMAL_GB, FRONT_GB, EXTMALL_ID, DISTRIBUTION_GB, SUPPLY_COMP_CD, AF_LINK_CD, BRAND_CD, ITEMKIND_CD, SEX_GB, AGE, SHOT_DELV_YN
+		)
+	   -- 제휴몰
+	   , TAB_EXTMALL AS (
+			SELECT
+				DATE_FORMAT(PAY_DT, '%Y-%m-%d') AS TERM
+				 , SUM(ORD_AMT + CPN1_DC_AMT + (SELECT SUM(OPT_ADD_PRICE * ITEM_QTY) FROM TB_ORDER_DETAIL_ITEM X WHERE X.ORD_DTL_NO = A.ORD_DTL_NO)) AS VAL
+				 , '18' AS GBN
+				 , GOODS_CD, FORMAL_GB, FRONT_GB, EXTMALL_ID, DISTRIBUTION_GB, SUPPLY_COMP_CD, AF_LINK_CD, BRAND_CD, ITEMKIND_CD, SEX_GB, AGE, SHOT_DELV_YN
+			FROM TAB A
+			WHERE EXTMALL_ID IS NOT NULL
+			GROUP BY TERM, GOODS_CD, FORMAL_GB, FRONT_GB, EXTMALL_ID, DISTRIBUTION_GB, SUPPLY_COMP_CD, AF_LINK_CD, BRAND_CD, ITEMKIND_CD, SEX_GB, AGE, SHOT_DELV_YN
+		)
 		SELECT
 			TERM
 			, GOODS_CD, FORMAL_GB, FRONT_GB, EXTMALL_ID, DISTRIBUTION_GB, SUPPLY_COMP_CD, AF_LINK_CD, BRAND_CD, ITEMKIND_CD, SEX_GB, AGE, SHOT_DELV_YN
 			, ORD_AMT - (GOODS_CPN_AMT + TMTB_AMT + CART_CPN_AMT + USE_PNT_AMT) AS REAL_ORD_AMT
 			, SELL_QTY, ORD_AMT, GOODS_CPN_AMT, TMTB_AMT, CNCL_QTY, RTN_QTY, CNCL_AMT, RTN_AMT, SAVE_PNT_AMT
-			, CHG_QTY, CHG_DELV_FEE, ORD_CUST, USE_PNT_AMT
+			, CHG_QTY, CHG_DELV_FEE, ORD_CUST, USE_PNT_AMT, ORD_CNT
+			, SELF_AMT, CHANNEL_AMT, EXTMALL_AMT
 			, NOW()
 		FROM (
 			SELECT
@@ -408,6 +472,10 @@
 				, SUM(CASE WHEN GBN = '12' THEN VAL ELSE 0 END) AS CHG_DELV_FEE -- 교환배송비
 				, SUM(CASE WHEN GBN = '13' THEN VAL ELSE 0 END) AS ORD_CUST -- 구매자수
 				, SUM(CASE WHEN GBN = '14' THEN VAL ELSE 0 END) AS USE_PNT_AMT -- 사용포인트
+				, SUM(CASE WHEN GBN = '15' THEN VAL ELSE 0 END) AS ORD_CNT -- 주문수
+				, SUM(CASE WHEN GBN = '16' THEN VAL ELSE 0 END) AS SELF_AMT -- 자사몰매출
+				, SUM(CASE WHEN GBN = '17' THEN VAL ELSE 0 END) AS CHANNEL_AMT -- 채널매출
+				, SUM(CASE WHEN GBN = '18' THEN VAL ELSE 0 END) AS EXTMALL_AMT -- 제휴몰매출
 			FROM (
 				SELECT * FROM TAB_SELL_QTY
 				UNION ALL
@@ -436,6 +504,14 @@
 				SELECT * FROM TAB_ORD_CUST
 				UNION ALL
 				SELECT * FROM TAB_USE_PNT
+				UNION ALL
+				SELECT * FROM TAB_ORD_CNT
+				UNION ALL
+				SELECT * FROM TAB_SELF
+				UNION ALL
+				SELECT * FROM TAB_CHANNEL
+				UNION ALL
+				SELECT * FROM TAB_EXTMALL
 			) A
 			GROUP BY TERM, GOODS_CD, FORMAL_GB, FRONT_GB, EXTMALL_ID, DISTRIBUTION_GB, SUPPLY_COMP_CD, AF_LINK_CD, BRAND_CD, ITEMKIND_CD, SEX_GB, AGE, SHOT_DELV_YN
 		) X
@@ -645,7 +721,171 @@
 			GROUP BY TERM, FRONT_GB, EXTMALL_ID, BRAND_CD, ITEMKIND_CD, SHOT_DELV_YN
 		) X
 	</insert>
-	
+
+	<!-- 결제수단통계 -->
+	<insert id="createStatPay" parameterType="String" timeout="600">
+		/* TsbStatistics.createStatPay */
+		INSERT INTO TB_STAT_PAY
+		SELECT
+			DATE_FORMAT(PAY_DT, '%Y-%m-%d') AS TERM
+			, PAY_MEANS -- 결제수단
+			, PG_GB -- PG구분
+			, COM_CARD_CD -- 카드코드
+			, SUM(PAY_AMT) AS PAY_AMT -- 결제금액
+			, NOW()
+		FROM TB_PAYMENT A USE INDEX (IX_PAYMENT_01)
+		WHERE PAY_DT >= DATE_FORMAT(#{currDay}, '%Y%m%d')
+			AND PAY_DT &lt;= DATE_FORMAT(CONCAT(#{currDay}, '235959'), '%Y%m%d%H%i%s')
+			AND PAY_STAT IN ('G016_30', 'G016_99')
+			AND PAY_MEANS IN ('G014_10','G014_20','G014_30','G014_60','G014_50')
+		GROUP BY TERM, PAY_MEANS, PG_GB, COM_CARD_CD
+	</insert>
+
+	<!-- 부결제수단통계 -->
+	<insert id="createStatSubPay" parameterType="String" timeout="600">
+		/* TsbStatistics.createStatSubPay */
+		INSERT INTO TB_STAT_SUB_PAY
+		WITH TAB_PNT AS (
+			SELECT
+				DATE_FORMAT(PNT_UPLOAD_DT, '%Y-%m-%d') AS TERM
+				, ORD_NO
+				, PNT_AMT
+				, OCCUR_GB
+				, CUST_PNT_SQ
+			FROM TB_CUST_POINT_HST
+			WHERE PNT_UPLOAD_DT >= DATE_FORMAT(#{currDay}, '%Y%m%d')
+			AND PNT_UPLOAD_DT &lt;= DATE_FORMAT(CONCAT(#{currDay}, '235959'), '%Y%m%d%H%i%s')
+			AND PNT_UPLOAD_STAT = 'G070_30'
+		)
+		-- 포인트 적립액
+		, PNT_GIVE AS (
+			SELECT
+				TERM
+				, SUM(PNT_AMT) AS VAL
+				, OCCUR_GB
+				, '1' AS GB
+			FROM TAB_PNT
+			WHERE 1=1
+			GROUP BY TERM, OCCUR_GB
+		)
+		-- 포인트사용주문수
+		, PNT_ORD_CNT AS (
+			SELECT
+				TERM
+				, SUM(CNT) AS VAL
+				, OCCUR_GB
+				, '2' AS GB
+			FROM (
+				SELECT
+					B.TERM
+					, 1 AS CNT
+					, OCCUR_GB
+				FROM TB_ORDER_DETAIL A, TAB_PNT B
+				WHERE A.ORD_NO = B.ORD_NO
+					AND A.ORD_QTY > A.CNCL_RTN_QTY
+				GROUP BY B.TERM, A.ORD_NO, OCCUR_GB
+			) A
+			GROUP BY TERM, OCCUR_GB
+		)
+		-- 포인트사용액
+		, PNT_USE AS (
+			SELECT
+				B.TERM
+				, SUM(A.PNT_AMT) AS VAL
+				, B.OCCUR_GB
+				, '3' AS GB
+			FROM TB_CUST_POINT_HST A, TAB_PNT B
+			WHERE A.ORD_NO = B.ORD_NO
+				AND A.CUST_PNT_SQ = B.CUST_PNT_SQ
+				AND A.OCCUR_GB IN ('G069_10', 'G069_11', 'G069_36', 'G069_40', 'G069_41', 'G069_42', 'G069_43')
+			GROUP BY TERM, B.OCCUR_GB
+		)
+		, TAB_GIFT AS (
+			SELECT
+				DATE_FORMAT(REG_DT, '%Y-%m-%d') AS TERM
+				, ORD_NO
+				, GFCD_AMT
+				, OCCUR_GB
+				, CUST_GFCD_SQ
+			FROM TB_CUST_GIFTCARD_HST
+			WHERE REG_DT >= DATE_FORMAT(#{currDay}, '%Y%m%d')
+			AND REG_DT &lt;= DATE_FORMAT(CONCAT(#{currDay}, '235959'), '%Y%m%d%H%i%s')
+		)
+		-- 상품권등록매수
+		, GIFT_REG_QTY AS (
+			SELECT
+				TERM
+				, COUNT(1) AS CNT
+				, OCCUR_GB
+				, '4' AS GB
+			FROM TAB_GIFT
+			WHERE OCCUR_GB = 'G074_11'
+			GROUP BY TERM, OCCUR_GB
+		)
+		-- 상품권사용주문수
+		, GIFT_ORD_CNT AS (
+			SELECT
+				TERM
+				, SUM(CNT) AS VAL
+				, OCCUR_GB
+				, '5' AS GB
+			FROM (
+				SELECT
+					B.TERM
+					, 1 AS CNT
+					, OCCUR_GB
+				FROM TB_ORDER_DETAIL A, TAB_GIFT B
+				WHERE A.ORD_NO = B.ORD_NO
+					AND A.ORD_QTY > A.CNCL_RTN_QTY
+				GROUP BY B.TERM, A.ORD_NO, OCCUR_GB
+			) A
+			GROUP BY TERM, OCCUR_GB
+		)
+		-- 상품권사용액
+		, GIFT_USE AS (
+			SELECT
+				B.TERM
+				, SUM(A.GFCD_AMT) AS VAL
+				, B.OCCUR_GB
+				, '6' AS GB
+			FROM TB_CUST_GIFTCARD_HST A, TAB_GIFT B
+			WHERE A.ORD_NO = B.ORD_NO
+				AND A.CUST_GFCD_SQ = B.CUST_GFCD_SQ
+				AND A.OCCUR_GB IN ('G074_12', 'G074_13', 'G074_18', 'G074_19')
+			GROUP BY TERM, B.OCCUR_GB
+		)
+		SELECT
+			DATE_FORMAT(TERM, '%Y-%m-%d') AS TERM
+			, OCCUR_GB
+			, SUM(CASE WHEN GB = '1' THEN VAL ELSE 0 END) AS PNT_GIVE
+			, SUM(CASE WHEN GB = '2' THEN VAL ELSE 0 END) AS PNT_ORD_CNT
+			, SUM(CASE WHEN GB = '3' THEN VAL ELSE 0 END) AS PNT_USE
+			, SUM(CASE WHEN GB = '4' THEN VAL ELSE 0 END) AS GIFT_REG_CNT
+			, SUM(CASE WHEN GB = '5' THEN VAL ELSE 0 END) AS GIFT_ORD_CNT
+			, SUM(CASE WHEN GB = '6' THEN VAL ELSE 0 END) AS GIFT_USE
+			, NOW()
+		FROM (
+			SELECT *
+			FROM PNT_GIVE
+			UNION ALL
+			SELECT *
+			FROM PNT_USE
+			UNION
+			SELECT *
+			FROM PNT_ORD_CNT
+			UNION
+			SELECT *
+			FROM GIFT_REG_QTY
+			UNION
+			SELECT *
+			FROM GIFT_ORD_CNT
+			UNION
+			SELECT *
+			FROM GIFT_USE
+		) Z
+		GROUP BY TERM, OCCUR_GB
+	</insert>
+
 	<!-- 당일 매출문자 조회 -->
 	<select id="getCurrentDaySalesSms" resultType="SalesSms">
 		/* TsbStatistics.getCurrentDaySalesSms */
@@ -691,5 +931,5 @@
 		        AND    ODIH.ORD_DTL_STAT IN ('G720_10','G720_30','G720_40','G720_50','G720_60') /*판매-결제완료, 환입-취소완료, 환입-품절취소, 환입-반품완료, 환입-교환완료*/
 		       ) ODIH
 	</select>
-	
+
 </mapper>

+ 5 - 4
src/main/resources/config/application-brdg.yml

@@ -128,7 +128,7 @@ cron:
             outgoing.exception.receive: 2 22 2 29 2 ?  #WMS 출고예외 수신
             outgoing.result.receive: 2 22 2 29 2 ?     #WMS 출고결과 수신
             invoice.receive: 2 22 2 29 2 ?             #WMS 운송장번호 수신
-        sweettracker.invoice.retrieve: 2 22 2 29 2 ?   #스윗트래커 송장상태 조회
+        sweettracker.invoice.retrieve: 0 9/10 * * * *   #스윗트래커 송장상태 조회
         auto.soldout.cancel: 2 22 2 29 2 ?             #자동품절취소
 
     #회수
@@ -193,9 +193,10 @@ pg:
 sweet:
       api:
           tier: istyle24
-          key: 0C48PI6KnOVVKGHWXyggMA
-          url: http://trace-api-dev.sweettracker.net:8102/add_invoice # 개발
-         # url: http://trace-api.sweettracker.net/add_invoice # 운영
+         # key: 0C48PI6KnOVVKGHWXyggMA # 개발
+          key: yOzQz11HDMGl4fYSbr9mHw # 운영
+         # url: http://trace-api-dev.sweettracker.net:8102/add_invoice # 개발
+          url: http://trace-api.sweettracker.net/add_invoice # 운영
           domain:
                  front: https://www.style24.com
 

+ 2 - 0
src/main/resources/config/application-locd.yml

@@ -151,6 +151,8 @@ cron:
         aflink.inflow.yesterday.create: 2 22 2 29 2 ?  #어제일자유입통계
         order.daily.create: 2 22 2 29 2 ?               #주문일자별통계
         order.datetime.create: 2 22 2 29 2 ?           #주문시간대별통계
+        pay.create: 2 22 2 29 2 ?                      #결제수단통계
+        pay.sub.create: 2 22 2 29 2 ?                   #부결제수단통계
         sales.sms.send: 2 22 2 29 2 ?                  #매출문자발송
 
     #모니터링

+ 4 - 2
src/main/resources/config/application-style.yml

@@ -146,7 +146,7 @@ cron:
             outgoing.exception.receive: 0 0/10 * * * * #WMS 출고예외 수신 (1시간 1회)
             outgoing.result.receive: 0 5/10 * * * *    #WMS 출고결과 수신 (1시간 1회)
             invoice.receive: 0 7/10 * * * *            #WMS 운송장번호 수신(1시간 1회)
-        sweettracker.invoice.retrieve: 0 9/10 * * * *  #스윗트래커 송장상태 조회 (1시간 1회)
+        sweettracker.invoice.retrieve: 2 22 2 29 2 ?  #스윗트래커 송장상태 조회 (1시간 1회)
         auto.soldout.cancel: 0 8/10 * * * *            #자동품절취소 (1시간 1회)
 
     #회수
@@ -169,7 +169,9 @@ cron:
         aflink.inflow.create: 0 17 * * * *             #유입통계 (1시간 1회)
         aflink.inflow.yesterday.create: 2 22 2 29 2 ?  #어제일자유입통계
         order.daily.create: 0 17 1 * * *               #주문일자별통계
-        order.datetime.create: 2 22 2 29 2 ?           #주문시간대별통계
+        order.datetime.create: 0 44 * * * *            #주문시간대별통계
+        pay.create: 0 10 1 * * *                       #결제수단통계
+        pay.sub.create: 0 20 1 * * *                   #부결제수단통계
         sales.sms.send: 2 22 2 29 2 ?                  #매출문자발송
 
     #모니터링