Parcourir la source

[ST24PRJ-630] [MD개선][SCM] 사이즈별 재고현황 그리드 품절처리

jmh il y a 4 ans
Parent
commit
1ee23f0c47

+ 11 - 0
src/main/java/com/style24/persistence/mybatis/shop/TssStock.xml

@@ -506,5 +506,16 @@
 		WHERE GOODS_CD = #{goodsCd}
 		AND OPT_CD = #{optCd}
 	</update>
+	
+	<!-- 상품 사이즈별 품절여부 변경2 -->
+	<update id="updateStockSoldOut2" parameterType="Option">
+		/* TsaStock.updateStockSoldOut2 */
+		UPDATE TB_OPTION
+		SET UPD_NO = #{updNo}
+		  , UPD_DT = NOW()
+		  , SOLDOUT_YN = 'Y'
+		WHERE GOODS_CD = #{goodsCd}
+		AND OPT_CD = #{optCd}
+	</update>
 
 </mapper>

+ 9 - 0
src/main/java/com/style24/scm/biz/dao/TssStockDao.java

@@ -55,5 +55,14 @@ public interface TssStockDao {
 	 * @since 2020. 11. 17
 	 */
 	void updateStockSoldOut(Option stock);
+	
+	/**
+	 * 상품 사이즈별 품절여부 변경
+	 *
+	 * @param stock
+	 * @author eskim
+	 * @since 2020. 11. 17
+	 */
+	void updateStockSoldOut2(Option stock);
 
 }

+ 16 - 0
src/main/java/com/style24/scm/biz/service/TssStockService.java

@@ -217,4 +217,20 @@ public class TssStockService {
 		}
 	}
 
+	/**
+	 * 사이즈별재고현황 -일괄품절처리
+	 *
+	 * @param goods
+	 * @return
+	 * @throws Exception
+	 * @author jmh
+	 * @since 2021. 12. 21
+	 */
+	@Transactional("shopTxnManager")
+	public void saveGoodsSizeSoldout(Collection<Option> optionList) {
+		for( Option stock : optionList) {
+			stock.setUpdNo(TssSession.getInfo().getUserNo());
+			stockDao.updateStockSoldOut2(stock);
+		}
+	}
 }

+ 26 - 6
src/main/java/com/style24/scm/biz/web/TssStockController.java

@@ -19,6 +19,11 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.gagaframework.excel.GagaExcelUtil;
+import com.gagaframework.web.parameter.GagaMap;
+import com.gagaframework.web.rest.server.GagaResponse;
+import com.gagaframework.web.util.GagaDateUtil;
+import com.gagaframework.web.util.GagaFileUtil;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.persistence.TscPageRequest;
 import com.style24.persistence.domain.Color;
@@ -32,12 +37,6 @@ import com.style24.scm.support.security.session.TssSession;
 
 import lombok.extern.slf4j.Slf4j;
 
-import com.gagaframework.excel.GagaExcelUtil;
-import com.gagaframework.web.parameter.GagaMap;
-import com.gagaframework.web.rest.server.GagaResponse;
-import com.gagaframework.web.util.GagaDateUtil;
-import com.gagaframework.web.util.GagaFileUtil;
-
 /**
  * 상품 재고 Controller
  *
@@ -213,4 +212,25 @@ public class TssStockController extends TssBaseController {
 
 		return super.ok("");
 	}
+	
+	/**
+	 * 사이즈별재고현황 -일괄품절처리
+	 *
+	 * @param goods
+	 * @return
+	 * @throws Exception
+	 * @author jmh
+	 * @since 2021. 12. 21
+	 */
+	@PostMapping("/sizeSoldout/save")
+	@ResponseBody
+	public GagaResponse saveGoodsSizeSoldout(@RequestBody Collection<Option> optionList) throws Exception {
+		if (!"G001_0000".equals(TssSession.getInfo().getRoleCd()) && !"G001_B000".equals(TssSession.getInfo().getRoleCd())
+			&& !"G001_E000".equals(TssSession.getInfo().getRoleCd())) {
+			throw new IllegalStateException("권한이 없습니다.");
+		}
+		
+		stockService.saveGoodsSizeSoldout(optionList);
+		return super.ok(message.getMessage("SUCC_0004"));
+	}
 }

+ 28 - 1
src/main/webapp/WEB-INF/views/stock/GoodsSizeStockForm.html

@@ -165,6 +165,7 @@
 					<button type="button" class="btn btn-default btn-lg" id="btnExcelSampleDownLoad">다운로드</button>
 					<button type="button" class="btn btn-base btn-lg" id="btnGoodsExcelSearch">엑셀조회</button>
 					<button type="button" class="btn btn-success btn-lg" id="btnGoodsExcelSave" th:if="${sessionInfo.roleCd == 'G001_B000' }">품절/안전재고 저장</button>
+					<button type="button" class="btn btn-success btn-lg" id="btnOptionSoldout" th:if="${sessionInfo.roleCd == 'G001_B000' or sessionInfo.roleCd == 'G001_E000'}">품절처리</button>
 				</li>
 				<li class="right">
 					검색결과 : <strong><span id="gridRowTotalCount">0</span> 건</strong>&nbsp;
@@ -202,7 +203,7 @@
 	var columnDefs = [];
 	
 	columnDefs = [
-		//{width: 40, minWidth: 40, cellClass: 'text-right', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
+		{width: 40, minWidth: 40, cellClass: 'text-right', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
 		{headerName: 'No', width: 60, cellClass: 'text-center',
 			valueGetter: function(params) { return cfnGridNumner('goodsSizeStockForm',params.node.rowIndex, 'A');}
 		},
@@ -231,6 +232,7 @@
 			valueParser: function (params) { return gagaAgGrid.lookupKey(goodsStatList, params.newValue); }
 		},
 		{headerName: "상품코드", field: "goodsCd", width: 140, cellClass: 'text-center'},
+		{headerName: "옵션코드", field: "optCd", width: 140, cellClass: 'text-center'},
 		{headerName: "색상", field: "optCd1", width: 100, cellClass: 'text-center'},
 		{headerName: "사이즈", field: "optCd2", width: 100, cellClass: 'text-center'},
 		{headerName: "품절여부", field: "soldoutYn", width: 100, cellClass: 'text-center',
@@ -531,6 +533,31 @@
 		cfnCreateCombo(actionUrl, $('#goodsSizeStockForm select[name=brandCd]'), "[전체]");
 	}
 	
+	/**************** 옵션별 품절처리  *****************************************************/
+	$("#btnOptionSoldout").on("click", function(){
+		var selectedData = gridOptions.api.getSelectedRows();
+
+		if (selectedData.length == 0) {
+			mcxDialog.alert('선택된 행이 없습니다.');
+			return false;
+		}
+		
+		mcxDialog.confirm('선택한 항목을 품절처리 하시겠습니까?',{
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function(){
+				var jsonData = JSON.stringify(selectedData);
+				gagajf.ajaxJsonSubmit('/stock/sizeSoldout/save', jsonData, fnSaveOptionSoldoutCollBack); 
+			}
+		});
+	});
+	
+	var fnSaveOptionSoldoutCollBack = function(){
+		$("#goodsSizeStockForm input[name=pageNo]").val('1');
+		fnGoodsListSearch('BASIC');
+	}
+	/**************** 옵션별 품절처리 // *****************************************************/
+	
 	$(document).ready(function() {
 		
 		// Create a agGrid