From becb581b346b2f8080890246e5e1ba75c8180513 Mon Sep 17 00:00:00 2001 From: liujiang <569804566@qq.com> Date: Thu, 25 Sep 2025 18:52:24 +0800 Subject: [PATCH] =?UTF-8?q?master=EF=BC=9A=E8=8E=B7=E5=8F=96=E6=A1=A3?= =?UTF-8?q?=E5=8F=A3=E5=BA=93=E5=AD=98=E7=B3=BB=E7=BB=9F=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=8C=E7=B3=BB=E7=BB=9F=E8=B0=83=E4=BC=98=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/xkt/StoreController.java | 6 ++ .../xkt/migartion/FhbController.java | 2 +- .../xkt/migartion/GtController.java | 13 ++-- .../xkt/migartion/TyController.java | 63 +++++++++++++++++++ .../xkt/migartion/vo/ty/TyCusImportVO.java | 21 +++++++ .../xkt/migartion/vo/ty/TyProdImportVO.java | 27 ++++++++ .../xkt/migartion/vo/ty/TyProdVO.java | 34 ++++++++++ .../ruoyi/common/constant/CacheConstants.java | 8 +++ .../com/ruoyi/xkt/service/IStoreService.java | 8 +++ .../xkt/service/impl/StoreServiceImpl.java | 13 ++++ 10 files changed, 189 insertions(+), 6 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/TyController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/vo/ty/TyCusImportVO.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/vo/ty/TyProdImportVO.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/vo/ty/TyProdVO.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreController.java index a4cadd164..77b542833 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreController.java @@ -190,5 +190,11 @@ public class StoreController extends XktBaseController { return R.ok(BeanUtil.toBean(storeService.getAppViewRank(), StoreAppViewRankResVO.class)); } + @PreAuthorize("@ss.hasAnyRoles('admin,general_admin,store,seller,agent')||@ss.hasSupplierSubRole()") + @ApiOperation(value = "获取档口库存系统", httpMethod = "GET", response = R.class) + @GetMapping("/stock-sys/{storeId}") + public R getStockSys(@PathVariable Long storeId) { + return R.ok(storeService.getStockSys(storeId)); + } } 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 e05f549c4..d4afb3f70 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 @@ -20,7 +20,7 @@ import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** - * ShipMaster 相关 + * FHB 相关 * * @author ruoyi */ 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 346df0415..ad0a25d6e 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 @@ -23,6 +23,7 @@ import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; import java.time.LocalDate; import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; /** @@ -127,8 +128,8 @@ public class GtController extends BaseController { @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") - @GetMapping("/cache/{userId}") - public R getCache(@PathVariable Integer userId) { + @GetMapping("/prod/cache/{userId}") + public R getProdCache(@PathVariable Integer userId) { // 从redis中获取数据 List cacheList = ObjectUtils.defaultIfNull(redisCache .getCacheObject(CacheConstants.MIGRATION_GT_SALE_BASIC_KEY + userId), new ArrayList<>()); @@ -141,9 +142,9 @@ public class GtController extends BaseController { .collect(Collectors .groupingBy(GtProdSkuVO::getArticle_number, LinkedHashMap::new, Collectors.toList())); // 货号 颜色 map - Map> artNoColorMap = new LinkedHashMap<>(); + Map> artNoColorMap = new LinkedHashMap<>(); artNoGroup.forEach((artNo, colorList) -> { - artNoColorMap.put(artNo, colorList.stream().map(GtProdSkuVO::getColor).collect(Collectors.toList())); + artNoColorMap.put(artNo, colorList.stream().map(GtProdSkuVO::getColor).collect(Collectors.toSet())); }); artNoColorMap.forEach((k, v) -> { @@ -153,12 +154,14 @@ public class GtController extends BaseController { // cacheList 按照货号分组,获取所有价格,价格去重 Map> artNoPriceMap = cacheList.stream().collect(Collectors.groupingBy( GtProdSkuVO::getArticle_number, Collectors.mapping(GtProdSkuVO::getPrice, Collectors.toSet()))); + AtomicInteger count = new AtomicInteger(); artNoPriceMap.forEach((k, v) -> { - System.out.println(k + ":" + v); if (v.size() > 1) { + count.addAndGet(1); System.err.println(k + ":" + v); } }); + System.err.println(count); // Map> artNoPriceMap = 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 new file mode 100644 index 000000000..c97bd1f3e --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/TyController.java @@ -0,0 +1,63 @@ +package com.ruoyi.web.controller.xkt.migartion; + +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.common.utils.poi.ExcelUtil; +import com.ruoyi.web.controller.xkt.migartion.vo.ty.TyCusImportVO; +import com.ruoyi.web.controller.xkt.migartion.vo.ty.TyProdImportVO; +import lombok.RequiredArgsConstructor; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * TY 相关 + * + * @author ruoyi + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/rest/v1/ty") +public class TyController extends BaseController { + + final RedisCache redisCache; + + @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") + @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()); + Map> prodMap = tyProdVOList.stream().collect(Collectors.groupingBy(TyProdImportVO::getProdArtNum)); + prodMap.forEach((k, v) -> { + System.err.println(k + ":" + v); + }); + // 存到redis中 + redisCache.setCacheObject(CacheConstants.MIGRATION_TY_PROD_KEY + userId, tyProdVOList, 5, TimeUnit.DAYS); + return R.ok(); + } + + + @PreAuthorize("@ss.hasAnyRoles('admin,general_admin')") + @PostMapping("/cus/cache/{userId}") + public R createCusCache(@PathVariable Integer userId, MultipartFile file) throws IOException { + ExcelUtil util = new ExcelUtil<>(TyCusImportVO.class); + List tyProdVOList = util.importExcel(file.getInputStream()); + // 存到redis中 + redisCache.setCacheObject(CacheConstants.MIGRATION_TY_CUS_KEY + userId, tyProdVOList, 5, TimeUnit.DAYS); + return R.ok(); + } + + + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/vo/ty/TyCusImportVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/vo/ty/TyCusImportVO.java new file mode 100644 index 000000000..5cf973bd6 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/vo/ty/TyCusImportVO.java @@ -0,0 +1,21 @@ +package com.ruoyi.web.controller.xkt.migartion.vo.ty; + +import com.ruoyi.common.annotation.Excel; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@ApiModel +@Data +@Accessors(chain = true) +public class TyCusImportVO { + + @Excel(name = "客户名称") + private String cusName; + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/vo/ty/TyProdImportVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/vo/ty/TyProdImportVO.java new file mode 100644 index 000000000..d2ef143d5 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/vo/ty/TyProdImportVO.java @@ -0,0 +1,27 @@ +package com.ruoyi.web.controller.xkt.migartion.vo.ty; + +import com.ruoyi.common.annotation.Excel; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@ApiModel +@Data +@Accessors(chain = true) +public class TyProdImportVO { + + @Excel(name = "HUOH") + private String prodArtNum; + @Excel(name = "COL") + private String colorName; + @Excel(name = "jg") + private Integer price; + @Excel(name = "HPBM") + private String otherSnPrefix; + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/vo/ty/TyProdVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/vo/ty/TyProdVO.java new file mode 100644 index 000000000..cc3a21d7d --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/migartion/vo/ty/TyProdVO.java @@ -0,0 +1,34 @@ +package com.ruoyi.web.controller.xkt.migartion.vo.ty; + +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * @author liangyq + * @date 2025-05-11 23:46 + */ +@Data +public class TyProdVO { + + private SMIDataVO data; + + @Data + public static class SMIDataVO { + private List records; + } + + @Data + public static class SMIVO { + private Integer supplierId; + private Integer supplierSkuId; + private String artNo; + private String color; + private String size; + private BigDecimal addPrice; + private String addPriceSize; + private String snPrefix; + } + +} 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 7884dae35..adf8a291e 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 @@ -344,5 +344,13 @@ public class CacheConstants { * GT档口分类缓存 */ public static final String MIGRATION_GT_SALE_CATE_KEY = "mig_gt_sale_cate:"; + /** + * TY商品缓存 + */ + public static final String MIGRATION_TY_PROD_KEY = "mig_ty_prod:"; + /** + * TY客户缓存 + */ + public static final String MIGRATION_TY_CUS_KEY = "mig_ty_cus:"; } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/IStoreService.java b/xkt/src/main/java/com/ruoyi/xkt/service/IStoreService.java index 07fcb9640..969b3991b 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/IStoreService.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/IStoreService.java @@ -197,4 +197,12 @@ public interface IStoreService { * @return StoreAppViewRankResDTO */ StoreAppViewRankResDTO getAppViewRank(); + + /** + * 获取档口库存系统 + * + * @return + * @param storeId + */ + Integer getStockSys(Long storeId); } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreServiceImpl.java index 1ec8e32c4..94f6b327a 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreServiceImpl.java @@ -431,6 +431,19 @@ public class StoreServiceImpl implements IStoreService { return redisAppViewRank; } + /** + * 获取档口库存系统 + * + * @param storeId 档口ID + * @return + */ + @Override + @Transactional(readOnly = true) + public Integer getStockSys(Long storeId) { + Store store = Optional.ofNullable(storeMapper.selectById(storeId)).orElseThrow(() -> new ServiceException("档口不存在!", HttpStatus.ERROR)); + return store.getStockSys(); + } + /** * 档口首页今日销售额 *