|
|
@@ -587,7 +587,7 @@ public class TssGoodsService {
|
|
|
String goodsSnm = goodsDao.getGoodsSnm(goods.getGoodsCd());
|
|
|
if (!StringUtils.isBlank(goods.getGoodsSnm1())) {
|
|
|
goods.setGoodsSnm1(GagaStringUtil.replace(goods.getGoodsSnm1(), " ", "")); // 빈값 삭제
|
|
|
- String[] arrGoodsSnm = goods.getGoodsSnm1().split(";");
|
|
|
+ String[] arrGoodsSnm = goods.getGoodsSnm1().split("\\;");
|
|
|
StringBuilder tempGoodsSnm = new StringBuilder();
|
|
|
for (String loopGoodsSnm : arrGoodsSnm) {
|
|
|
if (goodsSnm.toUpperCase().indexOf(loopGoodsSnm.toUpperCase()) <= -1) {
|
|
|
@@ -1222,7 +1222,7 @@ public class TssGoodsService {
|
|
|
// 사용자 검색어를 검색어에 적용
|
|
|
String goodsSnm = goodsDao.getGoodsSnm(goods.getGoodsCd());
|
|
|
if (!StringUtils.isBlank(goods.getGoodsSnm1())) {
|
|
|
- String[] arrGoodsSnm = goods.getGoodsSnm1().split(";");
|
|
|
+ String[] arrGoodsSnm = goods.getGoodsSnm1().split("\\;");
|
|
|
StringBuilder tempGoodsSnm = new StringBuilder();
|
|
|
for (String loopGoodsSnm : arrGoodsSnm) {
|
|
|
if (goodsSnm.toUpperCase().indexOf(loopGoodsSnm.toUpperCase()) <= -1) {
|
|
|
@@ -1701,9 +1701,9 @@ public class TssGoodsService {
|
|
|
//옵션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
|
|
|
|
|
|
- String[] arrSizeCd = GagaStringUtil.cutTokenToArray(goodsMass.getOptStr().trim(), "|");
|
|
|
+ String[] arrSizeCd = goodsMass.getOptStr().trim().split("\\|");
|
|
|
for (int i = 0; i < arrSizeCd.length; i++) {
|
|
|
- String[] arrOptCd = GagaStringUtil.cutTokenToArray(arrSizeCd[i], "^");
|
|
|
+ String[] arrOptCd = arrSizeCd[i].split("\\^");
|
|
|
if (arrOptCd.length != 5) {
|
|
|
goods.setGoodsRegMsg("옵션(SKU) " + (i + 1) + "번째 옵션구분자[^] 갯수 상이");
|
|
|
goods.setGoodsStat("10");
|
|
|
@@ -1844,7 +1844,7 @@ public class TssGoodsService {
|
|
|
// 사용자 검색어를 검색어에 적용
|
|
|
String goodsSnm = goodsDao.getGoodsSnm(goods.getGoodsCd());
|
|
|
if (!StringUtils.isBlank(goods.getGoodsSnm1())) {
|
|
|
- String[] arrGoodsSnm = goods.getGoodsSnm1().split(";");
|
|
|
+ String[] arrGoodsSnm = goods.getGoodsSnm1().split("\\;");
|
|
|
StringBuilder tempGoodsSnm = new StringBuilder();
|
|
|
for (String loopGoodsSnm : arrGoodsSnm) {
|
|
|
if (goodsSnm.toUpperCase().indexOf(loopGoodsSnm.toUpperCase()) <= -1) {
|
|
|
@@ -2247,7 +2247,7 @@ public class TssGoodsService {
|
|
|
GoodsMass goodsMass = mapper.convertValue(gagaMap, GoodsMass.class);
|
|
|
|
|
|
if (StringUtils.isBlank(goodsMass.getGoodsCd())) {
|
|
|
- throw new IllegalStateException("상품코드가 없습니다.");
|
|
|
+ throw new IllegalStateException("상품코드는 필수입니다.");
|
|
|
}
|
|
|
|
|
|
// 상품기본정보
|
|
|
@@ -2267,6 +2267,114 @@ public class TssGoodsService {
|
|
|
return goods.getGoodsStat();
|
|
|
}
|
|
|
|
|
|
+ // 옵션
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ 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);
|
|
|
@@ -2341,6 +2449,12 @@ public class TssGoodsService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // 품목변경시 카테고리 자동 전시
|
|
|
+ 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();
|