master:系统调优;

pull/1121/head
liujiang 2025-09-23 09:58:44 +08:00
parent a3affaa0b3
commit 173976a170
8 changed files with 112 additions and 43 deletions

View File

@ -4,8 +4,8 @@ import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.web.controller.xkt.shipMaster.vo.DoubleRunVO;
import com.ruoyi.web.controller.xkt.shipMaster.vo.ShipMasterVO;
import com.ruoyi.web.controller.xkt.shipMaster.vo.doubRun.DoubleRunProdVO;
import com.ruoyi.web.controller.xkt.shipMaster.vo.shipMaster.ShipMasterProdVO;
import com.ruoyi.xkt.service.shipMaster.IShipMasterService;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.ObjectUtils;
@ -37,9 +37,9 @@ public class CompareBizController extends BaseController {
Map<String, List<String>> multiSaleSameGoMap = new HashMap<>();
Map<String, List<String>> multiOffSaleSameGoMap = new HashMap<>();
Map<String, List<String>> multiSameFMap = new HashMap<>();
List<DoubleRunVO.DRIArtNoSkuVO> doubleRunSaleBasicList = ObjectUtils.defaultIfNull(redisCache
List<DoubleRunProdVO.DRIArtNoSkuVO> doubleRunSaleBasicList = ObjectUtils.defaultIfNull(redisCache
.getCacheObject(CacheConstants.MIGRATION_DOUBLE_RUN_SALE_BASIC_KEY + userId), new ArrayList<>());
List<String> doubleRunSaleArtNoList = doubleRunSaleBasicList.stream().map(DoubleRunVO.DRIArtNoSkuVO::getArticle_number)
List<String> doubleRunSaleArtNoList = doubleRunSaleBasicList.stream().map(DoubleRunProdVO.DRIArtNoSkuVO::getArticle_number)
.distinct().collect(Collectors.toList());
// 查看double_run 在售的商品 这边有多少相似的货号
doubleRunSaleArtNoList.forEach(article_number -> {
@ -51,9 +51,9 @@ public class CompareBizController extends BaseController {
});
// 查看double_run 下架的商品有多少相似的货号
List<DoubleRunVO.DRIArtNoSkuVO> doubleRunOffSaleBasicList = ObjectUtils.defaultIfNull(redisCache
List<DoubleRunProdVO.DRIArtNoSkuVO> doubleRunOffSaleBasicList = ObjectUtils.defaultIfNull(redisCache
.getCacheObject(CacheConstants.MIGRATION_DOUBLE_RUN_OFF_SALE_BASIC_KEY + userId), new ArrayList<>());
List<String> doubleRunOffSaleArtNoList = doubleRunOffSaleBasicList.stream().map(DoubleRunVO.DRIArtNoSkuVO::getArticle_number)
List<String> doubleRunOffSaleArtNoList = doubleRunOffSaleBasicList.stream().map(DoubleRunProdVO.DRIArtNoSkuVO::getArticle_number)
.distinct().collect(Collectors.toList());
doubleRunOffSaleArtNoList.forEach(article_number -> {
// 只保留数字,去除其他所有符号
@ -65,9 +65,9 @@ public class CompareBizController extends BaseController {
// 查看ShipMaster 这边有多少相似的货号
List<ShipMasterVO.SMIVO> shipMasterProdList = ObjectUtils.defaultIfNull(redisCache
List<ShipMasterProdVO.SMIVO> shipMasterProdList = ObjectUtils.defaultIfNull(redisCache
.getCacheObject(CacheConstants.MIGRATION_SUPPLIER_PROD_KEY + supplierId), new ArrayList<>());
List<String> shipArtNoList = shipMasterProdList.stream().map(ShipMasterVO.SMIVO::getArtNo)
List<String> shipArtNoList = shipMasterProdList.stream().map(ShipMasterProdVO.SMIVO::getArtNo)
.distinct().collect(Collectors.toList());
shipArtNoList.forEach(artNo -> {
// 只保留数字,去除其他所有符号

View File

@ -6,8 +6,8 @@ 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.web.controller.xkt.shipMaster.vo.DoubleRunAttrVO;
import com.ruoyi.web.controller.xkt.shipMaster.vo.DoubleRunVO;
import com.ruoyi.web.controller.xkt.shipMaster.vo.doubRun.DoubleRunAttrVO;
import com.ruoyi.web.controller.xkt.shipMaster.vo.doubRun.DoubleRunProdVO;
import com.ruoyi.xkt.service.shipMaster.IShipMasterService;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
@ -18,7 +18,6 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
@ -36,11 +35,11 @@ public class DoubleRunController extends BaseController {
@PreAuthorize("@ss.hasAnyRoles('admin,general_admin')")
@PostMapping("/sale/cache")
public R<Integer> createSaleCache(@Validated @RequestBody DoubleRunVO doubleRunVO) {
List<DoubleRunVO.DRIArtNoVO> artNoList = doubleRunVO.getData().getData();
public R<Integer> createSaleCache(@Validated @RequestBody DoubleRunProdVO doubleRunVO) {
List<DoubleRunProdVO.DRIArtNoVO> artNoList = doubleRunVO.getData().getData();
final Integer userId = doubleRunVO.getData().getData().get(0).getUser_id();
// 先从redis中获取列表数据
List<DoubleRunVO.DRIArtNoSkuVO> cacheList = ObjectUtils.defaultIfNull(redisCache
List<DoubleRunProdVO.DRIArtNoSkuVO> cacheList = ObjectUtils.defaultIfNull(redisCache
.getCacheObject(CacheConstants.MIGRATION_DOUBLE_RUN_SALE_BASIC_KEY + userId), new ArrayList<>());
artNoList.forEach(artNoInfo -> {
artNoInfo.getSkus().forEach(x -> x.setColor(this.decodeUnicode(x.getColor()))
@ -54,11 +53,11 @@ public class DoubleRunController extends BaseController {
@PreAuthorize("@ss.hasAnyRoles('admin,general_admin')")
@PostMapping("/off-sale/cache")
public R<Integer> createOffSaleCache(@Validated @RequestBody DoubleRunVO doubleRunVO) {
List<DoubleRunVO.DRIArtNoVO> artNoList = doubleRunVO.getData().getData();
public R<Integer> createOffSaleCache(@Validated @RequestBody DoubleRunProdVO doubleRunVO) {
List<DoubleRunProdVO.DRIArtNoVO> artNoList = doubleRunVO.getData().getData();
final Integer userId = doubleRunVO.getData().getData().get(0).getUser_id();
// 先从redis中获取列表数据
List<DoubleRunVO.DRIArtNoSkuVO> cacheList = ObjectUtils.defaultIfNull(redisCache
List<DoubleRunProdVO.DRIArtNoSkuVO> cacheList = ObjectUtils.defaultIfNull(redisCache
.getCacheObject(CacheConstants.MIGRATION_DOUBLE_RUN_OFF_SALE_BASIC_KEY + userId), new ArrayList<>());
artNoList.forEach(artNoInfo -> {
artNoInfo.getSkus().forEach(x -> x.setColor(this.decodeUnicode(x.getColor()))
@ -100,20 +99,20 @@ public class DoubleRunController extends BaseController {
@GetMapping("/cache/{userId}")
public R<Integer> getCache(@PathVariable Integer userId) {
// 从redis中获取数据
List<DoubleRunVO.DRIArtNoSkuVO> cacheList = ObjectUtils.defaultIfNull(redisCache
List<DoubleRunProdVO.DRIArtNoSkuVO> cacheList = ObjectUtils.defaultIfNull(redisCache
.getCacheObject(CacheConstants.MIGRATION_DOUBLE_RUN_SALE_BASIC_KEY + userId), new ArrayList<>());
if (CollectionUtils.isEmpty(cacheList)) {
return R.fail();
}
Map<String, List<DoubleRunVO.DRIArtNoSkuVO>> artNoGroup = cacheList.stream()
.sorted(Comparator.comparing(DoubleRunVO.DRIArtNoSkuVO::getArticle_number)
.thenComparing(DoubleRunVO.DRIArtNoSkuVO::getColor))
Map<String, List<DoubleRunProdVO.DRIArtNoSkuVO>> artNoGroup = cacheList.stream()
.sorted(Comparator.comparing(DoubleRunProdVO.DRIArtNoSkuVO::getArticle_number)
.thenComparing(DoubleRunProdVO.DRIArtNoSkuVO::getColor))
.collect(Collectors
.groupingBy(DoubleRunVO.DRIArtNoSkuVO::getArticle_number, LinkedHashMap::new, Collectors.toList()));
.groupingBy(DoubleRunProdVO.DRIArtNoSkuVO::getArticle_number, LinkedHashMap::new, Collectors.toList()));
// 货号 颜色 map
Map<String, List<String>> artNoColorMap = new LinkedHashMap<>();
artNoGroup.forEach((artNo, colorList) -> {
artNoColorMap.put(artNo, colorList.stream().map(DoubleRunVO.DRIArtNoSkuVO::getColor).collect(Collectors.toList()));
artNoColorMap.put(artNo, colorList.stream().map(DoubleRunProdVO.DRIArtNoSkuVO::getColor).collect(Collectors.toList()));
});
artNoColorMap.forEach((k,v) -> {

View File

@ -4,7 +4,8 @@ import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.web.controller.xkt.shipMaster.vo.ShipMasterVO;
import com.ruoyi.web.controller.xkt.shipMaster.vo.shipMaster.ShipMasterCusVO;
import com.ruoyi.web.controller.xkt.shipMaster.vo.shipMaster.ShipMasterProdVO;
import com.ruoyi.xkt.service.shipMaster.IShipMasterService;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
@ -31,40 +32,62 @@ public class ShipMasterController extends BaseController {
final RedisCache redisCache;
@PreAuthorize("@ss.hasAnyRoles('admin,general_admin')")
@PostMapping("/cache")
public R<Integer> createCache(@Validated @RequestBody ShipMasterVO importVO) {
@PostMapping("/prod/cache")
public R<Integer> createProdCache(@Validated @RequestBody ShipMasterProdVO prodVO) {
// 供应商ID
final Integer supplierId = importVO.getData().getRecords().get(0).getSupplierId();
final Integer supplierId = prodVO.getData().getRecords().get(0).getSupplierId();
if (CollectionUtils.isEmpty(prodVO.getData().getRecords())) {
return R.ok();
}
// 先从redis中获取列表数据
List<ShipMasterVO.SMIVO> cacheList = ObjectUtils.defaultIfNull(redisCache
List<ShipMasterProdVO.SMIVO> cacheList = ObjectUtils.defaultIfNull(redisCache
.getCacheObject(CacheConstants.MIGRATION_SUPPLIER_PROD_KEY + supplierId), new ArrayList<>());
CollectionUtils.addAll(cacheList, importVO.getData().getRecords());
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')")
@GetMapping("/cache/{supplierId}")
public R<Integer> getCache(@PathVariable Integer supplierId) {
@PostMapping("/cus/cache")
public R<Integer> createCusCache(@Validated @RequestBody ShipMasterCusVO cusVO) {
// 供应商ID
final Integer supplierId = cusVO.getData().getRecords().get(0).getSupplierId();
if (CollectionUtils.isEmpty(cusVO.getData().getRecords())) {
return R.ok();
}
// 先从redis中获取列表数据
List<ShipMasterCusVO.SMCVO> cacheList = ObjectUtils.defaultIfNull(redisCache
.getCacheObject(CacheConstants.MIGRATION_SUPPLIER_CUS_KEY + supplierId), new ArrayList<>());
CollectionUtils.addAll(cacheList, cusVO.getData().getRecords());
// 存到redis中
redisCache.setCacheObject(CacheConstants.MIGRATION_SUPPLIER_CUS_KEY + supplierId, cacheList, 5, TimeUnit.DAYS);
return R.ok();
}
@PreAuthorize("@ss.hasAnyRoles('admin,general_admin')")
@GetMapping("/prod/cache/{supplierId}")
public R<Integer> getProdCache(@PathVariable Integer supplierId) {
// 从redis中获取数据
List<ShipMasterVO.SMIVO> cacheList = ObjectUtils.defaultIfNull(redisCache
List<ShipMasterProdVO.SMIVO> cacheList = ObjectUtils.defaultIfNull(redisCache
.getCacheObject(CacheConstants.MIGRATION_SUPPLIER_PROD_KEY + supplierId), new ArrayList<>());
if (CollectionUtils.isEmpty(cacheList)) {
return R.fail();
}
// 按照artNo分组
Map<String, List<ShipMasterVO.SMIVO>> artNoGroup = cacheList.stream()
.sorted(Comparator.comparing(ShipMasterVO.SMIVO::getArtNo)
.thenComparing(ShipMasterVO.SMIVO::getColor))
Map<String, List<ShipMasterProdVO.SMIVO>> artNoGroup = cacheList.stream()
.sorted(Comparator.comparing(ShipMasterProdVO.SMIVO::getArtNo)
.thenComparing(ShipMasterProdVO.SMIVO::getColor))
.collect(Collectors
.groupingBy(ShipMasterVO.SMIVO::getArtNo, LinkedHashMap::new, Collectors.toList()));
.groupingBy(ShipMasterProdVO.SMIVO::getArtNo, LinkedHashMap::new, Collectors.toList()));
// 货号 颜色 对应的条码前缀
Map<String, Map<String, String>> artSnPrefixMap = new LinkedHashMap<>();
// 货号 颜色 map
Map<String, List<String>> artNoColorMap = new LinkedHashMap<>();
artNoGroup.forEach((artNo, colorList) -> {
artNoColorMap.put(artNo, colorList.stream().map(ShipMasterVO.SMIVO::getColor).collect(Collectors.toList()));
artNoColorMap.put(artNo, colorList.stream().map(ShipMasterProdVO.SMIVO::getColor).collect(Collectors.toList()));
Map<String, String> snPrefixMap = new LinkedHashMap<>();
// 按照颜色设置条码前缀
colorList.forEach(color -> snPrefixMap
@ -81,4 +104,20 @@ public class ShipMasterController extends BaseController {
}
@PreAuthorize("@ss.hasAnyRoles('admin,general_admin')")
@GetMapping("/cus/cache/{supplierId}")
public R<Integer> getCusCache(@PathVariable Integer supplierId) {
// 从redis中获取数据
List<ShipMasterCusVO.SMCVO> cacheList = ObjectUtils.defaultIfNull(redisCache
.getCacheObject(CacheConstants.MIGRATION_SUPPLIER_CUS_KEY + supplierId), new ArrayList<>());
if (CollectionUtils.isEmpty(cacheList)) {
return R.fail();
}
Map<Integer, List<ShipMasterCusVO.SMCVO>> cusGroupMap = cacheList.stream().collect(Collectors
.groupingBy(ShipMasterCusVO.SMCVO::getSupplierId, LinkedHashMap::new, Collectors.toList()));
System.err.println(cusGroupMap);
return R.ok();
}
}

View File

@ -1,4 +1,4 @@
package com.ruoyi.web.controller.xkt.shipMaster.vo;
package com.ruoyi.web.controller.xkt.shipMaster.vo.doubRun;
import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.ruoyi.web.controller.xkt.shipMaster.vo;
package com.ruoyi.web.controller.xkt.shipMaster.vo.doubRun;
import lombok.Data;
import lombok.experimental.Accessors;
@ -11,7 +11,7 @@ import java.util.List;
* @date 2025-05-11 23:46
*/
@Data
public class DoubleRunVO {
public class DoubleRunProdVO {
private DRIDataVO data;

View File

@ -0,0 +1,27 @@
package com.ruoyi.web.controller.xkt.shipMaster.vo.shipMaster;
import lombok.Data;
import java.util.List;
/**
* @author liangyq
* @date 2025-05-11 23:46
*/
@Data
public class ShipMasterCusVO {
private SMCDataVO data;
@Data
public static class SMCDataVO {
private List<SMCVO> records;
}
@Data
public static class SMCVO {
private Integer supplierId;
private String name;
}
}

View File

@ -1,4 +1,4 @@
package com.ruoyi.web.controller.xkt.shipMaster.vo;
package com.ruoyi.web.controller.xkt.shipMaster.vo.shipMaster;
import lombok.Data;
@ -9,7 +9,7 @@ import java.util.List;
* @date 2025-05-11 23:46
*/
@Data
public class ShipMasterVO {
public class ShipMasterProdVO {
private SMIDataVO data;

View File

@ -313,9 +313,13 @@ public class CacheConstants {
*/
public static final String STORE_PROD_VIEW_COUNT_CACHE = "store_prod_view_count_cache";
/**
*
* FHB
*/
public static final String MIGRATION_SUPPLIER_PROD_KEY = "mig_supplier_prod:";
/**
* FHB
*/
public static final String MIGRATION_SUPPLIER_CUS_KEY = "mig_supplier_cus:";
/**
* double_run
*/