src/main/java/com/ruoyi/basic/mapper/ProductModelMapper.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.basic.pojo.ProductModel; import com.ruoyi.procurementrecord.dto.ProcurementPageDto; import org.apache.ibatis.annotations.Param; @@ -17,6 +18,8 @@ IPage<ProductModel> listPageProductModel(Page<ProductModel> page, @Param("c") ProductModel productModel); IPage<ProductModel> listPageProductionStock(Page<ProductModel> page, @Param("req") ProcurementPageDto req); ProductModel selectLatestRecord(); } src/main/java/com/ruoyi/basic/pojo/ProductModel.java
@@ -6,6 +6,7 @@ import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; @Data @TableName("product_model") @@ -59,4 +60,7 @@ @TableField(exist = false) @Excel(name = "剩余库存") private BigDecimal stockQuantity; @TableField(exist = false) private LocalDateTime createTime; } src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
@@ -237,8 +237,8 @@ @GetMapping("/listPageProductionStock") @Log(title = "库存管理-成品库存", businessType = BusinessType.OTHER) public AjaxResult listPageProductionStock(Page page) { IPage<ProductModel> result = procurementRecordService.listPageProductionStock(page); public AjaxResult listPageProductionStock(Page page, ProcurementPageDto procurementDto) { IPage<ProductModel> result = procurementRecordService.listPageProductionStock(page,procurementDto); return AjaxResult.success(result); } } src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
@@ -60,7 +60,7 @@ BigDecimal getProcurementAmount(Long salesProductId); InventoryInformationDto getReportList(); IPage<ProductModel> listPageProductionStock(Page page); IPage<ProductModel> listPageProductionStock(Page page, ProcurementPageDto procurementDto); IPage<ProcurementPageDto> listPageByProductProduction(Page page, ProcurementPageDto procurementDto); } src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
@@ -882,16 +882,10 @@ } return procurementPageDtoCopyIPage; } @Override public IPage<ProductModel> listPageProductionStock(Page page) { ProductModel productModel = new ProductModel(); IPage<ProductModel> iPage = productModelMapper.listPageProductModel(page, productModel); iPage.getRecords().forEach(item -> { item.setInboundNum(stockUtils.getStockQuantity(item.getId()).get("inboundNum")); item.setOutboundNum(stockUtils.getStockQuantity(item.getId()).get("outboundNum")); item.setStockQuantity(stockUtils.getStockQuantity(item.getId()).get("stockQuantity")); }); return iPage; public IPage<ProductModel> listPageProductionStock(Page page, ProcurementPageDto dto) { return productModelMapper.listPageProductionStock(page, dto); } @Override src/main/resources/mapper/basic/ProductModelMapper.xml
@@ -34,5 +34,68 @@ LIMIT 1 </select> <select id="listPageProductionStock" resultType="com.ruoyi.basic.pojo.ProductModel"> SELECT pm.id, pm.product_id, pm.model, pm.unit, p.product_name, GREATEST(s.last_in_time, o.last_out_time) AS create_time, COALESCE(s.inboundNum, 0) AS inboundNum, COALESCE(o.outboundNum, 0) AS outboundNum, COALESCE(s.inboundNum, 0) - COALESCE(o.outboundNum, 0) AS stockQuantity FROM product_model pm LEFT JOIN product p ON pm.product_id = p.id -- 入库汇总 LEFT JOIN ( SELECT product_model_id, SUM(inbound_num) AS inboundNum, MAX(create_time) AS last_in_time FROM procurement_record_storage <where> <if test="req.timeStr != null and req.timeStr != ''"> AND create_time >= #{req.timeStr} AND create_time < DATE_ADD(#{req.timeStr}, INTERVAL 1 DAY) </if> </where> GROUP BY product_model_id ) s ON s.product_model_id = pm.id -- 出库汇总 LEFT JOIN ( SELECT product_model_id, SUM(inbound_num) AS outboundNum, MAX(create_time) AS last_out_time FROM procurement_record_out <where> <if test="req.timeStr != null and req.timeStr != ''"> AND create_time >= #{req.timeStr} AND create_time < DATE_ADD(#{req.timeStr}, INTERVAL 1 DAY) </if> </where> GROUP BY product_model_id ) o ON o.product_model_id = pm.id <where> <if test="req.timeStr != null and req.timeStr != ''"> AND (s.product_model_id IS NOT NULL OR o.product_model_id IS NOT NULL) </if> <if test="req.productCategory != null and req.productCategory != ''"> AND EXISTS ( SELECT 1 FROM sales_ledger_product slp WHERE slp.product_id = p.id AND slp.product_category LIKE CONCAT('%', #{req.productCategory}, '%') ) </if> </where> ORDER BY pm.id DESC </select> </mapper>