Просмотр исходного кода

提供获取工作台商品列表接口

yzc 2 лет назад
Родитель
Сommit
781eac5505

+ 33 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/controller/KwpGoodsStatisticsController.java

@@ -0,0 +1,33 @@
+package com.sckw.product.controller;
+
+import com.sckw.core.web.response.HttpResult;
+import com.sckw.product.service.KwpGoodsStatisticsService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @desc: 工作台商品统计相关接口
+ * @author: yzc
+ * @date: 2023-07-03 8:28
+ */
+@RestController
+@RequestMapping(value = "/kwpGoodsStatistics")
+@RequiredArgsConstructor
+public class KwpGoodsStatisticsController {
+
+    private final KwpGoodsStatisticsService service;
+
+    /**
+     * @desc: 获取工作台商品列表
+     * @author: yzc
+     * @date: 2023-09-13 18:55
+     * @return: com.sckw.core.web.response.HttpResult
+     */
+    @GetMapping(value = "/workbenchList")
+    public HttpResult workbenchList() {
+        return HttpResult.ok(service.workbenchList());
+    }
+
+}

+ 76 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/WorkbenchGoodsRes.java

@@ -0,0 +1,76 @@
+package com.sckw.product.model.vo.res;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @desc: 工作台商品信息响应实体
+ * @author: yzc
+ * @date: 2023-09-13 18:39
+ */
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+public class WorkbenchGoodsRes implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 7648240540364985991L;
+
+
+    /**
+     * 商品id
+     */
+    private Long id;
+
+    /**
+     * 商品名称
+     */
+    private String name;
+
+    /**
+     * 供应企业名称
+     */
+    private String supplyFireName;
+
+    /**
+     * 商品类型
+     */
+    private String goodsType;
+
+    /**
+     * 商品类型Label
+     */
+    private String goodsTypeLabel;
+
+    /**
+     * 计量单位(吨、方、件、箱、其他)
+     */
+    private String unit;
+
+    /**
+     * 计量单位lab
+     */
+    private String unitLabel;
+
+    /**
+     * 尺寸大小
+     */
+    private String spec;
+
+    /**
+     * 库存数量
+     */
+    private BigDecimal amount;
+
+    /**
+     * 最低单价
+     */
+    private BigDecimal lowestPrice;
+
+}

+ 17 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsService.java

@@ -1121,4 +1121,21 @@ public class KwpGoodsService {
         Long count = kwpGoodsMapper.selectCount(wrapper);
         return Objects.isNull(count) ? 0L : count;
     }
+
+    /**
+     * @desc: 获取工作台商品列表
+     * @author: yzc
+     * @date: 2023-09-13 18:38
+     * @return: java.util.List<com.sckw.product.model.KwpGoods>
+     */
+    public List<KwpGoods> getWorkbenchList() {
+        LambdaQueryWrapper<KwpGoods> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwpGoods::getEntId, LoginUserHolder.getEntId())
+                .eq(KwpGoods::getStatus, GoodsStatusEnum.PUT_ON_SHELVES.getCode())
+                .eq(KwpGoods::getDelFlag, Global.NO)
+                .orderByDesc(KwpGoods::getCreateTime)
+                .last("LIMIT 10");
+        List<KwpGoods> list = kwpGoodsMapper.selectList(wrapper);
+        return CollectionUtils.emptyIfNull(list);
+    }
 }

+ 74 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsStatisticsService.java

@@ -0,0 +1,74 @@
+package com.sckw.product.service;
+
+import com.sckw.core.common.enums.enums.DictEnum;
+import com.sckw.core.common.enums.enums.DictTypeEnum;
+import com.sckw.core.utils.BeanUtils;
+import com.sckw.core.utils.CollectionUtils;
+import com.sckw.product.model.KwpGoods;
+import com.sckw.product.model.KwpGoodsPriceRange;
+import com.sckw.product.model.vo.res.WorkbenchGoodsRes;
+import com.sckw.system.api.RemoteSystemService;
+import com.sckw.system.api.model.dto.res.EntCacheResDto;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @desc: 工作台商品统计相关接口
+ * @author: yzc
+ * @date: 2023-09-13 17:57
+ */
+@Service
+@Slf4j
+@RequiredArgsConstructor
+public class KwpGoodsStatisticsService {
+
+    private final KwpGoodsService service;
+    private final KwpGoodsPriceRangeService priceRangeService;
+
+    @DubboReference(version = "1.0.0", group = "design", check = false)
+    private RemoteSystemService remoteSystemService;
+
+    /**
+     * @desc: 获取工作台商品列表
+     * @author: yzc
+     * @date: 2023-09-13 18:55
+     * @return: java.util.List<com.sckw.product.model.vo.res.WorkbenchGoodsRes>
+     */
+    public List<WorkbenchGoodsRes> workbenchList() {
+        List<KwpGoods> goodsList = service.getWorkbenchList();
+        if (CollectionUtils.isEmpty(goodsList)) {
+            return Collections.emptyList();
+        }
+        List<WorkbenchGoodsRes> result = new ArrayList<>();
+        List<Long> goodsIds = goodsList.stream().map(KwpGoods::getId).toList();
+        List<Long> supplyEntIds = goodsList.stream().map(KwpGoods::getSupplyEntId).toList();
+        Map<Long, List<KwpGoodsPriceRange>> priceRangeMap = priceRangeService.getByGoodsIds(goodsIds).stream()
+                .collect(Collectors.groupingBy(KwpGoodsPriceRange::getGoodsId));
+        //供应企业信息
+        List<EntCacheResDto> entList = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(supplyEntIds)) {
+            entList = remoteSystemService.queryEntCacheByIds(supplyEntIds);
+        }
+        Map<Long, String> entMap = entList.stream().collect(Collectors.toMap(EntCacheResDto::getId, EntCacheResDto::getFirmName, (k1, k2) -> k1));
+        goodsList.forEach(e -> {
+            WorkbenchGoodsRes goods = BeanUtils.copyProperties(e, WorkbenchGoodsRes.class);
+            goods.setGoodsTypeLabel(DictEnum.getLabel(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), e.getGoodsType()))
+                    .setUnitLabel(DictEnum.getLabel(DictTypeEnum.UNIT_TYPE.getType(), e.getUnit()))
+                    .setSupplyFireName(entMap.get(e.getSupplyEntId()));
+            List<KwpGoodsPriceRange> priceRanges = priceRangeMap.get(e.getId());
+            if (CollectionUtils.isNotEmpty(priceRanges)) {
+                goods.setLowestPrice(priceRanges.get(0).getPrice());
+            }
+            result.add(goods);
+        });
+        return result;
+    }
+}