master:商城首页库存列表查询;

pull/1121/head
liujiang 2025-09-18 16:15:39 +08:00
parent 9893b6e8ea
commit 53273743a9
8 changed files with 198 additions and 4 deletions

View File

@ -52,6 +52,13 @@ public class StoreProductStockController extends XktBaseController {
return R.ok(storeProdStockService.selectPage(BeanUtil.toBean(pageVO, StoreProdStockPageDTO.class)));
}
@PreAuthorize("@ss.hasAnyRoles('admin,general_admin,store')||@ss.hasSupplierSubRole()")
@ApiOperation(value = "商城首页库存查询", httpMethod = "POST", response = R.class)
@PostMapping("/website/page")
public R<Page<StoreProdStockWebsitePageResDTO>> selectWebsitePage(@Validated @RequestBody StoreProdWebsiteStockPageVO websitePageVO) {
return R.ok(storeProdStockService.selectWebsitePage(BeanUtil.toBean(websitePageVO, StoreProdWebsiteStockPageDTO.class)));
}
@PreAuthorize("@ss.hasAnyRoles('admin,general_admin,store')||@ss.hasSupplierSubRole()")
@ApiOperation(value = "档口商品库存清零", httpMethod = "PUT", response = R.class)
@Log(title = "档口商品库存清零", businessType = BusinessType.UPDATE)

View File

@ -0,0 +1,22 @@
package com.ruoyi.web.controller.xkt.vo.storeProdStock;
import com.ruoyi.web.controller.xkt.vo.BasePageVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @author liujiang
* @version v1.0
* @date 2025/3/27 15:12
*/
@EqualsAndHashCode(callSuper = true)
@Data
@ApiModel
public class StoreProdWebsiteStockPageVO extends BasePageVO {
@ApiModelProperty(value = "商品货号")
private String prodArtNum;
}

View File

@ -0,0 +1,67 @@
package com.ruoyi.xkt.dto.storeProductStock;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
/**
* @author liujiang
* @version v1.0
* @date 2025/3/27 15:12
*/
@ApiModel
@Data
@Accessors(chain = true)
public class StoreProdStockWebsitePageResDTO {
@ApiModelProperty(value = "档口商品库存ID")
private Long storeProdStockId;
@ApiModelProperty(value = "档口ID")
private Long storeId;
@ApiModelProperty(value = "档口名称")
private String storeName;
@ApiModelProperty(value = "档口商品ID")
private Long storeProdId;
@ApiModelProperty(value = "档口商品主图url")
private String mainPicUrl;
@ApiModelProperty(value = "商品货号")
private String prodArtNum;
@ApiModelProperty(value = "颜色名称")
private String colorName;
@ApiModelProperty(value = "商品价格")
private BigDecimal price;
@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

@ -0,0 +1,22 @@
package com.ruoyi.xkt.dto.storeProductStock;
import com.ruoyi.xkt.dto.BasePageDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @author liujiang
* @version v1.0
* @date 2025/3/27 15:12
*/
@EqualsAndHashCode(callSuper = true)
@Data
@ApiModel
public class StoreProdWebsiteStockPageDTO extends BasePageDTO {
@ApiModelProperty(value = "商品货号")
private String prodArtNum;
}

View File

@ -3,10 +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;
import com.ruoyi.xkt.dto.storeProductStock.*;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
@ -19,6 +16,7 @@ import java.util.List;
* @date 2025-03-26
*/
public interface StoreProductStockMapper extends BaseMapper<StoreProductStock> {
/**
*
*
@ -29,6 +27,7 @@ public interface StoreProductStockMapper extends BaseMapper<StoreProductStock> {
/**
* APP
*
* @param pageDTO
* @return List<StoreProdStockPageResDTO>
*/
@ -57,4 +56,13 @@ public interface StoreProductStockMapper extends BaseMapper<StoreProductStock> {
* @return List<StoreProdStockDownloadDTO>
*/
List<StoreProdStockDownloadDTO> selectAllStockList();
/**
*
*
* @param pageDTO
* @return List<StoreProdStockPageResDTO>
*/
List<StoreProdStockWebsitePageResDTO> selectWebsitePage(StoreProdWebsiteStockPageDTO pageDTO);
}

View File

@ -106,4 +106,13 @@ public interface IStoreProductStockService {
* @return List<StoreProdStockPageResDTO>
*/
Page<StoreProdStockAppPageResDTO> selectAppPage(StoreProdStockPageDTO pageDTO);
/**
*
*
* @param pageDTO
* @return Page<StoreProdStockWebsitePageResDTO>
*/
Page<StoreProdStockWebsitePageResDTO> selectWebsitePage(StoreProdWebsiteStockPageDTO pageDTO);
}

View File

@ -73,6 +73,23 @@ public class StoreProductStockServiceImpl implements IStoreProductStockService {
return Page.convert(new PageInfo<>(stockList));
}
/**
*
*
* @param pageDTO
* @return Page<StoreProdStockWebsitePageResDTO>
*/
@Override
@Transactional(readOnly = true)
public Page<StoreProdStockWebsitePageResDTO> selectWebsitePage(StoreProdWebsiteStockPageDTO pageDTO) {
PageHelper.startPage(pageDTO.getPageNum(), pageDTO.getPageSize());
List<StoreProdStockWebsitePageResDTO> stockList = this.storeProdStockMapper.selectWebsitePage(pageDTO);
if (CollectionUtils.isEmpty(stockList)) {
return Page.empty(pageDTO.getPageSize(), pageDTO.getPageNum());
}
return CollectionUtils.isEmpty(stockList) ? Page.empty(pageDTO.getPageSize(), pageDTO.getPageNum()) : Page.convert(new PageInfo<>(stockList));
}
@Override
@Transactional(readOnly = true)
public Page<StoreProdStockPageResDTO> selectPage(StoreProdStockPageDTO pageDTO) {

View File

@ -154,5 +154,47 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
sps.del_flag = 0
</select>
<select id="selectWebsitePage" resultType="com.ruoyi.xkt.dto.storeProductStock.StoreProdStockWebsitePageResDTO">
SELECT
sps.id AS storeProdStockId,
sp.store_id,
s.store_name,
sps.store_prod_id,
sf.file_url AS mainPicUrl,
sp.prod_art_num,
sps.color_name,
spcs_min.min_price AS price,
NULLIF( sps.size_30, 0 ) AS size30,
NULLIF( sps.size_31, 0 ) AS size31,
NULLIF( sps.size_32, 0 ) AS size32,
NULLIF( sps.size_33, 0 ) AS size33,
NULLIF( sps.size_34, 0 ) AS size34,
NULLIF( sps.size_35, 0 ) AS size35,
NULLIF( sps.size_36, 0 ) AS size36,
NULLIF( sps.size_37, 0 ) AS size37,
NULLIF( sps.size_38, 0 ) AS size38,
NULLIF( sps.size_39, 0 ) AS size39,
NULLIF( sps.size_40, 0 ) AS size40,
NULLIF( sps.size_41, 0 ) AS size41,
NULLIF( sps.size_42, 0 ) AS size42,
NULLIF( sps.size_43, 0 ) 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
JOIN store_product sp ON sps.store_prod_id = sp.id AND sps.del_flag = 0
JOIN store s ON sp.store_id = s.id
JOIN store_product_file spf ON sp.id = spf.store_prod_id AND spf.file_type = 1 AND spf.order_num = 1 AND spf.del_flag = 0
JOIN sys_file sf ON spf.file_id = sf.id
LEFT JOIN ( SELECT store_prod_id, MIN( price ) AS min_price
FROM store_product_color_size WHERE del_flag = 0 GROUP BY store_prod_id ) spcs_min ON sp.id = spcs_min.store_prod_id
<where>
<if test="prodArtNum != null and prodArtNum != ''">
AND sp.prod_art_num LIKE CONCAT( '%', #{prodArtNum}, '%' )
</if>
</where>
</select>
</mapper>