소스 검색

배치 wms 브랜드, 업체 정보 송신

eskim 5 년 전
부모
커밋
3da0fda83d

+ 19 - 0
style24.batch/src/main/java/com/style24/batch/biz/dao/TsbGoodsDao.java

@@ -10,6 +10,8 @@ import com.style24.persistence.domain.GoodsIfIncomelotitem;
 import com.style24.persistence.domain.GoodsIfMeasurement;
 import com.style24.persistence.domain.GoodsSafeNo;
 import com.style24.persistence.domain.GoodsSummary;
+import com.style24.persistence.domain.IfBrand;
+import com.style24.persistence.domain.IfProvider;
 
 /**
  * 상품 Dao
@@ -273,4 +275,21 @@ public interface TsbGoodsDao {
 	 * @since 2021. 01. 04
 	 */
 	void saveWmsGoods(GoodsIfIncomelot goodsIfIncomelot);
+
+	/**
+	 * 공급업체 정보 조회
+	 *
+	 * @author eskim
+	 * @since 2021. 01. 05
+	 */
+	Collection<IfProvider> getSupplyCompanyList();
+
+	/**
+	 * 브랜드 정보 조회
+	 *
+	 * @author eskim
+	 * @since 2021. 01. 05
+	 */
+	Collection<IfBrand> getBrandList();
+
 }

+ 32 - 3
style24.batch/src/main/java/com/style24/batch/biz/dao/TsbWmsGoodsDao.java

@@ -6,6 +6,8 @@ import com.style24.core.support.annotation.ShopDs;
 import com.style24.persistence.domain.GoodsIfIncomelot;
 import com.style24.persistence.domain.GoodsIfIncomelotitem;
 import com.style24.persistence.domain.GoodsIfMeasurement;
+import com.style24.persistence.domain.IfBrand;
+import com.style24.persistence.domain.IfProvider;
 
 /**
  * WMS 상품 연동Dao
@@ -19,7 +21,7 @@ public interface TsbWmsGoodsDao {
 	/**
 	 * 실측사이즈 연동
 	 *
-	 * @param goods
+	 * @param jobdate
 	 * @author eskim
 	 * @since 2021. 01. 01
 	 */
@@ -28,7 +30,7 @@ public interface TsbWmsGoodsDao {
 	/**
 	 * 입고 목록
 	 *
-	 * @param goods
+	 * @param jobdate
 	 * @author eskim
 	 * @since 2021. 01. 01
 	 */
@@ -37,10 +39,37 @@ public interface TsbWmsGoodsDao {
 	/**
 	 * 입고 상품목록
 	 *
-	 * @param goods
+	 * @param jobdate
 	 * @author eskim
 	 * @since 2021. 01. 01
 	 */
 	Collection<GoodsIfIncomelotitem> getWmsIncomelotitemList(String jobdate);
 
+	/**
+	 * WMS 업체정보 송신
+	 *
+	 * @param ifProvider
+	 * @author eskim
+	 * @since 2021. 01. 05
+	 */
+	void saveWmsProvider(IfProvider ifProvider);
+
+	/**
+	 * WMS 브랜드정보 송신
+	 *
+	 * @param ifBrand
+	 * @author eskim
+	 * @since 2021. 01. 05
+	 */
+	void saveWmsBrand(IfBrand ifBrand);
+
+	/**
+	 * WMS 브랜드업체관계정보 송신
+	 *
+	 * @param ifBrand
+	 * @author eskim
+	 * @since 2021. 01. 05
+	 */
+	void saveWmsBrandProviderXref(IfBrand ifBrand);
+
 }

+ 65 - 0
style24.batch/src/main/java/com/style24/batch/biz/job/goods/TsbGoodsWmsBrandproviderJob.java

@@ -0,0 +1,65 @@
+package com.style24.batch.biz.job.goods;
+
+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.TsbCommonService;
+import com.style24.batch.biz.service.TsbGoodsService;
+import com.style24.persistence.domain.IfBrand;
+
+import lombok.extern.slf4j.Slf4j;
+
+import com.gagaframework.web.util.GagaDateUtil;
+
+/**
+ * WMS 브랜드/업체정보 송신
+ *
+ * @author eskim
+ * @since 2021. 01. 05
+ */
+@Component
+@Slf4j
+public class TsbGoodsWmsBrandproviderJob extends TsbAbstractJob<IfBrand, IfBrand, IfBrand> {
+
+	@Autowired
+	private TsbGoodsService goodsService;
+
+	@Autowired
+	private TsbCommonService commonService;
+
+	private int succCnt = 0;
+	private int failCnt = 0;
+
+	@Override
+	public IfBrand read() throws Exception {
+
+		// WMS 동기화 옵션 여부 확인
+		String wmsSyncYn = commonService.getWmsSyncYn();
+		if ("N".equals(wmsSyncYn)) {
+			log.info("WMS 정보 동기화 미실행 {}, 연동여부 : {}", GagaDateUtil.getToday("yyyy-MM-dd HH:mm:ss"), wmsSyncYn);
+			return null;
+		}
+		IfBrand ifBrand = new IfBrand();
+		return ifBrand;
+	}
+
+	@Override
+	public IfBrand process(IfBrand ifBrand) throws Exception {
+		return ifBrand;
+	}
+
+	@Override
+	public IfBrand write(IfBrand ifBrand) throws Exception {
+
+		goodsService.saveWmsBrandProvider();
+
+		return ifBrand;
+	}
+
+	@Override
+	public void notify(IfBrand ifBrand) throws Exception {
+		super.printResult(succCnt, failCnt);
+	}
+
+}

+ 38 - 0
style24.batch/src/main/java/com/style24/batch/biz/service/TsbGoodsService.java

@@ -18,6 +18,8 @@ import com.style24.persistence.domain.GoodsIfIncomelotitem;
 import com.style24.persistence.domain.GoodsIfMeasurement;
 import com.style24.persistence.domain.GoodsSafeNo;
 import com.style24.persistence.domain.GoodsSummary;
+import com.style24.persistence.domain.IfBrand;
+import com.style24.persistence.domain.IfProvider;
 
 import io.netty.util.internal.StringUtil;
 
@@ -406,5 +408,41 @@ public class TsbGoodsService {
 
 	}
 
+	/**
+	 * WMS 브랜드/업체정보 송신
+	 *
+	 * @return
+	 * @author eskim
+	 * @since 2021. 01. 01
+	 */
+	//@Transactional("wmsTxnManager")
+	public void saveWmsBrandProvider() {
+
+		//업체정보 송신(수정일 7일)
+		/*
+		 * 매핑 확인건
+		G065_10	자사-제조
+		G065_11	자사-사입
+		G065_12	자사-위탁
+		 */
+
+		Collection<IfProvider> ifProviderList = goodsDao.getSupplyCompanyList();
+
+		for (IfProvider ifProvider : ifProviderList) {
+			ifProvider.setRegNo(TsbConstants.REG_NO);
+			ifProvider.setUpdNo(TsbConstants.REG_NO);
+			wmsGoodsService.saveWmsProvider(ifProvider);
+		}
+
+		//브랜드, 브랜드/업체 관계정보 송신
+		Collection<IfBrand> ifBrandList = goodsDao.getBrandList();
+
+		for (IfBrand ifBrand : ifBrandList) {
+			ifBrand.setRegNo(TsbConstants.REG_NO);
+			ifBrand.setUpdNo(TsbConstants.REG_NO);
+			wmsGoodsService.saveWmsBrand(ifBrand);
+		}
+
+	}
 
 }

+ 28 - 0
style24.batch/src/main/java/com/style24/batch/biz/service/TsbWmsGoodsService.java

@@ -9,6 +9,8 @@ import com.style24.batch.biz.dao.TsbWmsGoodsDao;
 import com.style24.persistence.domain.GoodsIfIncomelot;
 import com.style24.persistence.domain.GoodsIfIncomelotitem;
 import com.style24.persistence.domain.GoodsIfMeasurement;
+import com.style24.persistence.domain.IfBrand;
+import com.style24.persistence.domain.IfProvider;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -58,4 +60,30 @@ public class TsbWmsGoodsService {
 		return wmsGoodsDao.getWmsIncomelotitemList(jobdate);
 	}
 
+	/**
+	 * WMS 업체정보 송신
+	 *
+	 * @return
+	 * @author eskim
+	 * @since 2021. 01. 05
+	 */
+	public void saveWmsProvider(IfProvider ifProvider) {
+		//브랜드 정보 송신
+		wmsGoodsDao.saveWmsProvider(ifProvider);
+	}
+
+	/**
+	 * WMS 업체정보 송신
+	 *
+	 * @return
+	 * @author eskim
+	 * @since 2021. 01. 05
+	 */
+	public void saveWmsBrand(IfBrand ifBrand) {
+		//브랜드 정보 송신
+		wmsGoodsDao.saveWmsBrand(ifBrand);
+		//WMS 브랜드업체관계정보 송신
+		wmsGoodsDao.saveWmsBrandProviderXref(ifBrand);
+	}
+
 }

+ 19 - 0
style24.batch/src/main/java/com/style24/batch/biz/task/TsbGoodsTask.java

@@ -12,6 +12,7 @@ import com.style24.batch.biz.job.goods.TsbGoodsRelateScoreJob;
 import com.style24.batch.biz.job.goods.TsbGoodsSnmJob;
 import com.style24.batch.biz.job.goods.TsbGoodsSummaryJob;
 import com.style24.batch.biz.job.goods.TsbGoodsTnmJob;
+import com.style24.batch.biz.job.goods.TsbGoodsWmsBrandproviderJob;
 import com.style24.batch.biz.job.goods.TsbGoodsWmsIncomelotJob;
 import com.style24.batch.biz.job.goods.TsbGoodsWmsMeasurementJob;
 
@@ -53,6 +54,11 @@ public class TsbGoodsTask {
 	@Autowired
 	private TsbGoodsWmsIncomelotJob goodsWmsIncomelotJob;
 
+	@Autowired
+	private TsbGoodsWmsBrandproviderJob goodsWmsBrandproviderJob;
+
+
+
 	/**
 	 * 초 분 시 일 월 주(년)
 	 * 0 0 12 * * ?" : 아무 요일, 매월, 매일 12:00:00
@@ -185,4 +191,17 @@ public class TsbGoodsTask {
 		goodsWmsIncomelotJob.runById("cron.goods.wms.incomelot");
 	}
 
+	/**
+	 * WMS 업체/브랜드 송신 적용 주기 : 일배치 - 03시 12분
+	 *
+	 * @throws Exception
+	 */
+	@Scheduled(cron = "${cron.goods.wms.brandprovider}")
+	//@Scheduled(fixedDelay = 3500000)
+	@Async
+	public void tsbGoodsWmsBrandproviderJob() throws Exception {
+		goodsWmsBrandproviderJob.runById("cron.goods.wms.brandprovider");
+	}
+
+
 }

+ 28 - 0
style24.batch/src/main/java/com/style24/persistence/domain/IfBrand.java

@@ -0,0 +1,28 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * wms 연동 브랜드 Domain
+ *
+ * @author eskim
+ * @since 2021. 01. 05
+ */
+@SuppressWarnings("serial")
+@Data
+public class IfBrand extends TscBaseDomain {
+
+	private Integer brandno;            //브랜드 넘버
+	private String brandname;           //브랜드 명
+	private String datecreated;         //생성일
+	private String statuscd;            //상태
+	private String brandCd;             //브랜드코드
+	private String dateUpdated;         //수정일
+
+	private String supplyCompCd;       //업체코드
+	private int providerNo;            //공급처번호
+
+
+}

+ 29 - 0
style24.batch/src/main/java/com/style24/persistence/domain/IfProvider.java

@@ -0,0 +1,29 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * wms 연동 업체정보 Domain
+ *
+ * @author eskim
+ * @since 2021. 01. 05
+ */
+@SuppressWarnings("serial")
+@Data
+public class IfProvider extends TscBaseDomain {
+
+	private Integer providerno;		//공급처번호
+	private String providername;	//공급저명
+	private String categorytypecd;	//분류코드
+	private String distributioncd;	//유통구분
+	private String chargename;		//처리담당자 이름
+	private String chargecellnum;	//처리담당자 전화번호
+	private String statuscd;		//상태 (Y: 사용, N: 미사용)
+	private String stockmgmttypecd;	//재고관리 유형
+	private String supplyCompCd;	//온라인공급업체코드
+	private String datecreated;		//생성일
+	private String dateupdated;		//수정일
+
+}

+ 42 - 0
style24.batch/src/main/java/com/style24/persistence/mybatis/shop/TsbGoods.xml

@@ -1269,4 +1269,46 @@
 		     , UPD_DT = NOW()
 	</insert>
 	
+	<!-- 공급업체 목록 -->
+	<select id="getSupplyCompanyList" resultType="IfProvider">
+		/* TsbGoods.getSupplyCompanyList */
+		SELECT PROVIDER_NO AS PROVIDERNO
+		     , SUPPLY_COMP_NM AS PROVIDERNAME
+		     , '' AS CATEGORYTYPECD
+		     , '자사' AS DISTRIBUTIONCD
+		     , CS_CHARGE_NM AS CHARGENAME
+		     , CS_CHARGE_TELNO AS CHARGECELLNUM
+		     , CASE WHEN USE_YN = 'Y' THEN '정상'
+		            ELSE '사용중지' 
+		       END AS STATUSCD
+		     , 'WMS' AS STOCKMGMTTYPECD
+		     , SUPPLY_COMP_CD
+		FROM   TB_SUPPLY_COMPANY 
+		WHERE  DISTRIBUTION_GB  IN ('G065_10', 'G065_11', 'G065_12')  /* 자사 유통구분*/
+		AND UPD_DT >= DATE_FORMAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -7 DAY), '%Y%m%d'), '%Y%m%d%H%i%S') 
+		<![CDATA[
+		AND UPD_DT < DATE_FORMAT(DATE_FORMAT(NOW(), '%Y%m%d'), '%Y%m%d%H%i%S')
+		]]>
+	</select>
+	
+	<!-- 공급업체 목록 -->
+	<select id="getBrandList" resultType="IfBrand">
+		/* TsbGoods.getBrandList */
+		SELECT A.BRAND_NO AS BRANDNO
+		     , A.BRAND_ENM AS BRANDNAME
+		     , CASE WHEN A.USE_YN = 'Y' THEN '정상'
+		            ELSE '사용안함' 
+		       END AS STATUSCD
+		     , A.BRAND_CD
+		     , A.SUPPLY_COMP_CD
+		     , B.PROVIDER_NO
+		FROM   TB_BRAND A
+		INNER JOIN TB_SUPPLY_COMPANY B ON A.SUPPLY_COMP_CD = B.SUPPLY_COMP_CD
+		WHERE  A.SELF_YN  = 'Y'  /* 자사 */
+		AND A.UPD_DT >= DATE_FORMAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -7 DAY), '%Y%m%d'), '%Y%m%d%H%i%S') 
+		<![CDATA[
+		AND A.UPD_DT < DATE_FORMAT(DATE_FORMAT(NOW(), '%Y%m%d'), '%Y%m%d%H%i%S')
+		]]>
+	</select>
+	
 </mapper>

+ 108 - 0
style24.batch/src/main/java/com/style24/persistence/mybatis/wms/TsbWmsGoods.xml

@@ -80,4 +80,112 @@
 		</choose>
 	</select>
 
+	<!--WMS 업체정보 송신-->
+	<insert id="saveWmsProvider" parameterType="IfProvider" >
+		/* TsbWmsGoods.saveWmsProvider */
+		MERGE TB_IF_PROVIDER 
+		      USING (SELECT 'AA' AS DUAL) AS B
+		         ON (PROVIDERNO = #{providerno})
+		      WHEN MATCHED THEN
+		           UPDATE SET
+		                   PROVIDERNAME = #{providername}
+		                 , CATEGORYTYPECD = #{categorytypecd}
+		                 , DISTRIBUTIONCD = #{distributioncd}
+		                 , CHARGENAME = #{chargename}
+		                 , CHARGECELLNUM = #{chargecellnum}
+		                 , STATUSCD = #{statuscd}
+		                 , STOCKMGMTTYPECD = #{stockmgmttypecd}
+		                 , SUPPLY_COMP_CD = #{supplyCompCd}
+		                 , DATEUPDATED = GETDATE()
+		      WHEN NOT MATCHED THEN
+		           INSERT (
+		                   PROVIDERNO
+		                 , PROVIDERNAME
+		                 , CATEGORYTYPECD
+		                 , DISTRIBUTIONCD
+		                 , CHARGENAME
+		                 , CHARGECELLNUM
+		                 , STATUSCD
+		                 , STOCKMGMTTYPECD
+		                 , SUPPLY_COMP_CD
+		                 , DATECREATED
+		                 , DATEUPDATED
+		           )
+		           VALUES (
+		                  #{providerno}
+		                , #{providername}
+		                , #{categorytypecd}
+		                , #{distributioncd}
+		                , #{chargename}
+		                , #{statuscd}
+		                , #{chargecellnum}
+		                , #{stockmgmttypecd}
+		                , #{supplyCompCd}
+		                , GETDATE()
+		                , GETDATE()
+		           )
+	</insert>
+	
+	<!--WMS 브랜드정보 송신-->
+	<insert id="saveWmsBrand" parameterType="IfBrand" >
+		/* TsbWmsGoods.saveWmsBrand */
+		MERGE TB_IF_BRAND 
+		      USING (SELECT 'AA' AS DUAL) AS B
+		         ON (BRANDNO = #{brandno})
+		      WHEN MATCHED THEN
+		           UPDATE SET
+		                   BRANDNAME = #{brandname}
+		                 , STATUSCD = #{statuscd}
+		                 , BRAND_CD = #{brandCd}
+		                 , DATEUPDATED = GETDATE()
+		      WHEN NOT MATCHED THEN
+		           INSERT (
+		                   BRANDNO
+		                 , BRANDNAME
+		                 , STATUSCD
+		                 , BRAND_CD
+		                 , DATECREATED
+		                 , DATEUPDATED
+		           )
+		           VALUES (
+		                  #{brandno}
+		                , #{brandname}
+		                , #{statuscd}
+		                , #{brandCd}
+		                , GETDATE()
+		                , GETDATE()
+		           )
+	</insert>
+	
+	<!--WMS 브랜드업체관계정보 송신-->
+	<insert id="saveWmsBrandProviderXref" parameterType="IfBrand" >
+		/* TsbWmsGoods.saveWmsBrandProviderXref */
+		MERGE TB_IF_BRANDPROVIDERXREF 
+		      USING (SELECT 'AA' AS DUAL) AS B
+		         ON (BRANDNO = #{brandno})
+		      WHEN MATCHED THEN
+		           UPDATE SET
+		                   PROVIDERNO = #{providerNo}
+		                 , BRAND_CD = #{brandCd}
+		                 , SUPPLY_COMP_CD = #{supplyCompCd}
+		                 , DATEUPDATED = GETDATE()
+		      WHEN NOT MATCHED THEN
+		           INSERT (
+		                   BRANDNO
+		                 , PROVIDERNO
+		                 , BRAND_CD
+		                 , SUPPLY_COMP_CD
+		                 , DATECREATED
+		                 , DATEUPDATED
+		           )
+		           VALUES (
+		                  #{brandno}
+		                , #{providerNo}
+		                , #{brandCd}
+		                , #{supplyCompCd}
+		                , GETDATE()
+		                , GETDATE()
+		           )
+	</insert>
+	
 </mapper>