Quellcode durchsuchen

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

gagamel vor 5 Jahren
Ursprung
Commit
759c57e271
29 geänderte Dateien mit 797 neuen und 109 gelöschten Zeilen
  1. 19 0
      style24.admin/src/main/java/com/style24/admin/biz/dao/TsaGoodsDao.java
  2. 56 22
      style24.admin/src/main/java/com/style24/admin/biz/service/TsaGoodsService.java
  3. 17 2
      style24.admin/src/main/java/com/style24/admin/biz/web/TsaGoodsController.java
  4. 3 1
      style24.admin/src/main/java/com/style24/persistence/domain/Goods.java
  5. 37 0
      style24.admin/src/main/java/com/style24/persistence/domain/WmsGoods.java
  6. 68 1
      style24.admin/src/main/java/com/style24/persistence/mybatis/shop/TsaGoods.xml
  7. 62 10
      style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsDetailForm.html
  8. 4 4
      style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsWmsIncomelotForm.html
  9. 57 0
      style24.batch/src/main/java/com/style24/batch/biz/dao/TsbCommonDao.java
  10. 8 0
      style24.batch/src/main/java/com/style24/batch/biz/dao/TsbGoodsDao.java
  11. 4 4
      style24.batch/src/main/java/com/style24/batch/biz/dao/TsbWmsGoodsDao.java
  12. 19 3
      style24.batch/src/main/java/com/style24/batch/biz/job/goods/TsbGoodsWmsIncomelotJob.java
  13. 15 1
      style24.batch/src/main/java/com/style24/batch/biz/job/goods/TsbGoodsWmsMeasurementJob.java
  14. 57 0
      style24.batch/src/main/java/com/style24/batch/biz/service/TsbCommonService.java
  15. 21 6
      style24.batch/src/main/java/com/style24/batch/biz/service/TsbGoodsService.java
  16. 7 7
      style24.batch/src/main/java/com/style24/batch/biz/service/TsbWmsGoodsService.java
  17. 4 1
      style24.batch/src/main/java/com/style24/persistence/domain/GoodsIfIncomelot.java
  18. 2 1
      style24.batch/src/main/java/com/style24/persistence/domain/GoodsIfIncomelotitem.java
  19. 8 8
      style24.batch/src/main/java/com/style24/persistence/domain/GoodsIfMeasurement.java
  20. 33 0
      style24.batch/src/main/java/com/style24/persistence/domain/GoodsIfProductsku.java
  21. 64 0
      style24.batch/src/main/java/com/style24/persistence/mybatis/shop/TsbCommon.xml
  22. 71 0
      style24.batch/src/main/java/com/style24/persistence/mybatis/shop/TsbGoods.xml
  23. 29 6
      style24.batch/src/main/java/com/style24/persistence/mybatis/wms/TsbWmsGoods.xml
  24. 1 1
      style24.front/target/m2e-wtp/web-resources/META-INF/maven/com.style24.front/style24.front/pom.properties
  25. 3 1
      style24.scm/src/main/java/com/style24/persistence/domain/Goods.java
  26. 22 0
      style24.scm/src/main/java/com/style24/persistence/mybatis/shop/TssGoods.xml
  27. 8 0
      style24.scm/src/main/java/com/style24/scm/biz/dao/TssGoodsDao.java
  28. 42 22
      style24.scm/src/main/java/com/style24/scm/biz/service/TssGoodsService.java
  29. 56 8
      style24.scm/src/main/webapp/WEB-INF/views/goods/GoodsDetailForm.html

+ 19 - 0
style24.admin/src/main/java/com/style24/admin/biz/dao/TsaGoodsDao.java

@@ -29,6 +29,7 @@ import com.style24.persistence.domain.Option;
 import com.style24.persistence.domain.ReinboundInform;
 import com.style24.persistence.domain.Video;
 import com.style24.persistence.domain.WmsColorMapping;
+import com.style24.persistence.domain.WmsGoods;
 import com.style24.persistence.domain.WmsSeasonMapping;
 import com.style24.persistence.domain.WmsStyleYearMapping;
 
@@ -386,6 +387,14 @@ public interface TsaGoodsDao {
 	 */
 	void deleteGoodsDesc(GoodsDesc godsDesc);
 
+	/**
+	 * 상품 상세 정보 이력 생성
+	 * @param createGoodsDetailDesc
+	 * @author eskim
+	 * @since 2021. 01. 04
+	 */
+	public void createGoodsDetailDescHst(GoodsDesc godsDesc);
+
 	/**
 	 * 상품 상세정보 등록
 	 *
@@ -1059,4 +1068,14 @@ public interface TsaGoodsDao {
 	 */
 	public void updateFreeGoods(FreeGoods freeGoods);
 
+
+
+	/**
+	 * WMS입고상품관리 목록 조회
+	 * @param goodsSearch
+	 * @return Collection<WmsGoods>
+	 * @author eskim
+	 * @since 2021. 01. 04
+	 */
+	Collection<WmsGoods> getGoodsWmsIncomelotList(WmsGoods wmsGoods);
 }

+ 56 - 22
style24.admin/src/main/java/com/style24/admin/biz/service/TsaGoodsService.java

@@ -47,6 +47,7 @@ import com.style24.persistence.domain.ReinboundInform;
 import com.style24.persistence.domain.SearchData;
 import com.style24.persistence.domain.Video;
 import com.style24.persistence.domain.WmsColorMapping;
+import com.style24.persistence.domain.WmsGoods;
 import com.style24.persistence.domain.WmsSeasonMapping;
 import com.style24.persistence.domain.WmsStyleYearMapping;
 
@@ -481,27 +482,38 @@ public class TsaGoodsService {
 		GoodsDesc goods = new GoodsDesc();
 		goods.setGoodsCd(resultGoods.getGoodsCd());
 
-		//		goods.setDescGb("10");
-		//		String goodsDesc = this.getGoodsDescList(goods);
-		//		resultGoods.setGoodsDesc(goodsDesc);
+		// 상품 상세 타이틀
+		goods.setDescGb("10");
+		String goodsTitlesDesc = this.getGoodsDescList(goods);
+		resultGoods.setGoodsTitlesDesc(goodsTitlesDesc);
 
-		// 상품 상세 pc 상단
+		// 상품 상세 내용
 		goods.setDescGb("20");
+		String goodsContentsDesc = this.getGoodsDescList(goods);
+		resultGoods.setGoodsContentsDesc(goodsContentsDesc);
+
+		// 상품 상세 특징
+		goods.setDescGb("30");
+		String goodsCharacterDesc = this.getGoodsDescList(goods);
+		resultGoods.setGoodsCharacterDesc(goodsCharacterDesc);
+
+		// 상품 상세 pc 상단
+		goods.setDescGb("40");
 		String goodsPcTopDesc = this.getGoodsDescList(goods);
 		resultGoods.setGoodsPcTopDesc(goodsPcTopDesc);
 
 		// 상품 상세  pc 하단
-		goods.setDescGb("30");
+		goods.setDescGb("50");
 		String goodsPcDownDesc = this.getGoodsDescList(goods);
 		resultGoods.setGoodsPcDownDesc(goodsPcDownDesc);
 
 		// 상품 상세 mobile 상단
-		goods.setDescGb("40");
+		goods.setDescGb("60");
 		String goodsMobileTopDesc = this.getGoodsDescList(goods);
 		resultGoods.setGoodsMobileTopDesc(goodsMobileTopDesc);
 
-		// 상품 상세 mpbile 하단
-		goods.setDescGb("50");
+		// 상품 상세 mobile 하단
+		goods.setDescGb("70");
 		String goodsMobileDownDesc = this.getGoodsDescList(goods);
 		resultGoods.setGoodsMobileDownDesc(goodsMobileDownDesc);
 
@@ -523,6 +535,8 @@ public class TsaGoodsService {
 			for (GoodsDesc tmpGoodsDesc : goodsDescList) {
 				goodsDescSb.append(tmpGoodsDesc.getGoodsDesc());
 			}
+		}else {
+			goodsDescSb.append("");
 		}
 		return goodsDescSb.toString();
 	}
@@ -1088,40 +1102,47 @@ public class TsaGoodsService {
 	 * @since 2020. 10. 27.
 	 */
 	private void saveGoodsDetailDesc(Goods goods) {
-		// 상품상세 구분(10:상품설명, 20:상위컨텐츠, 30:하위컨텐츠, 40:하위컨텐츠-모바일, 50:상위컨텐츠-모바일)
+		// 상품상세 구분(10:상품타이틀,20:상품타이틀내용,30:상품특징,40:상위컨텐츠,50:하위컨텐츠,60:하위컨텐츠-모바일,70:상위컨텐츠-모바일)
 		GoodsDesc goodsDesc = new GoodsDesc();
 		goodsDesc.setGoodsCd(goods.getGoodsCd());
 		goodsDesc.setRegNo(goods.getRegNo());
 		goodsDesc.setUpdNo(goods.getUpdNo());
 
-		// PC 상단
+		// AS-IS 상세 정보 이력 처리
+		goodsDao.createGoodsDetailDescHst(goodsDesc);
+
+		// 상세 타이틀
 		goodsDesc.setDescGb("10");
-		goodsDesc.setGoodsDesc(goods.getGoodsPcTopDesc());
+		goodsDesc.setGoodsDesc(goods.getGoodsTitlesDesc());
 		this.saveGoodsDesc(goodsDesc);
 
-		// PC 하단
+		// 상세 내용
 		goodsDesc.setDescGb("20");
-		goodsDesc.setGoodsDesc(goods.getGoodsPcTopDesc());
+		goodsDesc.setGoodsDesc(goods.getGoodsContentsDesc());
 		this.saveGoodsDesc(goodsDesc);
 
-		// 공용 하단
+		// 상세 특징
 		goodsDesc.setDescGb("30");
-		goodsDesc.setGoodsDesc(goods.getGoodsPcDownDesc());
+		goodsDesc.setGoodsDesc(goods.getGoodsCharacterDesc());
 		this.saveGoodsDesc(goodsDesc);
 
-		// MO 상단
+		// PC 상단
 		goodsDesc.setDescGb("40");
-		goodsDesc.setGoodsDesc(goods.getGoodsMobileTopDesc());
+		goodsDesc.setGoodsDesc(goods.getGoodsPcTopDesc());
 		this.saveGoodsDesc(goodsDesc);
 
-		//		// 상품상세 저장
+		// PC 하단
+		goodsDesc.setDescGb("50");
+		goodsDesc.setGoodsDesc(goods.getGoodsPcDownDesc());
+		this.saveGoodsDesc(goodsDesc);
 
-		//
-		//		// 세트상품의 구서상품으로 있을경우 처리
-		//		this.saveGoodsSetDesc(goodsDesc);
+		// MO 상단
+		goodsDesc.setDescGb("60");
+		goodsDesc.setGoodsDesc(goods.getGoodsMobileTopDesc());
+		this.saveGoodsDesc(goodsDesc);
 
 		// MO 하단
-		goodsDesc.setDescGb("50");
+		goodsDesc.setDescGb("70");
 		goodsDesc.setGoodsDesc(goods.getGoodsMobileDownDesc());
 		this.saveGoodsDesc(goodsDesc);
 
@@ -2634,4 +2655,17 @@ public class TsaGoodsService {
 
 	}
 
+	/**
+	 * WMS입고상품관리 목록 조회
+	 *
+	 * @param goodsSearch
+	 * @return Collection<WmsGoods>
+	 * @author eskim
+	 * @since 2021. 01. 04
+	 */
+	public Collection<WmsGoods> getGoodsWmsIncomelotList(WmsGoods wmsGoods) {
+		return goodsDao.getGoodsWmsIncomelotList(wmsGoods);
+	}
+
+
 }

+ 17 - 2
style24.admin/src/main/java/com/style24/admin/biz/web/TsaGoodsController.java

@@ -57,6 +57,7 @@ import com.style24.persistence.domain.ReinboundInform;
 import com.style24.persistence.domain.User;
 import com.style24.persistence.domain.Video;
 import com.style24.persistence.domain.WmsColorMapping;
+import com.style24.persistence.domain.WmsGoods;
 import com.style24.persistence.domain.WmsSeasonMapping;
 import com.style24.persistence.domain.WmsStyleYearMapping;
 
@@ -1243,7 +1244,7 @@ public class TsaGoodsController extends TsaBaseController {
 	 * @author eskim
 	 * @since 2020. 10. 16
 	 */
-	@GetMapping("/wms/instock/form")
+	@GetMapping("/wms/incomelot/form")
 	public ModelAndView wmsInstockForm() {
 		ModelAndView mav = new ModelAndView();
 
@@ -1256,11 +1257,25 @@ public class TsaGoodsController extends TsaBaseController {
 		// 품목
 		mav.addObject("itemkindList", rendererService.getAllItemkindList());
 
-		mav.setViewName("goods/GoodsWmsInstockForm");
+		mav.setViewName("goods/GoodsWmsIncomelotForm");
 
 		return mav;
 	}
 
+	/**
+	 * WMS입고상품관리 목록 조회
+	 *
+	 * @return
+	 * @author eskim
+	 * @since 2021. 01. 04
+	 */
+	@PostMapping("/wms/incomelot/list")
+	@ResponseBody
+	public Collection<WmsGoods> getGoodsWmsIncomelotList(@RequestBody WmsGoods wmsGoods) {
+
+		return goodsService.getGoodsWmsIncomelotList(wmsGoods);
+	}
+
 	/**
 	 * 상품품목변경관리 화면
 	 *

+ 3 - 1
style24.admin/src/main/java/com/style24/persistence/domain/Goods.java

@@ -78,11 +78,13 @@ public class Goods extends TscBaseDomain {
 	private String brandGrpNm;		//브랜드그룹명
 	private int brandNo;			// 브랜드번호
 
-	private String goodsDesc;
 	private String goodsPcTopDesc;
 	private String goodsPcDownDesc;
 	private String goodsMobileTopDesc;
 	private String goodsMobileDownDesc;
+	private String goodsTitlesDesc;
+	private String goodsContentsDesc;
+	private String goodsCharacterDesc;
 	private String chkDescKeep = "N";
 //
 	private String chDataYn = "N";

+ 37 - 0
style24.admin/src/main/java/com/style24/persistence/domain/WmsGoods.java

@@ -0,0 +1,37 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * wms 상품 정보 Domain
+ *
+ * @author eskim
+ * @since 2021. 01. 04
+ */
+@SuppressWarnings("serial")
+@Data
+public class WmsGoods extends TscBaseDomain {
+
+	private Integer productNo;		//wms상품번호
+	private int productCode;		//wms상품코드
+	private String productName;		//상품명
+	private String skucode;			//옵션번호
+	private int normalQty;			//일반수량
+	private int brokenQty;			//불량수량
+	private int totalQty;			//총수량
+	private String modelNo;			//모델번호
+	private int providerNo;			//공급처번호
+	private String providerName;	//공급처명
+	private int brandNo;			//브랜드번호
+	private String brandName;		//브랜드명
+	private String goodsRegDt;		//상품등록일시
+	private String goodsRegGb;		//상품등록구분(G:상품, F:사은품)
+
+	private String supplyCompCd;
+	private String brandCd;
+	private String stDate;
+	private String edDate;
+
+}

+ 68 - 1
style24.admin/src/main/java/com/style24/persistence/mybatis/shop/TsaGoods.xml

@@ -1638,6 +1638,28 @@
 		WHERE GOODS_CD = #{goodsCd}
 	</update>
 	
+	<!-- 상품 상세 정보 이력 생성 -->
+	<insert id="createGoodsDetailDescHst" parameterType="GoodsDesc">
+		/* TsaGoods.createGoodsDetailDescHst */
+		INSERT INTO TB_GOODS_DESC_HST (
+		    GOODS_CD
+		  , DESC_GB
+		  , SEQ
+		  , GOODS_DESC
+		  , REG_NO
+		  , REG_DT
+		)
+		SELECT GOODS_CD
+		     , DESC_GB
+		     , SEQ
+		     , GOODS_DESC
+		     , #{regNo}
+		     , NOW()
+		FROM TB_GOODS_DESC
+		WHERE GOODS_CD = #{goodsCd}
+		ORDER BY DESC_GB, DESC_GB
+	</insert>
+	
 	<!-- 상품 상세정보 삭제 -->
 	<delete id="deleteGoodsDesc" parameterType="GoodsDesc">
 		/* TsaGoods.deleteGoodsDesc */
@@ -3626,5 +3648,50 @@
 		  , UPD_NO = #{updNo}
 		  , UPD_DT = NOW()
 		WHERE PRODUCT_NO = #{productNo}
-	</update>
+	</update>
+	
+	<!-- WMS입고상품 목록 -->
+	<select id="getGoodsWmsIncomelotList" parameterType="WmsGoods" resultType="WmsGoods">
+		/* TsaGoods.getGoodsWmsIncomelotList */
+		SELECT A.PRODUCT_NO
+		     , A.PRODUCT_CODE
+		     , A.PRODUCT_NAME
+		     , A.SKUCODE
+		     , A.NORMAL_QTY
+		     , A.BROKEN_QTY
+		     , A.TOTAL_QTY
+		     , A.MODEL_NO
+		     , A.PROVIDER_NO
+		     , A.PROVIDER_NAME
+		     , A.BRAND_NO
+		     , A.BRAND_NAME
+		     , A.GOODS_REG_DT
+		     , A.GOODS_REG_GB
+		     , FN_GET_USER_NM(A.REG_NO) AS REG_NM
+		     , DATE_FORMAT(A.REG_DT,'%Y%m%d%H%i%S') AS REG_DT
+		     , FN_GET_USER_NM(A.UPD_NO) AS UPD_NM
+		     , DATE_FORMAT(A.UPD_DT,'%Y%m%d%H%i%S') AS UPD_DT
+		FROM TB_WMS_GOODS A
+		LEFT OUTER JOIN TB_BRAND B ON A.BRAND_NO = B.BRAND_NO 
+		LEFT OUTER JOIN TB_SUPPLY_COMPANY S ON A.PROVIDER_NO = S.PROVIDER_NO
+		WHERE GOODS_REG_GB IS NULL   /* 온라인 미등록 상품 */
+		<if test="modelNo != null and modelNo != ''">
+		AND UPPER(A.MODEL_NO) = CONCAT('%',UPPER(#{modelNo}),'%') 
+		</if>
+		<if test="stDate != null and stDate != ''">
+		AND A.REG_DT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
+		</if>
+		<if test="edDate != null and edDate != ''">
+		<![CDATA[
+		AND A.REG_DT < DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
+		]]>
+		</if>
+		<if test="supplyCompCd != null and supplyCompCd != ''">
+		AND UPPER(S.SUPPLY_COMP_CD) = UPPER(#{supplyCompCd}) 
+		</if>
+		<if test="brandCd != null and brandCd != ''">
+		AND UPPER(B.BRAND_CD) = UPPER(#{brandCd}) 
+		</if>
+		ORDER BY A.UPD_DT DESC
+	</select>
 </mapper>

+ 62 - 10
style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsDetailForm.html

@@ -14,13 +14,12 @@
  * 1.0  2020.10.23   eskim       최초 작성
  *******************************************************************************
  -->
-	<div class="modalPopup" data-width="1500"> <!-- data-width="1500" data-height="870" -->
+	<div class="modalPopup" data-width="1500" > <!-- data-width="1500" data-height="870" -->
 		<div class="panelStyle">
 			<div class="panelTitle">
 				<h2>상품상세</h2>
 				<button type="button" class="close" onclick="fnGoodsDetailClose()"><i class="fa fa-times"></i></button>
 			</div>
-			<div class="panelContent">
 			<form id="goodsDetailForm" name="goodsDetailForm" action="#" th:method="post">
 				<input type="hidden" id="mode" name="mode" th:value="${params.mode}"/>
 				<input type="hidden" id="goodsCd" name="goodsCd" th:value="${params.goodsCd}"/>
@@ -36,6 +35,7 @@
 				<input type="hidden" id="goodsType" name="goodsType" />
 				<input type="hidden" id="goodsComposeList" name="goodsComposeList" />
 				<input type="hidden" id="repGoodsCd" name="repGoodsCd" /> <!-- 대표상품(딜 가격) -->
+			<div class="panelContent">
 				<table class="frmStyle">
 					<colgroup>
 						<col width="11%"/>
@@ -372,12 +372,31 @@
 						<li class="tab" id="goodstab3">
 							<!-- TAB3 CONTENTS AREA -->
 							<div class="panelStyle">
+								<table class="frmStyle">
+									<colgroup>
+										<col width="12%"/>
+										<col/>
+									</colgroup>
+									<tr>
+										<th>상세설명</th>
+										<td><label class="chkBox"><input type="checkbox" name="chkDescKeep" checked="checked" value="Y">정보유지<span></span></label>
+										</td>
+									</tr>
+								</table>
 								<!-- TABS SPACE -->
 								<div class="tabsJr">
+									<!-- TABS NAVI -->
+									<ul class="tabsJrNav">
+										<li class="on"><a href="#goodstab11">타이틀/내용/특징</a></li>
+										<li><a href="#goodstab12">상세html</a></li>
+									</ul>
+									<!-- //TABS NAVI -->
 									<!-- TABS CONTENT -->
 									<ul class="tabsJrCont">
+										<!-- TAB11 CONTENTS AREA -->
 										<!-- TAB -->
 										<li class="tabJr on" id="goodstab11">
+											<div class="panelStyle">
 											<!-- TAB11 CONTENTS AREA -->
 											<table class="frmStyle">
 											<colgroup>
@@ -385,10 +404,35 @@
 												<col/>
 											</colgroup>
 											<tr>
-												<th>상세설명</th>
-												<td><label class="chkBox"><input type="checkbox" name="chkDescKeep" checked="checked" value="Y">정보유지<span></span></label>
+												<th>타이틀</th>
+												<td><input type="text" class= "w100p" id="goodsTitlesDesc" name="goodsTitlesDesc" maxlength="100" />
+												</td>
+											</tr>
+											<tr>
+												<th>내용</th>
+												<td><div class="tabJrContArea">
+													<textarea class="textareaR3 summernote" name="goodsContentsDesc" id="goodsContentsDesc"></textarea>
+													</div>
 												</td>
 											</tr>
+											<tr>
+												<th>상품 특징</th>
+												<td><div class="tabJrContArea">
+													<textarea class="textareaR3 summernote" name="goodsCharacterDesc" id="goodsCharacterDesc"></textarea>
+													</div>
+												</td>
+											</tr>
+											</table>
+											</div>
+										</li>
+										<li class="tabJr" id="goodstab12">
+											<div class="panelStyle">
+												<!-- TAB11 CONTENTS AREA -->
+												<table class="frmStyle">
+											<colgroup>
+												<col width="12%"/>
+												<col/>
+											</colgroup>
 											<tr>
 												<th>상위(PC)</th>
 												<td><div class="tabJrContArea">
@@ -418,6 +462,7 @@
 												</td>
 											</tr>
 											</table>
+											</div>
 										</li>
 										<!-- //TAB -->
 									</ul>
@@ -502,8 +547,9 @@
 					<!-- //TABS BUTTON AREA -->
 				</div>
 				<!-- //TABS SPACE -->
-			</form>
+			
 			</div>	<!--  class=panelContent -->
+			</form>
 		</div>	<!--  class=panelStyle -->
 	</div> <!--  class=modalPopup -->
 <script type="text/javascript" src="/ux/plugins/summernote/summernote.js?v=2020103001"></script>
@@ -893,12 +939,18 @@
 			$('#goodsDetailForm input[name=certNum]').val(result.certNum);
 			$('#goodsDetailForm input[name=certNumOrg]').val(result.certNum);
 			
+			
+			
 			//상품상세
+			$('#goodsDetailForm input[name=goodsTitlesDesc]').val(result.goodsTitlesDesc);
 			// Summernote에 값 세팅
-			gagaSn.setContents('#goodsPcTopDesc', result.goodsPcTopDesc);
-			gagaSn.setContents('#goodsMobileTopDesc', result.goodsMobileTopDesc);
-			gagaSn.setContents('#goodsPcDownDesc', result.goodsPcDownDesc);
-			gagaSn.setContents('#goodsMobileDownDesc', result.goodsMobileDownDesc);
+			gagaSn.setContents('#goodsContentsDesc', result.goodsContentsDesc); 
+			gagaSn.setContents('#goodsCharacterDesc', result.goodsCharacterDesc);
+			gagaSn.setContents('#goodsPcTopDesc', result.goodsPcTopDesc); 
+			gagaSn.setContents('#goodsMobileTopDesc', result.goodsMobileTopDesc); 
+			gagaSn.setContents('#goodsPcDownDesc', result.goodsPcDownDesc); 
+			gagaSn.setContents('#goodsMobileDownDesc', result.goodsMobileDownDesc); 
+			
 
 			if (!gagajf.isNull(result.niClsfNm)){
 				$('#goodsDetailForm').find('#itemkindNoti').html('품목기준 고시분류 : ' + result.niClsfNm);
@@ -1692,7 +1744,7 @@
 		//대표여부 Y  존재하는지 확인
 		var checkRepYn = false;
 		optCheck = false;
-		$.each(allData, function(index, item) { debugger;
+		$.each(allData, function(index, item) { 
 			if (index == 0){
 				comSelfGoodsYn = item.selfGoodsYn;
 				comSupplyCompCd = item.supplyCompCd;

+ 4 - 4
style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsWmsInstockForm.html → style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsWmsIncomelotForm.html

@@ -3,7 +3,7 @@
 	xmlns:th="http://www.thymeleaf.org">
 <!--
  *******************************************************************************
- * @source  : GoodsWmsInstockForm.html
+ * @source  : GoodsWmsIncomelotForm.html
  * @desc    : WMS입고상품관리 화면
  *============================================================================
  * SISUN
@@ -22,7 +22,7 @@
 		<!-- 메뉴 설명 -->
 		<div class="infoBox menu-desc">
 		</div>
-		<form id="goodsUnregisterListForm" name="goodsUnregisterListForm" action="#" th:action="@{'/goods/unregister/list'}">
+		<form id="goodsUnregisterListForm" name="goodsUnregisterListForm" action="#" th:action="@{'/goods/wms/incomelot/list'}">
 		<input type="hidden" id="searchGb" name="searchGb" />
 		<input type="hidden" id="dateGbn" name="dateGbn" value="R" />
  		<!-- 패널 영역1 -->
@@ -49,9 +49,9 @@
 								<option value="">[전체]</option>
 							</select>
 						</td>
-						<th>상품코드<i class="star"></i></th>
+						<th>모델번호<i class="star"></i></th>
 						<td>
-							<input id="goodsCd" name=goodsCd type="text" class="w150"  maxlength="20"/>
+							<input id="modelNo" name=modelNo type="text" class="w150"  maxlength="20"/>
 						</td>
 					</tr>
 					<tr>

+ 57 - 0
style24.batch/src/main/java/com/style24/batch/biz/dao/TsbCommonDao.java

@@ -0,0 +1,57 @@
+package com.style24.batch.biz.dao;
+
+import org.springframework.stereotype.Repository;
+
+import com.style24.core.support.annotation.ShopDs;
+
+/**
+ * 공통 Dao
+ *
+ * @author eskim
+ * @since 2021. 01. 04
+ */
+@ShopDs
+@Repository
+public interface TsbCommonDao {
+
+//	/**
+//	 * 시퀀스 조회
+//	 *
+//	 * @param value - 시퀀스명
+//	 * @return
+//	 * @author gagamel
+//	 * @since 2019. 8. 5
+//	 */
+//	String getNextSequence(String value);
+
+	/**
+	 * WMS 연동 여부
+	 *
+	 * @param
+	 * @return
+	 * @author eskim
+	 * @since 2021. 01. 04
+	 */
+	String getWmsSyncYn();
+
+//	/**
+//	 * 기본답변문구내용 조회
+//	 *
+//	 * @param basicAnswer - 답변일련번호
+//	 * @return
+//	 * @author gagamel
+//	 * @since 2020. 3. 30
+//	 */
+//	TsbBasicAnswer getBasicAnswer(TsbBasicAnswer basicAnswer);
+//
+//	/**
+//	 * 공통코드 목록
+//	 *
+//	 * @param commoncode - 공통코드
+//	 * @return Collection<TsbCommonCode> - 공통코드
+//	 * @author  card007
+//	 * @since  2020. 07. 07
+//	 */
+//	Collection<TsbCommonCode> getCommonCodeList(TsbCommonCode commoncode);
+
+}

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

@@ -265,4 +265,12 @@ public interface TsbGoodsDao {
 	 * @since 2021. 01. 01
 	 */
 	void saveGoodsIfIncomelotitem(GoodsIfIncomelotitem goodsIfIncomelotitem);
+
+	/**
+	 * 온라인 입고 상품 처리
+	 *
+	 * @author eskim
+	 * @since 2021. 01. 04
+	 */
+	void saveWmsGoods(GoodsIfIncomelot goodsIfIncomelot);
 }

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

@@ -23,16 +23,16 @@ public interface TsbWmsGoodsDao {
 	 * @author eskim
 	 * @since 2021. 01. 01
 	 */
-	Collection<GoodsIfMeasurement> getWmsMeasurementList();
+	Collection<GoodsIfMeasurement> getWmsMeasurementList(String jobdate);
 
 	/**
-	 * 입고 목록 
+	 * 입고 목록
 	 *
 	 * @param goods
 	 * @author eskim
 	 * @since 2021. 01. 01
 	 */
-	Collection<GoodsIfIncomelot> getWmsIncomelotList();
+	Collection<GoodsIfIncomelot> getWmsIncomelotList(String jobdate);
 
 	/**
 	 * 입고 상품목록
@@ -41,6 +41,6 @@ public interface TsbWmsGoodsDao {
 	 * @author eskim
 	 * @since 2021. 01. 01
 	 */
-	Collection<GoodsIfIncomelotitem> getWmsIncomelotitemList();
+	Collection<GoodsIfIncomelotitem> getWmsIncomelotitemList(String jobdate);
 
 }

+ 19 - 3
style24.batch/src/main/java/com/style24/batch/biz/job/goods/TsbGoodsWmsIncomelotJob.java

@@ -4,11 +4,14 @@ 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.GoodsIfIncomelotitem;
 
 import lombok.extern.slf4j.Slf4j;
 
+import com.gagaframework.web.util.GagaDateUtil;
+
 /**
  * WMS 입고 연용
  *
@@ -22,12 +25,22 @@ public class TsbGoodsWmsIncomelotJob extends TsbAbstractJob<GoodsIfIncomelotitem
 	@Autowired
 	private TsbGoodsService goodsService;
 
+	@Autowired
+	private TsbCommonService commonService;
+
 	private int succCnt = 0;
 	private int failCnt = 0;
+	private String jobdate = "";
 
 	@Override
 	public GoodsIfIncomelotitem 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;
+		}
 		GoodsIfIncomelotitem goodsIfIncomelotitem = new GoodsIfIncomelotitem();
 		return goodsIfIncomelotitem;
 	}
@@ -40,11 +53,14 @@ public class TsbGoodsWmsIncomelotJob extends TsbAbstractJob<GoodsIfIncomelotitem
 	@Override
 	public GoodsIfIncomelotitem write(GoodsIfIncomelotitem goodsIfIncomelotitem) throws Exception {
 
+		jobdate = GagaDateUtil.getOffsetDate(-1);	//전일자
+
 		//wms 입고 정보 처리
-		goodsService.saveGoodsWmsIncomelot();
+		goodsService.saveGoodsWmsIncomelot(jobdate);
+
+		//온라인 입고 상품 처리
+		goodsService.saveWmsGoods(jobdate);
 
-		//온라인 입고 처리
-		//goodsService.saveGoodsWms();
 		return goodsIfIncomelotitem;
 	}
 

+ 15 - 1
style24.batch/src/main/java/com/style24/batch/biz/job/goods/TsbGoodsWmsMeasurementJob.java

@@ -4,11 +4,14 @@ 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.GoodsIfMeasurement;
 
 import lombok.extern.slf4j.Slf4j;
 
+import com.gagaframework.web.util.GagaDateUtil;
+
 /**
  * WMS 실측사이즈 연용
  *
@@ -22,12 +25,22 @@ public class TsbGoodsWmsMeasurementJob extends TsbAbstractJob<GoodsIfMeasurement
 	@Autowired
 	private TsbGoodsService goodsService;
 
+	@Autowired
+	private TsbCommonService commonService;
+
 	private int succCnt = 0;
 	private int failCnt = 0;
+	private String jobdate = "";
 
 	@Override
 	public GoodsIfMeasurement 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;
+		}
 		GoodsIfMeasurement goodsIfMeasurement = new GoodsIfMeasurement();
 		return goodsIfMeasurement;
 	}
@@ -40,7 +53,8 @@ public class TsbGoodsWmsMeasurementJob extends TsbAbstractJob<GoodsIfMeasurement
 	@Override
 	public GoodsIfMeasurement write(GoodsIfMeasurement goodsIfMeasurement) throws Exception {
 
-		goodsService.saveGoodsWmsMeasurement();
+		jobdate = GagaDateUtil.getOffsetDate(-1);	//전일자
+		goodsService.saveGoodsWmsMeasurement(jobdate);
 		return goodsIfMeasurement;
 	}
 

+ 57 - 0
style24.batch/src/main/java/com/style24/batch/biz/service/TsbCommonService.java

@@ -0,0 +1,57 @@
+package com.style24.batch.biz.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.style24.batch.biz.dao.TsbCommonDao;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 공통 Service
+ *
+ * @author eskim
+ * @since 2021. 01. 04
+ */
+@Service
+@Slf4j
+public class TsbCommonService {
+
+	@Autowired
+	private TsbCommonDao commonDao;
+//
+//	/**
+//	 * 시퀀스 조회
+//	 *
+//	 * @param sequenceName - 시퀀스명
+//	 * @return String
+//	 * @author gagamel
+//	 * @since 2019. 8. 25
+//	 */
+//	public String getNextSequence(String sequenceName) {
+//		return commonDao.getNextSequence(sequenceName);
+//	}
+
+	/**
+	 * ERP Sync 옵션
+	 *
+	 * @return
+	 * @author eskim
+	 * @since 2021. 01. 04
+	 */
+	public String getWmsSyncYn() {
+		return commonDao.getWmsSyncYn();
+	}
+
+//	/**
+//	 * 공통코드 목록
+//	 *
+//	 * @param TsbCommonCode - 공통코드
+//	 * @return Collection<TsbCommonCode> - 공통코드
+//	 * @author card007
+//	 * @since 2020. 07. 07
+//	 */
+//	public Collection<TsbCommonCode> getCommonCodeList(TsbCommonCode commonCode) {
+//		return commonDao.getCommonCodeList(commonCode);
+//	}
+}

+ 21 - 6
style24.batch/src/main/java/com/style24/batch/biz/service/TsbGoodsService.java

@@ -354,10 +354,10 @@ public class TsbGoodsService {
 	 * @since 2021. 01. 01
 	 */
 	@Transactional("shopTxnManager")
-	public void saveGoodsWmsMeasurement() {
+	public void saveGoodsWmsMeasurement(String jobdate) {
 
 		// wms 대상건 조회 (등록, 수정건 조회)
-		Collection<GoodsIfMeasurement> goodsMeasurementList = wmsGoodsService.getWmsMeasurementList();
+		Collection<GoodsIfMeasurement> goodsMeasurementList = wmsGoodsService.getWmsMeasurementList(jobdate);
 
 		for (GoodsIfMeasurement goodsMeasurement : goodsMeasurementList) {
 			goodsDao.saveGoodsIfMeasurement(goodsMeasurement);
@@ -372,24 +372,39 @@ public class TsbGoodsService {
 	 * @since 2021. 01. 01
 	 */
 	@Transactional("shopTxnManager")
-	public void saveGoodsWmsIncomelot() {
+	public void saveGoodsWmsIncomelot(String jobdate) {
 
 		// wms 입고목록 조회 (등록, 수정건 조회)
-		Collection<GoodsIfIncomelot> goodsIfIncomelotList = wmsGoodsService.getWmsIncomelotList();
+		Collection<GoodsIfIncomelot> goodsIfIncomelotList = wmsGoodsService.getWmsIncomelotList(jobdate);
 
 		for (GoodsIfIncomelot goodsIfIncomelot : goodsIfIncomelotList) {
 			goodsDao.saveGoodsIfIncomelot(goodsIfIncomelot);
 		}
 
 		// wms 입고상품목록 조회 (등록, 수정건 조회)
-		Collection<GoodsIfIncomelotitem> goodsIfIncomelotitemList = wmsGoodsService.getWmsIncomelotitemList();
+		Collection<GoodsIfIncomelotitem> goodsIfIncomelotitemList = wmsGoodsService.getWmsIncomelotitemList(jobdate);
 
 		for (GoodsIfIncomelotitem goodsIfIncomelotitem : goodsIfIncomelotitemList) {
 			goodsDao.saveGoodsIfIncomelotitem(goodsIfIncomelotitem);
 		}
+	}
 
-		//
+	/**
+	 * 온라인 입고 상품 처리
+	 *
+	 * @return
+	 * @author eskim
+	 * @since 2021. 01. 01
+	 */
+	@Transactional("shopTxnManager")
+	public void saveWmsGoods(String jobdate) {
+		GoodsIfIncomelot goodsIfIncomelot = new GoodsIfIncomelot();
+		goodsIfIncomelot.setRegNo(TsbConstants.REG_NO);
+		goodsIfIncomelot.setUpdNo(TsbConstants.REG_NO);
+		goodsIfIncomelot.setJobdate(jobdate);
+		goodsDao.saveWmsGoods(goodsIfIncomelot);
 
 	}
 
+
 }

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

@@ -32,8 +32,8 @@ public class TsbWmsGoodsService {
 	 * @author eskim
 	 * @since 2021. 01. 01
 	 */
-	public Collection<GoodsIfMeasurement> getWmsMeasurementList() {
-		return wmsGoodsDao.getWmsMeasurementList();
+	public Collection<GoodsIfMeasurement> getWmsMeasurementList(String jobdate) {
+		return wmsGoodsDao.getWmsMeasurementList(jobdate);
 	}
 
 	/**
@@ -43,19 +43,19 @@ public class TsbWmsGoodsService {
 	 * @author eskim
 	 * @since 2021. 01. 01
 	 */
-	public Collection<GoodsIfIncomelot> getWmsIncomelotList() {
-		return wmsGoodsDao.getWmsIncomelotList();
+	public Collection<GoodsIfIncomelot> getWmsIncomelotList(String jobdate) {
+		return wmsGoodsDao.getWmsIncomelotList(jobdate);
 	}
 
 	/**
-	 * WMS 입고 상품목록 
+	 * WMS 입고 상품목록
 	 *
 	 * @return
 	 * @author eskim
 	 * @since 2021. 01. 01
 	 */
-	public Collection<GoodsIfIncomelotitem> getWmsIncomelotitemList() {
-		return wmsGoodsDao.getWmsIncomelotitemList();
+	public Collection<GoodsIfIncomelotitem> getWmsIncomelotitemList(String jobdate) {
+		return wmsGoodsDao.getWmsIncomelotitemList(jobdate);
 	}
 
 }

+ 4 - 1
style24.batch/src/main/java/com/style24/persistence/domain/GoodsIfIncomelot.java

@@ -5,7 +5,7 @@ import com.style24.persistence.TscBaseDomain;
 import lombok.Data;
 
 /**
- * 상품 입고정보 Domain
+ * 상품 wms 입고정보 Domain
  *
  * @author eskim
  * @since 2021. 01. 01
@@ -22,4 +22,7 @@ public class GoodsIfIncomelot extends TscBaseDomain {
 	private String brandname;	//브랜드명
 	private String dateincome;	//wms생성일
 
+
+	private String jobdate; 	// 작업일 YYYYMMDD
+
 }

+ 2 - 1
style24.batch/src/main/java/com/style24/persistence/domain/GoodsIfIncomelotitem.java

@@ -5,7 +5,7 @@ import com.style24.persistence.TscBaseDomain;
 import lombok.Data;
 
 /**
- * 상품 입고상품정보 Domain
+ * 상품 wms 입고상품정보 Domain
  *
  * @author eskim
  * @since 2021. 01. 01
@@ -25,5 +25,6 @@ public class GoodsIfIncomelotitem extends TscBaseDomain {
 	private int normalqty;	//일반수량
 	private int brokenqty;	//불량수량
 	private int totalqty;	//총수량
+	private String modelno;	//모델번호
 
 }

+ 8 - 8
style24.batch/src/main/java/com/style24/persistence/domain/GoodsIfMeasurement.java

@@ -15,19 +15,19 @@ import lombok.Data;
 public class GoodsIfMeasurement extends TscBaseDomain {
 
 	private String skucode;		//옵션번호
-	private String productno;	//상품 번호
-	private String productcode;	//상품 코드
+	private int productno;	//상품 번호
+	private int productcode;	//상품 코드
 	private String typecd;	//상하의 타입
 	private String washingmethod;	//세탁방법
-	private String value1;	//치수1
-	private String value2;	//치수2
-	private String value3;	//치수3
-	private String value4;	//치수4
-	private String value5;	//치수5
+	private float value1;	//치수1
+	private float value2;	//치수2
+	private float value3;	//치수3
+	private float value4;	//치수4
+	private float value5;	//치수5
 	private String memo;	//메모
 	private String dateinserted;	//등록일 yyyy-mm-dd hh:mi:ss
 	private String datelastmodified;	//수정일 yyyy-mm-dd hh:mi:ss
 	private String isuse;	//사용여부(1:Y, 0 N)
-	private String userlastmodified;	//수정자
+	private int userlastmodified;	//수정자
 
 }

+ 33 - 0
style24.batch/src/main/java/com/style24/persistence/domain/GoodsIfProductsku.java

@@ -0,0 +1,33 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 상품 WMS 옵션재고 Domain
+ *
+ * @author eskim
+ * @since 2021. 01. 04
+ */
+@SuppressWarnings("serial")
+@Data
+public class GoodsIfProductsku extends TscBaseDomain {
+
+	private String skucode;		//옵션번호
+	private String skumodelno;	//옵션모델번호
+	private int productno;		//상품번호
+	private String productcode;	//상품코드
+	private String option1;		//옵션1(색상)
+	private String option2;		//옵션2(사이즈)
+	private String option3;		//옵션3(스타일)-미사용
+	private int sellingstockamount;	//판매재고수량
+	private String sellingstocktypecd;	//판매재고유형
+	private int limitstockamount;		//
+	private String vendorskumodelno;	//업체옵션모델번호
+	private String vendorskucode;		//업체옵션코드
+	private String isvirtualstock;		//
+	private String datevirtualstock;	//
+	private String skucode88;			//88코드
+
+}

+ 64 - 0
style24.batch/src/main/java/com/style24/persistence/mybatis/shop/TsbCommon.xml

@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!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.TsbCommonDao">
+	
+	<!-- 시퀀스 값 조회 -->
+	<select id="getNextSequence" parameterType="String" resultType="String">
+		/* TsbCommon.getNextSequence */
+		SELECT ${value}.NEXTVAL AS SQ
+		FROM   DUAL
+	</select>
+	
+	<!-- WMS 연동 여부 -->
+	<select id="getWmsSyncYn" resultType="String">
+		/* TsbCommon.getWmsSyncYn */
+		SELECT UPPER(NVL(USE_YN,'N')) AS WMS_SYNC_YN
+		FROM TB_COMMON_CODE
+		WHERE CD_GB = 'G077'
+		AND CD = 'WMSSYNCYN'
+	</select>
+	
+	<!-- 기본답변문구 조회 -->
+	<select id="getBasicAnswer" parameterType="TsbBasicAnswer" resultType="TsbBasicAnswer">
+		/* TsbCommon.getBasicAnswer */
+		SELECT ANS_TITLE   --답변제목
+		     , ANS_CONTENT --답변내용
+		FROM   TB_BASIC_ANS
+		WHERE   USE_YN = 'Y'
+		<if test="ansSq != null and ansSq != ''">
+		AND     ANS_SQ = #{ansSq}
+		</if>
+		<if test="kkoCd != null and kkoCd != ''">
+		AND     KKO_CD = #{kkoCd}
+		</if>
+	</select>
+
+	<select id="getCommonCodeList" parameterType="TsbCommonCode" resultType="TsbCommonCode">
+		/* TsbCommon.getCommonCodeList */
+		SELECT CD
+		, CD_NM
+		FROM   TB_COMMON_CODE
+		WHERE  1 = 1
+		<if test="useYn != null and useYn != ''">
+			AND    USE_YN = #{useYn}
+		</if>
+		AND    CD_GB = #{cdGb}
+		<if test="cd != null and cd != ''">
+			AND    CD = #{cd}
+		</if>
+		<if test="cdNm != null and cdNm != ''">
+			AND    CD_NM = #{cdNm}
+		</if>
+		<if test="cdDesc != null and cdDesc != ''">
+			AND    CD_DESC = #{cdDesc}
+		</if>
+		<if test="exceptCds != null and exceptCds != ''">
+			AND    CD NOT IN
+			<foreach collection="exceptCds" item="item" index="index"  open="(" close=")" separator=",">
+				#{item}
+			</foreach>
+		</if>
+		ORDER  BY CD_GB, DISP_ORD
+	</select>
+	
+</mapper>

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

@@ -1169,6 +1169,7 @@
 		     , NORMALQTY
 		     , BROKENQTY
 		     , TOTALQTY
+		     , MODELNO
 		     , UPD_DT
 		)
 		(
@@ -1183,6 +1184,7 @@
 		     , #{normalqty}
 		     , #{brokenqty}
 		     , #{totalqty}
+		     , #{modelno}
 		     , NOW()
 		)
 		ON DUPLICATE KEY UPDATE
@@ -1195,6 +1197,75 @@
 		     , NORMALQTY = #{normalqty}
 		     , BROKENQTY = #{brokenqty}
 		     , TOTALQTY = #{totalqty}
+		     , MODELNO = #{modelno}
+		     , UPD_DT = NOW()
+	</insert>
+	
+	<!--WMS 상품 저장-->
+	<insert id="saveWmsGoods" parameterType="GoodsIfIncomelot" >
+		/* TsbGoods.saveWmsGoods */
+		INSERT INTO TB_WMS_GOODS (
+		       PRODUCTNO 
+		     , PRODUCTCODE 
+		     , PRODUCTNAME 
+		     , SKUCODE 
+		     , NORMALQTY 
+		     , BROKENQTY 
+		     , TOTALQTY 
+		     , MODELNO 
+		     , PROVIDERNO
+		     , PROVIDERNAME
+		     , BRANDNO
+		     , BRANDNAME
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT 
+		)
+		SELECT B.PRODUCTNO 
+		     , B.PRODUCTCODE 
+		     , B.PRODUCTNAME 
+		     , B.SKUCODE 
+		     , B.NORMALQTY 
+		     , B.BROKENQTY 
+		     , B.TOTALQTY 
+		     , B.MODELNO 
+		     , A.PROVIDERNO
+		     , A.PROVIDERNAME
+		     , A.BRANDNO
+		     , A.BRANDNAME 
+		     , #{regNo}
+		     , NOW()
+		     , #{updNo}
+		     , NOW()
+		FROM TB_IF_INCOMELOT  A
+		INNER JOIN TB_IF_INCOMELOTITEM B ON A.LOTNO = B.LOTNO 
+		WHERE 1 = 1
+		<choose>
+		    <when test='jobdate != null and jobdate != ""'>
+		AND A.UPD_DT >= DATE_FORMAT(DATE_FORMAT(#{jobdate}, '%Y%m%d'), '%Y%m%d%H%i%S') 
+		<![CDATA[
+		AND A.UPD_DT < DATE_FORMAT(DATE_ADD(DATE_FORMAT(#{jobdate}, '%Y%m%d'), INTERVAL 1 DAY), '%Y%m%d%H%i%S')
+		]]>
+		    </when>
+		    <otherwise>
+		AND A.UPD_DT >= DATE_FORMAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 DAY), '%Y%m%d'), '%Y%m%d%H%i%S') 
+		<![CDATA[
+		AND A.UPD_DT < DATE_FORMAT(DATE_ADD(DATE_FORMAT(NOW(), '%Y%m%d'), INTERVAL 1 DAY), '%Y%m%d%H%i%S')
+		]]>
+		    </otherwise>
+		</choose>
+		ON DUPLICATE KEY UPDATE
+		       PRODUCTNAME = IF(GOODS_REG_GB IS NULL, B.PRODUCTNAME, TB_WMS_GOODS.PRODUCTNAME)
+		     , NORMALQTY = IF(GOODS_REG_GB IS NULL, B.NORMALQTY, TB_WMS_GOODS.NORMALQTY)
+		     , BROKENQTY = IF(GOODS_REG_GB IS NULL, B.BROKENQTY, TB_WMS_GOODS.BROKENQTY)
+		     , TOTALQTY = IF(GOODS_REG_GB IS NULL, B.TOTALQTY, TB_WMS_GOODS.TOTALQTY)
+		     , MODELNO = IF(GOODS_REG_GB IS NULL, B.MODELNO, TB_WMS_GOODS.MODELNO)
+		     , PROVIDERNO = IF(GOODS_REG_GB IS NULL, A.PROVIDERNO, TB_WMS_GOODS.PROVIDERNO)
+		     , PROVIDERNAME = IF(GOODS_REG_GB IS NULL, A.PROVIDERNAME, TB_WMS_GOODS.PROVIDERNAME)
+		     , BRANDNO = IF(GOODS_REG_GB IS NULL, A.BRANDNO, TB_WMS_GOODS.BRANDNO)
+		     , BRANDNAME = IF(GOODS_REG_GB IS NULL, A.BRANDNAME, TB_WMS_GOODS.BRANDNAME)
+		     , UPD_NO = #{updNo}
 		     , UPD_DT = NOW()
 	</insert>
 	

+ 29 - 6
style24.batch/src/main/java/com/style24/persistence/mybatis/wms/TsbWmsGoods.xml

@@ -21,11 +21,19 @@
 		     , ISUSE
 		     , USERLASTMODIFIED
 		FROM TB_IF_MEASUREMENT
-		WHERE CONVERT(CHAR(8),DATELASTMODIFIED,112) = DATEADD(day,-1, GETDATE())
+		WHERE 1 = 1 
+		<choose>
+		    <when test='jobdate != null and jobdate != ""'>
+		AND CONVERT(CHAR(8),DATELASTMODIFIED,112) = #{jobdate}
+		    </when>
+		    <otherwise>
+		AND CONVERT(CHAR(8),DATELASTMODIFIED,112) = CONVERT(CHAR(8),DATEADD(day,-1, GETDATE()),112)
+		    </otherwise>
+		</choose>
 	</select>
 	
 	<!-- wms 입고 목록   -->
-	<select id="getWmsIncomelotList"  resultType="GoodsIfIncomelot">
+	<select id="getWmsIncomelotList"  parameterType="String" resultType="GoodsIfIncomelot">
 		/* TsbWmsGoods.getWmsIncomelotList */
 		SELECT LOTNO
 		     , PURCHASENO
@@ -35,11 +43,19 @@
 		     , BRANDNAME
 		     , CONVERT(CHAR(19),DATEINCOME,120) AS DATEINCOME  /* yyyy-mm-dd hh:mi:ss */
 		FROM TB_IF_INCOMELOT
-		WHERE CONVERT(CHAR(8),DATEINCOME,112) = DATEADD(day,-1, GETDATE())
+		WHERE 1 = 1 
+		<choose>
+		    <when test='jobdate != null and jobdate != ""'>
+		AND CONVERT(CHAR(8),DATEINCOME,112) = #{jobdate}
+		    </when>
+		    <otherwise>
+		AND CONVERT(CHAR(8),DATEINCOME,112) = CONVERT(CHAR(8),DATEADD(day,-1, GETDATE()),112)
+		    </otherwise>
+		</choose>
 	</select>
 	
 	<!-- wms 입고 상품목록   -->
-	<select id="getWmsIncomelotitemList"  resultType="GoodsIfIncomelotitem">
+	<select id="getWmsIncomelotitemList" parameterType="String"  resultType="GoodsIfIncomelotitem">
 		/* TsbWmsGoods.getWmsIncomelotitemList */
 		SELECT LOTNO
 		     , ITEMNO
@@ -53,8 +69,15 @@
 		     , BROKENQTY
 		     , TOTALQTY
 		FROM TB_IF_INCOMELOTITEM
-		WHERE CONVERT(CHAR(8),DATEINCOME,112) = DATEADD(day,-1, GETDATE())
+		WHERE 1 = 1 
+		<choose>
+		    <when test='jobdate != null and jobdate != ""'>
+		AND CONVERT(CHAR(8),DATEINCOME,112) = #{jobdate}
+		    </when>
+		    <otherwise>
+		AND CONVERT(CHAR(8),DATEINCOME,112) = CONVERT(CHAR(8),DATEADD(day,-1, GETDATE()),112)
+		    </otherwise>
+		</choose>
 	</select>
-	
 
 </mapper>

+ 1 - 1
style24.front/target/m2e-wtp/web-resources/META-INF/maven/com.style24.front/style24.front/pom.properties

@@ -1,5 +1,5 @@
 #Generated by Maven Integration for Eclipse
-#Sun Jan 03 16:55:00 KST 2021
+#Mon Jan 04 10:43:31 KST 2021
 version=0.0.1-SNAPSHOT
 groupId=com.style24.front
 m2e.projectName=style24.front

+ 3 - 1
style24.scm/src/main/java/com/style24/persistence/domain/Goods.java

@@ -78,11 +78,13 @@ public class Goods extends TscBaseDomain {
 	private String brandGrpNm;		//브랜드그룹명
 	private int brandNo;			// 브랜드번호
 
-	private String goodsDesc;
 	private String goodsPcTopDesc;
 	private String goodsPcDownDesc;
 	private String goodsMobileTopDesc;
 	private String goodsMobileDownDesc;
+	private String goodsTitlesDesc;
+	private String goodsContentsDesc;
+	private String goodsCharacterDesc;
 	private String chkDescKeep = "N";
 //
 	private String chDataYn = "N";

+ 22 - 0
style24.scm/src/main/java/com/style24/persistence/mybatis/shop/TssGoods.xml

@@ -1254,6 +1254,28 @@
 		WHERE GOODS_CD = #{goodsCd}
 	</update>
 	
+	<!-- 상품 상세 정보 이력 생성 -->
+	<insert id="createGoodsDetailDescHst" parameterType="GoodsDesc">
+		/* TsaGoods.createGoodsDetailDescHst */
+		INSERT INTO TB_GOODS_DESC_HST (
+		    GOODS_CD
+		  , DESC_GB
+		  , SEQ
+		  , GOODS_DESC
+		  , REG_NO
+		  , REG_DT
+		)
+		SELECT GOODS_CD
+		     , DESC_GB
+		     , SEQ
+		     , GOODS_DESC
+		     , #{regNo}
+		     , NOW()
+		FROM TB_GOODS_DESC
+		WHERE GOODS_CD = #{goodsCd}
+		ORDER BY DESC_GB, DESC_GB
+	</insert>
+	
 	<!-- 상품 상세정보 삭제 -->
 	<delete id="deleteGoodsDesc" parameterType="GoodsDesc">
 		/* TssGoods.deleteGoodsDesc */

+ 8 - 0
style24.scm/src/main/java/com/style24/scm/biz/dao/TssGoodsDao.java

@@ -195,6 +195,14 @@ public interface TssGoodsDao {
 	 */
 	void deleteGoodsDesc(GoodsDesc godsDesc);
 
+	/**
+	 * 상품 상세 정보 이력 생성
+	 * @param createGoodsDetailDesc
+	 * @author eskim
+	 * @since 2021. 01. 04
+	 */
+	public void createGoodsDetailDescHst(GoodsDesc godsDesc);
+
 	/**
 	 * 상품 상세정보 등록
 	 *

+ 42 - 22
style24.scm/src/main/java/com/style24/scm/biz/service/TssGoodsService.java

@@ -307,27 +307,38 @@ public class TssGoodsService {
 		GoodsDesc goods = new GoodsDesc();
 		goods.setGoodsCd(resultGoods.getGoodsCd());
 
-		//		goods.setDescGb("10");
-		//		String goodsDesc = this.getGoodsDescList(goods);
-		//		resultGoods.setGoodsDesc(goodsDesc);
+		// 상품 상세 타이틀
+		goods.setDescGb("10");
+		String goodsTitlesDesc = this.getGoodsDescList(goods);
+		resultGoods.setGoodsTitlesDesc(goodsTitlesDesc);
 
-		// 상품 상세 pc 상단
+		// 상품 상세 내용
 		goods.setDescGb("20");
+		String goodsContentsDesc = this.getGoodsDescList(goods);
+		resultGoods.setGoodsContentsDesc(goodsContentsDesc);
+
+		// 상품 상세 특징
+		goods.setDescGb("30");
+		String goodsCharacterDesc = this.getGoodsDescList(goods);
+		resultGoods.setGoodsCharacterDesc(goodsCharacterDesc);
+
+		// 상품 상세 pc 상단
+		goods.setDescGb("40");
 		String goodsPcTopDesc = this.getGoodsDescList(goods);
 		resultGoods.setGoodsPcTopDesc(goodsPcTopDesc);
 
 		// 상품 상세  pc 하단
-		goods.setDescGb("30");
+		goods.setDescGb("50");
 		String goodsPcDownDesc = this.getGoodsDescList(goods);
 		resultGoods.setGoodsPcDownDesc(goodsPcDownDesc);
 
 		// 상품 상세 mobile 상단
-		goods.setDescGb("40");
+		goods.setDescGb("60");
 		String goodsMobileTopDesc = this.getGoodsDescList(goods);
 		resultGoods.setGoodsMobileTopDesc(goodsMobileTopDesc);
 
-		// 상품 상세 mpbile 하단
-		goods.setDescGb("50");
+		// 상품 상세 mobile 하단
+		goods.setDescGb("70");
 		String goodsMobileDownDesc = this.getGoodsDescList(goods);
 		resultGoods.setGoodsMobileDownDesc(goodsMobileDownDesc);
 
@@ -349,6 +360,8 @@ public class TssGoodsService {
 			for (GoodsDesc tmpGoodsDesc : goodsDescList) {
 				goodsDescSb.append(tmpGoodsDesc.getGoodsDesc());
 			}
+		}else {
+			goodsDescSb.append("");
 		}
 		return goodsDescSb.toString();
 	}
@@ -649,40 +662,47 @@ public class TssGoodsService {
 	 * @since 2020. 10. 27.
 	 */
 	private void saveGoodsDetailDesc(Goods goods) {
-		// 상품상세 구분(10:상품설명, 20:상위컨텐츠, 30:하위컨텐츠, 40:하위컨텐츠-모바일, 50:상위컨텐츠-모바일)
+		// 상품상세 구분(10:상품타이틀,20:상품타이틀내용,30:상품특징,40:상위컨텐츠,50:하위컨텐츠,60:하위컨텐츠-모바일,70:상위컨텐츠-모바일)
 		GoodsDesc goodsDesc = new GoodsDesc();
 		goodsDesc.setGoodsCd(goods.getGoodsCd());
 		goodsDesc.setRegNo(goods.getRegNo());
 		goodsDesc.setUpdNo(goods.getUpdNo());
 
-		// PC 상단
+		// AS-IS 상세 정보 이력 처리
+		goodsDao.createGoodsDetailDescHst(goodsDesc);
+
+		// 상세 타이틀
 		goodsDesc.setDescGb("10");
-		goodsDesc.setGoodsDesc(goods.getGoodsPcTopDesc());
+		goodsDesc.setGoodsDesc(goods.getGoodsTitlesDesc());
 		this.saveGoodsDesc(goodsDesc);
 
-		// PC 하단
+		// 상세 내용
 		goodsDesc.setDescGb("20");
-		goodsDesc.setGoodsDesc(goods.getGoodsPcTopDesc());
+		goodsDesc.setGoodsDesc(goods.getGoodsContentsDesc());
 		this.saveGoodsDesc(goodsDesc);
 
-		// 공용 하단
+		// 상세 특징
 		goodsDesc.setDescGb("30");
-		goodsDesc.setGoodsDesc(goods.getGoodsPcDownDesc());
+		goodsDesc.setGoodsDesc(goods.getGoodsCharacterDesc());
 		this.saveGoodsDesc(goodsDesc);
 
-		// MO 상단
+		// PC 상단
 		goodsDesc.setDescGb("40");
-		goodsDesc.setGoodsDesc(goods.getGoodsMobileTopDesc());
+		goodsDesc.setGoodsDesc(goods.getGoodsPcTopDesc());
 		this.saveGoodsDesc(goodsDesc);
 
-		//		// 상품상세 저장
+		// PC 하단
+		goodsDesc.setDescGb("50");
+		goodsDesc.setGoodsDesc(goods.getGoodsPcDownDesc());
+		this.saveGoodsDesc(goodsDesc);
 
-		//
-		//		// 세트상품의 구서상품으로 있을경우 처리
-		//		this.saveGoodsSetDesc(goodsDesc);
+		// MO 상단
+		goodsDesc.setDescGb("60");
+		goodsDesc.setGoodsDesc(goods.getGoodsMobileTopDesc());
+		this.saveGoodsDesc(goodsDesc);
 
 		// MO 하단
-		goodsDesc.setDescGb("50");
+		goodsDesc.setDescGb("70");
 		goodsDesc.setGoodsDesc(goods.getGoodsMobileDownDesc());
 		this.saveGoodsDesc(goodsDesc);
 	}

+ 56 - 8
style24.scm/src/main/webapp/WEB-INF/views/goods/GoodsDetailForm.html

@@ -20,7 +20,6 @@
 				<h2>상품상세</h2>
 				<button type="button" class="close" onclick="fnGoodsDetailClose()"><i class="fa fa-times"></i></button>
 			</div>
-			<div class="panelContent">
 			<form id="goodsDetailForm" name="goodsDetailForm" action="#" th:method="post">
 				<input type="hidden" id="mode" name="mode" th:value="${params.mode}"/>
 				<input type="hidden" id="goodsCd" name="goodsCd" th:value="${params.goodsCd}"/>
@@ -37,6 +36,7 @@
 				<input type="hidden" id="goodsType" name="goodsType" />
 				<input type="hidden" id="goodsComposeList" name="goodsComposeList" />
 				<input type="hidden" id="costPrice" name="costPrice" />
+			<div class="panelContent">
 				<table class="frmStyle">
 					<colgroup>
 						<col width="11%"/>
@@ -362,12 +362,31 @@
 						<li class="tab" id="goodstab3">
 							<!-- TAB3 CONTENTS AREA -->
 							<div class="panelStyle">
+								<table class="frmStyle">
+									<colgroup>
+										<col width="12%"/>
+										<col/>
+									</colgroup>
+									<tr>
+										<th>상세설명</th>
+										<td><label class="chkBox"><input type="checkbox" name="chkDescKeep" checked="checked" value="Y">정보유지<span></span></label>
+										</td>
+									</tr>
+								</table>
 								<!-- TABS SPACE -->
 								<div class="tabsJr">
+									<!-- TABS NAVI -->
+									<ul class="tabsJrNav">
+										<li class="on"><a href="#goodstab11">타이틀/내용/특징</a></li>
+										<li><a href="#goodstab12">상세html</a></li>
+									</ul>
+									<!-- //TABS NAVI -->
 									<!-- TABS CONTENT -->
 									<ul class="tabsJrCont">
+										<!-- TAB11 CONTENTS AREA -->
 										<!-- TAB -->
 										<li class="tabJr on" id="goodstab11">
+											<div class="panelStyle">
 											<!-- TAB11 CONTENTS AREA -->
 											<table class="frmStyle">
 											<colgroup>
@@ -375,10 +394,35 @@
 												<col/>
 											</colgroup>
 											<tr>
-												<th>상세설명</th>
-												<td><label class="chkBox"><input type="checkbox" name="chkDescKeep" checked="checked" value="Y">정보유지<span></span></label>
+												<th>타이틀</th>
+												<td><input type="text" class= "w100p" id="goodsTitlesDesc" name="goodsTitlesDesc" maxlength="100" />
 												</td>
 											</tr>
+											<tr>
+												<th>내용</th>
+												<td><div class="tabJrContArea">
+													<textarea class="textareaR3 summernote" name="goodsContentsDesc" id="goodsContentsDesc"></textarea>
+													</div>
+												</td>
+											</tr>
+											<tr>
+												<th>상품 특징</th>
+												<td><div class="tabJrContArea">
+													<textarea class="textareaR3 summernote" name="goodsCharacterDesc" id="goodsCharacterDesc"></textarea>
+													</div>
+												</td>
+											</tr>
+											</table>
+											</div>
+										</li>
+										<li class="tabJr" id="goodstab12">
+											<div class="panelStyle">
+												<!-- TAB11 CONTENTS AREA -->
+												<table class="frmStyle">
+											<colgroup>
+												<col width="12%"/>
+												<col/>
+											</colgroup>
 											<tr>
 												<th>상위(PC)</th>
 												<td><div class="tabJrContArea">
@@ -408,6 +452,7 @@
 												</td>
 											</tr>
 											</table>
+											</div>
 										</li>
 										<!-- //TAB -->
 									</ul>
@@ -492,8 +537,8 @@
 					<!-- //TABS BUTTON AREA -->
 				</div>
 				<!-- //TABS SPACE -->
-			</form>
 			</div>	<!--  class=panelContent -->
+			</form>
 		</div>	<!--  class=panelStyle -->
 	</div> <!--  class=modalPopup -->
 <script type="text/javascript" src="/ux/plugins/summernote/summernote.js?v=2020103001"></script>
@@ -739,11 +784,14 @@
 			$('#goodsDetailForm input[name=delvFeeCdOrg]').val(result.delvFeeCd);
 			
 			//상품상세
+			$('#goodsDetailForm input[name=goodsTitlesDesc]').val(result.goodsTitlesDesc);
 			// 공지내용. Summernote에 값 세팅
-			gagaSn.setContents('#goodsPcTopDesc', result.goodsPcTopDesc);
-			gagaSn.setContents('#goodsMobileTopDesc', result.goodsMobileTopDesc);
-			gagaSn.setContents('#goodsPcDownDesc', result.goodsPcDownDesc);
-			gagaSn.setContents('#goodsMobileDownDesc', result.goodsMobileDownDesc);
+			gagaSn.setContents('#goodsContentsDesc', result.goodsContentsDesc); 
+			gagaSn.setContents('#goodsCharacterDesc', result.goodsCharacterDesc);
+			gagaSn.setContents('#goodsPcTopDesc', result.goodsPcTopDesc); 
+			gagaSn.setContents('#goodsMobileTopDesc', result.goodsMobileTopDesc); 
+			gagaSn.setContents('#goodsPcDownDesc', result.goodsPcDownDesc); 
+			gagaSn.setContents('#goodsMobileDownDesc', result.goodsMobileDownDesc); 
 
 			if (!gagajf.isNull(result.niClsfNm)){
 				$('#goodsDetailForm').find('#itemkindNoti').html('품목기준 고시분류 : ' + result.niClsfNm);