Jelajahi Sumber

한세MK와 한세드림 ERP 연동 모듈 수정

gagamel 5 tahun lalu
induk
melakukan
e9274b2252

+ 60 - 60
src/main/java/com/style24/core/biz/service/TscErpService.java

@@ -32,65 +32,65 @@ import com.google.gson.reflect.TypeToken;
 @Slf4j
 public class TscErpService {
 
-	@Autowired
-	private Environment env;
-
-	@Autowired
-	private RestTemplate restTemplate;
-	
-	/**
-	 * 매장(ERP) 실재고 조회 
-	 * @param productNo,skuCode
-	 * @return Collection<ErpStock>  매장(StockLoc),재고수량(LocQty)
-	 * @author moon
-	 * @since 2021. 03. 29
-	 */
-	public Collection<ErpStock> getErpRealStock(String styleCd, String colorCd, String sizeCd) {
-		
-		Collection<ErpStock> list = new ArrayList();
-		GagaMap resultMap = new GagaMap();
-		
-		String erpurl = env.getProperty("erp.api.goods.url");
-		erpurl = erpurl+"/StockCheck?CD_STYLE="+styleCd+"&CD_COLOR="+colorCd+"&CD_SIZE="+sizeCd+"";
-		
-		URI url = URI.create(erpurl);
-
-		try {
-			ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class);
-			HttpStatus status = responseEntity.getStatusCode();
-			
-			log.info("erpurl 호출결과: "+status.name());
-			
-			if("OK".equals(status.name())) {
-				String jsonResult = responseEntity.getBody();
-				Gson gson = new GsonBuilder().create();
-				
-				resultMap = gson.fromJson(jsonResult, GagaMap.class); 
-				
-				log.info("list {} "+list);
-				
-			
-				String StockInfo = resultMap.get("StockCheck").toString();
-				
-				List<Map<String, Object>> List = null;
-				List = gson.fromJson(StockInfo, new TypeToken<List<Map<String, Object>>>() {}.getType());
-				
-				for(int i=0; i<List.size(); i++) {
-					Map data = List.get(i);
-					ErpStock stock = new ErpStock();
-
-					stock.setStockLoc(data.get("CD_SHOP").toString());
-					stock.setLocQty((int)Double.parseDouble(data.get("QT_STOCK").toString()));
-					list.add(stock);
-				}
-				
-			}			
-		}catch(Exception e) {
-			log.info("호출 Exception: "+e.getMessage().toString());
-			list = null;
-		}
-		
-		return list;
-	}
+//	@Autowired
+//	private Environment env;
+//
+//	@Autowired
+//	private RestTemplate restTemplate;
+//	
+//	/**
+//	 * 매장(ERP) 실재고 조회 
+//	 * @param productNo,skuCode
+//	 * @return Collection<ErpStock>  매장(StockLoc),재고수량(LocQty)
+//	 * @author moon
+//	 * @since 2021. 03. 29
+//	 */
+//	public Collection<ErpStock> getErpRealStock(String styleCd, String colorCd, String sizeCd) {
+//		
+//		Collection<ErpStock> list = new ArrayList();
+//		GagaMap resultMap = new GagaMap();
+//		
+//		String erpurl = env.getProperty("erp.api.goods.url");
+//		erpurl = erpurl+"/StockCheck?CD_STYLE="+styleCd+"&CD_COLOR="+colorCd+"&CD_SIZE="+sizeCd+"";
+//		
+//		URI url = URI.create(erpurl);
+//
+//		try {
+//			ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class);
+//			HttpStatus status = responseEntity.getStatusCode();
+//			
+//			log.info("erpurl 호출결과: "+status.name());
+//			
+//			if("OK".equals(status.name())) {
+//				String jsonResult = responseEntity.getBody();
+//				Gson gson = new GsonBuilder().create();
+//				
+//				resultMap = gson.fromJson(jsonResult, GagaMap.class); 
+//				
+//				log.info("list {} "+list);
+//				
+//			
+//				String StockInfo = resultMap.get("StockCheck").toString();
+//				
+//				List<Map<String, Object>> List = null;
+//				List = gson.fromJson(StockInfo, new TypeToken<List<Map<String, Object>>>() {}.getType());
+//				
+//				for(int i=0; i<List.size(); i++) {
+//					Map data = List.get(i);
+//					ErpStock stock = new ErpStock();
+//
+//					stock.setStockLoc(data.get("CD_SHOP").toString());
+//					stock.setLocQty((int)Double.parseDouble(data.get("QT_STOCK").toString()));
+//					list.add(stock);
+//				}
+//				
+//			}			
+//		}catch(Exception e) {
+//			log.info("호출 Exception: "+e.getMessage().toString());
+//			list = null;
+//		}
+//		
+//		return list;
+//	}
 
 }

+ 43 - 42
src/main/java/com/style24/core/biz/service/TscWmsService.java

@@ -9,6 +9,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import com.style24.core.biz.dao.TscDeliveryDao;
 import com.style24.core.biz.dao.TscWmsDao;
+import com.style24.core.biz.thirdparty.HansaeErp;
 import com.style24.core.support.env.TscConstants;
 import com.style24.persistence.domain.ErpStock;
 import com.style24.persistence.domain.Order;
@@ -16,7 +17,6 @@ import com.style24.persistence.domain.WmsDelivery;
 
 import lombok.extern.slf4j.Slf4j;
 
-
 /**
  * Wms Service
  * 
@@ -29,12 +29,15 @@ public class TscWmsService {
 
 	@Autowired
 	private TscWmsDao wmsDao;
-	
+
 	@Autowired
 	private TscDeliveryDao deliveryDao;
 
+//	@Autowired
+//	private TscErpService erpService;
+
 	@Autowired
-	private TscErpService erpService;		
+	private HansaeErp hansaeErp;
 
 	/**	
 	 * 실시간 재고조회(WMS&ERP)
@@ -43,8 +46,8 @@ public class TscWmsService {
 	 * @author moon
 	 * @since  2021. 03. 28
 	 */
-	public Collection<WmsDelivery> getRealStock(Integer productNo, String skuCode, String styleCd, String colorCd, String sizeCd)  {
-		
+	public Collection<WmsDelivery> getRealStock(Integer productNo, String skuCode, String styleCd, String colorCd, String sizeCd) {
+
 		////  임시 
 		//productNo = 14475554;
 		//skuCode   = "13096364-5"; // "13096364-5"
@@ -52,41 +55,39 @@ public class TscWmsService {
 		//colorCd   = "CE";         //"CE"
 		//sizeCd    = "150";
 		//////
-		
+
 		Collection<WmsDelivery> list = new ArrayList();
 		String chk1 = "N";
 		String chk2 = "N";
-		
-		
-		WmsDelivery  wmsRtn = getWmsRealStock(productNo, skuCode);
-		
-		Collection<ErpStock> erpRtnList = erpService.getErpRealStock(styleCd, colorCd, sizeCd);
-		
-		if(wmsRtn != null ) {
+
+		WmsDelivery wmsRtn = getWmsRealStock(productNo, skuCode);
+
+		Collection<ErpStock> erpRtnList = hansaeErp.getErpRealStockList(styleCd, colorCd, sizeCd);
+
+		if (wmsRtn != null) {
 			list.add(wmsRtn);
-		} 
-		else {
+		} else {
 			chk1 = "Y";
 		}
-		
-		if(!"".equals(erpRtnList) && erpRtnList != null) {
-			for(ErpStock data : erpRtnList) {
+
+		if (!"".equals(erpRtnList) && erpRtnList != null) {
+			for (ErpStock data : erpRtnList) {
 				WmsDelivery tmp = new WmsDelivery();
 				tmp.setStockLoc(data.getStockLoc());
 				tmp.setLocQty(data.getLocQty());
 				list.add(tmp);
 			}
-		}  else {
+		} else {
 			chk2 = "Y";
 		}
-		
-		if("Y".equals(chk1) && "Y".equals(chk2)) {
+
+		if ("Y".equals(chk1) && "Y".equals(chk2)) {
 			list = null;
 		}
-		
+
 		return list;
 	}
-	
+
 	/**
 	 * WMS 실재고 조회
 	 * @param productNo,skuCode
@@ -95,15 +96,15 @@ public class TscWmsService {
 	 * @since 2021. 03. 15
 	 */
 	//@Transactional("wmsTxnManager")
-	public WmsDelivery getWmsRealStock(Integer productNo, String skuCode) {	
+	public WmsDelivery getWmsRealStock(Integer productNo, String skuCode) {
 
 		WmsDelivery wmsRtn = null;
 		WmsDelivery wmsDelv = new WmsDelivery();
 		wmsDelv.setProductNo(productNo);
 		wmsDelv.setSkuCode(skuCode);
 		wmsDelv.setWhCode(TscConstants.WH_CODE);
-		
-		log.info("wmsDelv {}"+wmsDelv);
+
+		log.info("wmsDelv {}" + wmsDelv);
 		wmsRtn = wmsDao.getRealStock(wmsDelv);
 
 		return wmsRtn;
@@ -117,16 +118,16 @@ public class TscWmsService {
 	 * @since 2021. 03. 15
 	 */
 	public String getCancelYn(Integer ordNo, Integer ordDtlNo) {
-		
+
 		WmsDelivery wmsData = new WmsDelivery();
 		wmsData.setOrdNo(ordNo);
 		wmsData.setOrdDtlNo(ordDtlNo);
-		
+
 		String result = wmsDao.getCancelYn(wmsData);
 
 		return result;
 	}
-	
+
 	/**
 	 * WMS 주문취소
 	 * @param Collection<Order>
@@ -140,43 +141,43 @@ public class TscWmsService {
 		// 세트상품 취소 
 		// 오픈시점 이전 출고data 취소시 --주문상세번호 없음. productNo, skuCode 로 비교 
 		// 사은품 취소 
-		
+
 		Integer vOrdNo = null;
-		for(Order cData : ordCancelList) {
-			
+		for (Order cData : ordCancelList) {
+
 			vOrdNo = cData.getOrdNo();
-			
+
 			//1. 주문TB 조회  PRODUCT_NO, SKU_CODE 및  세트상품일경우 포함됨.
 			WmsDelivery inData = new WmsDelivery();
 			inData.setOrdNo(cData.getOrdNo());
 			inData.setOrdDtlNo(cData.getOrdDtlNo());
 			inData.setChgQty(cData.getChgQty());
-			Collection<WmsDelivery> ordDtlList =  deliveryDao.getOrderDetailItemList(inData);
-			
+			Collection<WmsDelivery> ordDtlList = deliveryDao.getOrderDetailItemList(inData);
+
 			//1-1. WMS_IF (TB_IF_DELIVERYORDERITEM) 에 주문상세번호 있는지 체크   Y: 주문상세번호 null , N:주문상세번호 존재함.
 			String chkYn = wmsDao.getWmsOrdDtlNoYn(inData);
-			
+
 			//2. WMS_IF (TB_IF_DELIVERYORDERITEM) 주문상세 취소 업데이트 
-			for(WmsDelivery uData : ordDtlList) {
-				if("Y".equals(chkYn)) {
+			for (WmsDelivery uData : ordDtlList) {
+				if ("Y".equals(chkYn)) {
 					uData.setOrdDtlNo(null);
 				}
 				wmsDao.updateWmsIfDeliveryOrderItemCancel(uData);
 				wmsDao.updateWmsTbIfDelifixQty(uData);
 			}
 		}
-		
+
 		//3. WMS 남은 주문건수 조회  Y: 전체취소 N: 부분취소 
 		WmsDelivery sData = new WmsDelivery();
 		sData.setOrdNo(vOrdNo);
 		String cancelChk = wmsDao.getWmsAllCancelYn(sData);
-		
+
 		//4. WMS 남은 주문건수 0일경우  WMS (TB_IF_DELIVERYORDER)주문TB 취소 업데이트  (TB_IF_DELIVERYORDERITEM) 사은품 취소 업데이트 
-		if("Y".equals(cancelChk)) {
+		if ("Y".equals(cancelChk)) {
 			wmsDao.updateWmsIfDeliveryOrderCancel(sData);
 			// 사은품 취소
 			wmsDao.updateWmsIfDeliveryOrderGiftCancel(sData);
-			
+
 			wmsDao.deleteWmsTbIfDelifixQty(sData);
 		}
 	}

+ 155 - 0
src/main/java/com/style24/core/biz/thirdparty/HansaeErp.java

@@ -0,0 +1,155 @@
+package com.style24.core.biz.thirdparty;
+
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.PostConstruct;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestTemplate;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.style24.persistence.domain.ErpStock;
+
+import lombok.extern.slf4j.Slf4j;
+
+import com.gagaframework.web.parameter.GagaMap;
+
+/**
+ * 한세MK와 한세드림 ERP
+ * 
+ * @author gagamel
+ * @since 2021. 6. 7
+ */
+@Component
+@Slf4j
+public class HansaeErp {
+
+	// 상품 URL
+	private String goodsUrl = "http://erp.hansaemk.com:96/api/hsdr/Shop/GoodsInfo";
+
+	// 재고 URL
+	private String stockUrl = "http://erp.hansaemk.com:96/api/hsdr/Shop/StockCheck";
+
+	@Autowired
+	private RestTemplate restTemplate;
+
+	@PostConstruct
+	public void init() {
+		log.info("\n\n---- HansaeErp initialization started ----");
+		log.info("goodsUrl: [{}]", goodsUrl);
+		log.info("stockUrl: [{}]", stockUrl);
+		log.info("\n--- HansaeErp initialization completed ----\n");
+	}
+
+	/**	
+	 * ERP 상품별 매장재고 목록
+	 * @param  Delivery
+	 * @return 
+	 * @author moon
+	 * @since  2021. 03. 28
+	 */
+	public Collection<ErpStock> getErpGoodsStockList() {
+		Collection<ErpStock> stockList = new ArrayList<>();
+
+		try {
+			String requestUrl = goodsUrl;
+			log.info("requestUrl: {}", requestUrl);
+
+			URI url = URI.create(requestUrl);
+
+			// GET 방식으로 호출
+			ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class);
+			log.info("responseEntity.getStatusCode(): {} ", responseEntity.getStatusCode());
+
+			String jsonResult = responseEntity.getBody();
+			log.info("responseEntity.getBody(): {}", jsonResult);
+
+			Gson gson = new Gson();
+			GagaMap resultMap = gson.fromJson(jsonResult, GagaMap.class);
+
+			// 상품별 매장재고 정보
+			String goodsInfo = resultMap.get("GoodsInfo").toString();
+			log.info("goodsInfo: {}", goodsInfo);
+
+			if (StringUtils.isNotBlank(goodsInfo)) {
+				List<Map<String, Object>> dataList = gson.fromJson(goodsInfo, new TypeToken<List<Map<String, Object>>>() {
+				}.getType());
+
+				for (int i = 0; i < dataList.size(); i++) {
+					Map<String, Object> data = dataList.get(i);
+					ErpStock stock = new ErpStock();
+					stock.setCD_STYLE(data.get("CD_STYLE").toString());
+					stock.setCD_COLOR(data.get("CD_COLOR").toString());
+					stock.setCD_SIZE(data.get("CD_SIZE").toString());
+					stock.setCD_SHOP(data.get("CD_SHOP").toString());
+					stock.setQT_STOCK((int)Double.parseDouble(data.get("QT_STOCK").toString()));
+					stockList.add(stock);
+				}
+			}
+		} catch (Exception e) {
+			log.error("{}", e.getMessage().toString());
+		}
+
+		return stockList;
+	}
+
+	/**
+	 * ERP 매장 실재고 목록
+	 * @param styleCd - 스타일코드
+	 * @param colorCd - 색상코드
+	 * @param sizeCd - 사이즈코드
+	 * @return
+	 * @author moon
+	 * @since 2021. 03. 29
+	 */
+	public Collection<ErpStock> getErpRealStockList(String styleCd, String colorCd, String sizeCd) {
+		Collection<ErpStock> stockList = new ArrayList<>();
+
+		try {
+			String requestUrl = stockUrl + "?CD_STYLE=" + styleCd + "&CD_COLOR=" + colorCd + "&CD_SIZE=" + sizeCd;
+			log.info("requestUrl: {}", requestUrl);
+
+			URI url = URI.create(requestUrl);
+
+			// GET 방식으로 호출
+			ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class);
+			log.info("responseEntity.getStatusCode(): {} ", responseEntity.getStatusCode());
+
+			String jsonResult = responseEntity.getBody();
+			log.info("responseEntity.getBody(): {}", jsonResult);
+
+			Gson gson = new Gson();
+			GagaMap resultMap = gson.fromJson(jsonResult, GagaMap.class);
+
+			// 재고 정보
+			String stockCheck = resultMap.get("StockCheck").toString();
+			log.info("stockCheck: {}", stockCheck);
+
+			if (StringUtils.isNotBlank(stockCheck)) {
+				List<Map<String, Object>> dataList = gson.fromJson(stockCheck, new TypeToken<List<Map<String, Object>>>() {
+				}.getType());
+
+				for (int i = 0; i < dataList.size(); i++) {
+					Map<String, Object> data = dataList.get(i);
+					ErpStock stock = new ErpStock();
+					stock.setStockLoc(data.get("CD_SHOP").toString());
+					stock.setLocQty((int)Double.parseDouble(data.get("QT_STOCK").toString()));
+					stockList.add(stock);
+				}
+			}
+		} catch (Exception e) {
+			log.error("{}", e.getMessage().toString());
+		}
+
+		return stockList;
+	}
+
+}

+ 8 - 7
src/main/java/com/style24/persistence/domain/ErpStock.java

@@ -1,6 +1,6 @@
 package com.style24.persistence.domain;
 
-import com.style24.persistence.TscBaseDomain;
+import java.io.Serializable;
 
 import lombok.Data;
 
@@ -12,18 +12,19 @@ import lombok.Data;
  */
 @SuppressWarnings("serial")
 @Data
-public class ErpStock extends TscBaseDomain {
+public class ErpStock implements Serializable {
 
 	private String cdStyle;
 	private String cdColor;
 	private String cdSize;
-	
+
+	private String CD_STYLE;
+	private String CD_COLOR;
+	private String CD_SIZE;
 	private String CD_SHOP;
 	private int QT_STOCK;
-	
+
 	private String stockLoc;
 	private int locQty;
-	
-	
-	
+
 }