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

Merge branch 'develop' into jmh

jmh 4 лет назад
Родитель
Сommit
eb21f342eb
21 измененных файлов с 832 добавлено и 135 удалено
  1. 9 0
      src/main/java/com/style24/batch/biz/dao/TsbMonitoringDao.java
  2. 13 0
      src/main/java/com/style24/batch/biz/dao/TsbStatisticsDao.java
  3. 2 2
      src/main/java/com/style24/batch/biz/job/statistics/TsbDateTimeOrderStaticsJob.java
  4. 2 2
      src/main/java/com/style24/batch/biz/job/statistics/TsbDayOrderStaticsJob.java
  5. 62 0
      src/main/java/com/style24/batch/biz/job/statistics/TsbPayStaticsJob.java
  6. 71 0
      src/main/java/com/style24/batch/biz/job/statistics/TsbSalesSmsSendJob.java
  7. 62 0
      src/main/java/com/style24/batch/biz/job/statistics/TsbSubPayStaticsJob.java
  8. 2 2
      src/main/java/com/style24/batch/biz/service/TsbCustomerService.java
  9. 89 2
      src/main/java/com/style24/batch/biz/service/TsbMonitoringService.java
  10. 21 0
      src/main/java/com/style24/batch/biz/service/TsbStatisticsService.java
  11. 11 12
      src/main/java/com/style24/batch/biz/task/TsbGoodsTask.java
  12. 45 2
      src/main/java/com/style24/batch/biz/task/TsbStatisticsTask.java
  13. 13 13
      src/main/java/com/style24/batch/biz/web/TsbGoodsController.java
  14. 14 0
      src/main/java/com/style24/batch/biz/web/TsbStatisticsController.java
  15. 23 0
      src/main/java/com/style24/persistence/domain/SalesSms.java
  16. 3 3
      src/main/java/com/style24/persistence/mybatis/shop/TsbGoodsEp.xml
  17. 22 26
      src/main/java/com/style24/persistence/mybatis/shop/TsbMonitoring.xml
  18. 293 6
      src/main/java/com/style24/persistence/mybatis/shop/TsbStatistics.xml
  19. 6 4
      src/main/resources/config/application-brdg.yml
  20. 60 56
      src/main/resources/config/application-locd.yml
  21. 9 5
      src/main/resources/config/application-style.yml

+ 9 - 0
src/main/java/com/style24/batch/biz/dao/TsbMonitoringDao.java

@@ -12,6 +12,15 @@ import com.style24.persistence.domain.Alarm;
 @ShopDs
 public interface TsbMonitoringDao {
 
+	/**
+	 * 알람메시지 조회
+	 * @param alarm - 알람 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 8. 13
+	 */
+	String getAlarmMessage(Alarm alarm);
+
 	/**
 	 * 알람SMS 생성 (개발용)
 	 * @param alarm - 알람 정보

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

@@ -1,6 +1,7 @@
 package com.style24.batch.biz.dao;
 
 import com.style24.core.support.annotation.ShopDs;
+import com.style24.persistence.domain.SalesSms;
 
 /**
  * 통계 Dao
@@ -22,4 +23,16 @@ public interface TsbStatisticsDao {
 	int createOrderDaily(String currDay);
 
 	int createOrderDateTime(String currDay);
+
+	int createStatPay(String currDay);
+
+	int createStatSubPay(String currDay);
+
+	/**
+	 * 당일 매출문자 조회
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 8. 14
+	 */
+	SalesSms getCurrentDaySalesSms();
 }

+ 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
+	}
+}

+ 71 - 0
src/main/java/com/style24/batch/biz/job/statistics/TsbSalesSmsSendJob.java

@@ -0,0 +1,71 @@
+package com.style24.batch.biz.job.statistics;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.style24.batch.biz.job.TsbAbstractJob;
+import com.style24.batch.biz.service.TsbMonitoringService;
+import com.style24.batch.biz.service.TsbStatisticsService;
+import com.style24.persistence.domain.SalesSms;
+
+import lombok.extern.slf4j.Slf4j;
+
+import com.gagaframework.web.parameter.GagaMap;
+import com.gagaframework.web.util.GagaDateUtil;
+
+/**
+ * 매출문자 발송
+ * 
+ * @author gagamel
+ * @since 2021. 8. 13
+ */
+@Component
+@Slf4j
+public class TsbSalesSmsSendJob extends TsbAbstractJob<SalesSms, String, String> {
+
+	@Autowired
+	private TsbStatisticsService statisticsService;
+
+	@Autowired
+	private TsbMonitoringService monitoringService;
+
+	@Override
+	public SalesSms read() throws Exception {
+		// 당일 매출 조회 (주문, 취소, 반품)
+		SalesSms salesInfo = statisticsService.getCurrentDaySalesSms();
+		log.info("{}", salesInfo);
+		return salesInfo;
+	}
+
+	@Override
+	public String process(SalesSms salesInfo) throws Exception {
+		GagaMap replaceInfo = new GagaMap();
+		replaceInfo.setString("salesDt", GagaDateUtil.getOffsetDate(-1, "MM/dd"));
+		replaceInfo.setString("totNetSalesAmt", String.format("%,d", salesInfo.getTotNetSalesAmt()));
+		replaceInfo.setString("totCnclAmt", String.format("%,d", salesInfo.getTotCnclAmt()));
+
+		// 전일자 전체매출 문자 발송
+		monitoringService.createSystemAlarmSms("A006", replaceInfo);
+
+		// 전일자 캐주얼파트매출 문자 발송 (한세엠케이 + FRJ 합산)
+		replaceInfo.setString("mkNetSalesAmt", String.format("%,d", salesInfo.getMkNetSalesAmt()));
+		monitoringService.createSystemAlarmSms("A007", replaceInfo);
+
+		// 전일자 유아동파트매출 문자 발송 (한세드림)
+		replaceInfo.setString("drNetSalesAmt", String.format("%,d", salesInfo.getDrNetSalesAmt()));
+		monitoringService.createSystemAlarmSms("A008", replaceInfo);
+
+		return "OK";
+	}
+
+	@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
+	}
+}

+ 2 - 2
src/main/java/com/style24/batch/biz/service/TsbCustomerService.java

@@ -269,7 +269,7 @@ public class TsbCustomerService {
 		replaceInfo.setString("siteNm", siteNm);
 		int result;
 		SsgDirectMessage directMessage = kakaoSender.getDiretMessage(SsgKakaoSender.KakaoAnswerSq.PRIVACY_POLICY.value(), dm, replaceInfo);
-		if ("style".equals(active) ||"real".equals(active) ||"locp".equals(active)) {
+		if ("style".equals(active) ||"real".equals(active) ||"locp".equals(active) ||"brdg".equals(active)) {
 			result = customerDao.createPrivacyPolicyNoticeKko(directMessage);
 		} else {
 			result = customerDao.createPrivacyPolicyNoticeKkoDev(directMessage);
@@ -306,7 +306,7 @@ public class TsbCustomerService {
 		int result;
 		Netpathy netpathy = netpathyMailSender.getMailContents(NetpathyMailSender.MailAnswerSq.PRIVACY_POLICY.value(), replaceInfo);
 
-		if ("style".equals(active) ||"real".equals(active) || "locp".equals(active)) {
+		if ("style".equals(active) ||"real".equals(active) || "locp".equals(active) ||"brdg".equals(active)) {
 			result = customerDao.createPrivacyPolicyNoticeEmail(netpathy);
 		} else {
 			result = customerDao.createPrivacyPolicyNoticeEmailDev(netpathy);

+ 89 - 2
src/main/java/com/style24/batch/biz/service/TsbMonitoringService.java

@@ -1,5 +1,8 @@
 package com.style24.batch.biz.service;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Service;
@@ -12,6 +15,8 @@ import com.style24.persistence.domain.Alarm;
 
 import lombok.extern.slf4j.Slf4j;
 
+import com.gagaframework.web.parameter.GagaMap;
+
 /**
  * 모니터링 Service
  * 
@@ -44,7 +49,7 @@ public class TsbMonitoringService {
 
 		String profile = env.getProperty("spring.profiles.active");
 
-		if ("run".equals(profile) || "style".equals(profile)) {
+		if ("run".equals(profile) || "style".equals(profile) || "brdg".equals(profile)) {
 			monitoringDao.createAlarmSms(params);
 		} else {
 			monitoringDao.createAlarmSmsDev(params);
@@ -64,18 +69,100 @@ public class TsbMonitoringService {
 		Alarm params = new Alarm();
 		params.setAlarmId(alarmId);
 		params.setBatchNm(batchNm);
+
+		// 알람메시지 조회
+		String alarmMsg = monitoringDao.getAlarmMessage(params);
+		params.setAlarmMsg(alarmMsg);
+
 		params.setFuserid(String.valueOf(TsbConstants.REG_NO));
 		params.setFcallback(TscConstants.CALLCENTER_TEL_NO);
 
 		String profile = env.getProperty("spring.profiles.active");
+		if ("run".equals(profile) || "style".equals(profile) || "brdg".equals(profile)) {
+			monitoringDao.createAlarmSms(params);
+		} else {
+			monitoringDao.createAlarmSmsDev(params);
+		}
+	}
+
+	/**
+	 * 시스템알람SMS 생성
+	 * @param alarmId - 알람ID
+	 * @param replaceInfo - 메시지내용 중 대체할 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 8. 13
+	 */
+	@Transactional("shopTxnManager")
+	public void createSystemAlarmSms(String alarmId, GagaMap replaceInfo) {
+		Alarm params = new Alarm();
+		params.setAlarmId(alarmId);
+
+		// 알람메시지 조회
+		String alarmMsg = monitoringDao.getAlarmMessage(params);
+		params.setAlarmMsg(this.mergeData(alarmMsg, replaceInfo));
 
-		if ("run".equals(profile) || "style".equals(profile)) {
+		params.setFuserid(String.valueOf(TsbConstants.REG_NO));
+		params.setFcallback(TscConstants.CALLCENTER_TEL_NO);
+
+		String profile = env.getProperty("spring.profiles.active");
+		if ("run".equals(profile) || "style".equals(profile) || "brdg".equals(profile)) {
 			monitoringDao.createAlarmSms(params);
 		} else {
 			monitoringDao.createAlarmSmsDev(params);
 		}
 	}
 
+	/**
+	 * 메시지 문자열 중에 '#{'로 시작하고 '}'로 끝나는 부분을 대체할 정보(replaceInfo)로 대체해 반환한다.
+	 * @param message - 메시지 문자열
+	 * @param replaceInfo - 알림톡 메시지 중 대체할 정보
+	 * @return
+	 * @author gagamel
+	 * @date 2018. 1. 21.
+	 */
+	private String mergeData(String message, GagaMap replaceInfo) {
+		List<String> keyList = getKeyList(message, "#{", "}");
+
+		String key = "";
+		String value = "";
+
+		if (!keyList.isEmpty()) {
+			for (int i = 0; i < keyList.size(); i++) {
+				key = keyList.get(i);
+				value = replaceInfo.getString(key);
+				message = message.replace("#{" + key + "}", value);
+			}
+		}
+
+		return message;
+	}
+
+	/**
+	 * 입력 문자열로부터 시작 태그와 종료 태그 안의 key 목록을 반환한다.
+	 * @param inputStr - 입력 문자열
+	 * @param startTag - 시작 태그
+	 * @param endTag - 종료 태그
+	 * @return
+	 * @author gagamel
+	 * @date 2018. 1. 21.
+	 */
+	private List<String> getKeyList(String inputStr, String startTag, String endTag) {
+		List<String> keyList = new ArrayList<>();
+
+		String targetStr = inputStr;
+
+		while (targetStr.indexOf(startTag) > -1) {
+			int startPos = targetStr.indexOf(startTag) + startTag.length();
+			int endPos = targetStr.indexOf(endTag, startPos);
+
+			keyList.add(targetStr.substring(startPos, endPos));
+			targetStr = targetStr.substring(endPos + endTag.length());
+		}
+
+		return keyList;
+	}
+
 	/**
 	 * 1일내 회원가입건수 조회
 	 * @param siteCd - 사이트코드

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

@@ -5,6 +5,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import com.style24.batch.biz.dao.TsbStatisticsDao;
+import com.style24.persistence.domain.SalesSms;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -42,4 +43,24 @@ public class TsbStatisticsService {
 	public int createOrderDateTime(String currDay) {
 		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
+	 * @author gagamel
+	 * @since 2021. 8. 14
+	 */
+	public SalesSms getCurrentDaySalesSms() {
+		return statisticsDao.getCurrentDaySalesSms();
+	}
 }

+ 11 - 12
src/main/java/com/style24/batch/biz/task/TsbGoodsTask.java

@@ -109,7 +109,7 @@ public class TsbGoodsTask {
 
 	@Autowired
 	private TsbGoodsSearchSectionJob goodsSearcSectionJob;
-	
+
 	@Autowired
 	private TsbGoodsReinboundJob goodsReinboundJob;
 
@@ -181,16 +181,16 @@ public class TsbGoodsTask {
 		goodsBenefitPriceJob.runById("cron.goods.benefit.price.create");
 	}
 
-	/**
-	 * 연관상품보기 스코어링 주기 : 일배치 - 매일 2시
-	 *
-	 * @throws Exception
-	 */
-	@Scheduled(cron = "${cron.goods.relgoods.scoring}")
-	@Async
-	public void relationGoodsScoringJob() throws Exception {
-		goodsRelateScoreJob.runById("cron.goods.relgoods.scoring");
-	}
+//	/**
+//	 * 연관상품보기 스코어링 주기 : 일배치 - 매일 2시
+//	 *
+//	 * @throws Exception
+//	 */
+//	@Scheduled(cron = "${cron.goods.relgoods.scoring}")
+//	@Async
+//	public void relationGoodsScoringJob() throws Exception {
+//		goodsRelateScoreJob.runById("cron.goods.relgoods.scoring");
+//	}
 
 	/**
 	 * 전시상품 통계정보 주기 : 일배치 - 매일 1시 5분
@@ -384,7 +384,6 @@ public class TsbGoodsTask {
 		goodsSearcSectionJob.runById("cron.goods.search.section.create");
 	}
 
-	
 	/**
 	 * 재입고 알림
 	 *

+ 45 - 2
src/main/java/com/style24/batch/biz/task/TsbStatisticsTask.java

@@ -1,14 +1,16 @@
 package com.style24.batch.biz.task;
 
-import com.style24.batch.biz.job.statistics.TsbDateTimeOrderStaticsJob;
-import com.style24.batch.biz.job.statistics.TsbDayOrderStaticsJob;
+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;
 import org.springframework.stereotype.Component;
 
+import com.style24.batch.biz.job.statistics.TsbDateTimeOrderStaticsJob;
+import com.style24.batch.biz.job.statistics.TsbDayOrderStaticsJob;
 import com.style24.batch.biz.job.statistics.TsbInflowStatisticsJob;
 import com.style24.batch.biz.job.statistics.TsbInflowYesterdayStatisticsJob;
+import com.style24.batch.biz.job.statistics.TsbSalesSmsSendJob;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -33,6 +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
@@ -99,4 +111,35 @@ 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");
+	}
+
+	/**
+	 * 전일자 매출문자 발송
+	 */
+	@Scheduled(cron = "${cron.statistics.sales.sms.send}")
+	@Async
+	public void sendSalesSmsJob() throws Exception {
+		salesSmsSendJob.runById("cron.statistics.sales.sms.send");
+	}
+
 }

+ 13 - 13
src/main/java/com/style24/batch/biz/web/TsbGoodsController.java

@@ -111,7 +111,7 @@ public class TsbGoodsController extends TscBaseController {
 
 	@Autowired
 	private TsbSocialGoodsJob socialGoodsJob;
-	
+
 	@Autowired
 	private TsbGoodsReinboundJob goodsReinboundJob;
 
@@ -165,17 +165,17 @@ public class TsbGoodsController extends TscBaseController {
 		return "OK";
 	}
 
-	/**
-	 * 연관상품보기 스코어링 주기 : 일배치 - 매일 2시
-	 *
-	 * @throws Exception
-	 */
-	@GetMapping("/relgoods/scoring")
-	@ResponseBody
-	public String createRelationGoodsScoring() throws Exception {
-		goodsRelateScoreJob.runById("cron.goods.relgoods.scoring");
-		return "OK";
-	}
+//	/**
+//	 * 연관상품보기 스코어링 주기 : 일배치 - 매일 2시
+//	 *
+//	 * @throws Exception
+//	 */
+//	@GetMapping("/relgoods/scoring")
+//	@ResponseBody
+//	public String createRelationGoodsScoring() throws Exception {
+//		goodsRelateScoreJob.runById("cron.goods.relgoods.scoring");
+//		return "OK";
+//	}
 
 	/**
 	 * 전시상품 통계정보 주기 : 일배치 - 매일 1시 5분
@@ -373,7 +373,7 @@ public class TsbGoodsController extends TscBaseController {
 		goodsSearchSectionJob.runById("cron.goods.search.section.create");
 		return "OK";
 	}
-	
+
 	/**
 	 * 재입고 알림톡  : 시간배치
 	 *

+ 14 - 0
src/main/java/com/style24/batch/biz/web/TsbStatisticsController.java

@@ -9,6 +9,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
 
 import com.style24.batch.biz.job.statistics.TsbInflowStatisticsJob;
 import com.style24.batch.biz.job.statistics.TsbInflowYesterdayStatisticsJob;
+import com.style24.batch.biz.job.statistics.TsbSalesSmsSendJob;
 import com.style24.core.support.controller.TscBaseController;
 
 import lombok.extern.slf4j.Slf4j;
@@ -31,6 +32,9 @@ public class TsbStatisticsController extends TscBaseController {
 	@Autowired
 	private TsbInflowYesterdayStatisticsJob inflowYesterdayStatisticsJob;
 
+	@Autowired
+	private TsbSalesSmsSendJob salesSmsSendJob;
+
 	/**
 	 * 제휴채널 유입집계 생성
 	 * @throws Exception
@@ -58,4 +62,14 @@ public class TsbStatisticsController extends TscBaseController {
 		return "OK";
 	}
 
+	/**
+	 * 전일자 매출문자 발송
+	 */
+	@GetMapping("/sales/sms/send")
+	@ResponseBody
+	public String sendSalesSmsJob() throws Exception {
+		salesSmsSendJob.runById("cron.statistics.sales.sms.send");
+		return "OK";
+	}
+
 }

+ 23 - 0
src/main/java/com/style24/persistence/domain/SalesSms.java

@@ -0,0 +1,23 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 매출문자 Domain
+ *
+ * @author gagamel
+ * @since 2021. 8. 14
+ */
+
+@SuppressWarnings("serial")
+@Data
+public class SalesSms extends TscBaseDomain {
+
+	private int totNetSalesAmt;		// 총순매출금액
+	private int totCnclAmt;			// 총취소금액
+	private int mkNetSalesAmt;		// 한세엠케이/FRJ순매출금액
+	private int drNetSalesAmt;		// 한세드림순매출금액
+
+}

+ 3 - 3
src/main/java/com/style24/persistence/mybatis/shop/TsbGoodsEp.xml

@@ -1235,7 +1235,7 @@
 		        AND    NOT EXISTS (SELECT 1
 		                           FROM   TB_EP_DAUM
 		                           WHERE  GB = 'PREV' /*이전백업데이터*/
-		                           AND    ID = X.ID
+		                           AND    MAPID = X.MAPID
 		                          )
 		        </if>
 		        <if test='epType == "SUMMARY"'> <!-- 요약EP -->
@@ -1280,7 +1280,7 @@
 		             , 'U'                         AS UPD_GB /*변경구분*/
 		        FROM   TB_EP_DAUM X
 		             , TB_EP_DAUM Y
-		        WHERE  X.ID = Y.ID
+		        WHERE  X.MAPID = Y.MAPID
 		        AND    X.GB = 'CURR' /*현재데이터*/
 		        AND    Y.GB = 'PREV' /*이전백업데이터*/
 		        AND    (
@@ -1357,7 +1357,7 @@
 		             , 'D'                         AS UPD_GB /*변경구분*/
 		        FROM   TB_EP_DAUM X
 		             , TB_EP_DAUM Y
-		        WHERE  X.ID = Y.ID
+		        WHERE  X.MAPID = Y.MAPID
 		        AND    X.GB = 'CURR' /*현재데이터*/
 		        AND    Y.GB = 'PREV' /*이전백업데이터*/
 		        AND    (

+ 22 - 26
src/main/java/com/style24/persistence/mybatis/shop/TsbMonitoring.xml

@@ -2,6 +2,22 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.style24.batch.biz.dao.TsbMonitoringDao">
 	
+	<!-- 알람메시지 조회 -->
+	<select id="getAlarmMessage" parameterType="Alarm" resultType="String">
+		/* TsbMonitoring.getAlarmMessage */
+		SELECT <choose>
+		           <when test="batchNm != null and batchNm != ''">
+		       CONCAT(ALARM_MSG,'-',#{batchNm}) AS ALARM_MSG
+		           </when>
+		           <otherwise>
+		       ALARM_MSG
+		           </otherwise>
+		       </choose>
+		FROM   TB_ALARM
+		WHERE  ALARM_ID = #{alarmId}
+		AND    USE_YN = 'Y'
+	</select>
+	
 	<!-- 알람SMS 생성 -->
 	<insert id="createAlarmSmsDev" parameterType="Alarm">
 		/* TsbMonitoring.createAlarmSmsDev */
@@ -21,22 +37,12 @@
 		     , ''            AS FSECTIONCODE
 		     , ''            AS FCAMPCODE
 		     , '0'           AS FMSGTYPE
-		     <choose>
-		         <when test="batchNm != null and batchNm != ''">
-		     , CONCAT(A.ALARM_MSG,'-',#{batchNm}) AS FMESSAGE
-		         </when>
-		         <otherwise>
-		     , A.ALARM_MSG   AS FMESSAGE
-		         </otherwise>
-		     </choose>
+		     , #{alarmMsg}   AS FMESSAGE
 		     , NOW()         AS FSENDDATE
 		     , AR.CELL_PHNNO AS FDESTINE
 		     , #{fcallback}  AS FCALLBACK
-		FROM   TB_ALARM A
-		     , TB_ALARM_RECEIVER AR
-		WHERE  A.ALARM_ID = AR.ALARM_ID
-		AND    A.ALARM_ID = #{alarmId}
-		AND    A.USE_YN = 'Y'
+		FROM   TB_ALARM_RECEIVER AR
+		WHERE  AR.ALARM_ID = #{alarmId}
 		AND    AR.USE_YN = 'Y'
 	</insert>
 	
@@ -59,22 +65,12 @@
 		     , ''            AS FSECTIONCODE
 		     , ''            AS FCAMPCODE
 		     , '0'           AS FMSGTYPE
-		     <choose>
-		         <when test="batchNm != null and batchNm != ''">
-		     , CONCAT(A.ALARM_MSG,'-',#{batchNm}) AS FMESSAGE
-		         </when>
-		         <otherwise>
-		     , A.ALARM_MSG   AS FMESSAGE
-		         </otherwise>
-		     </choose>
+		     , #{alarmMsg}   AS FMESSAGE
 		     , NOW()         AS FSENDDATE
 		     , AR.CELL_PHNNO AS FDESTINE
 		     , #{fcallback}  AS FCALLBACK
-		FROM   TB_ALARM A
-		     , TB_ALARM_RECEIVER AR
-		WHERE  A.ALARM_ID = AR.ALARM_ID
-		AND    A.ALARM_ID = #{alarmId}
-		AND    A.USE_YN = 'Y'
+		FROM   TB_ALARM_RECEIVER AR
+		WHERE  AR.ALARM_ID = #{alarmId}
 		AND    AR.USE_YN = 'Y'
 	</insert>
 	

+ 293 - 6
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,4 +721,215 @@
 			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 */
+		SELECT SUM(ODIH.SELL_AMT - (ODIH.CPN1_DC_AMT + ODIH.GOODS_CPN_DC_AMT))       AS TOT_NET_SALES_AMT  /*총순매출매금액(즉시할인쿠폰과 상품쿠폰만 차감)*/
+		     , - 1 * SUM(ODIH.CNCL_AMT - (ODIH.CPN1_DC_AMT + ODIH.GOODS_CPN_DC_AMT)) AS TOT_CNCL_AMT       /*총취소금액(즉시할인쿠폰과 상품쿠폰만 차감)*/
+		     , SUM(CASE WHEN ODIH.SUPPLY_COMP_CD IN (5,4) /*한세MK, FRJ*/ THEN
+		                    ODIH.SELL_AMT - (ODIH.CPN1_DC_AMT + ODIH.GOODS_CPN_DC_AMT)
+		                ELSE
+		                    0
+		           END)                                                              AS MK_NET_SALES_AMT   /*한세MK순매출금액*/
+		     , -1 * SUM(CASE WHEN ODIH.SUPPLY_COMP_CD = 3 THEN /*한세드림*/
+		                         ODIH.CNCL_AMT - (ODIH.CPN1_DC_AMT + ODIH.GOODS_CPN_DC_AMT)
+		                     ELSE
+		                         0
+		                END)                                                         AS DR_NET_SALES_AMT   /*한세드림순매출금액*/
+		FROM   (
+		        SELECT OD.SUPPLY_COMP_CD
+		             , (CASE WHEN ODIH.ORD_DTL_STAT = 'G720_10' THEN 1 ELSE -1 END)
+		               *
+		               CAST(CASE WHEN ODIH.ORD_DTL_STAT = 'G720_10'/*판매-결제완료*/ THEN
+		                             ODIH.ORD_AMT - ODIH.CNCL_RTN_AMT + ODIH.CPN1_DC_AMT
+		                         ELSE
+		                             ODIH.CNCL_RTN_AMT + ODIH.CPN1_DC_AMT
+		                    END AS SIGNED INT)                                       AS SELL_AMT          /*판매금액(ORD_AMT에는 CPN1_DC_AMT가 빠진 금액이 들어가 있음)*/
+		             , CAST(CASE WHEN ODIH.ORD_DTL_STAT = 'G720_10'/*판매-결제완료*/ THEN
+		                             0
+		                         ELSE
+		                             ODIH.CNCL_RTN_AMT + ODIH.CPN1_DC_AMT
+		                    END AS SIGNED INT)                                       AS CNCL_AMT          /*취소금액(ORD_AMT에는 CPN1_DC_AMT가 빠진 금액이 들어가 있음)*/
+		             , ODIH.CPN1_DC_AMT                                                                   /*즉시사용쿠폰금액*/
+		             , ODIH.GOODS_CPN_DC_AMT                                                              /*상품쿠폰사용금액*/
+		             , ODIH.CART_CPN_DC_AMT                                                               /*주문서쿠폰사용금액*/
+		             , ODIH.PNT_DC_AMT                                                                    /*포인트사용금액*/
+		             , ODIH.TMTB1_DC_AMT + ODIH.TMTB2_DC_AMT AS TMTB_DC_AMT                               /*다다익선할인금액*/
+		             , ODIH.GFCD_USE_AMT                                                                  /*상품권사용금액*/
+		        FROM   TB_ORDER_DETAIL_ITEM_HST ODIH
+		        INNER JOIN TB_ORDER_DETAIL OD ON ODIH.ORD_DTL_NO = OD.ORD_DTL_NO
+		        INNER JOIN TB_ORDER O ON ODIH.ORD_NO = O.ORD_NO
+		        INNER JOIN TB_SUPPLY_COMPANY SC ON OD.SUPPLY_COMP_CD = SC.SUPPLY_COMP_CD
+		        WHERE  1 = 1
+		        AND    ODIH.REG_DT <![CDATA[>=]]> CURRENT_DATE()
+		        AND    ODIH.REG_DT <![CDATA[<]]> DATE_ADD(CURRENT_DATE(), INTERVAL 1 DAY)
+		        AND    ODIH.ORD_DTL_STAT IN ('G720_10','G720_30','G720_40','G720_50','G720_60') /*판매-결제완료, 환입-취소완료, 환입-품절취소, 환입-반품완료, 환입-교환완료*/
+		       ) ODIH
+	</select>
+
 </mapper>

+ 6 - 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 ?             #자동품절취소
 
     #회수
@@ -152,6 +152,7 @@ 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 ?           #주문시간대별통계
+        sales.sms.send: 2 22 2 29 2 ?                  #매출문자발송
 
     #모니터링
     monitoring:
@@ -192,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
 

+ 60 - 56
src/main/resources/config/application-locd.yml

@@ -31,35 +31,35 @@ upload:
 cron:
     #상품
     goods:
-        benefit.create: 30 3 * * * *                 #상품 혜택 생성 (1시간 1회)
-        benefit.price.create: 0 3 * * * *            #상품 즉시할인가 생성 (1시간 1회)
+        benefit.create: 2 22 2 29 2 ?                 #상품 혜택 생성 (1시간 1회)
+        benefit.price.create: 2 22 2 29 2 ?            #상품 즉시할인가 생성 (1시간 1회)
         ep:
             naver:
-                all.goods.create: 0 23 4 * * *             #네이버 전체EP 생성 (1일 1회)
-                summary.goods.create: 0 23 0-3,5-23 * * *  #네이버 요약EP 생성 (1시간 1회)
-                sell.create: 0 28 4 * * *                  #네이버 판매지수EP 생성 (1일 1회)
+                all.goods.create: 2 22 2 29 2 ?             #네이버 전체EP 생성 (1일 1회)
+                summary.goods.create: 2 22 2 29 2 ?  #네이버 요약EP 생성 (1시간 1회)
+                sell.create: 2 22 2 29 2 ?                  #네이버 판매지수EP 생성 (1일 1회)
             daum:
-                all.goods.create: 0 33 4 * * *             #다음 전체EP 생성 (1일 1회)
-                summary.goods.create: 0 33 0-3,5-23 * * *  #다음 요약EP 생성 (1시간 1회)
-                review.create: 0 38 4 * * *                #다음 상품평EP 생성 (1일 1회)
+                all.goods.create: 2 22 2 29 2 ?             #다음 전체EP 생성 (1일 1회)
+                summary.goods.create: 2 22 2 29 2 ?  #다음 요약EP 생성 (1시간 1회)
+                review.create: 2 22 2 29 2 ?                #다음 상품평EP 생성 (1일 1회)
         reserve:
-            titlename.apply: 30 2 * * * *           #상품 예약타이틀명(=세일링문구) 적용 (1시간 1회)
-            price.apply: 0 2 * * * *                #상품 예약가격 적용 (1시간 1회)
+            titlename.apply: 2 22 2 29 2 ?           #상품 예약타이틀명(=세일링문구) 적용 (1시간 1회)
+            price.apply: 2 22 2 29 2 ?                #상품 예약가격 적용 (1시간 1회)
         #infants.safe: 2 22 2 29 2 ?
-        relgoods.scoring: 0 5 * * * *             #연관상품 스코어링 (1시간 1회)
-        keyword.create: 0 1 0 * * *               #상품 검색어 생성 (1일 1회)
-        summary.create: 30 1 0 * * *              #상품 요약정보 생성 (1일 1회)
-        social.price.apply : 0 19 * * * *         #소셜상품의 가격 적용 (1시간 1회)
+        relgoods.scoring: 2 22 2 29 2 ?             #연관상품 스코어링 (1시간 1회)
+        keyword.create: 2 22 2 29 2 ?               #상품 검색어 생성 (1일 1회)
+        summary.create: 2 22 2 29 2 ?              #상품 요약정보 생성 (1일 1회)
+        social.price.apply : 2 22 2 29 2 ?         #소셜상품의 가격 적용 (1시간 1회)
         wms:
-            incomelot.receive: 0 30 0 * * *       #WMS 입고상품 수신 (1일 1회)
-            stock.receive: 0 40 0 * * *           #WMS 상품재고 수신 (1일 1회)
-            measurement.receive: 0 50 0 * * *     #WMS 실측사이즈 수신 (1일 1회)
-            brandprovider.send: 0 0 1 * * *       #WMS 업체/브랜드 송신 (1일 1회)
-            goods.send: 0 10 1 * * *              #WMS 상품정보 송신 (1일 1회)
-        shop.stock.receive: 0 7 * * * *           #ERP 매장재고 수신 (1시간 1회)
+            incomelot.receive: 2 22 2 29 2 ?       #WMS 입고상품 수신 (1일 1회)
+            stock.receive: 2 22 2 29 2 ?           #WMS 상품재고 수신 (1일 1회)
+            measurement.receive: 2 22 2 29 2 ?     #WMS 실측사이즈 수신 (1일 1회)
+            brandprovider.send: 2 22 2 29 2 ?       #WMS 업체/브랜드 송신 (1일 1회)
+            goods.send: 2 22 2 29 2 ?              #WMS 상품정보 송신 (1일 1회)
+        shop.stock.receive: 2 22 2 29 2 ?           #ERP 매장재고 수신 (1시간 1회)
         search:
-            all.create: 0 0 2 * * *               #검색전체색인 생성 (1일 1회)
-            section.create: 0 10 0-1,3-23 * * *   #검색부분색인 생성 (1일 1회)
+            all.create: 2 22 2 29 2 ?               #검색전체색인 생성 (1일 1회)
+            section.create: 2 22 2 29 2 ?   #검색부분색인 생성 (1일 1회)
         reinbound.notify:  2 22 2 29 2 ?          #재입고알림톡 발송 (사용안함)
 
     # 회원(고객)
@@ -102,55 +102,58 @@ cron:
 
     # 전시
     display:
-        category.refresh: 0 30 * * * *         #카테고리 갱신 (1시간 1회)
-        category.stock.create: 0 5/10 * * * *  #카테고리별 재고 생성 (1시간 1회)
+        category.refresh: 2 22 2 29 2 ?         #카테고리 갱신 (1시간 1회)
+        category.stock.create: 2 22 2 29 2 ?  #카테고리별 재고 생성 (1시간 1회)
         #category.filter.create: 0 45 * * * *   #카테고리별 검색필터 생성 (1시간 1회)
-        recently.reg.goods.create: 0 45 * * * *  #최근등록된 상품 100개 생성
-        main.contents.goods.create: 0 15 * * * *  #몰 메인 컨텐츠 상품생성 (1시간 1회)
+        recently.reg.goods.create: 2 22 2 29 2 ?  #최근등록된 상품 100개 생성
+        main.contents.goods.create: 2 22 2 29 2 ?  #몰 메인 컨텐츠 상품생성 (1시간 1회)
 
     # 주문
     order:
-        cart.deadline.expire: 0 20 4 * * *      #만료기간 지난 장바구니 삭제 (1일 1회)
-        deposit.waiting.notify: 0 30 4 * * *    #무통장(가상계좌) 입금대기 알림 (1일 1회)
-        deposit.deadline.expire: 0 40 4 * * *   #무통장입금 입금기한 만료건 주문 취소 (1일 1회)
-        gift.deadline.expire: 0 10 5 * * *      #선물하기 배송지 등록기한 만료건 주문 취소 (1일 1회)
+        cart.deadline.expire: 2 22 2 29 2 ?      #만료기간 지난 장바구니 삭제 (1일 1회)
+        deposit.waiting.notify: 2 22 2 29 2 ?    #무통장(가상계좌) 입금대기 알림 (1일 1회)
+        deposit.deadline.expire: 2 22 2 29 2 ?   #무통장입금 입금기한 만료건 주문 취소 (1일 1회)
+        gift.deadline.expire: 2 22 2 29 2 ?      #선물하기 배송지 등록기한 만료건 주문 취소 (1일 1회)
         #pg.kcp.settle.receive: 2 22 2 29 2 ?    #KCP PG 정산 데이터 수신 (사용안함)
-        cart.unpurchase.push: 0 50 4 * * *      #장바구니 미구매 확인(삭제 10일 전) 푸시 송부 (1일 1회)
-        cart.benefit.push: 0 0 5 * * *          #장바구니 혜택 추가 푸시 (1일 1회)
-        wish.benefit.push: 0 10 5 * * *         #위시리스트 혜택 추가 푸시 (1일 1회)
+        cart.unpurchase.push: 2 22 2 29 2 ?      #장바구니 미구매 확인(삭제 10일 전) 푸시 송부 (1일 1회)
+        cart.benefit.push: 2 22 2 29 2 ?          #장바구니 혜택 추가 푸시 (1일 1회)
+        wish.benefit.push: 2 22 2 29 2 ?         #위시리스트 혜택 추가 푸시 (1일 1회)
 
     #배송
     delivery:
-        shot.deliveryzone.refresh: 0 10 2 * * *        #총알배송 권역정보 갱신(매일 11시) (1일 1회)
-        loc.assign: 0 0/10 7-16 * * MON-FRI            #출고처 지정 및 배송(출고) 지시 (1시간 1회)
+        shot.deliveryzone.refresh: 2 22 2 29 2 ?        #총알배송 권역정보 갱신(매일 11시) (1일 1회)
+        loc.assign: 2 22 2 29 2 ?            #출고처 지정 및 배송(출고) 지시 (1시간 1회)
         wms:
-            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회)
-        auto.soldout.cancel: 0 8/10 * * * *            #자동품절취소 (1시간 1회)
+            outgoing.exception.receive: 2 22 2 29 2 ? #WMS 출고예외 수신 (1시간 1회)
+            outgoing.result.receive: 2 22 2 29 2 ?    #WMS 출고결과 수신 (1시간 1회)
+            invoice.receive: 2 22 2 29 2 ?            #WMS 운송장번호 수신(1시간 1회)
+        sweettracker.invoice.retrieve: 2 22 2 29 2 ?  #스윗트래커 송장상태 조회 (1시간 1회)
+        auto.soldout.cancel: 2 22 2 29 2 ?            #자동품절취소 (1시간 1회)
 
     #회수
     withdraw:
         wms:
-            request: 0 0/10 7-16 * * MON-FRI          #WMS 회수요청 (1시간 1회)
+            request: 2 22 2 29 2 ?          #WMS 회수요청 (1시간 1회)
             ingoing:
-                exception.receive: 0 2/10 * * * *        #WMS 회수입고예외 수신 (1시간 1회)
-                exception.result.receive: 0 4/10 * * * * #WMS 회수입고예외 결과 수신 (1시간 1회)
-                result.receive: 0 6/10 * * * *           #WMS 회수입고결과 수신 (1시간 1회)
+                exception.receive: 2 22 2 29 2 ?        #WMS 회수입고예외 수신 (1시간 1회)
+                exception.result.receive: 2 22 2 29 2 ? #WMS 회수입고예외 결과 수신 (1시간 1회)
+                result.receive: 2 22 2 29 2 ?           #WMS 회수입고결과 수신 (1시간 1회)
         cj:
-            invoice.receive: 0 30 * * * *                #CJ 회수송장번호 수신 (1시간 1회)
-            status.receive: 0 37 * * * *                 #CJ 회수상태 수신 (1시간 1회)
+            invoice.receive: 2 22 2 29 2 ?                #CJ 회수송장번호 수신 (1시간 1회)
+            status.receive: 2 22 2 29 2 ?                 #CJ 회수상태 수신 (1시간 1회)
 
     #네이버페이
-    naverPay.order.batch: 0 0/20 * 1/1 * *               # 네이버페이 배치 실행 (20분배치)
+    naverPay.order.batch: 2 22 2 29 2 ?               # 네이버페이 배치 실행 (20분배치)
 
     #통계
     statistics:
-        aflink.inflow.create: 0 17 * * * *             #유입통계 (1시간 1회)
+        aflink.inflow.create: 2 22 2 29 2 ?             #유입통계 (1시간 1회)
         aflink.inflow.yesterday.create: 2 22 2 29 2 ?  #어제일자유입통계
-        order.daily.create: 0 17 1 * * *               #주문일자별통계
+        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 ?                  #매출문자발송
 
     #모니터링
     monitoring:
@@ -159,10 +162,10 @@ cron:
 
     # 샵링커
     shoplinker:
-        stock.send10: 0 0 10 * * *           #재고 10시 (1일 1회)
-        stock.send15: 0 0 15 * * *           #재고 15시 (1일 1회)
-        order.receive: 0 5 5-15 * * MON-FRI  #주문 (1시간 1회)
-        invoice.send: 0 0 * * * *            #송장 (1시간 1회)
+        stock.send10: 2 22 2 29 2 ?           #재고 10시 (1일 1회)
+        stock.send15: 2 22 2 29 2 ?           #재고 15시 (1일 1회)
+        order.receive: 2 22 2 29 2 ?  #주문 (1시간 1회)
+        invoice.send: 2 22 2 29 2 ?            #송장 (1시간 1회)
 
 # USAFE 보증보험 정보
 usafe.guarantee:
@@ -212,9 +215,10 @@ naverPay:
 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: http://ts5000.ipdisk.co.kr
 

+ 9 - 5
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,10 @@ 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 ?                  #매출문자발송
 
     #모니터링
     monitoring:
@@ -210,9 +213,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