Răsfoiți Sursa

product模块字典翻译走字典查询接口

yzc 2 ani în urmă
părinte
comite
fa15fecfa9

+ 10 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/GoodsList.java

@@ -25,6 +25,11 @@ public class GoodsList {
      */
     private Long id;
 
+    /**
+     * 商品编号
+     */
+    private String code;
+
     /**
      * 状态:0草稿/1上架/2下架
      */
@@ -95,6 +100,11 @@ public class GoodsList {
      */
     private String prepaidLimitLabel;
 
+    /**
+     * 预付款最低限额
+     */
+    private BigDecimal advancePrice;
+
     /**
      * 最高单价
      */

+ 78 - 20
sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsService.java

@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.sckw.core.common.enums.enums.DictEnum;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.exception.CustomPromptException;
@@ -204,6 +203,13 @@ public class KwpGoodsService {
         if (CollectionUtils.isEmpty(list)) {
             return detail;
         }
+        Map<String, String> unitMap;
+        Map<String, Map<String, String>> dict = remoteSystemService.queryDictByType(List.of(DictTypeEnum.UNIT_TYPE.getType()));
+        if (CollectionUtils.isNotEmpty(dict)) {
+            unitMap = dict.get(DictTypeEnum.UNIT_TYPE.getType());
+        } else {
+            unitMap = new HashMap<>();
+        }
         List<Long> goodsIds = list.stream().map(KwpGoods::getId).toList();
         Map<Long, List<KwpGoodsPriceRange>> map = kwpGoodsPriceRangeService.getByGoodsIds(goodsIds).stream()
                 .collect(Collectors.groupingBy(KwpGoodsPriceRange::getGoodsId));
@@ -211,7 +217,7 @@ public class KwpGoodsService {
         list.forEach(e -> {
             RecommendGoods recommendGoods = BeanUtils.copyProperties(e, RecommendGoods.class);
             List<KwpGoodsPriceRange> prices = map.get(recommendGoods.getId());
-            recommendGoods.setUnitLabel(DictEnum.getLabel(DictTypeEnum.UNIT_TYPE.getType(), recommendGoods.getUnit()))
+            recommendGoods.setUnitLabel(unitMap.get(recommendGoods.getUnit()))
                     .setPrice(CollectionUtils.isNotEmpty(prices) ? prices.get(0).getPrice() : null);
             recommendGoodsList.add(recommendGoods);
         });
@@ -246,10 +252,24 @@ public class KwpGoodsService {
         if (Objects.nonNull(managerInfo)) {
             detail.setManagerName(managerInfo.getName()).setManagerPhone(managerInfo.getPhone());
         }
-        detail.setGoodsTypeLabel(DictEnum.getLabel(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), detail.getGoodsType()))
-                .setUnitLabel(DictEnum.getLabel(DictTypeEnum.UNIT_TYPE.getType(), detail.getUnit()))
-                .setTaxRateLabel(DictEnum.getLabel(DictTypeEnum.TAX_RATE.getType(), detail.getTaxRate()))
-                .setStatusLabel(DictEnum.getLabel(DictTypeEnum.GOODS_STATUS.getType(), String.valueOf(detail.getStatus())))
+        Map<String, Map<String, String>> dict = remoteSystemService.queryDictByType(List.of(DictTypeEnum.PRODUCT_NAME_TYPE.getType(),
+                DictTypeEnum.UNIT_TYPE.getType(), DictTypeEnum.TAX_RATE.getType(), DictTypeEnum.GOODS_STATUS.getType(), DictTypeEnum.ADDRESS_TYPE.getType()));
+        Map<String, String> productNameMap = new HashMap<>();
+        Map<String, String> unitMap = new HashMap<>();
+        Map<String, String> taxRateMap = new HashMap<>();
+        Map<String, String> goodsStatusMap = new HashMap<>();
+        Map<String, String> addressMap = new HashMap<>();
+        if (CollectionUtils.isNotEmpty(dict)) {
+            productNameMap = dict.get(DictTypeEnum.PRODUCT_NAME_TYPE.getType());
+            unitMap = dict.get(DictTypeEnum.UNIT_TYPE.getType());
+            taxRateMap = dict.get(DictTypeEnum.TAX_RATE.getType());
+            goodsStatusMap = dict.get(DictTypeEnum.GOODS_STATUS.getType());
+            addressMap = dict.get(DictTypeEnum.ADDRESS_TYPE.getType());
+        }
+        detail.setGoodsTypeLabel(productNameMap.get(detail.getGoodsType()))
+                .setUnitLabel(unitMap.get(detail.getUnit()))
+                .setTaxRateLabel(taxRateMap.get(detail.getTaxRate()))
+                .setStatusLabel(goodsStatusMap.get(String.valueOf(detail.getStatus())))
                 .setPrepaidLimitLabel(Objects.equals(detail.getPrepaidLimit(), 1) ? "是" : "否");
         //商品图片信息
         List<KwpGoodsImage> goodsImages = kwpGoodsImageService.getByGoodsId(id);
@@ -268,7 +288,7 @@ public class KwpGoodsService {
         KwpGoodsAddress goodsAddress = kwpGoodsAddressService.getByGoodsId(id);
         AddressInfoDetail addressInfo = BeanUtils.copyProperties(goodsAddress, AddressInfoDetail.class);
         if (Objects.nonNull(addressInfo)) {
-            addressInfo.setTypeName(DictEnum.getLabel(DictTypeEnum.ADDRESS_TYPE.getType(), addressInfo.getType()));
+            addressInfo.setTypeName(addressMap.get(addressInfo.getType()));
         }
         detail.setImages(images).setPriceRanges(ranges).setAttributes(attributes).setAddressInfo(addressInfo);
 
@@ -531,11 +551,23 @@ public class KwpGoodsService {
     public List<GoodsListExport> export(ExportStatisticGoodsListParam params) {
         LambdaQueryWrapper<KwpGoods> wrapper = buildWrapper(params);
         List<KwpGoods> list = kwpGoodsMapper.selectList(wrapper);
-        List<GoodsList> goodsLists = buildGoodLists(list);
-        if (CollectionUtils.isEmpty(goodsLists)) {
+        if (CollectionUtils.isEmpty(list)) {
             return Collections.emptyList();
         }
-        List<GoodsListExport> result = new ArrayList<>();
+        return getExportResults(list);
+
+    }
+
+    /**
+     * @desc: 获取导出结果
+     * @author: yzc
+     * @date: 2023-09-18 15:19
+     * @Param list:
+     * @return: java.util.List<com.sckw.product.model.GoodsListExport>
+     */
+    public List<GoodsListExport> getExportResults(List<KwpGoods> list) {
+        List<GoodsList> goodsLists = buildGoodLists(list);
+        List<GoodsListExport> result = new ArrayList<>(list.size());
         AtomicInteger i = new AtomicInteger(1);
         goodsLists.forEach(e -> {
             GoodsListExport export = BeanUtils.copyProperties(e, GoodsListExport.class);
@@ -604,7 +636,7 @@ public class KwpGoodsService {
      * @Param list:
      * @return: java.util.List<com.sckw.product.model.vo.res.GoodsList>
      */
-    private List<GoodsList> buildGoodLists(List<KwpGoods> list) {
+    public List<GoodsList> buildGoodLists(List<KwpGoods> list) {
         List<GoodsList> result = new ArrayList<>(list.size());
         List<Long> goodsIds = new ArrayList<>(list.size());
         List<Long> supplyEntIds = new ArrayList<>(list.size());
@@ -634,16 +666,30 @@ public class KwpGoodsService {
         if (CollectionUtils.isNotEmpty(supplyEntIds)) {
             entList = remoteSystemService.queryEntCacheByIds(supplyEntIds);
         }
+        Map<String, Map<String, String>> dict = remoteSystemService.queryDictByType(List.of(DictTypeEnum.PRODUCT_NAME_TYPE.getType(),
+                DictTypeEnum.UNIT_TYPE.getType(), DictTypeEnum.TAX_RATE.getType(), DictTypeEnum.GOODS_STATUS.getType()));
+        Map<String, String> productNameMap, unitMap, taxRateMap, goodsStatusMap;
+        if (CollectionUtils.isNotEmpty(dict)) {
+            productNameMap = dict.get(DictTypeEnum.PRODUCT_NAME_TYPE.getType());
+            unitMap = dict.get(DictTypeEnum.UNIT_TYPE.getType());
+            taxRateMap = dict.get(DictTypeEnum.TAX_RATE.getType());
+            goodsStatusMap = dict.get(DictTypeEnum.GOODS_STATUS.getType());
+        } else {
+            productNameMap = new HashMap<>();
+            unitMap = new HashMap<>();
+            taxRateMap = new HashMap<>();
+            goodsStatusMap = new HashMap<>();
+        }
         Map<Long, String> entMap = entList.stream().collect(Collectors.toMap(EntCacheResDto::getId, EntCacheResDto::getFirmName, (k1, k2) -> k1));
         list.forEach(e -> {
             Long id = e.getId();
             GoodsList goodsList = BeanUtils.copyProperties(e, GoodsList.class);
             UserCacheResDto manager = userMap.get(e.getManager());
             UserCacheResDto createUser = userMap.get(e.getCreateBy());
-            goodsList.setStatusLabel(DictEnum.getLabel(DictTypeEnum.GOODS_STATUS.getType(), String.valueOf(goodsList.getStatus())))
-                    .setGoodsTypeLabel(DictEnum.getLabel(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), goodsList.getGoodsType()))
-                    .setUnitLabel(DictEnum.getLabel(DictTypeEnum.UNIT_TYPE.getType(), goodsList.getUnit()))
-                    .setTaxRateLabel(DictEnum.getLabel(DictTypeEnum.TAX_RATE.getType(), goodsList.getTaxRate()))
+            goodsList.setStatusLabel(goodsStatusMap.get(String.valueOf(goodsList.getStatus())))
+                    .setGoodsTypeLabel(productNameMap.get(goodsList.getGoodsType()))
+                    .setUnitLabel(unitMap.get(goodsList.getUnit()))
+                    .setTaxRateLabel(taxRateMap.get(goodsList.getTaxRate()))
                     .setPrepaidLimitLabel(Objects.equals(e.getPrepaidLimit(), 1) ? "是" : "否")
                     .setAddress(addressMap.get(id)).setSupplyEnt(entMap.get(e.getSupplyEntId()))
                     .setManageName(Objects.nonNull(manager) ? manager.getName() : null)
@@ -651,7 +697,8 @@ public class KwpGoodsService {
                     .setCreateByName(Objects.nonNull(createUser) ? createUser.getName() : null);
             List<KwpGoodsPriceRange> priceRanges = priceRangeMap.get(id);
             if (CollectionUtils.isNotEmpty(priceRanges)) {
-                goodsList.setHighestPrice(priceRanges.get(priceRanges.size() - 1).getPrice()).setLowestPrice(priceRanges.get(0).getPrice());
+                goodsList.setHighestPrice(priceRanges.get(priceRanges.size() - 1).getPrice())
+                        .setLowestPrice(priceRanges.get(0).getPrice());
             }
             result.add(goodsList);
         });
@@ -835,13 +882,22 @@ public class KwpGoodsService {
         //供应企业信息
         List<EntCacheResDto> entList = remoteSystemService.queryEntCacheByIds(supplyEntIds);
         Map<Long, String> entMap = entList.stream().collect(Collectors.toMap(EntCacheResDto::getId, EntCacheResDto::getFirmName, (k1, k2) -> k1));
-
+        Map<String, Map<String, String>> dict = remoteSystemService.queryDictByType(List.of(DictTypeEnum.PRODUCT_NAME_TYPE.getType(),
+                DictTypeEnum.UNIT_TYPE.getType()));
+        Map<String, String> productNameMap, unitMap;
+        if (CollectionUtils.isNotEmpty(dict)) {
+            productNameMap = dict.get(DictTypeEnum.PRODUCT_NAME_TYPE.getType());
+            unitMap = dict.get(DictTypeEnum.UNIT_TYPE.getType());
+        } else {
+            productNameMap = new HashMap<>();
+            unitMap = new HashMap<>();
+        }
         list.forEach(e -> {
             BuildingMaterialsMarketList materials = BeanUtils.copyProperties(e, BuildingMaterialsMarketList.class);
             KwpGoodsAddress address = addressMap.get(e.getId());
             List<KwpGoodsPriceRange> priceRanges = priceRangeMap.get(e.getId());
-            materials.setGoodsTypeLabel(DictEnum.getLabel(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), e.getGoodsType()))
-                    .setUnitLabel(DictEnum.getLabel(DictTypeEnum.UNIT_TYPE.getType(), e.getUnit()))
+            materials.setGoodsTypeLabel(productNameMap.get(e.getGoodsType()))
+                    .setUnitLabel(unitMap.get(e.getUnit()))
                     .setAddressName(Objects.isNull(address) ? null : address.getCityName())
                     .setDetailAddress(Objects.isNull(address) ? null : address.getDetailAddress())
                     .setPrice(CollectionUtils.isEmpty(priceRanges) ? null : priceRanges.get(0).getPrice())
@@ -1012,7 +1068,9 @@ public class KwpGoodsService {
         }
         try {
             LambdaQueryWrapper<KwpGoods> wrapper = new LambdaQueryWrapper<>();
-            wrapper.eq(KwpGoods::getId, id).eq(KwpGoods::getStatus, GoodsStatusEnum.PUT_ON_SHELVES.getCode()).eq(KwpGoods::getDelFlag, Global.NO).last("LIMIT 1");
+            wrapper.eq(KwpGoods::getId, id)
+                    .eq(KwpGoods::getStatus, GoodsStatusEnum.PUT_ON_SHELVES.getCode())
+                    .eq(KwpGoods::getDelFlag, Global.NO).last("LIMIT 1");
             KwpGoods goods = kwpGoodsMapper.selectOne(wrapper);
             if (Objects.isNull(goods)) {
                 throw new BusinessException("商品不存在或已下架!");

+ 13 - 7
sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsStatisticsService.java

@@ -1,6 +1,5 @@
 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;
@@ -14,10 +13,7 @@ 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.*;
 import java.util.stream.Collectors;
 
 /**
@@ -57,11 +53,21 @@ public class KwpGoodsStatisticsService {
         if (CollectionUtils.isNotEmpty(supplyEntIds)) {
             entList = remoteSystemService.queryEntCacheByIds(supplyEntIds);
         }
+        Map<String, Map<String, String>> dict = remoteSystemService.queryDictByType(List.of(DictTypeEnum.PRODUCT_NAME_TYPE.getType(),
+                DictTypeEnum.UNIT_TYPE.getType()));
+        Map<String, String> productNameMap, unitMap;
+        if (CollectionUtils.isEmpty(dict)) {
+            productNameMap = new HashMap<>();
+            unitMap = new HashMap<>();
+        } else {
+            productNameMap = dict.get(DictTypeEnum.PRODUCT_NAME_TYPE.getType());
+            unitMap = dict.get(DictTypeEnum.UNIT_TYPE.getType());
+        }
         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()))
+            goods.setGoodsTypeLabel(productNameMap.get(e.getGoodsType()))
+                    .setUnitLabel(unitMap.get(e.getUnit()))
                     .setSupplyFireName(entMap.get(e.getSupplyEntId()));
             List<KwpGoodsPriceRange> priceRanges = priceRangeMap.get(e.getId());
             if (CollectionUtils.isNotEmpty(priceRanges)) {

+ 23 - 142
sckw-modules/sckw-product/src/main/java/com/sckw/product/service/operation/GoodsManagerService.java

@@ -3,9 +3,6 @@ package com.sckw.product.service.operation;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.sckw.core.common.enums.enums.DictEnum;
-import com.sckw.core.common.enums.enums.DictTypeEnum;
-import com.sckw.core.exception.BusinessException;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.page.PageResult;
 import com.sckw.core.model.vo.TableBottom;
@@ -14,33 +11,30 @@ import com.sckw.core.model.vo.TableTop;
 import com.sckw.core.utils.BeanUtils;
 import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.utils.StringUtils;
-import com.sckw.excel.utils.DateUtil;
 import com.sckw.product.dao.KwpGoodsMapper;
 import com.sckw.product.enums.GoodsStatusEnum;
-import com.sckw.product.model.*;
+import com.sckw.product.model.GoodsListExport;
+import com.sckw.product.model.KwpGoods;
+import com.sckw.product.model.OperationGoodsListExport;
 import com.sckw.product.model.dto.OperatorGoodsListQueryDTO;
 import com.sckw.product.model.vo.req.OperatorGoodsExportQueryVO;
 import com.sckw.product.model.vo.req.OperatorGoodsListQueryVO;
 import com.sckw.product.model.vo.req.OperatorGoodsStsQueryVO;
-import com.sckw.product.model.vo.res.*;
-import com.sckw.product.service.KwpGoodsAddressService;
-import com.sckw.product.service.KwpGoodsAttributeService;
-import com.sckw.product.service.KwpGoodsImageService;
-import com.sckw.product.service.KwpGoodsPriceRangeService;
+import com.sckw.product.model.vo.res.GoodsDetail;
+import com.sckw.product.model.vo.res.GoodsList;
+import com.sckw.product.model.vo.res.OperationGoodsDetail;
+import com.sckw.product.model.vo.res.OperationGoodsList;
+import com.sckw.product.service.KwpGoodsService;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.RemoteUserService;
-import com.sckw.system.api.model.dto.res.EntCacheResDto;
 import com.sckw.system.api.model.dto.res.KwsUserResDto;
 import com.sckw.system.api.model.dto.res.SysDictResDto;
-import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.stereotype.Service;
 
-import java.math.BigDecimal;
 import java.util.*;
-import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
 /**
@@ -60,13 +54,17 @@ public class GoodsManagerService {
     private RemoteUserService remoteUserService;
 
 
+    private final KwpGoodsService kwpGoodsService;
     private final KwpGoodsMapper kwpGoodsMapper;
-    private final KwpGoodsAddressService kwpGoodsAddressService;
-    private final KwpGoodsAttributeService kwpGoodsAttributeService;
-    private final KwpGoodsImageService kwpGoodsImageService;
-    private final KwpGoodsPriceRangeService kwpGoodsPriceRangeService;
 
 
+    /**
+     * @desc: 分页查询
+     * @author: yzc
+     * @date: 2023-09-18 15:19
+     * @Param params:
+     * @return: com.sckw.core.model.page.PageResult
+     */
     public PageResult select(OperatorGoodsListQueryVO params) {
         LambdaQueryWrapper<KwpGoods> wrapper = buildWrapper(BeanUtils.copyProperties(params, OperatorGoodsListQueryDTO.class));
         Page<KwpGoods> page = new Page<>(params.getPage(), params.getPageSize());
@@ -75,7 +73,8 @@ public class GoodsManagerService {
         if (CollectionUtils.isEmpty(list)) {
             return PageResult.build(params.getPage(), params.getPageSize(), goodsIpage.getTotal(), Collections.emptyList());
         }
-        List<OperationGoodsList> result = buildGoodLists(list);
+        List<GoodsList> goodsLists = kwpGoodsService.buildGoodLists(list);
+        List<OperationGoodsList> result = BeanUtils.copyToList(goodsLists, OperationGoodsList.class);
         return PageResult.build(params.getPage(), params.getPageSize(), goodsIpage.getTotal(), result);
     }
 
@@ -129,67 +128,6 @@ public class GoodsManagerService {
         return wrapper;
     }
 
-    /**
-     * @desc: 构建商品列表
-     * @author: lt
-     * @date: 2023-09-14 10:14
-     * @Param list:
-     * @return: java.util.List<com.sckw.product.model.vo.res.GoodsList>
-     */
-    private List<OperationGoodsList> buildGoodLists(List<KwpGoods> list) {
-        List<OperationGoodsList> result = new ArrayList<>(list.size());
-        List<Long> goodsIds = new ArrayList<>(list.size());
-        List<Long> supplyEntIds = new ArrayList<>(list.size());
-        List<Long> userIds = new ArrayList<>();
-        list.forEach(e -> {
-            goodsIds.add(e.getId());
-            if (Objects.nonNull(e.getSupplyEntId())) {
-                supplyEntIds.add(e.getSupplyEntId());
-            }
-            if (Objects.nonNull(e.getManager())) {
-                userIds.add(e.getManager());
-            }
-            if (Objects.nonNull(e.getCreateBy())) {
-                userIds.add(e.getCreateBy());
-            }
-        });
-        //地址信息
-        Map<Long, String> addressMap = kwpGoodsAddressService.getByGoodsIds(goodsIds).stream()
-                .collect(Collectors.toMap(KwpGoodsAddress::getGoodsId, KwpGoodsAddress::getName, (k1, k2) -> k1));
-        //价格梯度信息
-        Map<Long, List<KwpGoodsPriceRange>> priceRangeMap = kwpGoodsPriceRangeService.getByGoodsIds(goodsIds).stream()
-                .collect(Collectors.groupingBy(KwpGoodsPriceRange::getGoodsId));
-        //用户信息
-        Map<Long, UserCacheResDto> userMap = remoteSystemService.queryUserCacheMapByIds(userIds);
-        //供应企业信息
-        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));
-        list.forEach(e -> {
-            Long id = e.getId();
-            OperationGoodsList operationGoodsList = BeanUtils.copyProperties(e, OperationGoodsList.class);
-            UserCacheResDto manager = userMap.get(e.getManager());
-            UserCacheResDto createUser = userMap.get(e.getCreateBy());
-            operationGoodsList.setStatusLabel(DictEnum.getLabel(DictTypeEnum.GOODS_STATUS.getType(), String.valueOf(operationGoodsList.getStatus())))
-                    .setGoodsTypeLabel(DictEnum.getLabel(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), operationGoodsList.getGoodsType()))
-                    .setUnitLabel(DictEnum.getLabel(DictTypeEnum.UNIT_TYPE.getType(), operationGoodsList.getUnit()))
-                    .setTaxRateLabel(DictEnum.getLabel(DictTypeEnum.TAX_RATE.getType(), operationGoodsList.getTaxRate()))
-                    .setPrepaidLimitLabel(Objects.equals(e.getPrepaidLimit(), 1) ? "是" : "否")
-                    .setAddress(addressMap.get(id)).setSupplyEnt(entMap.get(e.getSupplyEntId()))
-                    .setManageName(Objects.nonNull(manager) ? manager.getName() : null)
-                    .setPhone(Objects.nonNull(manager) ? manager.getPhone() : null)
-                    .setCreateByName(Objects.nonNull(createUser) ? createUser.getName() : null);
-            List<KwpGoodsPriceRange> priceRanges = priceRangeMap.get(id);
-            if (CollectionUtils.isNotEmpty(priceRanges)) {
-                operationGoodsList.setHighestPrice(priceRanges.get(priceRanges.size() - 1).getPrice()).setLowestPrice(priceRanges.get(0).getPrice());
-            }
-            result.add(operationGoodsList);
-        });
-        return result;
-    }
-
     /**
      * @desc: 获取商品详情
      * @author: lt
@@ -198,52 +136,8 @@ public class GoodsManagerService {
      * @return: com.sckw.product.model.vo.res.GoodsDetail
      */
     public OperationGoodsDetail getDetail(Long id) {
-        KwpGoods goods = kwpGoodsMapper.selectById(id);
-        if (Objects.isNull(goods)) {
-            throw new BusinessException("当前商品不存在!");
-        }
-        OperationGoodsDetail detail = BeanUtils.copyProperties(goods, OperationGoodsDetail.class);
-        Map<Long, EntCacheResDto> entMap = remoteSystemService.queryEntCacheMapByIds(Arrays.asList(detail.getEntId(), detail.getSupplyEntId()));
-        EntCacheResDto ent = entMap.get(detail.getEntId());
-        if (Objects.nonNull(ent)) {
-            detail.setEnt(ent.getFirmName()).setEntHead(ent.getHead())
-                    .setEntBusiness(ent.getBusiness()).setEntAddress(ent.getCityName());
-        }
-        EntCacheResDto supplyEnt = entMap.get(detail.getSupplyEntId());
-        if (Objects.nonNull(supplyEnt)) {
-            detail.setSupplyEnt(supplyEnt.getFirmName());
-        }
-        UserCacheResDto managerInfo = remoteSystemService.queryUserCacheById(detail.getManager());
-        if (Objects.nonNull(managerInfo)) {
-            detail.setManagerName(managerInfo.getName()).setManagerPhone(managerInfo.getPhone());
-        }
-        detail.setGoodsTypeLabel(DictEnum.getLabel(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), detail.getGoodsType()))
-                .setUnitLabel(DictEnum.getLabel(DictTypeEnum.UNIT_TYPE.getType(), detail.getUnit()))
-                .setTaxRateLabel(DictEnum.getLabel(DictTypeEnum.TAX_RATE.getType(), detail.getTaxRate()))
-                .setStatusLabel(DictEnum.getLabel(DictTypeEnum.GOODS_STATUS.getType(), String.valueOf(detail.getStatus())))
-                .setPrepaidLimitLabel(Objects.equals(detail.getPrepaidLimit(), 1) ? "是" : "否");
-        //商品图片信息
-        List<KwpGoodsImage> goodsImages = kwpGoodsImageService.getByGoodsId(id);
-        List<GoodsImagesDetail> images = BeanUtils.copyToList(goodsImages, GoodsImagesDetail.class);
-        //商品价格段信息
-        List<KwpGoodsPriceRange> priceRanges = kwpGoodsPriceRangeService.getByGoodsId(id);
-        List<GoodsPriceRangesDetail> ranges = BeanUtils.copyToList(priceRanges, GoodsPriceRangesDetail.class);
-        ranges.stream().filter(r -> r.getEndAmount().compareTo(new BigDecimal("-1.00")) == 0)
-                .forEach(r -> {
-                    r.setEndAmountLabel("不限");
-                });
-        //商品属性信息
-        List<KwpGoodsAttribute> attributesList = kwpGoodsAttributeService.getByGoodsId(id);
-        List<GoodsAttributesDetail> attributes = BeanUtils.copyToList(attributesList, GoodsAttributesDetail.class);
-        //商品地址信息
-        KwpGoodsAddress goodsAddress = kwpGoodsAddressService.getByGoodsId(id);
-        AddressInfoDetail addressInfo = BeanUtils.copyProperties(goodsAddress, AddressInfoDetail.class);
-        if (Objects.nonNull(addressInfo)) {
-            addressInfo.setTypeName(DictEnum.getLabel(DictTypeEnum.ADDRESS_TYPE.getType(), addressInfo.getType()));
-        }
-        detail.setImages(images).setPriceRanges(ranges).setAttributes(attributes).setAddressInfo(addressInfo);
-
-        return detail;
+        GoodsDetail goodsDetail = kwpGoodsService.detail(id);
+        return BeanUtils.copyProperties(goodsDetail, OperationGoodsDetail.class);
     }
 
     /**
@@ -287,24 +181,11 @@ public class GoodsManagerService {
     public List<OperationGoodsListExport> export(OperatorGoodsExportQueryVO params) {
         LambdaQueryWrapper<KwpGoods> wrapper = buildWrapper(BeanUtils.copyProperties(params, OperatorGoodsListQueryDTO.class));
         List<KwpGoods> list = kwpGoodsMapper.selectList(wrapper);
-        List<OperationGoodsList> goodsLists = buildGoodLists(list);
-        if (CollectionUtils.isEmpty(goodsLists)) {
+        if (CollectionUtils.isEmpty(list)) {
             return Collections.emptyList();
         }
-        List<OperationGoodsListExport> result = new ArrayList<>();
-        AtomicInteger i = new AtomicInteger(1);
-        goodsLists.forEach(e -> {
-            OperationGoodsListExport export = BeanUtils.copyProperties(e, OperationGoodsListExport.class);
-            export.setSerialNumber(String.valueOf(i.getAndIncrement()))
-                    .setAmount(Objects.isNull(e.getAmount()) ? null : String.valueOf(e.getAmount()))
-                    .setHighestPrice(Objects.isNull(e.getHighestPrice()) ? null : String.valueOf(e.getHighestPrice()))
-                    .setLowestPrice(Objects.isNull(e.getLowestPrice()) ? null : String.valueOf(e.getLowestPrice()))
-                    .setAddedTime(Objects.isNull(e.getAddedTime()) ? null : DateUtil.getDateTime(e.getAddedTime()))
-                    .setShelfTime(Objects.isNull(e.getShelfTime()) ? null : DateUtil.getDateTime(e.getShelfTime()))
-                    .setCreateTime(Objects.isNull(e.getCreateTime()) ? null : DateUtil.getDateTime(e.getCreateTime()));
-            result.add(export);
-        });
-        return result;
+        List<GoodsListExport> exportResults = kwpGoodsService.getExportResults(list);
+        return BeanUtils.copyToList(exportResults, OperationGoodsListExport.class);
     }