Parcourir la source

wms 색상 매핑관리 화면

eskim il y a 5 ans
Parent
commit
f706e335a1

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

@@ -18,6 +18,7 @@ import com.style24.persistence.domain.NotiInfo;
 import com.style24.persistence.domain.Notice;
 import com.style24.persistence.domain.NoticeGoods;
 import com.style24.persistence.domain.Option;
+import com.style24.persistence.domain.WmsColorMapping;
 
 import com.gagaframework.web.parameter.GagaMap;
 
@@ -99,6 +100,24 @@ public interface TsaGoodsDao {
 	 */
 	void saveNotiInfo(NotiInfo notiInfo);
 
+	/**
+	 * WMS 색상 매핑목록 조회
+	 *
+	 * @param wmsColorMapping
+	 * @return
+	 * @author eskim
+	 * @since 2020. 11. 12
+	 */
+	Collection<Color> getWmsColorMappingList(WmsColorMapping wmsColorMapping);
+
+	/**
+	 * WMS 색상 매핑 저장
+	 * @param wmsColorMapping
+	 * @author eskim
+	 * @since 2020. 11. 12
+	 */
+	void saveWmsColorMapping(WmsColorMapping wmsColorMapping);
+
 	/**
 	 * 상품 목록 건수
 	 *

+ 33 - 0
style24.admin/src/main/java/com/style24/admin/biz/service/TsaGoodsService.java

@@ -32,6 +32,7 @@ import com.style24.persistence.domain.Notice;
 import com.style24.persistence.domain.NoticeGoods;
 import com.style24.persistence.domain.Option;
 import com.style24.persistence.domain.SearchData;
+import com.style24.persistence.domain.WmsColorMapping;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -217,6 +218,38 @@ public class TsaGoodsService {
 		}
 	}
 
+	/**
+	 * WMS 색상 매핑목록 조회
+	 *
+	 * @param color
+	 * @return
+	 * @author eskim
+	 * @since 2020. 10. 16
+	 */
+	public Collection<Color> getWmsColorMappingList(WmsColorMapping wmsColorMapping) {
+		return goodsDao.getWmsColorMappingList(wmsColorMapping);
+	}
+
+	/**
+	 * WMS 색상 매핑 저장
+	 *
+	 * @param colorList
+	 * @return
+	 * @author eskim
+	 * @since 2020. 10. 16
+	 */
+	@Transactional("shopTxnManager")
+	public void saveWmsColorMapping(Collection<WmsColorMapping> wmsColorMappingList) {
+
+		for (WmsColorMapping wmsColorMapping : wmsColorMappingList) {
+
+			wmsColorMapping.setRegNo(TsaSession.getInfo().getUserNo());
+			wmsColorMapping.setUpdNo(TsaSession.getInfo().getUserNo());
+
+			goodsDao.saveWmsColorMapping(wmsColorMapping);
+		}
+	}
+
 	/**
 	 * 상품 목록 건수
 	 *

+ 52 - 0
style24.admin/src/main/java/com/style24/admin/biz/web/TsaGoodsController.java

@@ -40,6 +40,7 @@ import com.style24.persistence.domain.Itemkind;
 import com.style24.persistence.domain.NotiInfo;
 import com.style24.persistence.domain.Notice;
 import com.style24.persistence.domain.NoticeGoods;
+import com.style24.persistence.domain.WmsColorMapping;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -185,6 +186,7 @@ public class TsaGoodsController extends TsaBaseController {
 
 		return super.ok(message.getMessage("SUCC_0001"));
 	}
+
 	/**
 	 * 시즌관리 화면
 	 *
@@ -268,6 +270,56 @@ public class TsaGoodsController extends TsaBaseController {
 		return super.ok(message.getMessage("SUCC_0001"));
 	}
 
+	/**
+	 * WMS 색상 매핑 화면
+	 *
+	 * @return
+	 * @author eskim
+	 * @since 2020. 11. 12
+	 */
+	@GetMapping("/wms/color/form")
+	public ModelAndView wmsColorForm() {
+		ModelAndView mav = new ModelAndView();
+
+		Color color = new Color();
+		mav.addObject("colorList", rendererService.getColorList(color));
+
+		mav.setViewName("goods/WmsColorMappingForm");
+
+		return mav;
+	}
+
+	/**
+	 * WMS 색상 매핑 조회
+	 *
+	 * @param color
+	 * @return
+	 * @author eskim
+	 * @since 2020. 11. 12
+	 */
+	@PostMapping("/wms/color/mapping/list")
+	@ResponseBody
+	public Collection<Color> getWmsColorMappingList(@RequestBody WmsColorMapping wmsColorMapping) {
+		return goodsService.getWmsColorMappingList(wmsColorMapping);
+	}
+
+	/**
+	 * WMS 색상 매핑 저장
+	 *
+	 * @param color
+	 * @return
+	 * @author eskim
+	 * @since 2020. 11. 12
+	 */
+	@PostMapping("/wms/color/mapping/save")
+	@ResponseBody
+	public GagaResponse saveWmsColorMapping(@RequestBody Collection<WmsColorMapping> wmsColorMappingList) {
+
+		goodsService.saveWmsColorMapping(wmsColorMappingList);
+
+		return super.ok(message.getMessage("SUCC_0001"));
+	}
+
 	/**
 	 * 상품목록 화면
 	 *

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

@@ -60,6 +60,7 @@ public class Goods extends TscBaseDomain {
 	private int minOrdQty;		//최소주문수량
 	private int maxOrdQty;		//최대주문수량
 	private int dayMaxOrdQty;		//ID당1일최대구매수량
+	private String giftPackYn;		//선물포장여부
 	private String frstCfrmDt;		//최초승인일시
 	private String originCd;		//제조국(원산지)
 	private String makeYmd;		//제조연월일

+ 2 - 1
style24.admin/src/main/java/com/style24/persistence/domain/GoodsHst.java

@@ -57,8 +57,9 @@ public class GoodsHst extends TscBaseDomain {
 	private int minOrdQty;		//최소주문수량
 	private int maxOrdQty;		//최대주문수량
 	private int dayMaxOrdQty;		//ID당1일최대구매수량
+	private String giftPackYn;		//선물포장여부
 	private String frstCfrmDt;		//최초승인일시
-	private String makeNm;		//제조국(원산지)
+	private String originCd;		//제조국(원산지)
 	private String makeYmd;		//제조연월일
 	private String taxGb;		//과세구분(10:과세, 20:비과세)
 	private String erpPriceLinkYn;		//ERP가격연계여부(자사상품만 사용. Y:연계)

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

@@ -0,0 +1,23 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * WMS 색상 매핑  Domain
+ *
+ * @author eskim
+ * @since 2020. 11. 12
+ */
+@SuppressWarnings("serial")
+@Data
+public class WmsColorMapping extends TscBaseDomain {
+
+	private String supplyCompCd;
+	private String wmsColorCd;
+	private String wmsColorNm;
+	private String colorCd;
+	private String useYn;
+
+}

+ 55 - 0
style24.admin/src/main/java/com/style24/persistence/mybatis/shop/TsaGoods.xml

@@ -195,6 +195,55 @@
 		     , UPD_DT = NOW()
 	</insert>
 	
+	<!-- WMS 색상 매핑 조회 -->
+	<select id="getWmsColorMappingList" parameterType="WmsColorMapping" resultType="WmsColorMapping" >
+		/* TsaGoods.getWmsColorMappingList */
+		SELECT SUPPLY_COMP_CD
+		     , WMS_COLOR_CD
+		     , WMS_COLOR_NM
+		     , COLOR_CD
+		     , USE_YN
+		     , FN_GET_USER_NM(REG_NO) AS REG_NM
+		     , DATE_FORMAT(REG_DT, '%Y%m%d%H%i%S') AS REG_DT
+		     , FN_GET_USER_NM(UPD_NO) AS UPD_NM
+		     , DATE_FORMAT(UPD_DT, '%Y%m%d%H%i%S') AS UPD_DT
+		FROM TB_WMS_COLOR_MAPPING
+		WHERE SUPPLY_COMP_CD = #{supplyCompCd}
+		ORDER BY WMS_COLOR_CD
+	</select>
+	
+	<!-- WMS 색상 매핑 저장 -->
+	<update id="saveWmsColorMapping" parameterType="WmsColorMapping">
+		/* TsaGoods.saveWmsColorMapping */
+		INSERT INTO TB_WMS_COLOR_MAPPING (
+		       SUPPLY_COMP_CD
+		     , WMS_COLOR_CD
+		     , WMS_COLOR_NM
+		     , COLOR_CD
+		     , USE_YN
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		)
+		VALUES (
+		       #{supplyCompCd}
+		     , #{wmsColorCd}
+		     , #{wmsColorNm}
+		     , #{colorCd}
+		     , #{useYn}
+		     , #{regNo}
+		     , NOW()
+		     , #{updNo}
+		     , NOW()
+		)
+		ON DUPLICATE KEY UPDATE
+		       COLOR_CD = #{colorCd}
+		     , USE_YN = #{useYn}
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = NOW()
+	</update>
+	
 	<!-- 상품 목록 건수 -->
 	<select id="getGoodsListCount" parameterType="GoodsSearch" resultType="int">
 		/* TsaGoods.getGoodsListCount */
@@ -723,6 +772,7 @@
 		     , G.MIN_ORD_QTY
 		     , G.MAX_ORD_QTY
 		     , G.DAY_MAX_ORD_QTY
+		     , G.GIFT_PACK_YN
 		     , G.ERP_STOCK_LINK_YN
 		     , G.ERP_PRICE_LINK_YN
 		     , FN_GET_CODE_NM('G076', G.ORIGIN_CD) AS MAKE_NM
@@ -844,6 +894,7 @@
 		      , MIN_ORD_QTY
 		      , MAX_ORD_QTY
 		      , DAY_MAX_ORD_QTY
+		      , GIFT_PACK_YN
 		      , FRST_CFRM_DT
 		      , ORIGIN_CD
 		      , MAKE_YMD
@@ -896,6 +947,7 @@
 		     , MIN_ORD_QTY         
 		     , MAX_ORD_QTY         
 		     , DAY_MAX_ORD_QTY     
+		     , GIFT_PACK_YN
 		     , FRST_CFRM_DT        
 		     , ORIGIN_CD             
 		     , MAKE_YMD            
@@ -1256,6 +1308,7 @@
 		  , PNT_MRATE
 		  , SELL_FEE_RATE
 		  , FORMAL_GB
+		  , GIFT_PACK_YN
 		  , ORIGIN_CD
 		  , MAKE_YMD
 		  , TAX_GB
@@ -1296,6 +1349,7 @@
 		  , #{pntMrate}
 		  , #{sellFeeRate}
 		  , #{formalGb}
+		  , NVL(#{giftPackYn},'N')
 		  , #{mriginCd}
 		  , #{makeYmd}
 		  , #{taxGb}
@@ -1360,6 +1414,7 @@
 		  , DISTRIBUTION_GB = #{distributionGb}
 		  , AGE_GRP_CD = #{ageGrpCd}
 		  , SELL_FEE_RATE = #{sellFeeRate}
+		  , GIFT_PACK_YN = #{giftPackYn}
 		  , UPD_NO = #{updNo}
 		  , UPD_DT = NOW()
 		WHERE GOODS_CD = #{goodsCd}

+ 37 - 10
style24.admin/src/main/webapp/WEB-INF/views/goods/ColorForm.html

@@ -48,7 +48,6 @@
 	var groupColorCodeList = gagajf.convertToArray([[${groupColorCodeList}]]);
 	var groupColorCodeNmList = gagajf.convertToArray([[${groupColorCodeNmList}]]);
 
-	// specify the columns
 	// specify the columns
 	var columnDefs = [
 		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
@@ -121,14 +120,16 @@
 
 	// 행추가
 	$('#btnAddRow').on('click', function() {
-		var data = { itemkindCd: null, itemkindNm: null, itemkindEnm: null, erpItemkindCd: null, useYn: "Y" };
-		gagaAgGrid.addRowData(gridOptions, data, "itemkindCd");
+		var data = { colorCd: null, colorEnm: null, colorKnm: null, colorFile: null, colorGrpCd: null, useYn: "Y" };
+		gagaAgGrid.addRowData(gridOptions, data, "colorCd");
 	});
 
 	// 저장
-	$('#btnSave').on('click', function() {
+	$('#btnSave').on('click', function() {debugger;
 		// 변경된 데이터
-		var changedData = gridOptions.api.getSelectedRows();
+		//var changedData = gridOptions.api.getSelectedRows();
+		var changedData = gagaAgGrid.getChangedData(gridOptions);
+		var loopRowData = gagaAgGrid.getAllRowData(gridOptions);
 
 		if (changedData.length == 0) {
 			mcxDialog.alert('선택된 데이터가 없습니다.');
@@ -141,29 +142,55 @@
 
 		// 숫자 확인
 		var optCheck = false;
-		$.each(changedData, function(idx, item) {
-
+		var selIndex = 0;
+		changedData.forEach(function(item, index) {debugger;
+			
+			if(optCheck) return false;
+			
+			if (item.crud == "C"){
+				selIndex = index;
+				loopRowData.forEach(function(loopItem, loopIndex) {debugger;
+					if (selIndex != loopIndex){
+						if(item.colorCd == loopItem.colorCd){
+							optCheck = true;
+							mcxDialog.alertC("색상코드가 중복됩니다. 확인해주세요.", {
+								sureBtnText: "확인",
+								sureBtnClick: function() {
+									gridOptions.api.setFocusedCell(selIndex, "colorCd", null);
+								}
+							});
+							return;
+						}
+					}
+				});	
+			}
+			
+			if(optCheck) return false;
+				
 			if (item.colorFile.indexOf("#") !=0 ) {
 				optCheck = true;
 				mcxDialog.alertC("RGB색상코드는 #으로 시작해주세요.", {
 					sureBtnText: "확인",
 					sureBtnClick: function() {
-						gridOptions.api.setFocusedCell(idx, "colorFile", null);
+						gridOptions.api.setFocusedCell(index, "colorFile", null);
 					}
 				});
 				return false;
 			}
+			
+			if(optCheck) return false;
+			
 			if (item.colorFile.length != 7 ) {
 				optCheck = true;
 				mcxDialog.alertC("RGB색상코드는 #포함 7자리로 입력해주세요.", {
 					sureBtnText: "확인",
 					sureBtnClick: function() {
-						gridOptions.api.setFocusedCell(idx, "colorFile", null);
+						gridOptions.api.setFocusedCell(index, "colorFile", null);
 					}
 				});
 				return false;
 			}
-
+			if(optCheck) return false;
 		});
 
 		if(optCheck) {

+ 28 - 0
style24.admin/src/main/webapp/WEB-INF/views/goods/ItemkindBaseForm.html

@@ -131,6 +131,7 @@
 	$('#btnSave').on('click', function() {
 		// 변경된 데이터
 		var changedData = gagaAgGrid.getChangedData(gridOptions);
+		var loopRowData = gagaAgGrid.getAllRowData(gridOptions);
 
 		if (changedData.length == 0) {
 			mcxDialog.alert('변경된 데이터가 없습니다.');
@@ -141,6 +142,33 @@
 		if (!gagaAgGrid.validation(gridOptions, changedData))
 			return;
 	
+		var checkFlag = false;
+		var selIndex = 0;
+		changedData.forEach(function(item, index) {
+			
+			if(checkFlag) return false;
+			
+			if (item.crud == "C"){
+				selIndex = index;
+				loopRowData.forEach(function(loopItem, loopIndex) {
+					if (selIndex != loopIndex){
+						if(item.itemkindCd == loopItem.itemkindCd){
+							checkFlag = true;
+							mcxDialog.alertC("품목코드가 중복됩니다. 확인해주세요.", {
+								sureBtnText: "확인",
+								sureBtnClick: function() {
+									gridOptions.api.setFocusedCell(selIndex, "itemkindCd", null);
+								}
+							});
+							return;
+						}
+					}
+				});	
+			}
+		});
+		
+		if(checkFlag) return false;
+		
 		mcxDialog.confirm('저장하시겠습니까?', {
 			cancelBtnText: "취소",
 			sureBtnText: "확인",

+ 186 - 0
style24.admin/src/main/webapp/WEB-INF/views/goods/WmsColorMappingForm.html

@@ -0,0 +1,186 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : WmsColorMappingForm.html
+ * @desc    : WMS 색상 매핑
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2020.11.12   eskim       최초 작성
+ *******************************************************************************
+ -->
+	<div id="main">
+		<!-- 메인타이틀 영역 -->
+		<div class="main-title">
+		</div>
+		<!-- //메인타이틀 영역 -->
+		
+		<!-- 메뉴 설명 -->
+		<div class="infoBox menu-desc">
+		</div>
+		<!-- //메뉴 설명 -->
+		<form id="searchForm" name="searchForm" action="#" th:action="@{'/goods/wms/color/mapping/list'}" th:method="post">
+			<div class="panelStyle">
+				<!-- 버튼 배치 영역 -->
+				<ul class="panelBar">
+					<li>
+						<h3>업체명</h3>
+						<select name="supplyCompCd" id="supplyCompCd">
+							<option value="S0001" selected="selected">한세엠케이</option>
+							<option value="S0002">한세드림</option>
+							<option value="S006">FRJ</option>
+						</select>
+						<button type="button" class="btn btn-dark btn-sm" id="btnAddRow">행추가</button>
+					</li>
+					<li  class="right">
+						<button type="button" class="btn btn-success btn-lg" id="btnSave">저장</button>
+					</li>
+				</ul>
+				<!-- //버튼 배치 영역 -->
+				
+				<div id="gridList" style="width: 100%; height: 650px" class="ag-theme-balham"></div>
+			</div>
+		</form>
+	</div>
+
+<script th:inline="javascript">
+/*<![CDATA[*/
+	var useYnList = { "Y":"Yes", "N":"No" };
+	var colorList = gagajf.convertToArray([[${colorList}]]);
+	// specify the columns
+	var columnDefs = [
+		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
+		{headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
+		{headerName: "WMS색상코드", field: "wmsColorCd", width: 100, cellClass: 'text-center',editable: true,
+			editable : function(params){return params.data.crud=='C' ? true : false;},
+			cellEditor: 'textCellEditor',
+			cellEditorParams: { maxlength: 2, required: true, onblur: '$(this).val($(this).val().toUpperCase())' }
+		},
+		{headerName: "WMS명", field: "wmsColorNm", width: 200, cellClass: 'text-left',editable: true,
+			cellEditor: 'textCellEditor',
+			cellEditorParams: { maxlength: 50, required: true }
+		},
+		{headerName: "색상코드", field: "colorCd", width: 100, cellClass: 'text-center',editable: true,
+			cellEditor: 'agRichSelectCellEditor',
+			cellEditorParams: { values: gagaAgGrid.extractValues(colorList) },
+			valueFormatter: function (params) { return gagaAgGrid.lookupValue(colorList, params.value); },
+			valueParser: function (params) { return gagaAgGrid.lookupKey(colorList, params.newValue); }
+		},
+		{headerName: "사용여부", field: "useYn", width: 100, minWidth: 75, cellClass: 'text-center',
+			cellEditor: 'agRichSelectCellEditor',
+			cellEditorParams: { values: gagaAgGrid.extractValues(useYnList) },
+			valueFormatter: function (params) { return gagaAgGrid.lookupValue(useYnList, params.value); },
+			valueParser: function (params) { return gagaAgGrid.lookupKey(useYnList, params.newValue); }
+		},
+		{headerName: "등록자", field: "regNm" , width: 100, cellClass: 'text-center', editable: false},
+		{headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center', editable: false,
+			cellRenderer: function(params) {
+				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
+			}
+		},
+		{headerName: "수정자", field: "updNm" , width: 100, cellClass: 'text-center', editable: false},
+		{headerName: "수정일시", field: "updDt", width: 150, cellClass: 'text-center', editable: false,
+			cellRenderer: function(params) {
+				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
+			}
+		}
+	];
+
+	// Get GridOptions
+	var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
+
+	// Grid editable
+	gridOptions.defaultColDef.editable = true;
+
+	//그리드 셀에디트 하는 화면에 옵션 추가해 주면 포커스 잃을 시 에디트 바로 중지(데이터 변경후 엔터 안쳐도 됩)
+	gridOptions.stopEditingWhenGridLosesFocus = true;
+
+	// Add on options
+	gridOptions.suppressRowClickSelection = true;
+	gridOptions.rowSelection = 'multiple';
+
+	// 행추가
+	$('#btnAddRow').on('click', function() {
+		var data = { wmsColorCd: null, wmsColorNm: null, colorCd: null, useYn: "Y", supplyCompCd: $('#supplyCompCd').val() };
+		gagaAgGrid.addRowData(gridOptions, data, "wmsColorCd");
+	});
+
+	// 저장
+	$('#btnSave').on('click', function() {
+		// 변경된 데이터
+		var changedData = gagaAgGrid.getChangedData(gridOptions);
+		var loopRowData = gagaAgGrid.getAllRowData(gridOptions);
+
+		if (changedData.length == 0) {
+			mcxDialog.alert('선택된 데이터가 없습니다.');
+			return;
+		}
+
+		// Validation
+		if (!gagaAgGrid.validation(gridOptions, changedData))
+			return;
+
+		var checkFlag = false;
+		var selIndex = 0;
+		changedData.forEach(function(item, index) {
+			
+			if(checkFlag) return false;
+			
+			if (item.crud == "C"){
+				selIndex = index;
+				loopRowData.forEach(function(loopItem, loopIndex) {
+					if (selIndex != loopIndex){
+						if(item.wmsColorCd == loopItem.wmsColorCd){
+							checkFlag = true;
+							mcxDialog.alertC("WMS색상드가 중복됩니다. 확인해주세요.", {
+								sureBtnText: "확인",
+								sureBtnClick: function() {
+									gridOptions.api.setFocusedCell(selIndex, "wmsColorCd", null);
+								}
+							});
+							return;
+						}
+					}
+				});	
+			}
+		});
+		
+		if(checkFlag) return false;
+		
+		mcxDialog.confirm('저장하시겠습니까?', {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function(){
+				var jsonData = JSON.stringify(changedData);
+				gagajf.ajaxJsonSubmit('/goods/wms/color/mapping/save', jsonData, fnSearch);
+			}
+		});
+	});
+	
+	//업체변경시
+	$("#supplyCompCd").on("change", function(){
+		fnSearch();
+	});
+	
+	//조회
+	var fnSearch = function() {
+		var formId = "#searchForm";
+		gagaAgGrid.fetch($(formId).prop('action'), gridOptions, formId);
+	}
+
+	$(document).ready(function() {
+		// Create a agGrid
+		gagaAgGrid.createGrid('gridList', gridOptions);
+		
+		fnSearch();
+	});
+		
+/*]]>*/
+</script>
+
+</html>