Explorar el Código

한세ERP 매출반영 로직 수정

gagamel hace 4 años
padre
commit
3cda6b15e9

+ 18 - 10
src/main/java/com/style24/batch/biz/dao/TsbStatisticsDao.java

@@ -42,15 +42,6 @@ public interface TsbStatisticsDao {
 	 */
 	SalesSms getCurrentDaySalesSms();
 
-	/**
-	 * 매출반영I/F번호 조회
-	 * @param erpGb - ERP구분(hsmk:한세MK, hsdr:한세드림)
-	 * @return
-	 * @author gagamel
-	 * @since 2021. 8. 27
-	 */
-	String getSalesUploadInterfaceNo(String erpGb);
-
 	/**
 	 * 어제일자 매출반영목록 생성
 	 * @param erpGb - ERP구분(hsmk:한세MK, hsdr:한세드림)
@@ -76,7 +67,24 @@ public interface TsbStatisticsDao {
 	 * @author gagamel
 	 * @since 2021. 8. 27
 	 */
-	public Collection<GagaMap> getSalesUploadList(Erp erp);
+	Collection<GagaMap> getSalesUploadList(Erp erp);
+
+	/**
+	 * 매출반영I/F번호 조회
+	 * @param erpGb - ERP구분(hsmk:한세MK, hsdr:한세드림)
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 8. 27
+	 */
+	String getSalesUploadInterfaceNo(String erpGb);
+
+	/**
+	 * 매출반영목록 I/F번호 Update
+	 * @param paramMap - ERP 정보
+	 * @author gagamel
+	 * @since 2021. 8. 30
+	 */
+	void updateSalesUploadListInterfaceNo(GagaMap paramMap);
 
 	/**
 	 * 매출반영결과 처리

+ 24 - 4
src/main/java/com/style24/batch/biz/job/statistics/TsbSalesUploadJob.java

@@ -1,5 +1,7 @@
 package com.style24.batch.biz.job.statistics;
 
+import java.util.Collection;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -28,14 +30,14 @@ public class TsbSalesUploadJob extends TsbAbstractJob<String, String, String> {
 	@Autowired
 	private HansaeErp hansaeErp;
 
-	private static final int PAGE_SIZE = 1000;
+	private static final int PAGE_SIZE = 10;
 
 	@Override
 	public String read() throws Exception {
 //		// 어제일자 매출반영목록 생성 (한세드림)
 //		statisticsService.createYesterdaySalesUploadList(HansaeErp.ErpGb.HANSAE_DR.value());
 
-		// 어제일자 매출반영목록 생성 (한세드림)
+		// 어제일자 매출반영목록 생성 (한세MK)
 		statisticsService.createYesterdaySalesUploadList(HansaeErp.ErpGb.HANSAE_MK.value());
 
 		return "OK";
@@ -90,11 +92,29 @@ public class TsbSalesUploadJob extends TsbAbstractJob<String, String, String> {
 			erp.setLimitStartRow(limitStartRow);
 			erp.setPageSize(PAGE_SIZE);
 
+			// 매출업로드 목록
+			Collection<GagaMap> uploadList = statisticsService.getSalesUploadList(erp);
+
+			if (uploadList == null || uploadList.isEmpty()) {
+				log.error("{}'s {} Page 매출반영할 데이터가 없습니다.", erpGb, (page + 1));
+				continue;
+			}
+
+			// 매출반영I/F번호 조회
+			String noIf = statisticsService.getSalesUploadInterfaceNo(erpGb);
+			log.info("매출반영I/F번호: {}", noIf);
+
+			for (GagaMap dataMap : uploadList) {
+				// 매출반영목록 I/F번호 Update
+				dataMap.setString("NO_IF", noIf);
+				statisticsService.updateSalesUploadListInterfaceNo(erpGb, dataMap);
+			}
+
 			// 매출업로드
-			GagaMap salesMap = hansaeErp.uploadErpSales(erpGb, statisticsService.getSalesUploadList(erp));
+			GagaMap salesMap = hansaeErp.uploadErpSales(erpGb, uploadList);
 
 			if (salesMap == null || salesMap.isEmpty()) {
-				log.error("매출반영결과 데이터가 없습니다. 한세 ERP 시스템담당자에게 문의해 주세요.");
+				log.error("{}'s {} Page 매출반영결과 데이터가 없습니다. 한세 ERP 시스템담당자에게 문의해 주세요.", erpGb, (page + 1));
 				continue;
 			}
 

+ 26 - 11
src/main/java/com/style24/batch/biz/service/TsbStatisticsService.java

@@ -72,17 +72,6 @@ public class TsbStatisticsService {
 		return statisticsDao.getCurrentDaySalesSms();
 	}
 
-	/**
-	 * 매출반영I/F번호 조회
-	 * @param erpGb - ERP구분(hsmk:한세MK, hsdr:한세드림)
-	 * @return
-	 * @author gagamel
-	 * @since 2021. 8. 27
-	 */
-	public String getSalesUploadInterfaceNo(String erpGb) {
-		return statisticsDao.getSalesUploadInterfaceNo(erpGb);
-	}
-
 	/**
 	 * 어제일자 매출반영목록 생성
 	 * @param erpGb - ERP구분(hsmk:한세MK, hsdr:한세드림)
@@ -117,6 +106,32 @@ public class TsbStatisticsService {
 		return statisticsDao.getSalesUploadList(erp);
 	}
 
+	/**
+	 * 매출반영I/F번호 조회
+	 * @param erpGb - ERP구분(hsmk:한세MK, hsdr:한세드림)
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 8. 27
+	 */
+	public String getSalesUploadInterfaceNo(String erpGb) {
+		return statisticsDao.getSalesUploadInterfaceNo(erpGb);
+	}
+
+	/**
+	 * 매출반영목록 I/F번호 Update
+	 * @param erpGb - ERP구분(hsmk:한세MK, hsdr:한세드림)
+	 * @param paramMap - ERP 정보
+	 * @author gagamel
+	 * @since 2021. 8. 30
+	 */
+	@Transactional("shopTxnManager")
+	public void updateSalesUploadListInterfaceNo(String erpGb, GagaMap paramMap) {
+		GagaMap dataMap = new GagaMap();
+		dataMap.setString("ERP_GB", erpGb);
+		dataMap.putAll(paramMap);
+		statisticsDao.updateSalesUploadListInterfaceNo(dataMap);
+	}
+
 	/**
 	 * 매출반영결과 처리
 	 * @param erpGb - ERP구분(hsmk:한세MK, hsdr:한세드림)

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

@@ -944,24 +944,11 @@
 		       ) ODIH
 	</select>
 	
-	<!-- 매출반영I/F번호 조회 -->
-	<select id="getSalesUploadInterfaceNo" parameterType="String" resultType="String">
-		/* TsbStatistics.getSalesUploadInterfaceNo */
-		SELECT CONCAT(DATE_FORMAT(NOW(),'%Y%m%d%H%i%S'),
-		              LPAD(IFNULL((SELECT CAST(MAX(SUBSTRING(NO_IF,15)) AS UNSIGNED)
-		                           FROM   TB_HANSAE_SALES
-		                           WHERE  ERP_GB = #{erpGb}
-		                           AND    NO_IF LIKE CONCAT(DATE_FORMAT(NOW(),'%Y%m%d'),'%')
-		                          ),0) + 1,4,'0')) AS NO_IF
-		FROM   DUAL
-	</select>
-	
 	<!-- 어제일자 매출반영목록 생성 -->
 	<insert id="createYesterdaySalesUploadList" parameterType="String">
 		/* TsbStatistics.createYesterdaySalesUploadList */
 		INSERT INTO TB_HANSAE_SALES (
 		       ERP_GB
-		     , NO_IF
 		     , DT_SALE
 		     , TP_SALE
 		     , CD_STYLE
@@ -973,14 +960,6 @@
 		     , REG_DT
 		)
 		SELECT #{erpGb}            AS ERP_GB
-		     , CONCAT(DATE_FORMAT(NOW(),'%Y%m%d%H%i%S'),
-		              (SELECT LPAD(IFNULL((SELECT CAST(MAX(SUBSTRING(NO_IF,15)) AS UNSIGNED)
-		                                   FROM   TB_HANSAE_SALES
-		                                   WHERE  ERP_GB = #{erpGb}
-		                                   AND    NO_IF LIKE CONCAT(DATE_FORMAT(NOW(),'%Y%m%d'),'%')
-		                                  ),0) + 1,4,'0')
-		               FROM   DUAL)
-		              )            AS NO_IF
 		     , DT_SALE
 		     , TP_SALE
 		     , CD_STYLE
@@ -998,14 +977,10 @@
 		             , ODIH.ITEM_CD                      AS CD_STYLE /*스타일코드*/
 		             , ODIH.OPT_CD1                      AS CD_COLOR /*색상코드*/
 		             , ODIH.OPT_CD2                      AS CD_SIZE  /*사이즈코드*/
-		             , SUM((CASE WHEN ODIH.ORD_DTL_STAT = 'G720_20' THEN 1 ELSE -1 END)
-		                   *
-		                   CAST(CASE WHEN ODIH.ORD_DTL_STAT = 'G720_20' THEN ODIH.ORD_QTY - ODIH.CNCL_RTN_QTY /*판매-배송중*/
+		             , SUM(CAST(CASE WHEN ODIH.ORD_DTL_STAT = 'G720_20' THEN ODIH.ORD_QTY - ODIH.CNCL_RTN_QTY /*판매-배송중*/
 		                             ELSE ODIH.CNCL_RTN_QTY /*환입-반품완료,환입-교환완료*/
 		                        END AS SIGNED INT))      AS QT_SALE  /*판매수량*/
-		             , SUM((CASE WHEN ODIH.ORD_DTL_STAT = 'G720_20' THEN 1 ELSE -1 END)
-		                   *
-		                   CAST(CASE WHEN ODIH.ORD_DTL_STAT = 'G720_20' /*판매-배송중*/ THEN
+		             , SUM(CAST(CASE WHEN ODIH.ORD_DTL_STAT = 'G720_20' /*판매-배송중*/ THEN
 		                                 ((ODIH.ORD_QTY - ODIH.CNCL_RTN_QTY) * (CASE WHEN O.MALL_GB = 'G011_20' /*제휴몰*/ THEN
 		                                                                                 IFNULL(EUP.USAC_PRICE,ODIH.ITEM_PRICE)
 		                                                                             ELSE
@@ -1062,15 +1037,15 @@
 		SELECT COUNT(*) AS CNT
 		FROM   TB_HANSAE_SALES
 		WHERE  ERP_GB = #{erpGb}
-		AND    NO_IF LIKE CONCAT(DATE_FORMAT(NOW(),'%Y%m%d'),'%')
+		AND    REG_DT <![CDATA[>=]]> CURRENT_DATE() /*당일에 등록된 넘*/
+		AND    REG_DT <![CDATA[<]]> DATE_ADD(CURRENT_DATE(), INTERVAL 1 DAY) /*당일에 등록된 넘*/
 	</select>
 	
 	<!-- 매출반영 목록 -->
 	<select id="getSalesUploadList" parameterType="Erp" resultType="paramMap">
 		/* TsbStatistics.getSalesUploadList */
 		<include refid="selectForPagingHeader"/>
-		SELECT NO_IF
-		     , DT_SALE
+		SELECT DT_SALE
 		     , TP_SALE
 		     , CD_STYLE
 		     , CD_COLOR
@@ -1080,12 +1055,37 @@
 		     , DS_REMARK
 		FROM   TB_HANSAE_SALES
 		WHERE  ERP_GB = #{erpGb}
-		AND    NO_IF LIKE CONCAT(DATE_FORMAT(NOW(),'%Y%m%d'),'%')
-		AND    CD_SALEBILL IS NULL
-		ORDER  BY NO_IF
+		AND    REG_DT <![CDATA[>=]]> CURRENT_DATE() /*당일에 등록된 넘*/
+		AND    REG_DT <![CDATA[<]]> DATE_ADD(CURRENT_DATE(), INTERVAL 1 DAY) /*당일에 등록된 넘*/
+		ORDER  BY DT_SALE, TP_SALE, CD_STYLE, CD_COLOR, CD_SIZE
 		<include refid="selectForPagingFooter"/>
 	</select>
 	
+	<!-- 매출반영I/F번호 조회 -->
+	<select id="getSalesUploadInterfaceNo" parameterType="String" resultType="String">
+		/* TsbStatistics.getSalesUploadInterfaceNo */
+		SELECT CONCAT(DATE_FORMAT(NOW(),'%Y%m%d%H%i%S')
+		             ,LPAD(IFNULL((SELECT CAST(MAX(SUBSTRING(NO_IF,15)) AS UNSIGNED)
+		                           FROM   TB_HANSAE_SALES
+		                           WHERE  ERP_GB = #{erpGb}
+		                           AND    NO_IF LIKE CONCAT(DATE_FORMAT(NOW(),'%Y%m%d'),'%')
+		                          ),0) + 1,4,'0')) AS NO_IF
+		FROM   DUAL
+	</select>
+	
+	<!-- 매출반영목록 I/F번호 Update -->
+	<update id="updateSalesUploadListInterfaceNo" parameterType="paramMap">
+		/* TsbStatistics.updateSalesUploadListInterfaceNo */
+		UPDATE TB_HANSAE_SALES
+		SET    NO_IF = #{NO_IF}
+		WHERE  ERP_GB = #{ERP_GB}
+		AND    DT_SALE = #{DT_SALE}
+		AND    TP_SALE = #{TP_SALE}
+		AND    CD_STYLE = #{CD_STYLE}
+		AND    CD_COLOR = #{CD_COLOR}
+		AND    CD_SIZE = #{CD_SIZE}
+	</update>
+	
 	<!-- 매출반영결과 처리 -->
 	<update id="updateSalesUploadResult" parameterType="paramMap">
 		/* TsbStatistics.updateSalesUploadResult */