From bf3e408059cfeedfc03023e4d1fd0a520b1434d9 Mon Sep 17 00:00:00 2001 From: liujiang <569804566@qq.com> Date: Thu, 12 Jun 2025 00:16:16 +0800 Subject: [PATCH] =?UTF-8?q?master=EF=BC=9A=E5=BA=93=E5=AD=98=E6=98=8E?= =?UTF-8?q?=E7=BB=86=E5=AF=BC=E5=87=BA=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xkt/StoreProductStockController.java | 20 ++ .../StoreProdStockExportVO.java | 29 +++ .../StoreProdStockDownloadDTO.java | 55 +++++ .../StoreProdStockExportDTO.java | 28 +++ .../xkt/mapper/StoreProductStockMapper.java | 16 ++ .../service/IStoreProductStockService.java | 7 + .../impl/StoreProductStockServiceImpl.java | 20 ++ .../mapper/StoreProductStockMapper.xml | 210 +++++------------- 8 files changed, 235 insertions(+), 150 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdStock/StoreProdStockExportVO.java create mode 100644 xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockDownloadDTO.java create mode 100644 xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockExportDTO.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductStockController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductStockController.java index 317fc2f7f..2980b2caa 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductStockController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductStockController.java @@ -6,7 +6,12 @@ import com.ruoyi.common.core.controller.XktBaseController; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.page.Page; import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.web.controller.xkt.vo.storeProdStock.*; +import com.ruoyi.web.controller.xkt.vo.storeProdStorage.StoreStorageExportVO; +import com.ruoyi.xkt.dto.storeProdStorage.StoreStorageDetailDownloadDTO; +import com.ruoyi.xkt.dto.storeProdStorage.StoreStorageExportDTO; import com.ruoyi.xkt.dto.storeProductStock.*; import com.ruoyi.xkt.service.IStoreProductStockService; import io.swagger.annotations.Api; @@ -15,6 +20,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; import java.util.Collections; import java.util.List; @@ -78,6 +86,18 @@ public class StoreProductStockController extends XktBaseController { .toBean(stockAndDiscountVO, StoreProdStockAndDiscountDTO.class)), StoreProdStockAndDiscountResVO.class)); } + @ApiOperation(value = "导出库存", httpMethod = "POST", response = R.class) + @Log(title = "导出库存", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, @Validated @RequestBody StoreProdStockExportVO exportVO) throws UnsupportedEncodingException { + List downloadList = storeProdStockService.export(BeanUtil.toBean(exportVO, StoreProdStockExportDTO.class)); + ExcelUtil util = new ExcelUtil<>(StoreProdStockDownloadDTO.class); + // 设置下载excel名 + String encodedFileName = URLEncoder.encode("库存明细" + DateUtils.getDate(), "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename=" + encodedFileName + ".xlsx"); + util.exportExcel(response, downloadList, "库存明细"); + } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdStock/StoreProdStockExportVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdStock/StoreProdStockExportVO.java new file mode 100644 index 000000000..f81f0f479 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdStock/StoreProdStockExportVO.java @@ -0,0 +1,29 @@ +package com.ruoyi.web.controller.xkt.vo.storeProdStock; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@ApiModel("档口库存导出数据") +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class StoreProdStockExportVO { + + @NotNull(message = "storeId不能为空!") + @ApiModelProperty(value = "storeId") + private Long storeId; + @ApiModelProperty(value = "storeProdStockIdList") + private List storeProdStockIdList; + @ApiModelProperty(value = "是否全量导出") + private Boolean fullExport; + +} diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockDownloadDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockDownloadDTO.java new file mode 100644 index 000000000..b9f0da627 --- /dev/null +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockDownloadDTO.java @@ -0,0 +1,55 @@ +package com.ruoyi.xkt.dto.storeProductStock; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.ruoyi.common.annotation.Excel; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@ApiModel("库存明细导出") +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class StoreProdStockDownloadDTO { + + @Excel(name = "序号", cellType = Excel.ColumnType.NUMERIC, needMerge = true) + private Integer orderNum; + @Excel(name = "货号", needMerge = true) + private String prodArtNum; + @Excel(name = "颜色", needMerge = true) + private String colorName; + @Excel(name = "30") + private Integer size30Quantity; + @Excel(name = "31") + private Integer size31Quantity; + @Excel(name = "32") + private Integer size32Quantity; + @Excel(name = "33") + private Integer size33Quantity; + @Excel(name = "34") + private Integer size34Quantity; + @Excel(name = "35") + private Integer size35Quantity; + @Excel(name = "36") + private Integer size36Quantity; + @Excel(name = "37") + private Integer size37Quantity; + @Excel(name = "38") + private Integer size38Quantity; + @Excel(name = "39") + private Integer size39Quantity; + @Excel(name = "40") + private Integer size40Quantity; + @Excel(name = "41") + private Integer size41Quantity; + @Excel(name = "42") + private Integer size42Quantity; + @Excel(name = "43") + private Integer size43Quantity; + @Excel(name = "总库存") + private Integer totalQuantity; + +} diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockExportDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockExportDTO.java new file mode 100644 index 000000000..407d0d3f7 --- /dev/null +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockExportDTO.java @@ -0,0 +1,28 @@ +package com.ruoyi.xkt.dto.storeProductStock; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@ApiModel("档口库存导出数据") +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class StoreProdStockExportDTO { + + @ApiModelProperty(value = "storeId") + private Long storeId; + @ApiModelProperty(value = "storeProdStockIdList") + private List storeProdStockIdList; + @ApiModelProperty(value = "是否全量导出") + private Boolean fullExport; + +} diff --git a/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductStockMapper.java b/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductStockMapper.java index 3961d7b53..63fc67f3e 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductStockMapper.java +++ b/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductStockMapper.java @@ -3,6 +3,7 @@ package com.ruoyi.xkt.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.xkt.domain.StoreProductStock; import com.ruoyi.xkt.dto.dailyStoreTag.DailyStoreTagDTO; +import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockDownloadDTO; import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockPageDTO; import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockPageResDTO; import org.apache.ibatis.annotations.Param; @@ -33,4 +34,19 @@ public interface StoreProductStockMapper extends BaseMapper { * @return List */ List selectTop10List(@Param("yesterday") Date yesterday, @Param("oneMonthAgo") Date oneMonthAgo); + + /** + * 筛选库存导出列表 + * + * @param storeProdStockIdList 档口商品库存ID列表 + * @return List + */ + List selectExportList(@Param("storeProdStockIdList") List storeProdStockIdList); + + /** + * 筛选库存所有列表 + * + * @return List + */ + List selectAllStockList(); } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/IStoreProductStockService.java b/xkt/src/main/java/com/ruoyi/xkt/service/IStoreProductStockService.java index 7dd2835ff..50175f1e1 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/IStoreProductStockService.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/IStoreProductStockService.java @@ -91,4 +91,11 @@ public interface IStoreProductStockService { */ Integer checkAndUpdateStock(Long storeId, StoreProdCheckStockDTO checkStockDTO); + /** + * 导出库存明细 + * + * @param exportDTO 导出入参 + * @return List + */ + List export(StoreProdStockExportDTO exportDTO); } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStockServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStockServiceImpl.java index 2a7418c02..06ddce9ea 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStockServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStockServiceImpl.java @@ -193,6 +193,26 @@ public class StoreProductStockServiceImpl implements IStoreProductStockService { return this.storeProdStockMapper.updateById(stockList).size(); } + /** + * 导出库存明细 + * + * @param exportDTO 导出入参 + * @return List + */ + @Override + @Transactional(readOnly = true) + public List export(StoreProdStockExportDTO exportDTO) { + // 导出勾选 + if (CollectionUtils.isNotEmpty(exportDTO.getStoreProdStockIdList())) { + return this.storeProdStockMapper.selectExportList(exportDTO.getStoreProdStockIdList()); + // 导出所有库存明细 + } else { + Optional.ofNullable(exportDTO.getFullExport()) + .orElseThrow(() -> new ServiceException("全量导出,fullExport不能为空!", HttpStatus.ERROR)); + return this.storeProdStockMapper.selectAllStockList(); + } + } + /** * 增加库存 diff --git a/xkt/src/main/resources/mapper/StoreProductStockMapper.xml b/xkt/src/main/resources/mapper/StoreProductStockMapper.xml index 25fb73cfd..6adb8f5ec 100644 --- a/xkt/src/main/resources/mapper/StoreProductStockMapper.xml +++ b/xkt/src/main/resources/mapper/StoreProductStockMapper.xml @@ -3,156 +3,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - select id, store_prod_id, store_prod_color_id, size_30, size_31, size_32, size_33, size_34, size_35, size_36, size_37, size_38, size_39, size_40, size_41, size_42, size_43, version, del_flag, create_by, create_time, update_by, update_time from store_product_stock - - - - - - - - insert into store_product_stock - - store_prod_id, - store_prod_color_id, - size_30, - size_31, - size_32, - size_33, - size_34, - size_35, - size_36, - size_37, - size_38, - size_39, - size_40, - size_41, - size_42, - size_43, - version, - del_flag, - create_by, - create_time, - update_by, - update_time, - - - #{storeProdId}, - #{storeProdColorId}, - #{size30}, - #{size31}, - #{size32}, - #{size33}, - #{size34}, - #{size35}, - #{size36}, - #{size37}, - #{size38}, - #{size39}, - #{size40}, - #{size41}, - #{size42}, - #{size43}, - #{version}, - #{delFlag}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - - - - - update store_product_stock - - store_prod_id = #{storeProdId}, - store_prod_color_id = #{storeProdColorId}, - size_30 = #{size30}, - size_31 = #{size31}, - size_32 = #{size32}, - size_33 = #{size33}, - size_34 = #{size34}, - size_35 = #{size35}, - size_36 = #{size36}, - size_37 = #{size37}, - size_38 = #{size38}, - size_39 = #{size39}, - size_40 = #{size40}, - size_41 = #{size41}, - size_42 = #{size42}, - size_43 = #{size43}, - version = #{version}, - del_flag = #{delFlag}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - - where id = #{id} - - - - delete from store_product_stock where id = #{id} - - - - delete from store_product_stock where id in - - #{id} - - + + + + \ No newline at end of file