Pārlūkot izejas kodu

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

card007 4 gadi atpakaļ
vecāks
revīzija
486c0204b2

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

@@ -60,6 +60,15 @@ public interface TsbStatisticsDao {
 	 */
 	Collection<String> getSalesUploadBrandList(String erpGb);
 
+	/**
+	 * 매출반영 브랜드 목록
+	 * @param erp - ERP 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 10. 7
+	 */
+	Collection<String> getSalesUploadBrandList2(Erp erp);
+
 	/**
 	 * 매출반영 목록
 	 * @param erp - ERP 정보
@@ -69,6 +78,15 @@ public interface TsbStatisticsDao {
 	 */
 	Collection<GagaMap> getSalesUploadList(Erp erp);
 
+	/**
+	 * 매출반영 목록 (판매일자 파라미터 추가용)
+	 * @param erp - ERP 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 8. 27
+	 */
+	Collection<GagaMap> getSalesUploadList2(Erp erp);
+
 	/**
 	 * 매출반영I/F번호 조회
 	 * @param erpGb - ERP구분(hsmk:한세MK, hsdr:한세드림)

+ 115 - 0
src/main/java/com/style24/batch/biz/job/statistics/TsbSalesUploadHsdrJob.java

@@ -0,0 +1,115 @@
+package com.style24.batch.biz.job.statistics;
+
+import java.util.Collection;
+
+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.TsbStatisticsService;
+import com.style24.core.biz.thirdparty.HansaeErp;
+import com.style24.persistence.domain.Erp;
+
+import lombok.extern.slf4j.Slf4j;
+
+import com.gagaframework.web.parameter.GagaMap;
+import com.gagaframework.web.util.GagaStringUtil;
+
+/**
+ * 한세드림 ERP 매출반영
+ *
+ * @author gagamel
+ * @since 2021. 10. 7
+ */
+@Component
+@Slf4j
+public class TsbSalesUploadHsdrJob extends TsbAbstractJob<String, String, String> {
+
+	@Autowired
+	private TsbStatisticsService statisticsService;
+
+	@Autowired
+	private HansaeErp hansaeErp;
+
+	@Override
+	public String read() throws Exception {
+		return "OK";
+	}
+
+	@Override
+	public String process(String result) throws Exception {
+		for (int i = 1; i <= 30; i++) {
+			String dtSale = "202109" + GagaStringUtil.getLPadding(String.valueOf(i), 2, "0");
+
+			// 한세드림 매출반영
+			this.uploadSales(HansaeErp.ErpGb.HANSAE_DR.value(), dtSale);
+		}
+
+		return "OK";
+	}
+
+	@Override
+	public String write(String result) throws Exception {
+		return "OK";
+	}
+
+	@Override
+	public void notify(String result) throws Exception {
+		// Do nothing
+	}
+
+	/**
+	 * 매출반영
+	 * @param erpGb - ERP구분(hsmk:한세MK, hsdr:한세드림)
+	 * @param dtSale - 판매일자
+	 * @throws Exception
+	 */
+	private void uploadSales(String erpGb, String dtSale) throws Exception {
+		// 매출반영 브랜드 목록
+		Collection<String> brandList = statisticsService.getSalesUploadBrandList2(erpGb, dtSale);
+
+		if (brandList == null || brandList.isEmpty()) {
+			log.info("매출반영할 브랜드 목록이 없습니다.");
+			return;
+		}
+
+		for (String brandCd : brandList) {
+			Erp erp = new Erp();
+			erp.setErpGb(erpGb);
+			erp.setBrandCd(brandCd);
+			erp.setDtSale(dtSale);
+
+			// 매출업로드 목록
+			Collection<GagaMap> uploadList = statisticsService.getSalesUploadList2(erp);
+
+			if (uploadList == null || uploadList.isEmpty()) {
+				log.error("{}-{} 브랜드의 매출반영할 데이터가 없습니다.", erpGb, brandCd);
+				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, uploadList);
+
+			if (salesMap == null || salesMap.isEmpty()) {
+				log.error("{}-{} 브랜드의 매출반영결과 데이터가 없습니다. 한세 ERP 시스템담당자에게 문의해 주세요.", erpGb, brandCd);
+				continue;
+			}
+
+			// 매출반영결과 처리
+			statisticsService.updateSalesUploadResult(erpGb, salesMap);
+
+			log.info("{}-{} 브랜드의 매출반영 업로드 성공", erpGb, brandCd);
+		}
+	}
+
+}

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

@@ -95,6 +95,21 @@ public class TsbStatisticsService {
 		return statisticsDao.getSalesUploadBrandList(erpGb);
 	}
 
+	/**
+	 * 매출반영 브랜드 목록
+	 * @param erpGb - ERP구분(hsmk:한세MK, hsdr:한세드림)
+	 * @param dtSale - 판매일자
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 10. 7
+	 */
+	public Collection<String> getSalesUploadBrandList2(String erpGb, String dtSale) {
+		Erp erp = new Erp();
+		erp.setErpGb(erpGb);
+		erp.setDtSale(dtSale);
+		return statisticsDao.getSalesUploadBrandList2(erp);
+	}
+
 	/**
 	 * 매출반영 목록
 	 * @param erp - ERP 정보
@@ -106,6 +121,17 @@ public class TsbStatisticsService {
 		return statisticsDao.getSalesUploadList(erp);
 	}
 
+	/**
+	 * 매출반영 목록 (판매일자 파라미터 추가용)
+	 * @param erp - ERP 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 10. 7
+	 */
+	public Collection<GagaMap> getSalesUploadList2(Erp erp) {
+		return statisticsDao.getSalesUploadList2(erp);
+	}
+
 	/**
 	 * 매출반영I/F번호 조회
 	 * @param erpGb - ERP구분(hsmk:한세MK, hsdr:한세드림)

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

@@ -10,6 +10,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.batch.biz.job.statistics.TsbSalesUploadHsdrJob;
 import com.style24.batch.biz.job.statistics.TsbSalesUploadJob;
 import com.style24.core.support.controller.TscBaseController;
 
@@ -39,6 +40,9 @@ public class TsbStatisticsController extends TscBaseController {
 	@Autowired
 	private TsbSalesUploadJob salesUploadJob;
 
+	@Autowired
+	private TsbSalesUploadHsdrJob salesUploadHsdrJob;
+
 	/**
 	 * 제휴채널 유입집계 생성
 	 * @throws Exception
@@ -88,4 +92,16 @@ public class TsbStatisticsController extends TscBaseController {
 		return "OK";
 	}
 
+	/**
+	 * 한세드림 매출반영 (임시용)
+	 *
+	 * @throws Exception
+	 */
+	@GetMapping("/sales/upload/hsdr")
+	@ResponseBody
+	public String salesUploadHsdrJob() throws Exception {
+		salesUploadHsdrJob.runById("cron.statistics.sales.upload.hsdr");
+		return "OK";
+	}
+
 }

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

@@ -1497,7 +1497,7 @@
 		            WHERE  OCD.ORD_DTL_NO = B.ORD_DTL_NO 
 		            AND    OCD.CHG_STAT ='G685_10'
 			   )
-			   AND GIFT_PACK_YN = 'N' -- 선물주문이아닌주문
+			   AND B.GIFT_PACK_YN = 'N' -- 선물주문이아닌주문
 			UNION ALL  
 			SELECT A.ORD_NO 
 			  FROM TB_ORDER A 
@@ -1520,7 +1520,7 @@
 		            WHERE  OCD.ORD_DTL_NO = B.ORD_DTL_NO 
 		            AND    OCD.CHG_STAT ='G685_10'
 			   )
-			   AND GIFT_PACK_YN = 'N' -- 선물주문이아닌주문
+			   AND B.GIFT_PACK_YN = 'N' -- 선물주문이아닌주문
 			 UNION ALL  
 			SELECT A.ORD_NO 
 			  FROM TB_ORDER A 
@@ -1541,7 +1541,7 @@
 			   AND B.GIFT_ADDR_INP_YN = 'Y' -- 주소입력완료
 		) A 
 		GROUP BY A.ORD_NO
-		ORDER BY ORD_NO
+		ORDER BY A.ORD_NO
 		]]>
 	</select>	
 	

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

@@ -983,17 +983,17 @@
 		     , DS_REMARK
 		     , REG_DT
 		)
-		SELECT #{erpGb}   AS ERP_GB
-		     , DT_SALE
-		     , TP_SALE
-		     , CD_STYLE
-		     , CD_COLOR
-		     , CD_SIZE
-		     , BRAND_CD
-		     , QT_SALE
-		     , AM_ACSALE
-		     , ''         AS DS_REMARK
-		     , NOW()      AS REG_DT
+		SELECT #{erpGb}                              AS ERP_GB
+		     , ODIH.DT_SALE
+		     , ODIH.TP_SALE
+		     , IFNULL(HS.ERP_CD_STYLE,ODIH.CD_STYLE) AS CD_STYLE
+		     , IFNULL(HS.ERP_CD_COLOR,ODIH.CD_COLOR) AS CD_COLOR
+		     , IFNULL(HS.ERP_CD_SIZE,ODIH.CD_SIZE)   AS CD_SIZE
+		     , ODIH.BRAND_CD
+		     , ODIH.QT_SALE
+		     , ODIH.AM_ACSALE
+		     , ''                                    AS DS_REMARK
+		     , NOW()                                 AS REG_DT
 		FROM   (
 		        SELECT DATE_FORMAT(ODIH.REG_DT,'%Y%m%d')       AS DT_SALE  /*판매일자(=발생일자)*/
 		             , CASE WHEN ODIH.ORD_DTL_STAT = 'G720_20' THEN '1'
@@ -1045,15 +1045,19 @@
 		                , TRIM(SUBSTRING(ODIH.SKU_MODEL_NO,13,3))
 		                , G.BRAND_CD
 		       ) ODIH
-		WHERE  QT_SALE <![CDATA[<>]]> 0
+		LEFT OUTER JOIN TB_HANSAE_STYLE HS ON ODIH.CD_STYLE = HS.CD_STYLE
+		                                  AND ODIH.CD_COLOR = HS.CD_COLOR
+		                                  AND ODIH.CD_SIZE = HS.CD_SIZE
+		                                  AND HS.ERP_GB = #{erpGb}
+		WHERE  ODIH.QT_SALE <![CDATA[<>]]> 0
 		AND    NOT EXISTS (SELECT 1
 		                   FROM   TB_HANSAE_SALES
 		                   WHERE  ERP_GB = #{erpGb}
 		                   AND    DT_SALE = ODIH.DT_SALE
 		                   AND    TP_SALE = ODIH.TP_SALE
-		                   AND    CD_STYLE = ODIH.CD_STYLE
-		                   AND    CD_COLOR = ODIH.CD_COLOR
-		                   AND    CD_SIZE = ODIH.CD_SIZE
+		                   AND    CD_STYLE = IFNULL(HS.ERP_CD_STYLE,ODIH.CD_STYLE)
+		                   AND    CD_COLOR = IFNULL(HS.ERP_CD_COLOR,ODIH.CD_COLOR)
+		                   AND    CD_SIZE = IFNULL(HS.ERP_CD_SIZE,ODIH.CD_SIZE)
 		                  )
 	</insert>
 	
@@ -1068,6 +1072,17 @@
 		ORDER  BY BRAND_CD
 	</select>
 	
+	<!-- 매출반영 브랜드 목록 -->
+	<select id="getSalesUploadBrandList2" parameterType="Erp" resultType="String">
+		/* TsbStatistics.getSalesUploadBrandList2 */
+		SELECT DISTINCT BRAND_CD
+		FROM   TB_HANSAE_SALES
+		WHERE  ERP_GB = #{erpGb}
+		AND    DT_SALE = #{dtSale}
+		AND    CD_SALEBILL IS NULL /*판매전표가없는넘(=매출반영안했거나 실패한넘)*/
+		ORDER  BY BRAND_CD
+	</select>
+	
 	<!-- 매출반영 목록 -->
 	<select id="getSalesUploadList" parameterType="Erp" resultType="paramMap">
 		/* TsbStatistics.getSalesUploadList */
@@ -1087,6 +1102,25 @@
 		ORDER  BY DT_SALE, TP_SALE, CD_STYLE, CD_COLOR, CD_SIZE
 	</select>
 	
+	<!-- 매출반영 목록 (판매일자 파라미터 추가용) -->
+	<select id="getSalesUploadList2" parameterType="Erp" resultType="paramMap">
+		/* TsbStatistics.getSalesUploadList2 */
+		SELECT DT_SALE
+		     , TP_SALE
+		     , CD_STYLE
+		     , CD_COLOR
+		     , CD_SIZE
+		     , QT_SALE
+		     , AM_ACSALE
+		     , DS_REMARK
+		FROM   TB_HANSAE_SALES
+		WHERE  ERP_GB = #{erpGb}
+		AND    DT_SALE = #{dtSale}
+		AND    BRAND_CD = #{brandCd}
+		AND    CD_SALEBILL IS NULL /*판매전표가없는넘(=매출반영안했거나 실패한넘)*/
+		ORDER  BY DT_SALE, TP_SALE, CD_STYLE, CD_COLOR, CD_SIZE
+	</select>
+	
 	<!-- 매출반영I/F번호 조회 -->
 	<select id="getSalesUploadInterfaceNo" parameterType="String" resultType="String">
 		/* TsbStatistics.getSalesUploadInterfaceNo */