From e7cbfd4a2f753a7aac4eea5b32223f04f4f8e6a2 Mon Sep 17 00:00:00 2001 From: liujiang <569804566@qq.com> Date: Wed, 24 Sep 2025 23:15:13 +0800 Subject: [PATCH] =?UTF-8?q?master=EF=BC=9A=E7=B3=BB=E7=BB=9F=E8=B0=83?= =?UTF-8?q?=E4=BC=98=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xkt/migartion/FhbController.java | 22 ++++-- .../xkt/migartion/GtAndFhbBizController.java | 74 +++++++++---------- .../xkt/migartion/GtController.java | 10 +++ .../ruoyi/common/constant/CacheConstants.java | 4 - .../com/ruoyi/common/constant/Constants.java | 4 +- .../com/ruoyi/xkt/domain/StoreProduct.java | 5 +- 6 files changed, 67 insertions(+), 52 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/FhbController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/FhbController.java index e43f6e99c..e05f549c4 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/FhbController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/FhbController.java @@ -57,6 +57,20 @@ public class FhbController extends BaseController { return R.ok(); } + @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") + @PostMapping("/colors/cache/{supplierId}") + public R createColorsCache(@PathVariable Integer supplierId) { + // 先从redis中获取列表数据 + List cacheList = ObjectUtils.defaultIfNull(redisCache + .getCacheObject(CacheConstants.MIGRATION_SUPPLIER_PROD_KEY + supplierId), new ArrayList<>()); + if (CollectionUtils.isEmpty(cacheList)) { + throw new ServiceException("FHB商品列表为空", HttpStatus.ERROR); + } + List colorNameList = cacheList.stream().map(FhbProdVO.SMIVO::getColor).distinct().collect(Collectors.toList()); + + return R.ok(); + } + @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") @PostMapping("/cus/cache") public R createCusCache(@Validated @RequestBody FhbCusVO cusVO) { @@ -115,13 +129,7 @@ public class FhbController extends BaseController { return R.ok(); } - @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") - @PostMapping("/colors/cache/{supplierId}") - public R createColorsCache(@PathVariable Integer supplierId, @Validated @RequestBody FhbColorVO colorVO) { - // 存到redis中 - redisCache.setCacheObject(CacheConstants.MIGRATION_SUPPLIER_PROD_COLOR_KEY + supplierId, colorVO.getData(), 5, TimeUnit.DAYS); - return R.ok(); - } + @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") @GetMapping("/prod/cache/{supplierId}") 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 6c9cc2bf4..f38d3caae 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 @@ -5,6 +5,7 @@ import com.ruoyi.common.constant.CacheConstants; 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.redis.RedisCache; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.DateUtils; @@ -26,6 +27,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.ObjectUtils; import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -60,11 +62,6 @@ public class GtAndFhbBizController extends BaseController { final StoreProductServiceMapper prodSvcMapper; final StoreProductCategoryAttributeMapper prodCateAttrMapper; - // TODO 档口注册的时候,会创建现金客户,在插入客户时,需要注意 - // TODO 档口注册的时候,会创建现金客户,在插入客户时,需要注意 - // TODO 档口注册的时候,会创建现金客户,在插入客户时,需要注意 - - @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") @PutMapping("/sync-es/{storeId}") public void syncToEs(@PathVariable("storeId") Long storeId) { @@ -207,7 +204,10 @@ public class GtAndFhbBizController extends BaseController { * */ @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") - @PutMapping("/save") + @PutMapping("/init") + + @Transactional + public void initToDB(@Validated @RequestBody GtAndFHBInitVO initVO) { final Store store = Optional.ofNullable(this.storeMapper.selectOne(new LambdaQueryWrapper() .eq(Store::getId, initVO.getStoreId()).eq(Store::getDelFlag, Constants.UNDELETED))) @@ -220,7 +220,7 @@ public class GtAndFhbBizController extends BaseController { // c. 库存初始化 // d. 服务承诺初始化 // e. 类目属性初始化 - this.initStoreProdList(initVO, storeColorMap); + this.init(initVO, storeColorMap); @@ -238,7 +238,7 @@ public class GtAndFhbBizController extends BaseController { * 初始化档口商品列表 * @param storeColorMap 档口颜色map */ - private void initStoreProdList(GtAndFHBInitVO initVO, Map storeColorMap) { + private R init(GtAndFHBInitVO initVO, Map storeColorMap) { // 步骤2: GT 和 FHB 货号对应关系,然后直接copy 对应的属性关系 // a. 商品与颜色对应关系 // b. 商品颜色尺码 + 价格 对应关系 @@ -346,12 +346,13 @@ public class GtAndFhbBizController extends BaseController { StoreColor storeColor = Optional.ofNullable(storeColorMap.get(fhbMatchSkuList.get(i).getColor())) .orElseThrow(() -> new ServiceException("没有FHB商品颜色!" + fhbArtNo, HttpStatus.ERROR)); // 该商品的颜色 - prodColorList.add(new StoreProductColor().setStoreId(storeProd.getStoreId()).setStoreProdId(storeProd.getId()) + prodColorList.add(new StoreProductColor().setStoreId(storeProd.getStoreId()).setStoreProdId(storeProd.getId()).setOrderNum(i + 1) .setColorName(storeColor.getColorName()).setStoreColorId(storeColor.getId()).setProdStatus(EProductStatus.ON_SALE.getValue())); // 该颜色所有的尺码 for (int j = 0; j < Constants.SIZE_LIST.size(); j++) { // FHB系统条码前缀 - final String otherSnPrefix = fhbMatchSkuList.get(i).getSupplierId() + String.format("%05d", fhbMatchSkuList.get(i).getSupplierSkuId()); + final String otherSnPrefix = fhbMatchSkuList.get(i).getSupplierId() + + String.format("%05d", fhbMatchSkuList.get(i).getSupplierSkuId()) + Constants.SIZE_LIST.get(j); prodColorSizeList.add(new StoreProductColorSize().setSize(Constants.SIZE_LIST.get(j)).setStoreColorId(storeColor.getId()) .setStoreProdId(storeProd.getId()).setPrice(minPrice).setOtherSnPrefix(otherSnPrefix).setNextSn(0) .setStandard(gtStandardSizeList.contains(Constants.SIZE_LIST.get(j)) ? 1 : 0)); @@ -366,6 +367,7 @@ public class GtAndFhbBizController extends BaseController { // 初始化商品的类目属性 StoreProductCategoryAttribute cateAttr = Optional.ofNullable(prodAttrMap.get(gtMatchSkuList.get(0).getProduct_id())) .orElseThrow(() -> new ServiceException("没有GT商品类目属性!" + storeProd.getProdArtNum(), HttpStatus.ERROR)); + cateAttr.setStoreId(storeProd.getStoreId()).setStoreProdId(storeProd.getId()); prodAttrList.add(cateAttr); }); // 插入商品颜色及颜色对应的尺码,档口服务承诺 @@ -390,6 +392,8 @@ public class GtAndFhbBizController extends BaseController { // 步骤4: 客户与货号的优惠关系 this.initStoreCusProdDiscList(initVO, storeProdList, storeCusList, prodColorList, multiSameFhbMap, fhbProdGroupMap); + + return R.ok(); } @@ -423,33 +427,27 @@ public class GtAndFhbBizController extends BaseController { List prodCusDiscList = new ArrayList<>(); // 依次遍历商品列表,找到货号和FHB货号对应关系,然后用颜色进行匹配,建立客户优惠关系 storeProdList.forEach(storeProd -> { - // 当前商品颜色列表 + // 当前商品颜色列表 key 颜色中文名称 Map buJuProdColorMap = Optional.ofNullable(prodColorGroupMap.get(storeProd.getId())).orElseThrow(() -> new ServiceException("没有商品颜色!" + storeProd.getProdArtNum(), HttpStatus.ERROR)); - // FHB货号下颜色优惠列表 - Map> fhbColorCusDiscMap = Optional.ofNullable(fhbCusDiscGroupMap.get(storeProd.getProdArtNum())).orElseThrow(() -> new ServiceException("没有FHB货号对应的颜色的客户优惠!" + storeProd.getProdArtNum(), HttpStatus.ERROR)); // 根据步橘货号 找到FHB对应的货号,可能是列表 List fhbAtrNoList = Optional.ofNullable(multiSameFhbMap.get(storeProd.getProdArtNum())).orElseThrow(() -> new ServiceException("没有FHB货号!" + storeProd.getProdArtNum(), HttpStatus.ERROR)); fhbAtrNoList.forEach(fhbAtrNo -> { - // 找到FHB货号对应的颜色 - List fhbProdColorList = Optional.ofNullable(fhbProdGroupMap.get(fhbAtrNo)).orElseThrow(() -> new ServiceException("没有FHB货号对应的颜色!" + fhbAtrNo, HttpStatus.ERROR)); - fhbProdColorList.forEach(fhbProdColor -> { - // 获取FHB颜色有哪些客户优惠 - List fhbCurColorCusDiscList = fhbColorCusDiscMap.get(fhbProdColor.getColor()); - if (CollectionUtils.isEmpty(fhbCurColorCusDiscList)) { - return; - } - fhbCurColorCusDiscList.forEach(fhbCusDisc -> { - StoreProductColor buJuProdColor = Optional.ofNullable(buJuProdColorMap.get(fhbProdColor.getColor())).orElseThrow(() -> new ServiceException("没有步橘系统对应的颜色!" + fhbProdColor.getColor(), HttpStatus.ERROR)); - StoreCustomer storeCus = Optional.ofNullable(buJuStoreCusMap.get(fhbCusDisc.getCustomerName())).orElseThrow(() -> new ServiceException("没有步橘系统对应的客户!" + fhbCusDisc.getCustomerName(), HttpStatus.ERROR)); - // 将FHB客户优惠 转为步橘系统优惠 - prodCusDiscList.add(new StoreCustomerProductDiscount().setStoreId(storeProd.getStoreId()).setStoreProdId(storeProd.getId()).setStoreCusId(storeCus.getId()) - .setStoreCusName(storeCus.getCusName()).setStoreProdColorId(buJuProdColor.getId()).setDiscount(fhbCusDisc.getDiscount())); - }); - }); + // FHB货号下有哪些颜色存在客户优惠 + Map> fhbColorCusDiscMap = fhbCusDiscGroupMap.get(fhbAtrNo); + if (MapUtils.isEmpty(fhbColorCusDiscMap)) { + return; + } + // 依次遍历存在优惠的颜色,设置步橘系统客户优惠关系 + fhbColorCusDiscMap.forEach((fhbColor, fhbCusDiscList) -> fhbCusDiscList.forEach(fhbCusDisc -> { + StoreProductColor buJuProdColor = Optional.ofNullable(buJuProdColorMap.get(fhbColor)).orElseThrow(() -> new ServiceException("没有步橘系统对应的颜色!" + fhbColor, HttpStatus.ERROR)); + StoreCustomer storeCus = Optional.ofNullable(buJuStoreCusMap.get(fhbCusDisc.getCustomerName())).orElseThrow(() -> new ServiceException("没有步橘系统对应的客户!" + fhbCusDisc.getCustomerName(), HttpStatus.ERROR)); + // 将FHB客户优惠 转为步橘系统优惠 + prodCusDiscList.add(new StoreCustomerProductDiscount().setStoreId(storeProd.getStoreId()).setStoreProdId(storeProd.getId()).setStoreCusId(storeCus.getId()) + .setStoreCusName(storeCus.getCusName()).setStoreProdColorId(buJuProdColor.getId()).setDiscount(fhbCusDisc.getDiscount())); + })); }); - - this.storeCusProdDiscMapper.insert(prodCusDiscList); }); + this.storeCusProdDiscMapper.insert(prodCusDiscList); } /** @@ -505,8 +503,8 @@ public class GtAndFhbBizController extends BaseController { prodAttr.setShoeUpperLiningMaterial(attrMap.get(Constants.SHOE_UPPER_LINING_MATERIAL_NAME)); } // 5. 靴款品名 - if (attrMap.containsKey(Constants.SHOE_STYLE_NAME)) { - prodAttr.setShoeStyleName(attrMap.get(Constants.SHOE_STYLE_NAME)); + if (attrMap.containsKey(Constants.SHOE_STYLE_NAME_NAME)) { + prodAttr.setShoeStyleName(attrMap.get(Constants.SHOE_STYLE_NAME_NAME)); } // 6. 筒高 if (attrMap.containsKey(Constants.SHAFT_HEIGHT_NAME)) { @@ -516,7 +514,7 @@ public class GtAndFhbBizController extends BaseController { if (attrMap.containsKey(Constants.INSOLE_MATERIAL_NAME)) { prodAttr.setInsoleMaterial(attrMap.get(Constants.INSOLE_MATERIAL_NAME)); } - // 8. 上市季节年份 + // 8. 上市年份季节 if (attrMap.containsKey(Constants.RELEASE_YEAR_SEASON_NAME)) { prodAttr.setReleaseYearSeason(attrMap.get(Constants.RELEASE_YEAR_SEASON_NAME)); } @@ -610,10 +608,12 @@ public class GtAndFhbBizController extends BaseController { * @param supplierId 供应商ID */ private Map initStoreColorList(Long storeId, Integer supplierId) { - List gtColorList = this.redisCache.getCacheObject(CacheConstants.MIGRATION_SUPPLIER_PROD_COLOR_KEY + supplierId); - if (CollectionUtils.isEmpty(gtColorList)) { - throw new ServiceException("没有颜色数据!", HttpStatus.ERROR); + List cacheList = ObjectUtils.defaultIfNull(redisCache + .getCacheObject(CacheConstants.MIGRATION_SUPPLIER_PROD_KEY + supplierId), new ArrayList<>()); + if (CollectionUtils.isEmpty(cacheList)) { + throw new ServiceException("FHB商品列表为空", HttpStatus.ERROR); } + List gtColorList = cacheList.stream().map(FhbProdVO.SMIVO::getColor).distinct().collect(Collectors.toList()); List storeColorList = new ArrayList<>(); for (int i = 0; i < gtColorList.size(); i++) { storeColorList.add(new StoreColor().setStoreId(storeId).setColorName(gtColorList.get(i)).setOrderNum(i + 1)); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtController.java index 22ee47e10..549b1fde2 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtController.java @@ -109,6 +109,16 @@ public class GtController extends BaseController { @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") @PostMapping("/cate/cache/{user_id}") public R createCateCache(@PathVariable(value = "user_id") Integer user_id, MultipartFile file) throws IOException { + + + // TODO GT分类基础数据导入,然后从商品属性那儿解决 + // TODO GT分类基础数据导入,然后从商品属性那儿解决 + // TODO GT分类基础数据导入,然后从商品属性那儿解决 + + + + + ExcelUtil util = new ExcelUtil<>(GtCateVO.class); List artNoCateList = util.importExcel(file.getInputStream()); // 步橘网获取所有的分类 diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheConstants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheConstants.java index 6e0bea545..7884dae35 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheConstants.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheConstants.java @@ -328,10 +328,6 @@ public class CacheConstants { * FHB客户优惠缓存 */ public static final String MIGRATION_SUPPLIER_CUS_DISCOUNT_KEY = "mig_fhb_cus_discount:"; - /** - * FHB商品颜色缓存 - */ - public static final String MIGRATION_SUPPLIER_PROD_COLOR_KEY = "mig_fhb_prod_color:"; /** * GT在售缓存 */ diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java index 0f9c26403..d253b6dc9 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java @@ -337,7 +337,7 @@ public class Constants public static final String INSOLE_MATERIAL = "insoleMaterial"; public static final String INSOLE_MATERIAL_NAME = "鞋垫材质"; public static final String RELEASE_YEAR_SEASON = "releaseYearSeason"; - public static final String RELEASE_YEAR_SEASON_NAME = "上市季节年份"; + public static final String RELEASE_YEAR_SEASON_NAME = "上市年份季节"; public static final String HEEL_HEIGHT = "heelHeight"; public static final String HEEL_HEIGHT_NAME = "后跟高"; public static final String HEEL_TYPE = "heelType"; @@ -357,7 +357,7 @@ public class Constants public static final String LEATHER_FEATURES = "leatherFeatures"; public static final String LEATHER_FEATURES_NAME = "皮质特征"; public static final String MANUFACTURING_PROCESS = "manufacturingProcess"; - public static final String MANUFACTURING_PROCESS_NAME = "制作工艺"; + public static final String MANUFACTURING_PROCESS_NAME = "鞋制作工艺"; public static final String PATTERN = "pattern"; public static final String PATTERN_NAME = "图案"; public static final String CLOSURE_TYPE = "closureType"; diff --git a/xkt/src/main/java/com/ruoyi/xkt/domain/StoreProduct.java b/xkt/src/main/java/com/ruoyi/xkt/domain/StoreProduct.java index 64ff663bd..d656eb49c 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/domain/StoreProduct.java +++ b/xkt/src/main/java/com/ruoyi/xkt/domain/StoreProduct.java @@ -7,8 +7,6 @@ import com.ruoyi.common.core.domain.XktBaseEntity; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; import java.math.BigDecimal; import java.util.Date; @@ -106,18 +104,21 @@ public class StoreProduct extends XktBaseEntity { /** * 推荐数值 + * * @return */ private Long recommendWeight; /** * 销量数值 + * * @return */ private Long saleWeight; /** * 人气数值 + * * @return */ private Long popularityWeight;