master:APP首页库存列表查询调整;

pull/1121/head
liujiang 2025-07-12 13:17:52 +08:00
parent 7a4819fa64
commit ea52270f97
9 changed files with 135 additions and 9 deletions

View File

@ -37,9 +37,11 @@ public class StoreController extends XktBaseController {
final TokenService tokenService;
// TODO 获取试用期即将到期的档口
// TODO 获取试用期即将到期的档口
// TODO 获取获取正式使用即将到期的档口
// TODO 获取获取正式使用即将到期的档口
@PreAuthorize("@ss.hasAnyRoles('admin,general_admin,store')||@ss.hasSupplierSubRole()")

View File

@ -41,7 +41,14 @@ public class StoreProductStockController extends XktBaseController {
final IStoreProductStockService storeProdStockService;
@PreAuthorize("@ss.hasAnyRoles('admin,general_admin,store,seller,agent')||@ss.hasSupplierSubRole()")
@PreAuthorize("@ss.hasAnyRoles('admin,general_admin,seller,agent')")
@ApiOperation(value = "[APP]查询库存列表", httpMethod = "POST", response = R.class)
@PostMapping("/app/page")
public R<Page<StoreProdStockAppPageResDTO>> selectAppPage(@Validated @RequestBody StoreProdStockPageVO pageVO) {
return R.ok(storeProdStockService.selectAppPage(BeanUtil.toBean(pageVO, StoreProdStockPageDTO.class)));
}
@PreAuthorize("@ss.hasAnyRoles('admin,general_admin,store')||@ss.hasSupplierSubRole()")
@ApiOperation(value = "查询档口库存列表", httpMethod = "POST", response = R.class)
@PostMapping("/page")
public R<Page<StoreProdStockPageResDTO>> selectPage(@Validated @RequestBody StoreProdStockPageVO pageVO) {

View File

@ -30,10 +30,6 @@ public class UserAuthenticationController extends XktBaseController {
final IUserAuthenticationService userAuthService;
// APP 代发联系功能
// APP 代发联系功能
// APP 代发联系功能
@PreAuthorize("@ss.hasAnyRoles('admin,general_admin')")
@ApiOperation(value = "新增代发 ", httpMethod = "POST", response = R.class)
@PostMapping()

View File

@ -16,9 +16,6 @@ import javax.validation.constraints.NotNull;
@Data
public class StoreProdStockPageVO extends BasePageVO {
@ApiModelProperty(value = "档口ID", required = true)
@NotNull(message = "档口ID不能为空")
private Long storeId;
@ApiModelProperty(value = "商品货号")
private String prodArtNum;

View File

@ -0,0 +1,61 @@
package com.ruoyi.xkt.dto.storeProductStock;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
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 StoreProdStockAppPageResDTO {
@ApiModelProperty(value = "档口商品库存ID")
private Long storeProdStockId;
@JsonIgnore
@ApiModelProperty(value = "档口商品ID")
private Long storeProdId;
@ApiModelProperty(value = "档口商品主图url")
private String mainPicUrl;
@ApiModelProperty(value = "商品货号")
private String prodArtNum;
@ApiModelProperty(value = "颜色名称")
private String colorName;
@ApiModelProperty(value = "尺码30")
private Integer size30;
@ApiModelProperty(value = "尺码31")
private Integer size31;
@ApiModelProperty(value = "尺码32")
private Integer size32;
@ApiModelProperty(value = "尺码33")
private Integer size33;
@ApiModelProperty(value = "尺码34")
private Integer size34;
@ApiModelProperty(value = "尺码35")
private Integer size35;
@ApiModelProperty(value = "尺码36")
private Integer size36;
@ApiModelProperty(value = "尺码37")
private Integer size37;
@ApiModelProperty(value = "尺码38")
private Integer size38;
@ApiModelProperty(value = "尺码39")
private Integer size39;
@ApiModelProperty(value = "尺码40")
private Integer size40;
@ApiModelProperty(value = "尺码41")
private Integer size41;
@ApiModelProperty(value = "尺码42")
private Integer size42;
@ApiModelProperty(value = "尺码43")
private Integer size43;
@ApiModelProperty(value = "总数量")
private Integer totalStock;
}

View File

@ -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.StoreProdStockAppPageResDTO;
import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockDownloadDTO;
import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockPageDTO;
import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockPageResDTO;
@ -26,6 +27,13 @@ public interface StoreProductStockMapper extends BaseMapper<StoreProductStock> {
*/
List<StoreProdStockPageResDTO> selectStockPage(StoreProdStockPageDTO pageDTO);
/**
* APP
* @param pageDTO
* @return List<StoreProdStockPageResDTO>
*/
List<StoreProdStockAppPageResDTO> selectAppStockPage(StoreProdStockPageDTO pageDTO);
/**
* 10
*

View File

@ -98,4 +98,12 @@ public interface IStoreProductStockService {
* @return List<StoreProdStockDownloadDTO>
*/
List<StoreProdStockDownloadDTO> export(StoreProdStockExportDTO exportDTO);
/**
* APP
*
* @param pageDTO
* @return List<StoreProdStockPageResDTO>
*/
Page<StoreProdStockAppPageResDTO> selectAppPage(StoreProdStockPageDTO pageDTO);
}

View File

@ -50,6 +50,32 @@ public class StoreProductStockServiceImpl implements IStoreProductStockService {
final StoreProductMapper storeProdMapper;
final StoreProductColorSizeMapper prodColorSizeMapper;
/**
* APP
*
* @param pageDTO
* @return List<StoreProdStockPageResDTO>
*/
@Override
@Transactional(readOnly = true)
public Page<StoreProdStockAppPageResDTO> selectAppPage(StoreProdStockPageDTO pageDTO) {
PageHelper.startPage(pageDTO.getPageNum(), pageDTO.getPageSize());
List<StoreProdStockAppPageResDTO> stockList = this.storeProdStockMapper.selectAppStockPage(pageDTO);
if (CollectionUtils.isEmpty(stockList)) {
return Page.empty(pageDTO.getPageSize(), pageDTO.getPageNum());
}
// 提取查询结果中的商店产品ID列表
List<Long> storeProdIdList = stockList.stream().map(StoreProdStockAppPageResDTO::getStoreProdId).collect(Collectors.toList());
// 查找排名第一个商品主图列表
List<StoreProdMainPicDTO> mainPicList = this.storeProdFileMapper.selectMainPicByStoreProdIdList(storeProdIdList, FileType.MAIN_PIC.getValue(), 1);
Map<Long, String> mainPicMap = CollectionUtils.isEmpty(mainPicList) ? new HashMap<>() : mainPicList.stream()
.collect(Collectors.toMap(StoreProdMainPicDTO::getStoreProdId, StoreProdMainPicDTO::getFileUrl));
// 为每个产品设置主图URL和标准尺码列表
stockList.forEach(x -> x.setMainPicUrl(mainPicMap.get(x.getStoreProdId())));
return Page.convert(new PageInfo<>(stockList));
}
@Override
@Transactional(readOnly = true)
public Page<StoreProdStockPageResDTO> selectPage(StoreProdStockPageDTO pageDTO) {

View File

@ -4,7 +4,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.xkt.mapper.StoreProductStockMapper">
<select id="selectStockPage" parameterType="com.ruoyi.xkt.dto.storeProductStock.StoreProdStockPageDTO" resultType="com.ruoyi.xkt.dto.storeProductStock.StoreProdStockPageResDTO">
<select id="selectAppStockPage" parameterType="com.ruoyi.xkt.dto.storeProductStock.StoreProdStockPageDTO"
resultType="com.ruoyi.xkt.dto.storeProductStock.StoreProdStockAppPageResDTO">
SELECT
sps.id AS storeProdStockId, sps.store_prod_id, sps.prod_art_num, sps.color_name,
sps.size_30 AS size30, sps.size_31 AS size31, sps.size_32 AS size32, sps.size_33 AS size33, sps.size_34 AS size34, sps.size_35 AS size35, sps.size_36 AS size36, sps.size_37 AS size37,
sps.size_38 AS size38, sps.size_39 AS size39, sps.size_40 AS size40, sps.size_41 AS size41, sps.size_42 AS size42, sps.size_43 AS size43,
(IFNULL(sps.size_30, 0) + IFNULL(sps.size_31, 0) + IFNULL(sps.size_32, 0) + IFNULL(sps.size_33, 0) +
IFNULL(sps.size_34, 0) + IFNULL(sps.size_35, 0) + IFNULL(sps.size_36, 0) + IFNULL(sps.size_37, 0) +
IFNULL(sps.size_38, 0) + IFNULL(sps.size_39, 0) + IFNULL(sps.size_40, 0) + IFNULL(sps.size_41, 0) +
IFNULL(sps.size_42, 0) + IFNULL(sps.size_43, 0)) AS totalStock
FROM
store_product_stock sps left join store_product sp on sps.store_prod_id = sp.id left join sys_product_category spc on sp.prod_cate_id = spc.id
WHERE
sps.del_flag = 0
<if test="prodArtNum != null and prodArtNum != ''"> and sps.prod_art_num like concat('%', #{prodArtNum}, '%')</if>
ORDER BY
sps.store_prod_id,
sps.store_color_id
</select>
<select id="selectStockPage" parameterType="com.ruoyi.xkt.dto.storeProductStock.StoreProdStockPageDTO"
resultType="com.ruoyi.xkt.dto.storeProductStock.StoreProdStockPageResDTO">
SELECT
sps.id AS storeProdStockId, sps.store_prod_id, sps.prod_art_num, sps.store_color_id, sps.store_prod_color_id, sps.color_name, spc.name AS prodCateName,
sps.size_30 AS size30, sps.size_31 AS size31, sps.size_32 AS size32, sps.size_33 AS size33, sps.size_34 AS size34, sps.size_35 AS size35, sps.size_36 AS size36, sps.size_37 AS size37,