|
|
@@ -2860,14 +2860,124 @@ public class TsaGoodsService {
|
|
|
return goods.getGoodsStat();
|
|
|
}
|
|
|
|
|
|
- // 옵션
|
|
|
- if (!UPDATE_NO_PATTERN.equals(goodsMass.getOptStr().trim())) {
|
|
|
- goods.setGoodsRegMsg("옵션은 변경할 수 없습니다.");
|
|
|
+ // 옵션 // 20210929 eskim (안전인증)
|
|
|
+ if (!UPDATE_NO_PATTERN.equals(goodsMass.getOptStr().trim()) && "Y".equals(goodsOrigin.getSelfGoodsYn())) {
|
|
|
+ goods.setGoodsRegMsg("자사상품은 옵션은 변경할 수 없습니다.");
|
|
|
goods.setGoodsStat("10");
|
|
|
this.setGoodsRegResult(goods, goodsMass, procJob);
|
|
|
return goods.getGoodsStat();
|
|
|
}
|
|
|
|
|
|
+ // 20210929 eskim (안전인증)
|
|
|
+ // 옵션-입점상품만
|
|
|
+ Collection<Option> stockList = new ArrayList<>();
|
|
|
+ if (!UPDATE_NO_PATTERN.equals(goodsMass.getOptStr().trim()) ) {
|
|
|
+
|
|
|
+ //옵션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
|
|
|
+
|
|
|
+ Option dupOption = new Option();
|
|
|
+ dupOption.setGoodsCd(goodsMass.getGoodsCd());
|
|
|
+ int cnt = goodsDao.getGoodsOptionCount(dupOption); // 기 등록된 옵션 건수 조회
|
|
|
+
|
|
|
+ String[] arrSizeCd = goodsMass.getOptStr().trim().split("\\|");
|
|
|
+ for (int i = 0; i < arrSizeCd.length; i++) {
|
|
|
+ String[] arrOptCd = arrSizeCd[i].split("\\^");
|
|
|
+ //log.info("[ arrOptCd.length] {}", arrOptCd.length);
|
|
|
+ if (arrOptCd.length != 5) {
|
|
|
+ goods.setGoodsRegMsg("옵션(SKU) " + (i + 1) + "번째 옵션구분자[^] 갯수 상이");
|
|
|
+ goods.setGoodsStat("10");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 옵션1 - 필수
|
|
|
+ if (StringUtils.isBlank(arrOptCd[0])) {
|
|
|
+ goods.setGoodsRegMsg("옵션(SKU) " + (i + 1) + "번째 옵션1 정보없음");
|
|
|
+ goods.setGoodsStat("10");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ // 추가금액 - 필수
|
|
|
+ if (StringUtils.isBlank(arrOptCd[2])) {
|
|
|
+ goods.setGoodsRegMsg("옵션(SKU) " + (i + 1) + "번째 추가금액 정보없음");
|
|
|
+ goods.setGoodsStat("10");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (!arrOptCd[2].trim().matches(NUMBER_PATTERN)) {
|
|
|
+ goods.setGoodsRegMsg("옵션(SKU) " + (i + 1) + "번째 추가금액 숫자 오류");
|
|
|
+ goods.setGoodsStat("10");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ // 안전재고 - 필수
|
|
|
+ if (StringUtils.isBlank(arrOptCd[3])) {
|
|
|
+ goods.setGoodsRegMsg("옵션(SKU) " + (i + 1) + "번째 안전재고 정보없음");
|
|
|
+ goods.setGoodsStat("10");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (!arrOptCd[3].trim().matches(NUMBER_PATTERN)) {
|
|
|
+ goods.setGoodsRegMsg("옵션(SKU) " + (i + 1) + "번째 안전재고 숫자 오류");
|
|
|
+ goods.setGoodsStat("10");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ // 판매재고 - 필수
|
|
|
+ if (StringUtils.isBlank(arrOptCd[4])) {
|
|
|
+ goods.setGoodsRegMsg("옵션(SKU) " + (i + 1) + "번째 판매재고 정보없음");
|
|
|
+ goods.setGoodsStat("10");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (!arrOptCd[4].trim().matches(NUMBER_PATTERN)) {
|
|
|
+ goods.setGoodsRegMsg("옵션(SKU) " + (i + 1) + "번째 판매재고 숫자 오류");
|
|
|
+ goods.setGoodsStat("10");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 옵션 중복 여부 확인
|
|
|
+ String optCd1 = arrOptCd[0];
|
|
|
+ String optCd2 = arrOptCd[1];
|
|
|
+ dupOption.setOptCd1(optCd1);
|
|
|
+ dupOption.setOptCd2(optCd2);
|
|
|
+
|
|
|
+ //상품옵션 중복건수여부 확인
|
|
|
+ int dupOptionCnt = goodsDao.getGoodsOptionDupCountCheck(dupOption);
|
|
|
+ if (dupOptionCnt > 0) {
|
|
|
+ goods.setGoodsRegMsg("옵션(SKU) " + (i + 1) + "번째 옵션1과 옵션2가 중복되는 옵션이 존재합니다.");
|
|
|
+ goods.setGoodsStat("10");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ //상품옵션 패턴조회
|
|
|
+ Option goodsOption = goodsDao.getGoodsOption(dupOption);
|
|
|
+ if (goodsOption != null) {
|
|
|
+ if (StringUtils.isBlank(goodsOption.getOptCd2()) == !StringUtils.isBlank(optCd2) || !StringUtils.isBlank(goodsOption.getOptCd2()) == StringUtils.isBlank(optCd2)) {
|
|
|
+ goods.setGoodsRegMsg("옵션(SKU) " + (i + 1) + "번째 옵션2가 기 등록된 옵션2의 패턴과 다릅니다.");
|
|
|
+ goods.setGoodsStat("10");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Option goodsStock = new Option();
|
|
|
+ goodsStock.setGoodsCd(goods.getGoodsCd());
|
|
|
+ goodsStock.setOptCd(goods.getGoodsCd() + "-" + (cnt + (i + 1)));
|
|
|
+ goodsStock.setOptCd1(arrOptCd[0].trim());
|
|
|
+ goodsStock.setOptCd2(arrOptCd[1].trim());
|
|
|
+ goodsStock.setAddPrice(Integer.parseInt(arrOptCd[2]));
|
|
|
+ goodsStock.setBaseStockQty(Integer.parseInt(arrOptCd[3]));
|
|
|
+ goodsStock.setCurrStockQty(Integer.parseInt(arrOptCd[4]));
|
|
|
+ goodsStock.setSoldoutYn("N");
|
|
|
+ goodsStock.setDispOrd(cnt + (i + 1));
|
|
|
+ goodsStock.setDispYn("Y");
|
|
|
+ goodsStock.setRegNo(goods.getRegNo());
|
|
|
+ goodsStock.setUpdNo(goods.getUpdNo());
|
|
|
+
|
|
|
+ stockList.add(goodsStock);
|
|
|
+ }
|
|
|
+ goods.setChoOtYn("Y");
|
|
|
+ }
|
|
|
+
|
|
|
+ if ("10".equals(goods.getGoodsStat())) { // 정보 오류
|
|
|
+ this.setGoodsRegResult(goods, goodsMass, procJob);
|
|
|
+ return goods.getGoodsStat(); //continue
|
|
|
+ }
|
|
|
+
|
|
|
// 상품 고시
|
|
|
Collection<GoodsNotiInfo> newGoodsNotiList = new ArrayList<>(); //적용할 고시 정보
|
|
|
goods = this.getUpdateMassGoodsNotiCheck(goods, gagaMap, goodsOrigin, newGoodsNotiList);
|
|
|
@@ -2887,13 +2997,6 @@ public class TsaGoodsService {
|
|
|
goods.setChkDescKeep("Y");
|
|
|
}
|
|
|
|
|
|
- if ("N".equals(goods.getChDataYn()) && "N".equals(goods.getChkDescKeep()) && "N".equals(goods.getChNotiYn())) {
|
|
|
- goods.setGoodsRegMsg("변경정보 없음");
|
|
|
- goods.setGoodsStat("10");
|
|
|
- this.setGoodsRegResult(goods, goodsMass, procJob);
|
|
|
- return goods.getGoodsStat();
|
|
|
- }
|
|
|
-
|
|
|
//상품 기본정보 변경여부 와 촬영업체가 아닌경우
|
|
|
if ("Y".equals(goods.getChDataYn()) && !"G001_E000".equals(TsaSession.getInfo().getRoleCd())) {
|
|
|
|
|
|
@@ -2942,6 +3045,13 @@ public class TsaGoodsService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // 20210929 eskim(안전인증)
|
|
|
+ // 옵션 적용
|
|
|
+ if (!UPDATE_NO_PATTERN.equals(goodsMass.getOptStr().trim()) && stockList != null && !stockList.isEmpty()) {
|
|
|
+ goods.setSelfGoodsYn(goodsOrigin.getSelfGoodsYn());
|
|
|
+ this.createGoodsSize(goods, stockList); // 입점 상품사이즈 정보 자장
|
|
|
+ }
|
|
|
+
|
|
|
// 품목변경시 카테고리 자동 전시
|
|
|
if (!UPDATE_NO_PATTERN.equals(goods.getItemkindCd().trim())) {
|
|
|
GoodsCategory goodsCategory = new GoodsCategory();
|
|
|
@@ -2954,11 +3064,144 @@ public class TsaGoodsService {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ // 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()) ) {
|
|
|
+ goods.setGoodsRegMsg("변경정보 없음");
|
|
|
+ goods.setGoodsStat("10");
|
|
|
+ this.setGoodsRegResult(goods, goodsMass, procJob);
|
|
|
+ return goods.getGoodsStat();
|
|
|
+ }
|
|
|
+
|
|
|
this.setGoodsRegResult(goods, goodsMass, procJob);
|
|
|
|
|
|
return goods.getGoodsStat();
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 상품등록 - 상품재고정보 (입점) // 20210929 eskim(안전인증)
|
|
|
+ *
|
|
|
+ * @param goods
|
|
|
+ * @param excelMap
|
|
|
+ * @return Goods
|
|
|
+ * @author eskim
|
|
|
+ * @since 2021. 09. 29
|
|
|
+ */
|
|
|
+ private void createGoodsSize(Goods goods, Collection<Option> stockist) {
|
|
|
+
|
|
|
+ for (Option stock : stockist) {
|
|
|
+ goodsDao.saveStock(stock);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 상품 대량 등록 결과 정보
|
|
|
*
|