|
@@ -9,9 +9,12 @@ import com.github.xiaoymin.knife4j.annotations.DynamicParameters;
|
|
|
import com.qs.mp.admin.domain.Goods;
|
|
|
import com.qs.mp.admin.domain.GoodsSku;
|
|
|
import com.qs.mp.admin.domain.GoodsTagRel;
|
|
|
+import com.qs.mp.admin.domain.excel.GoodsExcel;
|
|
|
+import com.qs.mp.admin.domain.excel.UserTicketOrderItemExcel;
|
|
|
import com.qs.mp.admin.domain.param.GoodsParam;
|
|
|
import com.qs.mp.admin.domain.param.GoodsQueryParam;
|
|
|
import com.qs.mp.admin.domain.param.GoodsUpdateSortWeightParam;
|
|
|
+import com.qs.mp.admin.domain.vo.GoodsExportVO;
|
|
|
import com.qs.mp.admin.domain.vo.GoodsVO;
|
|
|
import com.qs.mp.admin.service.IGoodsService;
|
|
|
import com.qs.mp.admin.service.IGoodsSkuService;
|
|
@@ -23,9 +26,12 @@ import com.qs.mp.common.enums.BusinessType;
|
|
|
import com.qs.mp.common.enums.ErrorCodeEnum;
|
|
|
import com.qs.mp.common.enums.GoodsStatusEnum;
|
|
|
import com.qs.mp.common.utils.LogUtil;
|
|
|
+import com.qs.mp.utils.ExcelUtil;
|
|
|
import com.qs.mp.web.controller.common.BaseApiController;
|
|
|
import io.swagger.annotations.*;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
import java.net.URLDecoder;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.HashSet;
|
|
@@ -35,6 +41,7 @@ import java.util.stream.Collectors;
|
|
|
|
|
|
import ma.glasnost.orika.MapperFacade;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.aspectj.weaver.loadtime.Aj;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.security.access.prepost.PreAuthorize;
|
|
@@ -416,4 +423,115 @@ public class GoodsMgrController extends BaseApiController {
|
|
|
return AjaxResult.success("商品删除成功");
|
|
|
}
|
|
|
|
|
|
+ @ApiOperation("商品导出")
|
|
|
+ @PostMapping("/export")
|
|
|
+ @PreAuthorize("@ss.hasPermi('business:goods:export')")
|
|
|
+ public AjaxResult export(@RequestBody GoodsQueryParam queryParam) {
|
|
|
+
|
|
|
+ // 商品标签
|
|
|
+ List<Long> goodsIds = new ArrayList<>();
|
|
|
+ if (null != queryParam.getTagId()) {
|
|
|
+ List<GoodsTagRel> goodsTagRelList = goodsTagRelService.list(
|
|
|
+ new LambdaQueryWrapper<GoodsTagRel>().eq(GoodsTagRel::getTagId, queryParam.getTagId()));
|
|
|
+ goodsIds = goodsTagRelList.stream().map(GoodsTagRel::getGoodsId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ if (CollectionUtils.isEmpty(goodsIds)) {
|
|
|
+ return AjaxResult.error("没有符合条件的商品信息");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ QueryWrapper<Goods> queryWrapper = new QueryWrapper<Goods>();
|
|
|
+ if (StringUtils.isNotBlank(queryParam.getTitle())) {
|
|
|
+ queryWrapper.eq("t1.title", queryParam.getTitle());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (queryParam.getGoodsId() != null && queryParam.getGoodsId() != 0) {
|
|
|
+ queryWrapper.eq("t1.goods_id", queryParam.getGoodsId());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (queryParam.getSupplierId() != null && queryParam.getSupplierId() != 0) {
|
|
|
+ queryWrapper.eq("t1.supplier_id", queryParam.getSupplierId());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 成本
|
|
|
+ if (queryParam.getMinCost() != null) {
|
|
|
+ queryWrapper.ge("t1.cost", queryParam.getMinCost());
|
|
|
+ }
|
|
|
+ if (queryParam.getMaxCost() != null) {
|
|
|
+ queryWrapper.le("t1.cost", queryParam.getMaxCost());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 价格
|
|
|
+ if (queryParam.getMinValue() != null) {
|
|
|
+ queryWrapper.ge("t1.value", queryParam.getMinValue());
|
|
|
+ }
|
|
|
+ if (queryParam.getMaxValue() != null) {
|
|
|
+ queryWrapper.le("t1.value", queryParam.getMaxValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 盲豆兑换价格
|
|
|
+ if (queryParam.getMinExchange() != null) {
|
|
|
+ queryWrapper.ge("t1.exchange_price", queryParam.getMinExchange());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (queryParam.getMaxExchange() != null) {
|
|
|
+ queryWrapper.le("t1.exchange_price", queryParam.getMaxExchange());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 状态
|
|
|
+ if (queryParam.getStatus() != null) {
|
|
|
+ queryWrapper.eq("t1.status", queryParam.getStatus());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 是否支持兑换
|
|
|
+ if (queryParam.getExchangeShow() != null) {
|
|
|
+ queryWrapper.eq("t1.exchange_show", queryParam.getExchangeShow());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 商品分类
|
|
|
+ if (!CollectionUtils.isEmpty(queryParam.getCategoryIdList())) {
|
|
|
+ queryWrapper.in("t1.category_id", queryParam.getCategoryIdList());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // 标签过滤的商品ID
|
|
|
+ if (queryParam.getTagId() != null) {
|
|
|
+ queryWrapper.in("t1.goods_id", goodsIds);
|
|
|
+ }
|
|
|
+ queryWrapper.eq("t1.is_deleted", 0);
|
|
|
+
|
|
|
+ queryWrapper.orderByDesc("t1.goods_id");
|
|
|
+
|
|
|
+ List<GoodsExportVO> goodsExportVOList = goodsService.listGoodsExportVOByQueryWrapper(queryWrapper);
|
|
|
+ if (CollectionUtils.isEmpty(goodsExportVOList)) {
|
|
|
+ return AjaxResult.error("没有符合条件的商品信息");
|
|
|
+ }
|
|
|
+
|
|
|
+ List<GoodsExcel> goodsExcelList = new ArrayList<>();
|
|
|
+ for (GoodsExportVO goodsExportVO : goodsExportVOList) {
|
|
|
+ GoodsExcel goodsExcel = new GoodsExcel();
|
|
|
+ BeanUtils.copyProperties(goodsExportVO, goodsExcel);
|
|
|
+
|
|
|
+ if (goodsExportVO.getValue() != null) {
|
|
|
+ goodsExcel.setValue(BigDecimal.valueOf(goodsExportVO.getValue()).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP));
|
|
|
+ }
|
|
|
+
|
|
|
+ if (goodsExportVO.getCost() != null) {
|
|
|
+ goodsExcel.setCost(BigDecimal.valueOf(goodsExportVO.getCost()).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP));
|
|
|
+ }
|
|
|
+
|
|
|
+ goodsExcel.setExchangeShow(goodsExportVO.getExchangeShow() == 1 ? "是" : "否");
|
|
|
+
|
|
|
+ if (goodsExportVO.getStatus() != null) {
|
|
|
+ goodsExcel.setStatus(goodsExportVO.getStatus().getDesc());
|
|
|
+ }
|
|
|
+
|
|
|
+ goodsExcelList.add(goodsExcel);
|
|
|
+ }
|
|
|
+
|
|
|
+ ExcelUtil<GoodsExcel> util = new ExcelUtil<>(GoodsExcel.class);
|
|
|
+ return util.exportExcel(goodsExcelList, "商品导出", false);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|