Browse Source

자사상품등록, 상품대량수정 안전인증 추가

eskim 4 years ago
parent
commit
7b1519eab6

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

@@ -107,6 +107,8 @@ public class Goods extends TscBaseDomain {
 	private String chImgYn = "N";
 	private String chNotiYn = "N";
 	private String chStockDataYn = "N";
+	private String chSafeYn = "N";
+	private String choOtYn = "N";
 	private String chGoodsStatYn = "N";
 	private String chCfrmYn = "N";		//입점용추가
 	private int stockQtySum;

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

@@ -2246,6 +2246,127 @@
     )
   </insert>
 
+		<!-- 상품별 전시카테고리 삭제-->
+	<delete id="deleteGoodsCategory" parameterType="GoodsCategory">
+		/* TsaGoods.deleteGoodsCategory */
+		DELETE
+		FROM TB_CATE_GOODS
+		WHERE GOODS_CD = #{goodsCd}
+		<choose>
+		<when test="cateType == 'G031_20' and cateCd != null and cateCd != ''">
+		AND CATE_NO = #{cateCd}
+		</when>
+		<otherwise>
+		AND CATE_NO IN (
+			SELECT CATE_CD FROM
+			(
+				SELECT CATE1_NO AS CATE_CD
+				, CATE1_NO
+				, CATE2_NO
+				, CATE3_NO
+				, CATE4_NO
+				, CATE_TYPE
+				FROM TB_CATE_4SRCH
+				<if test="cateCd != null and cateCd1 != cateCd">
+				WHERE EXISTS (
+					SELECT 1 FROM (
+						SELECT COUNT(*) AS CATE_CNT
+						 FROM (
+							SELECT CATE_NO
+							FROM TB_CATE_GOODS
+							WHERE GOODS_CD = #{goodsCd}
+							AND CATE_NO IN (
+							    	SELECT LEAF_CATE_NO
+									FROM TB_CATE_4SRCH
+									WHERE CATE1_NO  = #{cateCd1}
+								)
+							) ALIAS_FOR_SUBQUERY
+						) ALIAS_FOR_SUBQUERY
+					<![CDATA[WHERE CATE_CNT < 2 ]]>
+				)
+				</if>
+				UNION ALL
+				SELECT CATE2_NO AS CATE_CD
+					, CATE1_NO
+					, CATE2_NO
+					, CATE3_NO
+					, CATE4_NO
+					, CATE_TYPE
+				FROM TB_CATE_4SRCH
+				<if test="cateCd != null and cateCd1 != cateCd and cateCd2 != cateCd">
+				WHERE EXISTS (
+					SELECT 1 FROM (
+						SELECT COUNT(*) AS CATE_CNT
+						FROM (
+							SELECT CATE_NO
+							FROM TB_CATE_GOODS
+							WHERE GOODS_CD = #{goodsCd}
+							AND CATE_NO IN (
+							    SELECT LEAF_CATE_NO
+								FROM TB_CATE_4SRCH
+								WHERE CATE2_NO = #{cateCd2}
+							)
+						) ALIAS_FOR_SUBQUERY
+					) ALIAS_FOR_SUBQUERY
+					<![CDATA[WHERE CATE_CNT < 2 ]]>
+				)
+				</if>
+				UNION ALL
+				SELECT CATE3_NO AS CATE_CD
+					, CATE1_NO
+					, CATE2_NO
+					, CATE3_NO
+					, CATE4_NO
+					, CATE_TYPE
+				FROM TB_CATE_4SRCH
+				<if test="cateCd != null and cateCd == cateCd4">
+				WHERE EXISTS (
+					SELECT 1 FROM (
+						SELECT COUNT(*) AS CATE_CNT
+						FROM (
+							SELECT CATE_NO
+							FROM TB_CATE_GOODS
+							WHERE GOODS_CD = #{goodsCd}
+							AND CATE_NO IN (
+							    	SELECT LEAF_CATE_NO
+									FROM TB_CATE_4SRCH
+									WHERE CATE3_NO = #{cateCd3}
+							)
+						) ALIAS_FOR_SUBQUERY
+					) ALIAS_FOR_SUBQUERY
+					<![CDATA[WHERE CATE_CNT < 2 ]]>
+				)
+				</if>
+				UNION ALL
+				SELECT CATE4_NO AS CATE_CD
+				, CATE1_NO
+				, CATE2_NO
+				, CATE3_NO
+				, CATE4_NO
+				, CATE_TYPE
+				FROM TB_CATE_4SRCH
+			) ALIAS_FOR_SUBQUERY
+			<if test="cateCd != null and cateCd1 == cateCd">
+				WHERE CATE1_NO = #{cateCd}
+			</if>
+			<if test="cateCd != null and cateCd2 == cateCd">
+				WHERE CATE2_NO = #{cateCd}
+			</if>
+			<if test="cateCd != null and cateCd3 == cateCd">
+				WHERE CATE3_NO = #{cateCd}
+			</if>
+			<if test="cateCd != null and cateCd4 == cateCd">
+				WHERE CATE4_NO = #{cateCd}
+			</if>
+			<if test="cateCd == null or cateCd == ''">
+				WHERE CATE_TYPE = 'G031_10'
+			</if>
+		)
+		</otherwise>
+		</choose>
+	</delete>
+
+
   <!-- 상품 품목별 매핑 카테고리 저장 (LEAF 상위카테고리까지)-->
   <insert id="createCategoryGoods_ORG" parameterType="Goods">
     /* TssGoods.createCategoryGoods */

+ 12 - 2
src/main/java/com/style24/scm/biz/dao/TssGoodsDao.java

@@ -4,10 +4,12 @@ import java.util.Collection;
 
 import org.springframework.dao.DataAccessException;
 
+import com.gagaframework.web.parameter.GagaMap;
 import com.style24.core.support.annotation.ShopDs;
 import com.style24.persistence.domain.Brand;
 import com.style24.persistence.domain.FreeGoods;
 import com.style24.persistence.domain.Goods;
+import com.style24.persistence.domain.GoodsCategory;
 import com.style24.persistence.domain.GoodsCompose;
 import com.style24.persistence.domain.GoodsDesc;
 import com.style24.persistence.domain.GoodsHst;
@@ -25,8 +27,6 @@ import com.style24.persistence.domain.NoticeGoods;
 import com.style24.persistence.domain.Option;
 import com.style24.persistence.domain.WmsGoods;
 
-import com.gagaframework.web.parameter.GagaMap;
-
 /**
  * 상품 Dao
  *
@@ -492,6 +492,16 @@ public interface TssGoodsDao {
 	 */
 	void createGoodsRegLog(GoodsMass goodsMass);
 
+	/**
+	 * 상품 품목별 매핑 카테고리 삭제
+	 *
+	 * @param goods
+	 * @author eskim
+	 * @since 2021. 09. 29
+	 */
+	void deleteGoodsCategory(GoodsCategory goodsCategory);
+
+
 	/**
 	 * 상품 품목별 매핑 카테고리 저장
 	 *

+ 131 - 18
src/main/java/com/style24/scm/biz/service/TssGoodsService.java

@@ -1486,6 +1486,7 @@ public class TssGoodsService {
 
 		goodsDao.createCategoryGoods(goods);
 
+		// 20210929 eskim(안전인증)
 		// 안전안증작업
 		if (!StringUtils.isEmpty(goods.getCertTargetGb())) {
 			GoodsSafeNo goodsSafeNo = new GoodsSafeNo();
@@ -1854,7 +1855,7 @@ public class TssGoodsService {
 				return goods;
 			}
 		}
-
+		// 20210929 eskim(안전인증)
 		// 안전인증 체크
 		if (!StringUtils.isBlank(goodsMass.getCertTargetGb())) {
 
@@ -2843,9 +2844,9 @@ public class TssGoodsService {
 			return goods.getGoodsStat();
 		}
 
-		// 옵션
+		// 옵션-입점업체만 수정 20210929 eskim
 		Collection<Option> stockList = new ArrayList<>();
-		if (!UPDATE_NO_PATTERN.equals(goodsMass.getOptStr().trim())) {
+		if (!UPDATE_NO_PATTERN.equals(goodsMass.getOptStr().trim()) && "G001_B000".equals(TssSession.getInfo().getRoleCd())) {
 
 			//옵션1[필수]^옵션2[선택]^추가금액^안전재고[필수]^판매재고[필수]  |
 			//검정^90^0^0^10|검정^95^0^0^8|검정^100^0^0^5|파랑^90^0^0^15|파랑^95^0^0^5|파랑^100^0^0^1|파랑^105^0^0^7
@@ -2944,6 +2945,7 @@ public class TssGoodsService {
 
 				stockList.add(goodsStock);
 			}
+			goods.setChoOtYn("Y");
 		}
 
 		if ("10".equals(goods.getGoodsStat())) { // 정보 오류
@@ -2970,20 +2972,6 @@ public class TssGoodsService {
 			goods.setChkDescKeep("Y");
 		}
 
-		if ("N".equals(goods.getChDataYn()) && "N".equals(goods.getChkDescKeep()) && "N".equals(goods.getChNotiYn())) {
-			if (!UPDATE_NO_PATTERN.equals(goodsMass.getCurrPrice().trim()) || !UPDATE_NO_PATTERN.equals(goodsMass.getSellFeeRate().trim())) {
-				goods.setGoodsRegMsg("판매가/수수료율 승인요청");
-				goods.setGoodsStat("10");
-				this.setGoodsRegResult(goods, goodsMass, procJob);
-				return goods.getGoodsStat();
-			}else {
-				goods.setGoodsRegMsg("변경정보 없음");
-				goods.setGoodsStat("10");
-				this.setGoodsRegResult(goods, goodsMass, procJob);
-				return goods.getGoodsStat();
-			}
-
-		}
 
 		//상품 기본정보 변경여부 와 촬영업체가 아닌경우
 		if ("Y".equals(goods.getChDataYn()) && !"G001_E000".equals(TssSession.getInfo().getRoleCd())) {
@@ -3046,11 +3034,136 @@ public class TssGoodsService {
 			goodsCategory.setUpdNo(TssSession.getInfo().getUserNo());
 			goodsCategory.setGoodsCd(goods.getGoodsCd());
 			goodsCategory.setCateType("G031_10");	//상품분류카테고리
-			displayService.deleteGoodsCategory(goodsCategory);
+			goodsDao.deleteGoodsCategory(goodsCategory);
 			goodsDao.createCategoryGoods(goods);
 
 		}
 
+		// 20210929 eskim (안전인증)
+		// 안전인증 적용
+		if (!UPDATE_NO_PATTERN.equals(goodsMass.getCertTargetGb().trim()) || !UPDATE_NO_PATTERN.equals(goodsMass.getCertFormGb().trim()) ||
+			 !UPDATE_NO_PATTERN.equals(goodsMass.getCertType().trim()) || !UPDATE_NO_PATTERN.equals(goodsMass.getCertNum().trim())) {
+
+			//기존안전인증정보
+			GoodsSafeNo dataGoodsSafeNo = goodsDao.getGoodsDetailSafe(goods);
+			GoodsSafeNo goodsSafeNo = new GoodsSafeNo();
+			goodsSafeNo.setGoodsCd(goods.getGoodsCd());
+			if (dataGoodsSafeNo == null || StringUtils.isBlank(dataGoodsSafeNo.getGoodsCd())) {
+				goodsSafeNo.setCertTargetGb(!UPDATE_NO_PATTERN.equals(goodsMass.getCertTargetGb().trim())?goodsMass.getCertTargetGb().trim():"");
+				goodsSafeNo.setCertFormGb(!UPDATE_NO_PATTERN.equals(goodsMass.getCertFormGb().trim())?goodsMass.getCertFormGb().trim():"");
+				goodsSafeNo.setCertType(!UPDATE_NO_PATTERN.equals(goodsMass.getCertType().trim())?goodsMass.getCertType().trim():"");
+				goodsSafeNo.setCertNum(!UPDATE_NO_PATTERN.equals(goodsMass.getCertNum().trim())?goodsMass.getCertNum().trim():"");
+			}else {
+				goodsSafeNo.setCertTargetGb(!UPDATE_NO_PATTERN.equals(goodsMass.getCertTargetGb().trim())?goodsMass.getCertTargetGb().trim():dataGoodsSafeNo.getCertTargetGb());
+				goodsSafeNo.setCertFormGb(!UPDATE_NO_PATTERN.equals(goodsMass.getCertFormGb().trim())?goodsMass.getCertFormGb().trim():dataGoodsSafeNo.getCertFormGb());
+				goodsSafeNo.setCertType(!UPDATE_NO_PATTERN.equals(goodsMass.getCertType().trim())?goodsMass.getCertType().trim():dataGoodsSafeNo.getCertType());
+				goodsSafeNo.setCertNum(!UPDATE_NO_PATTERN.equals(goodsMass.getCertNum().trim())?goodsMass.getCertNum().trim():dataGoodsSafeNo.getCertNum());
+			}
+			// 안전인증 체크
+			if (!StringUtils.isBlank(goodsSafeNo.getCertTargetGb())) {
+				CommonCode commonCode = new CommonCode();
+				//인증대상구분
+
+				commonCode.setCdGb("G083");
+				commonCode.setCd(goodsSafeNo.getCertTargetGb());
+				Collection<CommonCode> certTargetGbList = rendererService.getCommonCodeList(commonCode);
+				if (certTargetGbList == null || certTargetGbList.isEmpty()) {
+					goods.setGoodsRegMsg("인증대상 오류");
+					goods.setGoodsStat("10");
+					this.setGoodsRegResult(goods, goodsMass, procJob);
+					return goods.getGoodsStat();
+
+				}
+
+				if ("G083_1".equals(goodsSafeNo.getCertTargetGb())) {
+					//인증형태구분
+					if (StringUtils.isBlank(goodsSafeNo.getCertFormGb())) {
+
+						goods.setGoodsRegMsg("인증형태 오류");
+						goods.setGoodsStat("10");
+						this.setGoodsRegResult(goods, goodsMass, procJob);
+						return goods.getGoodsStat();
+					}else {
+						commonCode.setCdGb("G084");
+						commonCode.setCd(goodsSafeNo.getCertFormGb());
+						Collection<CommonCode> certFormGbList = rendererService.getCommonCodeList(commonCode);
+						if (certFormGbList == null || certFormGbList.isEmpty()) {
+
+							goods.setGoodsRegMsg("인증형태 오류");
+							goods.setGoodsStat("10");
+							this.setGoodsRegResult(goods, goodsMass, procJob);
+							return goods.getGoodsStat();
+						}
+					}
+
+					//인증타입
+					if (UPDATE_NO_PATTERN.equals(goodsSafeNo.getCertType()) || StringUtils.isBlank(goodsSafeNo.getCertType())) {
+
+						goods.setGoodsRegMsg("인증타입 오류");
+						goods.setGoodsStat("10");
+						this.setGoodsRegResult(goods, goodsMass, procJob);
+						return goods.getGoodsStat();
+					}
+
+					commonCode.setCdGb("G081");
+					commonCode.setCd(goodsSafeNo.getCertType());
+					Collection<CommonCode> certTypeList = rendererService.getCommonCodeList(commonCode);
+					if (certTypeList == null || certTypeList.isEmpty()) {
+						goods.setGoodsRegMsg("인증타입 오류");
+						goods.setGoodsStat("10");
+						this.setGoodsRegResult(goods, goodsMass, procJob);
+						return goods.getGoodsStat();
+					}
+
+					if ("G081_1".equals(goodsSafeNo.getCertType()) || "G081_2".equals(goodsSafeNo.getCertType())) {
+						if (UPDATE_NO_PATTERN.equals(goodsSafeNo.getCertNum()) || StringUtils.isBlank(goodsSafeNo.getCertNum())) {
+
+							goods.setGoodsRegMsg("인증번호 오류");
+							goods.setGoodsStat("10");
+							this.setGoodsRegResult(goods, goodsMass, procJob);
+							return goods.getGoodsStat();
+						}
+					}
+				}else {
+					goodsSafeNo.setCertFormGb("");
+					goodsSafeNo.setCertType("");
+					goodsSafeNo.setCertNum("");
+				}
+
+				saveGoodsDetailCertNum(goodsSafeNo);
+
+			}else{
+				if ((!StringUtils.isBlank(goodsSafeNo.getCertNum())) ||
+					(!StringUtils.isBlank(goodsSafeNo.getCertFormGb())) ||
+					(!StringUtils.isBlank(goodsSafeNo.getCertType()))) {
+
+					goods.setGoodsRegMsg("인증대상 오류");
+					goods.setGoodsStat("10");
+					this.setGoodsRegResult(goods, goodsMass, procJob);
+					return goods.getGoodsStat();
+				}
+			}
+			goods.setChSafeYn("Y");
+		}
+
+		if ("N".equals(goods.getChDataYn()) && "N".equals(goods.getChkDescKeep()) &&
+				"N".equals(goods.getChNotiYn())  && "N".equals(goods.getChSafeYn()) &&
+				"N".equals(goods.getChoOtYn()) ) {
+			if (!UPDATE_NO_PATTERN.equals(goodsMass.getCurrPrice().trim()) || !UPDATE_NO_PATTERN.equals(goodsMass.getSellFeeRate().trim())) {
+				goods.setGoodsRegMsg("판매가/수수료율 승인요청");
+				goods.setGoodsStat("10");
+				this.setGoodsRegResult(goods, goodsMass, procJob);
+				return goods.getGoodsStat();
+			}else {
+				goods.setGoodsRegMsg("변경정보 없음");
+				goods.setGoodsStat("10");
+				this.setGoodsRegResult(goods, goodsMass, procJob);
+				return goods.getGoodsStat();
+			}
+
+		}
+
+
 		this.setGoodsRegResult(goods, goodsMass, procJob);
 
 		return goods.getGoodsStat();

+ 3 - 0
src/main/java/com/style24/scm/biz/web/TssGoodsController.java

@@ -1231,6 +1231,7 @@ public class TssGoodsController extends TssBaseController {
 				throw new IllegalStateException("WMS 연동여부가 [N]입니다. 관리자에게 문의하세요.");
 			}
 
+			// 20210929 eskim(안전인증)
 			// DB 처리 시 사용되는 파라미터명(셀명) 설정
 			String[] goodsNames = {"goodsNum", "brandCd", "goodsNm", "itemkindCd", "styleYear", "seasonCd",
 				"sexGb", "formalGb", "ageGrpCd", "originCd", "makeYmd", "goodsTitles",
@@ -1311,12 +1312,14 @@ public class TssGoodsController extends TssBaseController {
 		String targetPath = GagaFileUtil.getConcatenationPath(env.getProperty("upload.excel.target.path"), "excel");
 		Collection<GagaMap> ecxelGoodsList = new ArrayList<>();
 
+		// 20210929 eskim (안전인증)
 		// 상품수장
 		// DB 처리 시 사용되는 파라미터명(셀명) 설정 -
 		String[] goodsNames = {"goodsCd", "goodsNm", "goodsTnm", "goodsSnm1", "itemkindCd", "seasonCd",
 			"sexGb", "goodsStatCd", "currPrice", "sellFeeRate", "goodsGb", "formalGb", "minOrdQty", "maxOrdQty", "dayMaxOrdQty",
 			"giftPackYn", "newCustOrdYn", "pntPrate", "prePpntUsableYn", "pntMrate", "preMpntUsableYn",
 			"returnableYn", "changeableYn", "taxGb", "ageGrpCd", "adultYn", "delvFeeCd", "optStr", "goodsContent",
+			"certTargetGb", "certFormGb", "certType", "certNum",
 			"niClsfCd", "niContent1", "niContent2",
 			"niContent3", "niContent4", "niContent5", "niContent6", "niContent7", "niContent8", "niContent9",
 			"niContent10", "niContent11", "niContent12", "niContent13", "niContent14", "niContent15", "niContent16",