diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/shipMaster/CompareBizController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/shipMaster/CompareBizController.java new file mode 100644 index 000000000..e4b19c3c7 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/shipMaster/CompareBizController.java @@ -0,0 +1,37 @@ +package com.ruoyi.web.controller.xkt.shipMaster; + +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.redis.RedisCache; +import com.ruoyi.xkt.service.shipMaster.IShipMasterService; +import lombok.RequiredArgsConstructor; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * Compare 相关 + * + * @author ruoyi + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/rest/v1/compare") +public class CompareBizController extends BaseController { + + final IShipMasterService shipMasterService; + final RedisCache redisCache; + + @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") + @PutMapping("/double/ship") + public R createAttrCache() { + + + + + return R.ok(); + } + + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/shipMaster/DoubleRunController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/shipMaster/DoubleRunController.java index 82b143c64..ab9500a4e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/shipMaster/DoubleRunController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/shipMaster/DoubleRunController.java @@ -1,20 +1,24 @@ package com.ruoyi.web.controller.xkt.shipMaster; import com.ruoyi.common.constant.CacheConstants; +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.web.controller.xkt.shipMaster.vo.DoubleRunAttrRQVO; -import com.ruoyi.web.controller.xkt.shipMaster.vo.DoubleRunRQVO; +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.xkt.service.shipMaster.IShipMasterService; import lombok.RequiredArgsConstructor; 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.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.*; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -32,39 +36,31 @@ public class DoubleRunController extends BaseController { @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") @PostMapping("/cache") - public R createCache(@Validated @RequestBody DoubleRunRQVO importVO) { - List artNoList = importVO.getData().getData(); + public R createCache(@Validated @RequestBody DoubleRunVO importVO) { + List artNoList = importVO.getData().getData(); final Integer userId = importVO.getData().getData().get(0).getUser_id(); // 先从redis中获取列表数据 - List cacheList = ObjectUtils.defaultIfNull(redisCache - .getCacheObject(CacheConstants.DOUBLE_RUN_KEY + userId), new ArrayList<>()); -// Map>> artNoMap = new LinkedHashMap<>(); + List cacheList = ObjectUtils.defaultIfNull(redisCache + .getCacheObject(CacheConstants.DOUBLE_RUN_BASIC_KEY + userId), new ArrayList<>()); artNoList.forEach(artNoInfo -> { artNoInfo.getSkus().forEach(x -> x.setColor(this.decodeUnicode(x.getColor())) .setArticle_number(artNoInfo.getArticle_number()).setProduct_id(artNoInfo.getId())); cacheList.addAll(artNoInfo.getSkus()); -// artNoMap.put(artNoInfo.getArticle_number(), artNoInfo.getSkus().stream().collect(Collectors -// .groupingBy(DoubleRunImportVO.DRIArtNoSkuVO::getColor))); }); -// CollectionUtils.addAll(cacheList, artNoList); // 存到redis中 - redisCache.setCacheObject(CacheConstants.DOUBLE_RUN_KEY + userId, cacheList); - -// Map> artNoColorMap = new LinkedHashMap<>(); -// artNoMap.forEach((artNo, colorSkuMap) -> { -// artNoColorMap.put(artNo, new ArrayList<>(colorSkuMap.keySet())); -// colorSkuMap.forEach((color, skuList) -> { -// skuList.sort(Comparator.comparing(DoubleRunImportVO.DRIArtNoSkuVO::getSize)); -// System.err.println(artNo + ":" + color + ":" + skuList); -// }); -// }); - + redisCache.setCacheObject(CacheConstants.DOUBLE_RUN_BASIC_KEY + userId, cacheList); return R.ok(); } @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") - @PostMapping("/attr/cache/{product_id}") - public R createAttrCache(@PathVariable Integer product_id, @Validated @RequestBody DoubleRunAttrRQVO attrVO) { + @PostMapping("/attr/cache/{user_id}/{product_id}") + public R createAttrCache(@PathVariable(value = "user_id") Integer user_id, @PathVariable("product_id") Integer product_id, + @Validated @RequestBody DoubleRunAttrVO attrVO) { + // 判断缓存中是否有该product_id + Map existMap = redisCache.getCacheMap(CacheConstants.DOUBLE_RUN_ATTR_KEY + user_id + "_" + product_id); + if (MapUtils.isNotEmpty(existMap)) { + throw new ServiceException("该商品已设置过类目属性", HttpStatus.ERROR); + } Map attrMap = new HashMap<>(); attrVO.getData().forEach((itemId, attr) -> { // 不处理 multi=1 的属性 @@ -73,15 +69,11 @@ public class DoubleRunController extends BaseController { } // 有值 if (attr.getHas_value() == 1) { - attr.getAttr().stream().filter(x -> x.getChoosed() == 1).forEach(x -> attrMap.put(this.decodeUnicode(x.getProps_name()), this.decodeUnicode(x.getPropsvalue_name()))); + attr.getAttr().stream().filter(x -> x.getChoosed() == 1).forEach(x -> attrMap + .put(this.decodeUnicode(x.getProps_name()), this.decodeUnicode(x.getPropsvalue_name()))); } }); - - Map> productIdAttrMap = new HashMap<>(); - productIdAttrMap.put(product_id, attrMap); - - - + redisCache.setCacheMap(CacheConstants.DOUBLE_RUN_ATTR_KEY + user_id + "_" + product_id, attrMap); return R.ok(); } @@ -90,20 +82,20 @@ public class DoubleRunController extends BaseController { @GetMapping("/cache/{userId}") public R getCache(@PathVariable Integer userId) { // 从redis中获取数据 - List cacheList = ObjectUtils.defaultIfNull(redisCache - .getCacheObject(CacheConstants.DOUBLE_RUN_KEY + userId), new ArrayList<>()); + List cacheList = ObjectUtils.defaultIfNull(redisCache + .getCacheObject(CacheConstants.DOUBLE_RUN_BASIC_KEY + userId), new ArrayList<>()); if (CollectionUtils.isEmpty(cacheList)) { return R.fail(); } - Map> artNoGroup = cacheList.stream() - .sorted(Comparator.comparing(DoubleRunRQVO.DRIArtNoSkuVO::getArticle_number) - .thenComparing(DoubleRunRQVO.DRIArtNoSkuVO::getColor)) + Map> artNoGroup = cacheList.stream() + .sorted(Comparator.comparing(DoubleRunVO.DRIArtNoSkuVO::getArticle_number) + .thenComparing(DoubleRunVO.DRIArtNoSkuVO::getColor)) .collect(Collectors - .groupingBy(DoubleRunRQVO.DRIArtNoSkuVO::getArticle_number, LinkedHashMap::new, Collectors.toList())); + .groupingBy(DoubleRunVO.DRIArtNoSkuVO::getArticle_number, LinkedHashMap::new, Collectors.toList())); // 货号 颜色 map Map> artNoColorMap = new LinkedHashMap<>(); artNoGroup.forEach((artNo, colorList) -> { - artNoColorMap.put(artNo, colorList.stream().map(DoubleRunRQVO.DRIArtNoSkuVO::getColor).collect(Collectors.toList())); + artNoColorMap.put(artNo, colorList.stream().map(DoubleRunVO.DRIArtNoSkuVO::getColor).collect(Collectors.toList())); }); artNoColorMap.forEach((k,v) -> { @@ -112,7 +104,6 @@ public class DoubleRunController extends BaseController { // TODO 如何对比?? - return R.ok(); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/shipMaster/ShipMasterController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/shipMaster/ShipMasterController.java index 1b3c6e026..ec383e087 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/shipMaster/ShipMasterController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/shipMaster/ShipMasterController.java @@ -4,7 +4,7 @@ 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.ShipMasterRQVO; +import com.ruoyi.web.controller.xkt.shipMaster.vo.ShipMasterVO; import com.ruoyi.xkt.service.shipMaster.IShipMasterService; import lombok.RequiredArgsConstructor; import org.apache.commons.collections4.CollectionUtils; @@ -14,6 +14,7 @@ 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; /** @@ -31,15 +32,15 @@ public class ShipMasterController extends BaseController { @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") @PostMapping("/cache") - public R createCache(@Validated @RequestBody ShipMasterRQVO importVO) { + public R createCache(@Validated @RequestBody ShipMasterVO importVO) { // 供应商ID final Integer supplierId = importVO.getData().getRecords().get(0).getSupplierId(); // 先从redis中获取列表数据 - List cacheList = ObjectUtils.defaultIfNull(redisCache + List cacheList = ObjectUtils.defaultIfNull(redisCache .getCacheObject(CacheConstants.SUPPLIER_KEY + supplierId), new ArrayList<>()); CollectionUtils.addAll(cacheList, importVO.getData().getRecords()); // 存到redis中 - redisCache.setCacheObject(CacheConstants.SUPPLIER_KEY + supplierId, cacheList); + redisCache.setCacheObject(CacheConstants.SUPPLIER_KEY + supplierId, cacheList, 5, TimeUnit.DAYS); return R.ok(); } @@ -47,23 +48,23 @@ public class ShipMasterController extends BaseController { @GetMapping("/cache/{supplierId}") public R getCache(@PathVariable Integer supplierId) { // 从redis中获取数据 - List cacheList = ObjectUtils.defaultIfNull(redisCache + List cacheList = ObjectUtils.defaultIfNull(redisCache .getCacheObject(CacheConstants.SUPPLIER_KEY + supplierId), new ArrayList<>()); if (CollectionUtils.isEmpty(cacheList)) { return R.fail(); } // 按照artNo分组 - Map> artNoGroup = cacheList.stream() - .sorted(Comparator.comparing(ShipMasterRQVO.SMIVO::getArtNo) - .thenComparing(ShipMasterRQVO.SMIVO::getColor)) + Map> artNoGroup = cacheList.stream() + .sorted(Comparator.comparing(ShipMasterVO.SMIVO::getArtNo) + .thenComparing(ShipMasterVO.SMIVO::getColor)) .collect(Collectors - .groupingBy(ShipMasterRQVO.SMIVO::getArtNo, LinkedHashMap::new, Collectors.toList())); + .groupingBy(ShipMasterVO.SMIVO::getArtNo, LinkedHashMap::new, Collectors.toList())); // 货号 颜色 对应的条码前缀 Map> artSnPrefixMap = new LinkedHashMap<>(); // 货号 颜色 map Map> artNoColorMap = new LinkedHashMap<>(); artNoGroup.forEach((artNo, colorList) -> { - artNoColorMap.put(artNo, colorList.stream().map(ShipMasterRQVO.SMIVO::getColor).collect(Collectors.toList())); + artNoColorMap.put(artNo, colorList.stream().map(ShipMasterVO.SMIVO::getColor).collect(Collectors.toList())); Map snPrefixMap = new LinkedHashMap<>(); // 按照颜色设置条码前缀 colorList.forEach(color -> snPrefixMap diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/shipMaster/vo/DoubleRunAttrRQVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/shipMaster/vo/DoubleRunAttrVO.java similarity index 96% rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/shipMaster/vo/DoubleRunAttrRQVO.java rename to ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/shipMaster/vo/DoubleRunAttrVO.java index 7b0190ee2..90daa78ee 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/shipMaster/vo/DoubleRunAttrRQVO.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/shipMaster/vo/DoubleRunAttrVO.java @@ -10,7 +10,7 @@ import java.util.Map; * @date 2025-05-11 23:46 */ @Data -public class DoubleRunAttrRQVO { +public class DoubleRunAttrVO { private Map data; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/shipMaster/vo/DoubleRunRQVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/shipMaster/vo/DoubleRunVO.java similarity index 96% rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/shipMaster/vo/DoubleRunRQVO.java rename to ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/shipMaster/vo/DoubleRunVO.java index dbeb93b03..930df790f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/shipMaster/vo/DoubleRunRQVO.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/shipMaster/vo/DoubleRunVO.java @@ -11,7 +11,7 @@ import java.util.List; * @date 2025-05-11 23:46 */ @Data -public class DoubleRunRQVO { +public class DoubleRunVO { private DRIDataVO data; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/shipMaster/vo/ShipMasterRQVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/shipMaster/vo/ShipMasterVO.java similarity index 94% rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/shipMaster/vo/ShipMasterRQVO.java rename to ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/shipMaster/vo/ShipMasterVO.java index 5740888cf..da00c2414 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/shipMaster/vo/ShipMasterRQVO.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/shipMaster/vo/ShipMasterVO.java @@ -9,7 +9,7 @@ import java.util.List; * @date 2025-05-11 23:46 */ @Data -public class ShipMasterRQVO { +public class ShipMasterVO { private SMIDataVO data; 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 dfcc2340b..2eb3063fc 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 @@ -319,6 +319,10 @@ public class CacheConstants { /** * 主网站缓存 */ - public static final String DOUBLE_RUN_KEY = "double_run:"; + public static final String DOUBLE_RUN_BASIC_KEY = "double_run_basic:"; + /** + * 档口属性缓存 + */ + public static final String DOUBLE_RUN_ATTR_KEY = "double_run_attr:"; }