diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/FhbOtherBizAfterController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/FhbOtherBizAfterController.java index 3e107d97c..8334c2d28 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/FhbOtherBizAfterController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/FhbOtherBizAfterController.java @@ -145,18 +145,13 @@ public class FhbOtherBizAfterController extends BaseController { Map fhbProdMap = fhbProdList.stream().collect(Collectors.toMap(FhbProdVO.SMIVO::getArtNo, x -> x, (v1, v2) -> v2)); // 找到枚举的 鞋面材质 和 鞋面内里材质 - List attrList = Optional.ofNullable(this.dictDataMapper.selectList(new LambdaQueryWrapper() - .in(SysDictData::getDictType, Arrays.asList(DICT_TYPE_SHAFT_MATERIAL, DICT_TYPE_SHOE_UPPER_LINING_MATERIAL)) - .eq(SysDictData::getDelFlag, Constants.UNDELETED))) - .orElseThrow(() -> new ServiceException("系统枚举 鞋面材质及鞋面内里材质 不存在!", HttpStatus.ERROR)); - Map shaftMaterialMap = attrList.stream().filter(x -> Objects.equals(x.getDictType(), DICT_TYPE_SHAFT_MATERIAL)) - .collect(Collectors.toMap(SysDictData::getDictLabel, SysDictData::getDictValue)); - Map shoeUpperLiningMaterialMap = attrList.stream().filter(x -> Objects.equals(x.getDictType(), DICT_TYPE_SHOE_UPPER_LINING_MATERIAL)) - .collect(Collectors.toMap(SysDictData::getDictLabel, SysDictData::getDictValue)); + List shaftMaterialList = Optional.ofNullable(this.dictDataMapper.selectList(new LambdaQueryWrapper() + .eq(SysDictData::getDictType, DICT_TYPE_SHAFT_MATERIAL).eq(SysDictData::getDelFlag, Constants.UNDELETED))) + .orElseThrow(() -> new ServiceException("系统枚举 鞋面材质 不存在!", HttpStatus.ERROR)); + Map shaftMaterialMap = shaftMaterialList.stream().collect(Collectors.toMap(SysDictData::getDictLabel, SysDictData::getDictValue)); List prodCateAttrList = new ArrayList<>(); List prodSvcList = new ArrayList<>(); Map newShaftMaterialMap = new HashMap<>(); - Map newShoeUpperLiningMaterialMap = new HashMap<>(); storeProdList.forEach(storeProd -> { FhbProdVO.SMIVO fhbProdVO = Optional.ofNullable(fhbProdMap.get(storeProd.getProdArtNum())) .orElseThrow(() -> new ServiceException("FHB独有商品,未找到FHB对应的商品!", HttpStatus.ERROR)); @@ -164,31 +159,9 @@ public class FhbOtherBizAfterController extends BaseController { if (StringUtils.isNotBlank(fhbProdVO.getOutStuff()) && !shaftMaterialMap.containsKey(fhbProdVO.getOutStuff())) { newShaftMaterialMap.put(fhbProdVO.getOutStuff(), fhbProdVO.getOutStuff()); } - if (StringUtils.isNotBlank(fhbProdVO.getInnerStuff()) && !shoeUpperLiningMaterialMap.containsKey(fhbProdVO.getInnerStuff())) { - newShoeUpperLiningMaterialMap.put(fhbProdVO.getInnerStuff(), fhbProdVO.getInnerStuff()); - } - - - - - - /* - - - // 只设置鞋面材质 和 鞋面内里材质 - prodCateAttrList.add(new StoreProductCategoryAttribute().setStoreId(storeProd.getStoreId()).setStoreProdId(storeProd.getId()) - .setShaftMaterial(fhbProdVO.getOutStuff()).setShoeUpperLiningMaterial(fhbProdVO.getInnerStuff())); - - - */ - - - - - - - - + // 只设置鞋面材质 + prodCateAttrList.add(new StoreProductCategoryAttribute().setStoreId(storeProd.getStoreId()) + .setStoreProdId(storeProd.getId()).setShaftMaterial(fhbProdVO.getOutStuff())); // 初始化商品服务承诺 prodSvcList.add(new StoreProductService().setStoreProdId(storeProd.getId()).setCustomRefund("0") .setThirtyDayRefund("0").setOneBatchSale("1").setRefundWithinThreeDay("0")); @@ -197,10 +170,6 @@ public class FhbOtherBizAfterController extends BaseController { if (MapUtils.isNotEmpty(newShaftMaterialMap)) { newShaftMaterialMap.forEach((k, v) -> newDictDataList.add(new SysDictData().setDictLabel(k).setDictValue(k).setDictType(DICT_TYPE_SHAFT_MATERIAL).setStatus("0").setDictSort(100L))); } - if (MapUtils.isNotEmpty(newShoeUpperLiningMaterialMap)) { - newShoeUpperLiningMaterialMap.forEach((k, v) -> newDictDataList.add(new SysDictData().setDictLabel(k).setDictValue(k) - .setDictType(DICT_TYPE_SHOE_UPPER_LINING_MATERIAL).setStatus("0").setDictSort(100L))); - } if (CollectionUtils.isNotEmpty(newDictDataList)) { this.dictDataMapper.insert(newDictDataList); } @@ -252,9 +221,18 @@ public class FhbOtherBizAfterController extends BaseController { throw new ServiceException("FHB cache 数据为空!", HttpStatus.ERROR); } Map> fhbProdSkuMap = fhbProdList.stream().collect(Collectors.groupingBy(FhbProdVO.SMIVO::getArtNo)); + + // 找到枚举的 鞋面内里材质 + List shoeUpperLiningMaterialList = Optional.ofNullable(this.dictDataMapper.selectList(new LambdaQueryWrapper() + .eq(SysDictData::getDictType, DICT_TYPE_SHOE_UPPER_LINING_MATERIAL).eq(SysDictData::getDelFlag, Constants.UNDELETED))) + .orElseThrow(() -> new ServiceException("系统枚举 鞋面内里材质 不存在!", HttpStatus.ERROR)); + Map shoeUpperLiningMaterialMap = shoeUpperLiningMaterialList.stream().collect(Collectors.toMap(SysDictData::getDictLabel, SysDictData::getDictValue)); + // 商品所有颜色 尺码 颜色库存初始化 List prodColorList = new ArrayList<>(); List prodColorSizeList = new ArrayList<>(); + List newDictDataList = new ArrayList<>(); + Map newShoeUpperLiningMaterialMap = new HashMap<>(); storeProdList.forEach(storeProd -> { Optional.ofNullable(fhbAfterArtNumGroupMap.get(storeProd.getProdArtNum())) .orElseThrow(() -> new ServiceException("没有FHB[独有]商品货号!" + storeProd.getProdArtNum(), HttpStatus.ERROR)); @@ -263,11 +241,15 @@ public class FhbOtherBizAfterController extends BaseController { .map(fhbProdSkuMap::get).filter(Objects::nonNull).flatMap(List::stream).collect(Collectors.toList()); AtomicInteger orderNum = new AtomicInteger(); fhbMatchColorList.forEach(fhbProdColor -> { + // 处理内里材质,若步橘没有的,则需要新增 + if (StringUtils.isNotBlank(fhbProdColor.getInnerStuff()) && !shoeUpperLiningMaterialMap.containsKey(fhbProdColor.getInnerStuff())) { + newShoeUpperLiningMaterialMap.put(fhbProdColor.getInnerStuff(), fhbProdColor.getInnerStuff()); + } StoreColor storeColor = Optional.ofNullable(storeColorMap.get(fhbProdColor.getColor())) .orElseThrow(() -> new ServiceException("没有FHB[独有]商品颜色!" + storeProd.getProdArtNum(), HttpStatus.ERROR)); // 该商品的颜色 prodColorList.add(new StoreProductColor().setStoreId(storeProd.getStoreId()).setStoreProdId(storeProd.getId()).setOrderNum(orderNum.addAndGet(1)) - .setColorName(storeColor.getColorName()).setStoreColorId(storeColor.getId()).setProdStatus(EProductStatus.ON_SALE.getValue())); + .setColorName(storeColor.getColorName()).setShoeUpperLiningMaterial(fhbProdColor.getInnerStuff()).setStoreColorId(storeColor.getId()).setProdStatus(EProductStatus.ON_SALE.getValue())); // 该颜色最低价格 BigDecimal minPrice = ObjectUtils.defaultIfNull(fhbProdColor.getSalePrice(), BigDecimal.ZERO); List standardSizeList = StrUtil.split(fhbProdColor.getSize(), ",").stream().map(Integer::parseInt).collect(Collectors.toList()); @@ -285,6 +267,14 @@ public class FhbOtherBizAfterController extends BaseController { } }); }); + + // 处理新增的 内里材质 枚举 + if (MapUtils.isNotEmpty(newShoeUpperLiningMaterialMap)) { + newShoeUpperLiningMaterialMap.forEach((k, v) -> newDictDataList.add(new SysDictData().setDictLabel(k).setDictValue(k) + .setDictType(DICT_TYPE_SHOE_UPPER_LINING_MATERIAL).setStatus("0").setDictSort(100L))); + this.dictDataMapper.insert(newDictDataList); + } + // 插入商品颜色及颜色对应的尺码,档口服务承诺 this.prodColorMapper.insert(prodColorList); // 按照货号颜色尺码升序排列 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtAndFhbBizController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtAndFhbBizController.java index fb13674bc..9b6c6cc32 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtAndFhbBizController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtAndFhbBizController.java @@ -9,6 +9,7 @@ import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.HttpStatus; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.domain.entity.SysDictData; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.DateUtils; @@ -16,14 +17,15 @@ import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.es.EsClientWrapper; import com.ruoyi.framework.notice.fs.FsNotice; -import com.ruoyi.web.controller.xkt.migartion.vo.gtAndFhb.GtAndFHBCompareDownloadVO; -import com.ruoyi.web.controller.xkt.migartion.vo.gtAndFhb.GtAndFHBInitVO; +import com.ruoyi.system.mapper.SysDictDataMapper; import com.ruoyi.web.controller.xkt.migartion.vo.fhb.FhbCusDiscountVO; import com.ruoyi.web.controller.xkt.migartion.vo.fhb.FhbCusVO; import com.ruoyi.web.controller.xkt.migartion.vo.fhb.FhbProdStockVO; import com.ruoyi.web.controller.xkt.migartion.vo.fhb.FhbProdVO; import com.ruoyi.web.controller.xkt.migartion.vo.gt.GtCateVO; import com.ruoyi.web.controller.xkt.migartion.vo.gt.GtProdSkuVO; +import com.ruoyi.web.controller.xkt.migartion.vo.gtAndFhb.GtAndFHBCompareDownloadVO; +import com.ruoyi.web.controller.xkt.migartion.vo.gtAndFhb.GtAndFHBInitVO; import com.ruoyi.xkt.domain.*; import com.ruoyi.xkt.dto.es.ESProductDTO; import com.ruoyi.xkt.dto.storeProdColorPrice.StoreProdMinPriceDTO; @@ -81,6 +83,10 @@ public class GtAndFhbBizController extends BaseController { final EsClientWrapper esClientWrapper; final IPictureService pictureService; final FsNotice fsNotice; + final SysDictDataMapper dictDataMapper; + + // 系统枚举 鞋面内里材质 + private static final String DICT_TYPE_SHOE_UPPER_LINING_MATERIAL = "shoe_upper_lining_material"; /** * step1 @@ -384,9 +390,17 @@ public class GtAndFhbBizController extends BaseController { // gt按照货号分组 Map> gtSaleGroupMap = gtSaleBasicList.stream().collect(Collectors.groupingBy(GtProdSkuVO::getArticle_number)); + // 找到枚举的 鞋面内里材质 + List shoeUpperLiningMaterialList = Optional.ofNullable(this.dictDataMapper.selectList(new LambdaQueryWrapper() + .eq(SysDictData::getDictType, DICT_TYPE_SHOE_UPPER_LINING_MATERIAL).eq(SysDictData::getDelFlag, Constants.UNDELETED))) + .orElseThrow(() -> new ServiceException("系统枚举 鞋面内里材质 不存在!", HttpStatus.ERROR)); + Map shoeUpperLiningMaterialMap = shoeUpperLiningMaterialList.stream().collect(Collectors.toMap(SysDictData::getDictLabel, SysDictData::getDictValue)); + // 商品所有颜色 尺码 颜色库存初始化 List prodColorList = new ArrayList<>(); List prodColorSizeList = new ArrayList<>(); + List newDictDataList = new ArrayList<>(); + Map newShoeUpperLiningMaterialMap = new HashMap<>(); storeProdList.forEach(storeProd -> { // 获取clearArtNo String clearArtNo = this.extractCoreArticleNumber(storeProd.getProdArtNum()); @@ -402,9 +416,14 @@ public class GtAndFhbBizController extends BaseController { for (FhbProdVO.SMIVO smivo : fhbMatchSkuList) { StoreColor storeColor = Optional.ofNullable(storeColorMap.get(smivo.getColor())) .orElseThrow(() -> new ServiceException("没有FHB商品颜色!" + fhbArtNo, HttpStatus.ERROR)); + // 处理内里材质,若步橘没有的,则需要新增 + if (org.apache.commons.lang3.StringUtils.isNotBlank(smivo.getInnerStuff()) && !shoeUpperLiningMaterialMap.containsKey(smivo.getInnerStuff())) { + newShoeUpperLiningMaterialMap.put(smivo.getInnerStuff(), smivo.getInnerStuff()); + } // 该商品的颜色 - prodColorList.add(new StoreProductColor().setStoreId(storeProd.getStoreId()).setStoreProdId(storeProd.getId()).setOrderNum(orderNum.addAndGet(1)) - .setColorName(storeColor.getColorName()).setStoreColorId(storeColor.getId()).setProdStatus(EProductStatus.ON_SALE.getValue())); + prodColorList.add(new StoreProductColor().setStoreId(storeProd.getStoreId()).setStoreProdId(storeProd.getId()) + .setOrderNum(orderNum.addAndGet(1)).setColorName(storeColor.getColorName()).setShoeUpperLiningMaterial(smivo.getInnerStuff()) + .setStoreColorId(storeColor.getId()).setProdStatus(EProductStatus.ON_SALE.getValue())); // 该颜色所有的尺码 for (int j = 0; j < Constants.SIZE_LIST.size(); j++) { // FHB系统条码前缀 @@ -420,6 +439,14 @@ public class GtAndFhbBizController extends BaseController { } }); }); + + // 处理新增的 内里材质 枚举 + if (MapUtils.isNotEmpty(newShoeUpperLiningMaterialMap)) { + newShoeUpperLiningMaterialMap.forEach((k, v) -> newDictDataList.add(new SysDictData().setDictLabel(k).setDictValue(k) + .setDictType(DICT_TYPE_SHOE_UPPER_LINING_MATERIAL).setStatus("0").setDictSort(100L))); + this.dictDataMapper.insert(newDictDataList); + } + // 插入商品颜色及颜色对应的尺码,档口服务承诺 this.prodColorMapper.insert(prodColorList); prodColorSizeList.sort(Comparator.comparing(StoreProductColorSize::getStoreProdId).thenComparing(StoreProductColorSize::getSize)); @@ -736,51 +763,6 @@ public class GtAndFhbBizController extends BaseController { String shaftMaterialAttr = attrMap.get(Constants.SHAFT_MATERIAL_NAME); prodAttr.setShaftMaterial(org.apache.commons.lang3.StringUtils.isEmpty(shaftMaterialAttr) ? attrMap.get(Constants.UPPER_MATERIAL_NAME) : shaftMaterialAttr); } - - - - - - - - - - - - - - - - - -/* - // 4. 鞋面内里材质 - if (attrMap.containsKey(Constants.SHOE_UPPER_LINING_MATERIAL_NAME)) { - // 先找鞋面内里材质,为空 则 再找 内里材质,为空则再找 里料材质 - String shoeUpperLiningMaterialAttr = attrMap.get(Constants.SHOE_UPPER_LINING_MATERIAL_NAME); - if (org.apache.commons.lang3.StringUtils.isEmpty(shoeUpperLiningMaterialAttr)) { - shoeUpperLiningMaterialAttr = attrMap.get(Constants.INNER_MATERIAL); - if (org.apache.commons.lang3.StringUtils.isEmpty(shoeUpperLiningMaterialAttr)) { - shoeUpperLiningMaterialAttr = attrMap.get(Constants.OUTER_MATERIAL); - } - } - prodAttr.setShoeUpperLiningMaterial(shoeUpperLiningMaterialAttr); - } - */ - - - - - - - - - - - - - - // 5. 靴款品名 if (attrMap.containsKey(Constants.SHOE_STYLE_NAME_NAME)) { prodAttr.setShoeStyleName(attrMap.get(Constants.SHOE_STYLE_NAME_NAME)); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtAndTyBiz2Controller.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtAndTyBiz2Controller.java index 40ce7a64e..a5c5b1082 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtAndTyBiz2Controller.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtAndTyBiz2Controller.java @@ -9,12 +9,14 @@ import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.HttpStatus; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.domain.entity.SysDictData; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.es.EsClientWrapper; import com.ruoyi.framework.notice.fs.FsNotice; +import com.ruoyi.system.mapper.SysDictDataMapper; import com.ruoyi.web.controller.xkt.migartion.vo.gt.GtCateVO; import com.ruoyi.web.controller.xkt.migartion.vo.gt.GtProdSkuVO; import com.ruoyi.web.controller.xkt.migartion.vo.gtAndTy.GtAndTYCompareDownloadVO; @@ -76,6 +78,10 @@ public class GtAndTyBiz2Controller extends BaseController { final SysProductCategoryMapper prodCateMapper; final EsClientWrapper esClientWrapper; final FsNotice fsNotice; + final SysDictDataMapper dictDataMapper; + + // 系统枚举 鞋面内里材质 + private static final String DICT_TYPE_SHOE_UPPER_LINING_MATERIAL = "shoe_upper_lining_material"; /** @@ -302,9 +308,17 @@ public class GtAndTyBiz2Controller extends BaseController { } })); + // 找到枚举的 鞋面内里材质 + List shoeUpperLiningMaterialList = Optional.ofNullable(this.dictDataMapper.selectList(new LambdaQueryWrapper() + .eq(SysDictData::getDictType, DICT_TYPE_SHOE_UPPER_LINING_MATERIAL).eq(SysDictData::getDelFlag, Constants.UNDELETED))) + .orElseThrow(() -> new ServiceException("系统枚举 鞋面内里材质 不存在!", HttpStatus.ERROR)); + Map shoeUpperLiningMaterialMap = shoeUpperLiningMaterialList.stream().collect(Collectors.toMap(SysDictData::getDictLabel, SysDictData::getDictValue)); + // 商品所有颜色 尺码 颜色库存初始化 List prodColorList = new ArrayList<>(); List prodColorSizeList = new ArrayList<>(); + List newDictDataList = new ArrayList<>(); + Map newShoeUpperLiningMaterialMap = new HashMap<>(); storeProdList.forEach(storeProd -> { // TY匹配的货号 List tyMatchArtNoList = gtMatchTyArtNoMap.get(storeProd.getProdArtNum()); @@ -318,9 +332,14 @@ public class GtAndTyBiz2Controller extends BaseController { for (TyProdImportVO tyProdImportVO : tyMatchSkuList) { StoreColor storeColor = Optional.ofNullable(storeColorMap.get(tyProdImportVO.getColorName())) .orElseThrow(() -> new ServiceException("没有TY商品颜色!" + tyArtNo, HttpStatus.ERROR)); + // 处理内里材质,若步橘没有的,则需要新增 + if (StringUtils.isNotBlank(tyProdImportVO.getShoeUpperLiningMaterial()) && !shoeUpperLiningMaterialMap.containsKey(tyProdImportVO.getShoeUpperLiningMaterial())) { + newShoeUpperLiningMaterialMap.put(tyProdImportVO.getShoeUpperLiningMaterial(), tyProdImportVO.getShoeUpperLiningMaterial()); + } // 该商品的颜色 prodColorList.add(new StoreProductColor().setStoreId(storeProd.getStoreId()).setStoreProdId(storeProd.getId()).setOrderNum(orderNum.addAndGet(1)) - .setColorName(storeColor.getColorName()).setStoreColorId(storeColor.getId()).setProdStatus(EProductStatus.ON_SALE.getValue())); + .setShoeUpperLiningMaterial(tyProdImportVO.getShoeUpperLiningMaterial()).setColorName(storeColor.getColorName()) + .setStoreColorId(storeColor.getId()).setProdStatus(EProductStatus.ON_SALE.getValue())); // 该颜色所有的尺码 for (int j = 0; j < Constants.SIZE_LIST.size(); j++) { // TY系统条码前缀 @@ -334,6 +353,14 @@ public class GtAndTyBiz2Controller extends BaseController { } }); }); + + // 处理新增的 内里材质 枚举 + if (MapUtils.isNotEmpty(newShoeUpperLiningMaterialMap)) { + newShoeUpperLiningMaterialMap.forEach((k, v) -> newDictDataList.add(new SysDictData().setDictLabel(k).setDictValue(k) + .setDictType(DICT_TYPE_SHOE_UPPER_LINING_MATERIAL).setStatus("0").setDictSort(100L))); + this.dictDataMapper.insert(newDictDataList); + } + // 插入商品颜色及颜色对应的尺码,档口服务承诺 this.prodColorMapper.insert(prodColorList); prodColorSizeList.sort(Comparator.comparing(StoreProductColorSize::getStoreProdId).thenComparing(StoreProductColorSize::getSize)); @@ -656,43 +683,6 @@ public class GtAndTyBiz2Controller extends BaseController { String shaftMaterialAttr = attrMap.get(Constants.SHAFT_MATERIAL_NAME); prodAttr.setShaftMaterial(StringUtils.isEmpty(shaftMaterialAttr) ? attrMap.get(Constants.UPPER_MATERIAL_NAME) : shaftMaterialAttr); } - - - - - - - - - - - - - /* - // 4. 鞋面内里材质 - if (attrMap.containsKey(Constants.SHOE_UPPER_LINING_MATERIAL_NAME)) { - // 先找鞋面内里材质,为空 则 再找 内里材质,为空则再找 里料材质 - String shoeUpperLiningMaterialAttr = attrMap.get(Constants.SHOE_UPPER_LINING_MATERIAL_NAME); - if (StringUtils.isEmpty(shoeUpperLiningMaterialAttr)) { - shoeUpperLiningMaterialAttr = attrMap.get(Constants.INNER_MATERIAL); - if (StringUtils.isEmpty(shoeUpperLiningMaterialAttr)) { - shoeUpperLiningMaterialAttr = attrMap.get(Constants.OUTER_MATERIAL); - } - } - prodAttr.setShoeUpperLiningMaterial(shoeUpperLiningMaterialAttr); - }*/ - - - - - - - - - - - - // 5. 靴款品名 if (attrMap.containsKey(Constants.SHOE_STYLE_NAME_NAME)) { prodAttr.setShoeStyleName(attrMap.get(Constants.SHOE_STYLE_NAME_NAME)); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtAndTyBizController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtAndTyBizController.java index 2d5c550bc..007c7880b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtAndTyBizController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtAndTyBizController.java @@ -9,17 +9,18 @@ import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.HttpStatus; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.domain.entity.SysDictData; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.DateUtils; -import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.es.EsClientWrapper; import com.ruoyi.framework.notice.fs.FsNotice; -import com.ruoyi.web.controller.xkt.migartion.vo.gtAndTy.GtAndTYCompareDownloadVO; -import com.ruoyi.web.controller.xkt.migartion.vo.gtAndTy.GtAndTYInitVO; +import com.ruoyi.system.mapper.SysDictDataMapper; import com.ruoyi.web.controller.xkt.migartion.vo.gt.GtCateVO; import com.ruoyi.web.controller.xkt.migartion.vo.gt.GtProdSkuVO; +import com.ruoyi.web.controller.xkt.migartion.vo.gtAndTy.GtAndTYCompareDownloadVO; +import com.ruoyi.web.controller.xkt.migartion.vo.gtAndTy.GtAndTYInitVO; import com.ruoyi.web.controller.xkt.migartion.vo.ty.TyCusDiscImportVO; import com.ruoyi.web.controller.xkt.migartion.vo.ty.TyCusImportVO; import com.ruoyi.web.controller.xkt.migartion.vo.ty.TyProdImportVO; @@ -35,6 +36,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -76,6 +78,10 @@ public class GtAndTyBizController extends BaseController { final SysProductCategoryMapper prodCateMapper; final EsClientWrapper esClientWrapper; final FsNotice fsNotice; + final SysDictDataMapper dictDataMapper; + + // 系统枚举 鞋面内里材质 + private static final String DICT_TYPE_SHOE_UPPER_LINING_MATERIAL = "shoe_upper_lining_material"; /** * step1 @@ -348,9 +354,17 @@ public class GtAndTyBizController extends BaseController { // gt按照货号分组 Map> gtSaleGroupMap = gtSaleBasicList.stream().collect(Collectors.groupingBy(GtProdSkuVO::getArticle_number)); + // 找到枚举的 鞋面内里材质 + List shoeUpperLiningMaterialList = Optional.ofNullable(this.dictDataMapper.selectList(new LambdaQueryWrapper() + .eq(SysDictData::getDictType, DICT_TYPE_SHOE_UPPER_LINING_MATERIAL).eq(SysDictData::getDelFlag, Constants.UNDELETED))) + .orElseThrow(() -> new ServiceException("系统枚举 鞋面内里材质 不存在!", HttpStatus.ERROR)); + Map shoeUpperLiningMaterialMap = shoeUpperLiningMaterialList.stream().collect(Collectors.toMap(SysDictData::getDictLabel, SysDictData::getDictValue)); + // 商品所有颜色 尺码 颜色库存初始化 List prodColorList = new ArrayList<>(); List prodColorSizeList = new ArrayList<>(); + List newDictDataList = new ArrayList<>(); + Map newShoeUpperLiningMaterialMap = new HashMap<>(); storeProdList.forEach(storeProd -> { // 取clearArtNo String clearArtNo = this.extractCoreArticleNumber(storeProd.getProdArtNum()); @@ -366,9 +380,14 @@ public class GtAndTyBizController extends BaseController { for (TyProdImportVO tyProdImportVO : tyMatchSkuList) { StoreColor storeColor = Optional.ofNullable(storeColorMap.get(tyProdImportVO.getColorName())) .orElseThrow(() -> new ServiceException("没有TY商品颜色!" + tyArtNo, HttpStatus.ERROR)); + // 处理内里材质,若步橘没有的,则需要新增 + if (StringUtils.isNotBlank(tyProdImportVO.getShoeUpperLiningMaterial()) && !shoeUpperLiningMaterialMap.containsKey(tyProdImportVO.getShoeUpperLiningMaterial())) { + newShoeUpperLiningMaterialMap.put(tyProdImportVO.getShoeUpperLiningMaterial(), tyProdImportVO.getShoeUpperLiningMaterial()); + } // 该商品的颜色 prodColorList.add(new StoreProductColor().setStoreId(storeProd.getStoreId()).setStoreProdId(storeProd.getId()).setOrderNum(orderNum.addAndGet(1)) - .setColorName(storeColor.getColorName()).setStoreColorId(storeColor.getId()).setProdStatus(EProductStatus.ON_SALE.getValue())); + .setShoeUpperLiningMaterial(tyProdImportVO.getShoeUpperLiningMaterial()).setColorName(storeColor.getColorName()) + .setStoreColorId(storeColor.getId()).setProdStatus(EProductStatus.ON_SALE.getValue())); // 该颜色所有的尺码 for (int j = 0; j < Constants.SIZE_LIST.size(); j++) { // TY系统条码前缀 @@ -382,6 +401,14 @@ public class GtAndTyBizController extends BaseController { } }); }); + + // 处理新增的 内里材质 枚举 + if (MapUtils.isNotEmpty(newShoeUpperLiningMaterialMap)) { + newShoeUpperLiningMaterialMap.forEach((k, v) -> newDictDataList.add(new SysDictData().setDictLabel(k).setDictValue(k) + .setDictType(DICT_TYPE_SHOE_UPPER_LINING_MATERIAL).setStatus("0").setDictSort(100L))); + this.dictDataMapper.insert(newDictDataList); + } + // 插入商品颜色及颜色对应的尺码,档口服务承诺 this.prodColorMapper.insert(prodColorList); prodColorSizeList.sort(Comparator.comparing(StoreProductColorSize::getStoreProdId).thenComparing(StoreProductColorSize::getSize)); @@ -699,33 +726,8 @@ public class GtAndTyBizController extends BaseController { if (attrMap.containsKey(Constants.SHAFT_MATERIAL_NAME)) { // 先看靴筒面材质,为空则找帮面材质 String shaftMaterialAttr = attrMap.get(Constants.SHAFT_MATERIAL_NAME); - prodAttr.setShaftMaterial(org.apache.commons.lang3.StringUtils.isEmpty(shaftMaterialAttr) ? attrMap.get(Constants.UPPER_MATERIAL_NAME) : shaftMaterialAttr); + prodAttr.setShaftMaterial(StringUtils.isEmpty(shaftMaterialAttr) ? attrMap.get(Constants.UPPER_MATERIAL_NAME) : shaftMaterialAttr); } - - - - /* - // 4. 鞋面内里材质 - if (attrMap.containsKey(Constants.SHOE_UPPER_LINING_MATERIAL_NAME)) { - // 先找鞋面内里材质,为空 则 再找 内里材质,为空则再找 里料材质 - String shoeUpperLiningMaterialAttr = attrMap.get(Constants.SHOE_UPPER_LINING_MATERIAL_NAME); - if (org.apache.commons.lang3.StringUtils.isEmpty(shoeUpperLiningMaterialAttr)) { - shoeUpperLiningMaterialAttr = attrMap.get(Constants.INNER_MATERIAL); - if (org.apache.commons.lang3.StringUtils.isEmpty(shoeUpperLiningMaterialAttr)) { - shoeUpperLiningMaterialAttr = attrMap.get(Constants.OUTER_MATERIAL); - } - } - prodAttr.setShoeUpperLiningMaterial(shoeUpperLiningMaterialAttr); - }*/ - - - - - - - - - // 5. 靴款品名 if (attrMap.containsKey(Constants.SHOE_STYLE_NAME_NAME)) { prodAttr.setShoeStyleName(attrMap.get(Constants.SHOE_STYLE_NAME_NAME)); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtOnlyBizController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtOnlyBizController.java index 1e1b46542..c7fc3414b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtOnlyBizController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtOnlyBizController.java @@ -157,6 +157,7 @@ public class GtOnlyBizController extends BaseController { // 获取GT所有的货品 List gtOnSaleCacheList = ObjectUtils.defaultIfNull(redisCache .getCacheObject(CacheConstants.MIGRATION_GT_SALE_BASIC_KEY + initVO.getUserId()), new ArrayList<>()); + Map gtProdMap = gtOnSaleCacheList.stream().collect(Collectors.toMap(GtProdSkuVO::getArticle_number, x -> x, (s1, s2) -> s2)); Map> gtProdSkuMap = gtOnSaleCacheList.stream().collect(Collectors.groupingBy(GtProdSkuVO::getArticle_number)); // 商品所有颜色 尺码 颜色库存初始化 List prodColorList = new ArrayList<>(); @@ -174,9 +175,11 @@ public class GtOnlyBizController extends BaseController { prodColorMap.forEach((color, gtColor) -> { StoreColor storeColor = Optional.ofNullable(storeColorMap.get(gtColor)) .orElseThrow(() -> new ServiceException("没有GT商品颜色!" + storeProd.getProdArtNum(), HttpStatus.ERROR)); + // 获取GT的内里材质 + final String shoeUpperLiningMaterial = this.getShoeUpperLiningMaterial(initVO.getUserId(), gtProdMap.get(storeProd.getProdArtNum())); // 该商品的颜色 prodColorList.add(new StoreProductColor().setStoreId(storeProd.getStoreId()).setStoreProdId(storeProd.getId()).setOrderNum(orderNum.addAndGet(1)) - .setColorName(storeColor.getColorName()).setStoreColorId(storeColor.getId()).setProdStatus(EProductStatus.ON_SALE.getValue())); + .setColorName(storeColor.getColorName()).setShoeUpperLiningMaterial(shoeUpperLiningMaterial).setStoreColorId(storeColor.getId()).setProdStatus(EProductStatus.ON_SALE.getValue())); Map sizePriceMap = Optional.ofNullable(colorSizePriceMap.get(gtColor)) .orElseThrow(() -> new ServiceException("没有GT商品颜色尺码价格!" + storeProd.getProdArtNum(), HttpStatus.ERROR)); // 该颜色最低价格 @@ -201,6 +204,7 @@ public class GtOnlyBizController extends BaseController { return R.ok(); } + /** * step3 */ @@ -469,5 +473,32 @@ public class GtOnlyBizController extends BaseController { prodAttrMap.put(product_id, prodAttr); } + /** + * 获取GT商品的内里属性 + * @param userId + * @param gtProdSkuVO + * @return + */ + private String getShoeUpperLiningMaterial(Integer userId, GtProdSkuVO gtProdSkuVO) { + String shoeUpperLiningMaterialAttr = ""; + // 类目属性 + Map attrMap = redisCache.getCacheMap(CacheConstants.MIGRATION_GT_SALE_ATTR_KEY + userId + "_" + gtProdSkuVO.getProduct_id()); + if (MapUtils.isEmpty(attrMap)) { + return shoeUpperLiningMaterialAttr; + } + // 4. 鞋面内里材质 + if (attrMap.containsKey(Constants.SHOE_UPPER_LINING_MATERIAL_NAME)) { + // 先找鞋面内里材质,为空 则 再找 内里材质,为空则再找 里料材质 + shoeUpperLiningMaterialAttr = attrMap.get(Constants.SHOE_UPPER_LINING_MATERIAL_NAME); + if (org.apache.commons.lang3.StringUtils.isEmpty(shoeUpperLiningMaterialAttr)) { + shoeUpperLiningMaterialAttr = attrMap.get(Constants.INNER_MATERIAL); + if (org.apache.commons.lang3.StringUtils.isEmpty(shoeUpperLiningMaterialAttr)) { + shoeUpperLiningMaterialAttr = attrMap.get(Constants.OUTER_MATERIAL); + } + } + } + return shoeUpperLiningMaterialAttr; + } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtOtherBizAfterController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtOtherBizAfterController.java index 923c4b69b..c86b11935 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtOtherBizAfterController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtOtherBizAfterController.java @@ -181,6 +181,7 @@ public class GtOtherBizAfterController extends BaseController { // 获取GT所有的货品 List gtOnSaleCacheList = ObjectUtils.defaultIfNull(redisCache .getCacheObject(CacheConstants.MIGRATION_GT_SALE_BASIC_KEY + userId), new ArrayList<>()); + Map gtProdMap = gtOnSaleCacheList.stream().collect(Collectors.toMap(GtProdSkuVO::getArticle_number, x -> x, (s1, s2) -> s2)); Map> gtProdSkuMap = gtOnSaleCacheList.stream().collect(Collectors.groupingBy(GtProdSkuVO::getArticle_number)); // 商品所有颜色 尺码 颜色库存初始化 List prodColorList = new ArrayList<>(); @@ -198,9 +199,11 @@ public class GtOtherBizAfterController extends BaseController { prodColorMap.forEach((color, gtColor) -> { StoreColor storeColor = Optional.ofNullable(storeColorMap.get(gtColor)) .orElseThrow(() -> new ServiceException("没有GT商品颜色!" + storeProd.getProdArtNum(), HttpStatus.ERROR)); + // 获取GT的内里材质 + final String shoeUpperLiningMaterial = this.getShoeUpperLiningMaterial(userId, gtProdMap.get(storeProd.getProdArtNum())); // 该商品的颜色 prodColorList.add(new StoreProductColor().setStoreId(storeProd.getStoreId()).setStoreProdId(storeProd.getId()).setOrderNum(orderNum.addAndGet(1)) - .setColorName(storeColor.getColorName()).setStoreColorId(storeColor.getId()).setProdStatus(EProductStatus.ON_SALE.getValue())); + .setColorName(storeColor.getColorName()).setShoeUpperLiningMaterial(shoeUpperLiningMaterial).setStoreColorId(storeColor.getId()).setProdStatus(EProductStatus.ON_SALE.getValue())); Map sizePriceMap = Optional.ofNullable(colorSizePriceMap.get(gtColor)) .orElseThrow(() -> new ServiceException("没有GT商品颜色尺码价格!" + storeProd.getProdArtNum(), HttpStatus.ERROR)); // 该颜色最低价格 @@ -398,38 +401,6 @@ public class GtOtherBizAfterController extends BaseController { String shaftMaterialAttr = attrMap.get(Constants.SHAFT_MATERIAL_NAME); prodAttr.setShaftMaterial(org.apache.commons.lang3.StringUtils.isEmpty(shaftMaterialAttr) ? attrMap.get(Constants.UPPER_MATERIAL_NAME) : shaftMaterialAttr); } - - - - - - - - /* - // 4. 鞋面内里材质 - if (attrMap.containsKey(Constants.SHOE_UPPER_LINING_MATERIAL_NAME)) { - // 先找鞋面内里材质,为空 则 再找 内里材质,为空则再找 里料材质 - String shoeUpperLiningMaterialAttr = attrMap.get(Constants.SHOE_UPPER_LINING_MATERIAL_NAME); - if (org.apache.commons.lang3.StringUtils.isEmpty(shoeUpperLiningMaterialAttr)) { - shoeUpperLiningMaterialAttr = attrMap.get(Constants.INNER_MATERIAL); - if (org.apache.commons.lang3.StringUtils.isEmpty(shoeUpperLiningMaterialAttr)) { - shoeUpperLiningMaterialAttr = attrMap.get(Constants.OUTER_MATERIAL); - } - } - prodAttr.setShoeUpperLiningMaterial(shoeUpperLiningMaterialAttr); - } - */ - - - - - - - - - - - // 5. 靴款品名 if (attrMap.containsKey(Constants.SHOE_STYLE_NAME_NAME)) { prodAttr.setShoeStyleName(attrMap.get(Constants.SHOE_STYLE_NAME_NAME)); @@ -514,4 +485,32 @@ public class GtOtherBizAfterController extends BaseController { } + /** + * 获取GT商品的内里属性 + * + * @param userId + * @param gtProdSkuVO + * @return + */ + private String getShoeUpperLiningMaterial(Integer userId, GtProdSkuVO gtProdSkuVO) { + String shoeUpperLiningMaterialAttr = ""; + // 类目属性 + Map attrMap = redisCache.getCacheMap(CacheConstants.MIGRATION_GT_SALE_ATTR_KEY + userId + "_" + gtProdSkuVO.getProduct_id()); + if (MapUtils.isEmpty(attrMap)) { + return shoeUpperLiningMaterialAttr; + } + // 4. 鞋面内里材质 + if (attrMap.containsKey(Constants.SHOE_UPPER_LINING_MATERIAL_NAME)) { + // 先找鞋面内里材质,为空 则 再找 内里材质,为空则再找 里料材质 + shoeUpperLiningMaterialAttr = attrMap.get(Constants.SHOE_UPPER_LINING_MATERIAL_NAME); + if (org.apache.commons.lang3.StringUtils.isEmpty(shoeUpperLiningMaterialAttr)) { + shoeUpperLiningMaterialAttr = attrMap.get(Constants.INNER_MATERIAL); + if (org.apache.commons.lang3.StringUtils.isEmpty(shoeUpperLiningMaterialAttr)) { + shoeUpperLiningMaterialAttr = attrMap.get(Constants.OUTER_MATERIAL); + } + } + } + return shoeUpperLiningMaterialAttr; + } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/TYOtherBizAfterController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/TYOtherBizAfterController.java index 730250df2..aaa56b7bb 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/TYOtherBizAfterController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/TYOtherBizAfterController.java @@ -130,83 +130,34 @@ public class TYOtherBizAfterController extends BaseController { Map tyProdMap = tyProdList.stream().collect(Collectors.toMap(TyProdImportVO::getProdArtNum, x -> x, (v1, v2) -> v2)); // 找到枚举的 鞋面材质 和 鞋面内里材质 List attrList = Optional.ofNullable(this.dictDataMapper.selectList(new LambdaQueryWrapper() - .in(SysDictData::getDictType, Arrays.asList(DICT_TYPE_SHAFT_MATERIAL, DICT_TYPE_SHOE_UPPER_LINING_MATERIAL)) - .eq(SysDictData::getDelFlag, Constants.UNDELETED))) + .eq(SysDictData::getDictType, DICT_TYPE_SHAFT_MATERIAL).eq(SysDictData::getDelFlag, Constants.UNDELETED))) .orElseThrow(() -> new ServiceException("系统枚举 鞋面材质及鞋面内里材质 不存在!", HttpStatus.ERROR)); Map shaftMaterialMap = attrList.stream().filter(x -> Objects.equals(x.getDictType(), DICT_TYPE_SHAFT_MATERIAL)) .collect(Collectors.toMap(SysDictData::getDictLabel, SysDictData::getDictValue)); - Map shoeUpperLiningMaterialMap = attrList.stream().filter(x -> Objects.equals(x.getDictType(), DICT_TYPE_SHOE_UPPER_LINING_MATERIAL)) - .collect(Collectors.toMap(SysDictData::getDictLabel, SysDictData::getDictValue)); List prodCateAttrList = new ArrayList<>(); List prodSvcList = new ArrayList<>(); Map newShaftMaterialMap = new HashMap<>(); - Map newShoeUpperLiningMaterialMap = new HashMap<>(); storeProdList.forEach(storeProd -> { TyProdImportVO tyProdVO = Optional.ofNullable(tyProdMap.get(storeProd.getProdArtNum())) .orElseThrow(() -> new ServiceException("TY独有商品,未找到TY对应的商品!", HttpStatus.ERROR)); // 鞋面材质 为数据库不存在的属性,则新增 if (StringUtils.isNotBlank(tyProdVO.getShaftMaterial()) && !shaftMaterialMap.containsKey(tyProdVO.getShaftMaterial())) { newShaftMaterialMap.put(tyProdVO.getShaftMaterial(), tyProdVO.getShaftMaterial()); - } - if (StringUtils.isNotBlank(tyProdVO.getShoeUpperLiningMaterial()) && !shoeUpperLiningMaterialMap.containsKey(tyProdVO.getShoeUpperLiningMaterial())) { - newShoeUpperLiningMaterialMap.put(tyProdVO.getShoeUpperLiningMaterial(), tyProdVO.getShoeUpperLiningMaterial()); - - } - - - - - - - - - - - - /* - - - - // 只设置鞋面材质 和 鞋面内里材质 - prodCateAttrList.add(new StoreProductCategoryAttribute().setStoreId(storeProd.getStoreId()).setStoreProdId(storeProd.getId()) - .setShaftMaterial(tyProdVO.getShaftMaterial()).setShoeUpperLiningMaterial(tyProdVO.getShoeUpperLiningMaterial())); - - - - - */ - - - - - - - - - - - - - - - + // 只设置鞋面材质 + prodCateAttrList.add(new StoreProductCategoryAttribute().setStoreId(storeProd.getStoreId()) + .setStoreProdId(storeProd.getId()).setShaftMaterial(tyProdVO.getShaftMaterial())); // 初始化商品服务承诺 prodSvcList.add(new StoreProductService().setStoreProdId(storeProd.getId()).setCustomRefund("0") .setThirtyDayRefund("0").setOneBatchSale("1").setRefundWithinThreeDay("0")); }); - List newDictDataList = new ArrayList<>(); if (MapUtils.isNotEmpty(newShaftMaterialMap)) { + List newDictDataList = new ArrayList<>(); newShaftMaterialMap.forEach((k, v) -> newDictDataList.add(new SysDictData().setDictLabel(k).setDictValue(k).setDictType(DICT_TYPE_SHAFT_MATERIAL).setStatus("0").setDictSort(100L))); - } - if (MapUtils.isNotEmpty(newShoeUpperLiningMaterialMap)) { - newShoeUpperLiningMaterialMap.forEach((k, v) -> newDictDataList.add(new SysDictData().setDictLabel(k).setDictValue(k) - .setDictType(DICT_TYPE_SHOE_UPPER_LINING_MATERIAL).setStatus("0").setDictSort(100L))); - } - if (CollectionUtils.isNotEmpty(newDictDataList)) { this.dictDataMapper.insert(newDictDataList); } + this.prodCateAttrMapper.insert(prodCateAttrList); this.prodSvcMapper.insert(prodSvcList); return R.ok(); @@ -244,7 +195,7 @@ public class TYOtherBizAfterController extends BaseController { // 从数据库查询最新数据 List storeProdList = this.storeProdMapper.selectList(new LambdaQueryWrapper() .eq(StoreProduct::getStoreId, storeId).eq(StoreProduct::getDelFlag, Constants.UNDELETED) - // TODO 特殊处理,只保留GT单独处理的部分 important important important + // TODO 特殊处理,只保留TY单独处理的部分 important important important .in(StoreProduct::getProdArtNum, tyAfterArtNumGroupMap.keySet())); List storeColorList = this.storeColorMapper.selectList(new LambdaQueryWrapper() .eq(StoreColor::getStoreId, storeId).eq(StoreColor::getDelFlag, Constants.UNDELETED)); @@ -254,9 +205,18 @@ public class TYOtherBizAfterController extends BaseController { List tyProdList = ObjectUtils.defaultIfNull(redisCache .getCacheObject(CacheConstants.MIGRATION_TY_PROD_KEY + userId), new ArrayList<>()); Map> tyProdSkuMap = tyProdList.stream().collect(Collectors.groupingBy(TyProdImportVO::getProdArtNum)); + + // 找到枚举的 鞋面内里材质 + List shoeUpperLiningMaterialList = Optional.ofNullable(this.dictDataMapper.selectList(new LambdaQueryWrapper() + .eq(SysDictData::getDictType, DICT_TYPE_SHOE_UPPER_LINING_MATERIAL).eq(SysDictData::getDelFlag, Constants.UNDELETED))) + .orElseThrow(() -> new ServiceException("系统枚举 鞋面内里材质 不存在!", HttpStatus.ERROR)); + Map shoeUpperLiningMaterialMap = shoeUpperLiningMaterialList.stream().collect(Collectors.toMap(SysDictData::getDictLabel, SysDictData::getDictValue)); + // 商品所有颜色 尺码 颜色库存初始化 List prodColorList = new ArrayList<>(); List prodColorSizeList = new ArrayList<>(); + List newDictDataList = new ArrayList<>(); + Map newShoeUpperLiningMaterialMap = new HashMap<>(); storeProdList.forEach(storeProd -> { Optional.ofNullable(tyAfterArtNumGroupMap.get(storeProd.getProdArtNum())) .orElseThrow(() -> new ServiceException("没有TY[独有]商品货号!" + storeProd.getProdArtNum(), HttpStatus.ERROR)); @@ -267,6 +227,10 @@ public class TYOtherBizAfterController extends BaseController { tyMatchColorList.forEach(tyProdColor -> { StoreColor storeColor = Optional.ofNullable(storeColorMap.get(tyProdColor.getColorName())) .orElseThrow(() -> new ServiceException("没有TY[独有]商品颜色!" + storeProd.getProdArtNum(), HttpStatus.ERROR)); + // 处理内里材质,若步橘没有的,则需要新增 + if (StringUtils.isNotBlank(tyProdColor.getShoeUpperLiningMaterial()) && !shoeUpperLiningMaterialMap.containsKey(tyProdColor.getShoeUpperLiningMaterial())) { + newShoeUpperLiningMaterialMap.put(tyProdColor.getShoeUpperLiningMaterial(), tyProdColor.getShoeUpperLiningMaterial()); + } // 该商品的颜色 prodColorList.add(new StoreProductColor().setStoreId(storeProd.getStoreId()).setStoreProdId(storeProd.getId()).setOrderNum(orderNum.addAndGet(1)) .setColorName(storeColor.getColorName()).setStoreColorId(storeColor.getId()).setProdStatus(EProductStatus.ON_SALE.getValue())); @@ -285,6 +249,14 @@ public class TYOtherBizAfterController extends BaseController { } }); }); + + // 处理新增的 内里材质 枚举 + if (MapUtils.isNotEmpty(newShoeUpperLiningMaterialMap)) { + newShoeUpperLiningMaterialMap.forEach((k, v) -> newDictDataList.add(new SysDictData().setDictLabel(k).setDictValue(k) + .setDictType(DICT_TYPE_SHOE_UPPER_LINING_MATERIAL).setStatus("0").setDictSort(100L))); + this.dictDataMapper.insert(newDictDataList); + } + // 插入商品颜色及颜色对应的尺码,档口服务承诺 this.prodColorMapper.insert(prodColorList); // 按照货号颜色尺码升序排列 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProd/StoreProdResVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProd/StoreProdResVO.java index 3e1cff095..d060f32df 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProd/StoreProdResVO.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProd/StoreProdResVO.java @@ -9,6 +9,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import javax.validation.Valid; +import javax.validation.constraints.NotBlank; import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -73,6 +74,8 @@ public class StoreProdResVO { private Long storeColorId; @ApiModelProperty(value = "颜色名称") private String colorName; + @ApiModelProperty(value = "内里材质") + private String shoeUpperLiningMaterial; @ApiModelProperty(value = "商品尺码") private Integer size; @ApiModelProperty(value = "是否是标准尺码") diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdColor/StoreProdColorDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdColor/StoreProdColorDTO.java index eb8b7ccee..536e8d8b8 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdColor/StoreProdColorDTO.java +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdColor/StoreProdColorDTO.java @@ -19,6 +19,8 @@ public class StoreProdColorDTO { private Long storeColorId; @ApiModelProperty(value = "颜色名称") private String colorName; + @ApiModelProperty(value = "内里材质") + private String shoeUpperLiningMaterial; @ApiModelProperty(value = "排序") private Integer orderNum; diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdColorSize/StoreProdSizeDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdColorSize/StoreProdSizeDTO.java index 186db24cf..7791122bd 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdColorSize/StoreProdSizeDTO.java +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdColorSize/StoreProdSizeDTO.java @@ -17,6 +17,8 @@ public class StoreProdSizeDTO { private Long storeColorId; @ApiModelProperty(value = "颜色名称") private String colorName; + @ApiModelProperty(value = "内里材质") + private String shoeUpperLiningMaterial; @ApiModelProperty(value = "商品尺码") private Integer size; @ApiModelProperty(value = "是否是标准尺码") diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductServiceImpl.java index c079e1ff6..4446ed010 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductServiceImpl.java @@ -132,8 +132,12 @@ public class StoreProductServiceImpl implements IStoreProductService { List allColorList = this.storeColorMapper.selectListByStoreProdId(storeProd.getStoreId()); // 档口当前商品颜色列表 List colorList = this.storeProdColorMapper.selectListByStoreProdId(storeProdId); + // 颜色与内里材质映射 + Map colorLiningMaterialMap = colorList.stream().collect(Collectors + .toMap(StoreProdColorDTO::getColorName, StoreProdColorDTO::getShoeUpperLiningMaterial, (v1, v2) -> v2)); // 档口商品颜色尺码价格列表 List sizeList = this.storeProdColorSizeMapper.selectListByStoreProdId(storeProdId); + sizeList.forEach(size -> size.setShoeUpperLiningMaterial(colorLiningMaterialMap.get(size.getColorName()))); // 档口商品详情 StoreProductDetail prodDetail = this.storeProdDetailMapper.selectByStoreProdId(storeProdId); // 档口服务承诺 diff --git a/xkt/src/main/resources/mapper/StoreProductColorMapper.xml b/xkt/src/main/resources/mapper/StoreProductColorMapper.xml index 7c1932dae..58d07844e 100644 --- a/xkt/src/main/resources/mapper/StoreProductColorMapper.xml +++ b/xkt/src/main/resources/mapper/StoreProductColorMapper.xml @@ -69,7 +69,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sp.produce_price AS producePrice, spc.order_num AS orderNum, spca.shaft_material, - spca.shoe_upper_lining_material + spc.shoe_upper_lining_material FROM store_product_color spc JOIN store_product sp ON spc.store_prod_id = sp.id @@ -88,6 +88,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" spc.store_color_id, sp.prod_art_num, spc.color_name, + spc.shoe_upper_lining_material, (SELECT MIN(spcs.price) FROM store_product_color_size spcs WHERE spcs.store_prod_id = spc.store_prod_id AND spcs.store_color_id = spc.store_color_id AND spcs.del_flag = 0) AS price, spc.order_num