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 29a35b2e1..32c28a806 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 @@ -35,6 +35,9 @@ public class FhbController extends BaseController { final IShipMasterService shipMasterService; final RedisCache redisCache; + /** + * step1 + */ @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") @PostMapping("/prod/cache") public R createProdCache(@Validated @RequestBody FhbProdVO prodVO) { @@ -51,34 +54,18 @@ public class FhbController extends BaseController { throw new ServiceException("同一货号中存在相同的颜色" + artNo, HttpStatus.ERROR); } })); - // 去除空格 - List fhbProdList = prodVO.getData().getRecords().stream() - .map(x -> x.setArtNo(x.getArtNo().trim()).setColor(x.getColor().trim()).setSize(x.getSize().trim()) - .setAddPriceSize(x.getAddPriceSize().trim()).setSnPrefix(x.getSnPrefix().trim())) - .collect(Collectors.toList()); // 先从redis中获取列表数据 List cacheList = ObjectUtils.defaultIfNull(redisCache .getCacheObject(CacheConstants.MIGRATION_SUPPLIER_PROD_KEY + supplierId), new ArrayList<>()); - CollectionUtils.addAll(cacheList, fhbProdList); + CollectionUtils.addAll(cacheList, prodVO.getData().getRecords()); // 存到redis中 redisCache.setCacheObject(CacheConstants.MIGRATION_SUPPLIER_PROD_KEY + supplierId, cacheList, 5, TimeUnit.DAYS); 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(); - } - + /** + * step2 + */ @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") @PostMapping("/cus/cache") public R createCusCache(@Validated @RequestBody FhbCusVO cusVO) { @@ -95,6 +82,43 @@ public class FhbController extends BaseController { return R.ok(); } + /** + * step3 + */ + @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") + @PostMapping("/cus/discount/cache") + public R createCusDiscountCache(@Validated @RequestBody FhbCusDiscountVO cusDiscountVO) { + final Integer supplierId = cusDiscountVO.getData().getRecords().get(0).getSupplierId(); + // 供应商ID + if (ObjectUtils.isEmpty(cusDiscountVO.getData()) || ObjectUtils.isEmpty(cusDiscountVO.getData().getRecords())) { + return R.ok(); + } + // 错误的折扣列表 + List errorCusDiscList = new ArrayList<>(); + // 设置优惠价格 + cusDiscountVO.getData().getRecords().forEach(record -> { + final Integer supplyPrice = ObjectUtils.defaultIfNull(record.getSupplyPrice(), 0); + final Integer customerPrice = ObjectUtils.defaultIfNull(record.getCustomerPrice(), 0); + if (supplyPrice - customerPrice < 0) { + errorCusDiscList.add(record.getArtNo() + ":" + record.getCustomerName() + ":" + record.getColor()); + } + record.setDiscount(supplyPrice - customerPrice); + }); + if (CollectionUtils.isNotEmpty(errorCusDiscList)) { + throw new ServiceException("供应商商品价格有误!" + errorCusDiscList, HttpStatus.ERROR); + } + // 先从redis中获取列表数据 + List cacheList = ObjectUtils.defaultIfNull(redisCache + .getCacheObject(CacheConstants.MIGRATION_SUPPLIER_CUS_DISCOUNT_KEY + supplierId), new ArrayList<>()); + CollectionUtils.addAll(cacheList, cusDiscountVO.getData().getRecords()); + // 存到redis中 + redisCache.setCacheObject(CacheConstants.MIGRATION_SUPPLIER_CUS_DISCOUNT_KEY + supplierId, cacheList, 5, TimeUnit.DAYS); + return R.ok(); + } + + /** + * step4 + */ @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") @PostMapping("/prod/stock/cache/{supplierId}") public R createProdStockCache(@PathVariable Integer supplierId, @Validated @RequestBody FhbProdStockVO stockVO) { @@ -111,34 +135,28 @@ public class FhbController extends BaseController { return R.ok(); } + + + + // ====================================================================================================================================== + + + @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") - @PostMapping("/cus/discount/cache") - public R createCusDiscountCache(@Validated @RequestBody FhbCusDiscountVO cusDiscountVO) { - final Integer supplierId = cusDiscountVO.getData().getRecords().get(0).getSupplierId(); - // 供应商ID - if (ObjectUtils.isEmpty(cusDiscountVO.getData()) || ObjectUtils.isEmpty(cusDiscountVO.getData().getRecords())) { - return R.ok(); - } - // 设置优惠价格 - cusDiscountVO.getData().getRecords().forEach(record -> { - final Integer supplyPrice = ObjectUtils.defaultIfNull(record.getSupplyPrice(), 0); - final Integer customerPrice = ObjectUtils.defaultIfNull(record.getCustomerPrice(), 0); - if (supplyPrice - customerPrice < 0) { - throw new ServiceException("供应商商品价格有误" + record.getArtNo(), HttpStatus.ERROR); - } - record.setDiscount(supplyPrice - customerPrice); - }); - // 先从redis中获取列表数据 - List cacheList = ObjectUtils.defaultIfNull(redisCache - .getCacheObject(CacheConstants.MIGRATION_SUPPLIER_CUS_DISCOUNT_KEY + supplierId), new ArrayList<>()); - CollectionUtils.addAll(cacheList, cusDiscountVO.getData().getRecords()); - // 存到redis中 - redisCache.setCacheObject(CacheConstants.MIGRATION_SUPPLIER_CUS_DISCOUNT_KEY + supplierId, cacheList, 5, TimeUnit.DAYS); + @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); + }*/ + return R.ok(); } - @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") @GetMapping("/prod/cache/{supplierId}") public R getProdCache(@PathVariable Integer supplierId) { @@ -191,6 +209,7 @@ public class FhbController extends BaseController { return R.ok(); } + @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") @GetMapping("/cus/discount/cache/{supplierId}") public R getCusDiscountCache(@PathVariable Integer 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 aa4b76009..f1f04af1e 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 @@ -104,7 +104,7 @@ public class GtAndFhbBizController extends BaseController { .getCacheObject(CacheConstants.MIGRATION_GT_SALE_BASIC_KEY + userId), new ArrayList<>()); Map articleNoColorMap = gtSaleBasicList.stream().collect(Collectors.groupingBy(GtProdSkuVO::getArticle_number, Collectors.collectingAndThen(Collectors.mapping(GtProdSkuVO::getColor, Collectors.toList()), - list -> "(" + list.stream().distinct().collect(Collectors.joining(",")) + ")"))); + list -> "(" + list.stream().sorted(Comparator.naturalOrder()).distinct().collect(Collectors.joining(",")) + ")"))); List doubleRunSaleArtNoList = gtSaleBasicList.stream().map(GtProdSkuVO::getArticle_number) .distinct().collect(Collectors.toList()); // 查看gt 在售的商品 这边有多少相似的货号 @@ -134,7 +134,7 @@ public class GtAndFhbBizController extends BaseController { .getCacheObject(CacheConstants.MIGRATION_SUPPLIER_PROD_KEY + supplierId), new ArrayList<>()); Map fhbArticleNoColorMap = fhbProdList.stream().collect(Collectors.groupingBy(FhbProdVO.SMIVO::getArtNo, Collectors.collectingAndThen(Collectors.mapping(FhbProdVO.SMIVO::getColor, Collectors.toList()), - list -> "(" + list.stream().distinct().collect(Collectors.joining(",")) + ")"))); + list -> "(" + list.stream().sorted(Comparator.naturalOrder()).distinct().collect(Collectors.joining(",")) + ")"))); List shipArtNoList = fhbProdList.stream().map(FhbProdVO.SMIVO::getArtNo) .distinct().collect(Collectors.toList()); shipArtNoList.forEach(artNo -> { 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 9aac4281e..7677baad9 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 @@ -41,7 +41,32 @@ public class GtController extends BaseController { final RedisCache redisCache; final SysProductCategoryMapper prodCateMapper; + /** + * step1 + */ + @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") + @PostMapping("/cate/cache/{user_id}") + public R createCateCache(@PathVariable(value = "user_id") Integer user_id, @Validated @RequestBody GtCateVO cateInitVO) { + if (CollectionUtils.isEmpty(cateInitVO.getData())) { + throw new ServiceException("入参GT分类数据为空!", HttpStatus.ERROR); + } + List cateList = cateInitVO.getData().stream() + // 只处理二级分类及没有子分类的一级分类,因为我们是存的最后的分类 + .filter(x -> x.getHas_child() == 0) + .map(x -> Objects.equals(x.getName(), "时尚雪地靴") ? x.setName("雪地靴") : x) + .collect(Collectors.toList()); + // 先从redis中获取列表数据 + List cacheList = ObjectUtils.defaultIfNull(redisCache + .getCacheObject(CacheConstants.MIGRATION_GT_SALE_CATE_KEY + user_id), new ArrayList<>()); + CollectionUtils.addAll(cacheList, cateList); + // 放到缓存中 + redisCache.setCacheObject(CacheConstants.MIGRATION_GT_SALE_CATE_KEY + user_id, cacheList); + return R.ok(); + } + /** + * step2 + */ @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") @PostMapping("/sale/cache") public R createSaleCache(@Validated @RequestBody GtProdVO doubleRunVO) { @@ -51,7 +76,7 @@ public class GtController extends BaseController { List cacheList = ObjectUtils.defaultIfNull(redisCache .getCacheObject(CacheConstants.MIGRATION_GT_SALE_BASIC_KEY + userId), new ArrayList<>()); // 已存入的map,增加个校验 如果已导入则不重复导入 避免误操作 - Map cacheMap = cacheList.stream().collect(Collectors.toMap(GtProdSkuVO::getArticle_number, GtProdSkuVO::getArticle_number)); + Map cacheMap = cacheList.stream().collect(Collectors.toMap(GtProdSkuVO::getArticle_number, GtProdSkuVO::getArticle_number, (v1, v2) -> v2)); // 三年前的时间 Date threeYearsBefore = java.sql.Date.valueOf(LocalDate.now().minusYears(3)); artNoList.stream() @@ -73,6 +98,9 @@ public class GtController extends BaseController { return R.ok(); } + /** + * step3 + */ @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") @PostMapping("/off-sale/cache") public R createOffSaleCache(@Validated @RequestBody GtProdVO doubleRunVO) { @@ -82,7 +110,7 @@ public class GtController extends BaseController { List cacheList = ObjectUtils.defaultIfNull(redisCache .getCacheObject(CacheConstants.MIGRATION_GT_OFF_SALE_BASIC_KEY + userId), new ArrayList<>()); // 已存入的map,增加个校验 如果已导入则不重复导入 避免误操作 - Map cacheMap = cacheList.stream().collect(Collectors.toMap(GtProdSkuVO::getArticle_number, GtProdSkuVO::getArticle_number)); + Map cacheMap = cacheList.stream().collect(Collectors.toMap(GtProdSkuVO::getArticle_number, GtProdSkuVO::getArticle_number, (v1, v2) -> v2)); artNoList.stream() // 避免误操作 .filter(x -> !cacheMap.containsKey(x.getArticle_number())) @@ -98,6 +126,9 @@ public class GtController extends BaseController { return R.ok(); } + /** + * step4 + */ @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") @PostMapping("/attr/cache/{user_id}/{product_id}") public R createAttrCache(@PathVariable(value = "user_id") Integer user_id, @PathVariable("product_id") Integer product_id, @@ -123,25 +154,6 @@ public class GtController extends BaseController { return R.ok(); } - @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") - @PostMapping("/cate/cache/{user_id}") - public R createCateCache(@PathVariable(value = "user_id") Integer user_id, @Validated @RequestBody GtCateVO cateInitVO) { - if (CollectionUtils.isEmpty(cateInitVO.getData())) { - throw new ServiceException("入参GT分类数据为空!", HttpStatus.ERROR); - } - List cateList = cateInitVO.getData().stream() - .filter(x -> x.getHas_child() == 0) - .map(x -> Objects.equals(x.getName(), "时尚雪地靴") ? x.setName("雪地靴") : x) - .collect(Collectors.toList()); - // 先从redis中获取列表数据 - List cacheList = ObjectUtils.defaultIfNull(redisCache - .getCacheObject(CacheConstants.MIGRATION_GT_SALE_CATE_KEY + user_id), new ArrayList<>()); - CollectionUtils.addAll(cacheList, cateList); - // 放到缓存中 - redisCache.setCacheObject(CacheConstants.MIGRATION_GT_SALE_CATE_KEY + user_id, cacheList); - return R.ok(); - } - @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") @GetMapping("/prod/cache/{userId}") 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 new file mode 100644 index 000000000..e418e5687 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/GtOnlyBizController.java @@ -0,0 +1,19 @@ +package com.ruoyi.web.controller.xkt.migartion; + +import com.ruoyi.common.core.controller.BaseController; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * 只有GT处理 相关 + * + * @author ruoyi + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/rest/v1/gt-only") +public class GtOnlyBizController extends BaseController { + + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/TyController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/TyController.java index 2ee7002af..a6605905f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/TyController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/TyController.java @@ -42,8 +42,11 @@ public class TyController extends BaseController { final RedisCache redisCache; + /** + * step1 + */ @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") - @PostMapping("/-R/prod/cache/{userId}") + @PostMapping("/prod/cache/{userId}") public R createProdCache(@PathVariable Integer userId, MultipartFile file) throws IOException { ExcelUtil util = new ExcelUtil<>(TyProdImportVO.class); List tyProdVOList = util.importExcel(file.getInputStream()); @@ -72,6 +75,9 @@ public class TyController extends BaseController { } + /** + * step2 + */ @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") @PostMapping("/cus/cache/{userId}") public R createCusCache(@PathVariable Integer userId, MultipartFile file) throws IOException { @@ -83,8 +89,11 @@ public class TyController extends BaseController { return R.ok(); } + /** + * step3 + */ @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") - @PostMapping("/-R/cus/disc/cache/{cusName}/{userId}") + @PostMapping("/cus/disc/cache/{cusName}/{userId}") public R createCusDiscCache(@PathVariable(value = "userId") Integer userId, @PathVariable(value = "cusName") String cusName, MultipartFile file) throws IOException { // 从redis中获取已存在的客户优惠数据 @@ -133,8 +142,11 @@ public class TyController extends BaseController { return R.ok(); } + /** + * step4 + */ @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") - @PostMapping("/-R/stock/cache/{userId}") + @PostMapping("/stock/cache/{userId}") public R createTyProdStockCache(@PathVariable Integer userId, MultipartFile file) throws IOException { ExcelUtil util = new ExcelUtil<>(TyProdStockVO.class); List tyStockList = util.importExcel(file.getInputStream()); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/vo/fhb/FhbProdVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/vo/fhb/FhbProdVO.java index 5420d5c83..313c04ef4 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/vo/fhb/FhbProdVO.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/vo/fhb/FhbProdVO.java @@ -30,7 +30,6 @@ public class FhbProdVO { private String size; private BigDecimal addPrice; private String addPriceSize; - private String snPrefix; private BigDecimal salePrice; }