From f05753606a24addc52e1a7874f3e801f640cf5cf Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期五, 15 五月 2026 13:59:19 +0800
Subject: [PATCH] fix:1.仓库导入添加审核记录 2.库存展示更改
---
src/main/java/com/ruoyi/stock/service/StockInventoryService.java | 2
src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java | 3
src/main/java/com/ruoyi/purchase/pojo/ProductRecord.java | 3
src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java | 2
src/main/resources/mapper/stock/StockInventoryMapper.xml | 324 +++++++++++++++++++++++++++++++++------------
src/main/java/com/ruoyi/stock/controller/StockInventoryController.java | 20 ++
src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java | 42 +++--
7 files changed, 284 insertions(+), 112 deletions(-)
diff --git a/src/main/java/com/ruoyi/purchase/pojo/ProductRecord.java b/src/main/java/com/ruoyi/purchase/pojo/ProductRecord.java
index fdd7503..5003107 100644
--- a/src/main/java/com/ruoyi/purchase/pojo/ProductRecord.java
+++ b/src/main/java/com/ruoyi/purchase/pojo/ProductRecord.java
@@ -5,6 +5,7 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
+import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@@ -16,7 +17,7 @@
*/
@Data
@TableName("product_record")
-public class ProductRecord {
+public class ProductRecord implements Serializable {
private static final long serialVersionUID = 1L;
/**
diff --git a/src/main/java/com/ruoyi/stock/controller/StockInventoryController.java b/src/main/java/com/ruoyi/stock/controller/StockInventoryController.java
index 44fe885..a0a9fa5 100644
--- a/src/main/java/com/ruoyi/stock/controller/StockInventoryController.java
+++ b/src/main/java/com/ruoyi/stock/controller/StockInventoryController.java
@@ -51,6 +51,19 @@
return R.ok(stockInventoryDtoIPage);
}
+ /**
+ * 鏌ヨ瀵瑰簲鎵瑰彿鍜屾暟閲�
+ * @param page
+ * @param stockInventoryDto
+ * @return
+ */
+ @GetMapping("/getBatchNoQty")
+ @Operation(summary = "鏌ヨ瀵瑰簲鎵瑰彿鍜屾暟閲�")
+ public R getBatchNoQty(Page page, StockInventoryDto stockInventoryDto) {
+ IPage<StockInventoryDto> stockInventoryDtoIPage = stockInventoryService.getBatchNoQty(page, stockInventoryDto);
+ return R.ok(stockInventoryDtoIPage);
+ }
+
@PostMapping("/addstockInventory")
@Operation(summary = "鏂板搴撳瓨")
public R addstockInventory(@RequestBody StockInventoryDto stockInventoryDto) {
@@ -85,7 +98,7 @@
}
- @PostMapping("importStockInventory")
+ @PostMapping("/importStockInventory")
@Operation(summary = "瀵煎叆搴撳瓨")
public R importStockInventory(MultipartFile file) {
return stockInventoryService.importStockInventory(file);
@@ -105,13 +118,13 @@
stockInventoryService.exportStockInventory(response, stockInventoryDto);
}
- @GetMapping("stockInventoryPage")
+ @GetMapping("/stockInventoryPage")
@Operation(summary = "搴撳瓨鎶ヨ〃鏌ヨ")
public R stockInventoryPage(Page page, StockInventoryDto stockInventoryDto) {
return R.ok(stockInventoryService.stockInventoryPage(stockInventoryDto,page));
}
- @GetMapping("stockInAndOutRecord")
+ @GetMapping("/stockInAndOutRecord")
@Operation(summary = "缁熻鍚勪釜浜у搧鐨勫叆搴撳拰鍑哄簱璁板綍")
public R stockInAndOutRecord(StockInventoryDto stockInventoryDto,Page page) {
return R.ok(stockInventoryService.stockInAndOutRecord(stockInventoryDto,page));
@@ -128,7 +141,6 @@
public R thawStock(@RequestBody StockInventoryDto stockInventoryDto) {
return R.ok(stockInventoryService.thawStock(stockInventoryDto));
}
-
@GetMapping("/getByModelId")
@Operation(summary = "鏍规嵁浜у搧瑙勬牸ID鑾峰彇鍏ュ簱璁板綍")
diff --git a/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java b/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
index 2be6512..bc08eee 100644
--- a/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
+++ b/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
@@ -76,4 +76,7 @@
@Schema(description = "涓嶅悎鏍煎簱瀛業D")
private Long unQualifiedId;
+
+ @Schema(description = "浜у搧id")
+ private Long productId;
}
diff --git a/src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java b/src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java
index a31cf5b..dbc271b 100644
--- a/src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java
+++ b/src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java
@@ -56,4 +56,6 @@
List<StockInventory> listSelectableBatchNoByProductModelIds(@Param("productModelIds") List<Long> productModelIds);
List<StockInventory> getByModelId(@Param("productModelId") Long productModelId);
+
+ IPage<StockInventoryDto> getBatchNoQty(Page page, @Param("ew") StockInventoryDto stockInventoryDto);
}
diff --git a/src/main/java/com/ruoyi/stock/service/StockInventoryService.java b/src/main/java/com/ruoyi/stock/service/StockInventoryService.java
index d47cc4b..5d534d5 100644
--- a/src/main/java/com/ruoyi/stock/service/StockInventoryService.java
+++ b/src/main/java/com/ruoyi/stock/service/StockInventoryService.java
@@ -47,4 +47,6 @@
Boolean thawStock(StockInventoryDto stockInventoryDto);
List<StockInventory> getByModelId(Long modelId);
+
+ IPage<StockInventoryDto> getBatchNoQty(Page page, StockInventoryDto stockInventoryDto);
}
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
index 3808916..24605ba 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
@@ -29,7 +29,7 @@
import com.ruoyi.stock.service.StockOutRecordService;
import com.ruoyi.stock.service.StockUninventoryService;
import jakarta.servlet.http.HttpServletResponse;
-import lombok.AllArgsConstructor;
+import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
@@ -51,15 +51,16 @@
* @since 2026-01-21 04:16:36
*/
@Service
-@AllArgsConstructor
+@RequiredArgsConstructor
public class StockInventoryServiceImpl extends ServiceImpl<StockInventoryMapper, StockInventory> implements StockInventoryService {
- private StockInventoryMapper stockInventoryMapper;
- private StockInRecordService stockInRecordService;
- private StockOutRecordService stockOutRecordService;
- private StockUninventoryService stockUninventoryService;
- private SalesLedgerProductMapper salesLedgerProductMapper;
- private ProductModelMapper productModelMapper;
+ private final StockInventoryMapper stockInventoryMapper;
+ private final StockInRecordService stockInRecordService;
+ private final StockOutRecordService stockOutRecordService;
+ private final StockUninventoryService stockUninventoryService;
+ private final SalesLedgerProductMapper salesLedgerProductMapper;
+ private final ProductModelMapper productModelMapper;
+
@Override
public IPage<StockInventoryDto> pagestockInventory(Page page, StockInventoryDto stockInventoryDto) {
return stockInventoryMapper.pagestockInventory(page, stockInventoryDto);
@@ -105,8 +106,8 @@
newStockInventory.setLockedQuantity(stockInventoryDto.getLockedQuantity());
newStockInventory.setWarnNum(stockInventoryDto.getWarnNum());
stockInventoryMapper.insert(newStockInventory);
- }else {
- stockInventoryMapper.updateAddStockInventory(stockInventoryDto);
+ } else {
+ stockInventoryMapper.updateAddStockInventory(stockInventoryDto);
}
return true;
}
@@ -116,7 +117,7 @@
@Transactional(rollbackFor = Exception.class)
public Boolean subtractStockInventory(StockInventoryDto stockInventoryDto) {
LambdaQueryWrapper<StockInventory> eq = new QueryWrapper<StockInventory>().lambda()
- .eq(StockInventory::getProductModelId, stockInventoryDto.getProductModelId());
+ .eq(StockInventory::getProductModelId, stockInventoryDto.getProductModelId());
if (StringUtils.isEmpty(stockInventoryDto.getBatchNo())) {
eq.isNull(StockInventory::getBatchNo);
stockInventoryDto.setBatchNo(null);
@@ -336,7 +337,7 @@
}
stockInventoryDto.setProductModelId(matchedProduct.getProductModelId());
- this.addstockInventory(stockInventoryDto);
+ this.addStockInRecordOnly(stockInventoryDto);
successCount++;
}
@@ -392,28 +393,28 @@
List<StockInventoryExportData> list = stockInventoryMapper.listStockInventoryExportData(stockInventoryDto);
ExcelUtil<StockInventoryExportData> util = new ExcelUtil<>(StockInventoryExportData.class);
- util.exportExcel(response,list, "搴撳瓨淇℃伅");
+ util.exportExcel(response, list, "搴撳瓨淇℃伅");
}
@Override
public IPage<StockInRecordDto> stockInventoryPage(StockInventoryDto stockInventoryDto, Page page) {
- return stockInventoryMapper.stockInventoryPage(stockInventoryDto,page);
+ return stockInventoryMapper.stockInventoryPage(stockInventoryDto, page);
}
@Override
public IPage<StockInventoryDto> stockInAndOutRecord(StockInventoryDto stockInventoryDto, Page page) {
- return stockInventoryMapper.stockInAndOutRecord(stockInventoryDto,page);
+ return stockInventoryMapper.stockInAndOutRecord(stockInventoryDto, page);
}
@Override
public Boolean frozenStock(StockInventoryDto stockInventoryDto) {
StockInventory stockInventory = stockInventoryMapper.selectById(stockInventoryDto.getId());
- if (stockInventory.getQualitity().compareTo(stockInventoryDto.getLockedQuantity())<0) {
+ if (stockInventory.getQualitity().compareTo(stockInventoryDto.getLockedQuantity()) < 0) {
throw new RuntimeException("鍐荤粨鏁伴噺涓嶈兘瓒呰繃搴撳瓨鏁伴噺");
}
if (ObjectUtils.isEmpty(stockInventory.getLockedQuantity())) {
stockInventory.setLockedQuantity(stockInventoryDto.getLockedQuantity());
- }else {
+ } else {
stockInventory.setLockedQuantity(stockInventory.getLockedQuantity().add(stockInventoryDto.getLockedQuantity()));
}
return this.updateById(stockInventory);
@@ -422,7 +423,7 @@
@Override
public Boolean thawStock(StockInventoryDto stockInventoryDto) {
StockInventory stockInventory = stockInventoryMapper.selectById(stockInventoryDto.getId());
- if (stockInventory.getLockedQuantity().compareTo(stockInventoryDto.getLockedQuantity())<0) {
+ if (stockInventory.getLockedQuantity().compareTo(stockInventoryDto.getLockedQuantity()) < 0) {
throw new RuntimeException("瑙e喕鏁伴噺涓嶈兘瓒呰繃鍐荤粨鏁伴噺");
}
stockInventory.setLockedQuantity(stockInventory.getLockedQuantity().subtract(stockInventoryDto.getLockedQuantity()));
@@ -433,4 +434,9 @@
public List<StockInventory> getByModelId(Long modelId) {
return stockInventoryMapper.getByModelId(modelId);
}
+
+ @Override
+ public IPage<StockInventoryDto> getBatchNoQty(Page page, StockInventoryDto stockInventoryDto) {
+ return stockInventoryMapper.getBatchNoQty(page, stockInventoryDto);
+ }
}
diff --git a/src/main/resources/mapper/stock/StockInventoryMapper.xml b/src/main/resources/mapper/stock/StockInventoryMapper.xml
index 4e7adf6..32aebe1 100644
--- a/src/main/resources/mapper/stock/StockInventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockInventoryMapper.xml
@@ -99,96 +99,102 @@
INNER JOIN product_tree pt ON p.parent_id = pt.id
)
select
- batch_no,
- MAX(qualifiedId) as qualifiedId,
- MAX(unQualifiedId) as unQualifiedId,
- SUM(qualifiedQuantity) as qualifiedQuantity,
- SUM(unQualifiedQuantity) as unQualifiedQuantity,
- SUM(qualifiedLockedQuantity) as qualifiedLockedQuantity,
- SUM(unQualifiedLockedQuantity) as unQualifiedLockedQuantity,
- SUM(qualifiedQuantity - qualifiedLockedQuantity - IFNULL(qualifiedPendingOut, 0)) as qualifiedUnLockedQuantity,
- SUM(unQualifiedQuantity - unQualifiedLockedQuantity - IFNULL(unQualifiedPendingOut, 0)) as unQualifiedUnLockedQuantity,
- SUM(IFNULL(qualifiedPendingOut, 0)) as qualifiedPendingOutQuantity,
- SUM(IFNULL(unQualifiedPendingOut, 0)) as unQualifiedPendingOutQuantity,
- product_model_id,
- MAX(create_time) as create_time,
- MAX(update_time) as update_time,
- MAX(warn_num) as warn_num,
- MAX(version) as version,
- model,
- MAX(remark) as remark,
- unit,
- product_name,
- product_id,
- 'combined' as stockType
+ GROUP_CONCAT(DISTINCT batch_no ORDER BY batch_no SEPARATOR ',') as batch_no,
+ MAX(qualifiedId) as qualifiedId,
+ MAX(unQualifiedId) as unQualifiedId,
+ SUM(qualifiedQuantity) as qualifiedQuantity,
+ SUM(unQualifiedQuantity) as unQualifiedQuantity,
+ SUM(qualifiedLockedQuantity) as qualifiedLockedQuantity,
+ SUM(unQualifiedLockedQuantity) as unQualifiedLockedQuantity,
+ SUM(qualifiedQuantity - qualifiedLockedQuantity - IFNULL(qualifiedPendingOut, 0)) as qualifiedUnLockedQuantity,
+ SUM(unQualifiedQuantity - unQualifiedLockedQuantity - IFNULL(unQualifiedPendingOut, 0)) as unQualifiedUnLockedQuantity,
+ SUM(IFNULL(qualifiedPendingOut, 0)) as qualifiedPendingOutQuantity,
+ SUM(IFNULL(unQualifiedPendingOut, 0)) as unQualifiedPendingOutQuantity,
+ product_model_id,
+ MAX(create_time) as create_time,
+ MAX(update_time) as update_time,
+ MAX(warn_num) as warn_num,
+ MAX(version) as version,
+ model,
+ MAX(remark) as remark,
+ unit,
+ product_name,
+ product_id,
+ 'combined' as stockType
from (
- select
- si.batch_no,
- si.id as qualifiedId,
- null as unQualifiedId,
- si.qualitity as qualifiedQuantity,
- 0 as unQualifiedQuantity,
- COALESCE(si.locked_quantity, 0) as locked_quantity,
- COALESCE(si.locked_quantity, 0) as qualifiedLockedQuantity,
- 0 as unQualifiedLockedQuantity,
- si.product_model_id,
- si.create_time,
- si.update_time,
- COALESCE(si.warn_num, 0) as warn_num,
- si.version,
- (si.qualitity - COALESCE(si.locked_quantity, 0)) as un_locked_quantity,
- pm.model,
- si.remark,
- pm.unit,
- p.product_name,
- p.id as product_id,
- (
- select IFNULL(SUM(sor.stock_out_num), 0)
- from stock_out_record sor
- where sor.product_model_id = si.product_model_id
- and (si.batch_no is null and sor.batch_no is null or si.batch_no = sor.batch_no)
- and sor.type = '0'
- and sor.approval_status = 0
- ) as qualifiedPendingOut,
- 0 as unqualifiedPendingOut
- from stock_inventory si
- left join product_model pm on si.product_model_id = pm.id
- left join product p on pm.product_id = p.id
+ select
+ si.batch_no,
+ si.id as qualifiedId,
+ null as unQualifiedId,
+ si.qualitity as qualifiedQuantity,
+ 0 as unQualifiedQuantity,
+ COALESCE(si.locked_quantity, 0) as locked_quantity,
+ COALESCE(si.locked_quantity, 0) as qualifiedLockedQuantity,
+ 0 as unQualifiedLockedQuantity,
+ si.product_model_id,
+ si.create_time,
+ si.update_time,
+ COALESCE(si.warn_num, 0) as warn_num,
+ si.version,
+ (si.qualitity - COALESCE(si.locked_quantity, 0)) as un_locked_quantity,
+ pm.model,
+ si.remark,
+ pm.unit,
+ p.product_name,
+ p.id as product_id,
+ (
+ select IFNULL(SUM(sor.stock_out_num), 0)
+ from stock_out_record sor
+ where sor.product_model_id = si.product_model_id
+ and (
+ (si.batch_no is null and sor.batch_no is null)
+ or si.batch_no = sor.batch_no
+ )
+ and sor.type = '0'
+ and sor.approval_status = 0
+ ) as qualifiedPendingOut,
+ 0 as unQualifiedPendingOut
+ from stock_inventory si
+ left join product_model pm on si.product_model_id = pm.id
+ left join product p on pm.product_id = p.id
- union all
+ union all
- select
- su.batch_no,
- null as qualifiedId,
- su.id as unQualifiedId,
- 0 as qualifiedQuantity,
- su.qualitity as unQualifiedQuantity,
- COALESCE(su.locked_quantity, 0) as locked_quantity,
- 0 as qualifiedLockedQuantity,
- COALESCE(su.locked_quantity, 0) as unQualifiedLockedQuantity,
- su.product_model_id,
- su.create_time,
- su.update_time,
- 0 as warn_num,
- su.version,
- (su.qualitity - COALESCE(su.locked_quantity, 0)) as un_locked_quantity,
- pm.model,
- su.remark,
- pm.unit,
- p.product_name,
- p.id as product_id,
- 0 as qualifiedPendingOut,
- (
- select IFNULL(SUM(sor.stock_out_num), 0)
- from stock_out_record sor
- where sor.product_model_id = su.product_model_id
- and (su.batch_no is null and sor.batch_no is null or su.batch_no = sor.batch_no)
- and sor.type = '1'
- and sor.approval_status = 0
- ) as unqualifiedPendingOut
- from stock_uninventory su
- left join product_model pm on su.product_model_id = pm.id
- left join product p on pm.product_id = p.id
+ select
+ su.batch_no,
+ null as qualifiedId,
+ su.id as unQualifiedId,
+ 0 as qualifiedQuantity,
+ su.qualitity as unQualifiedQuantity,
+ COALESCE(su.locked_quantity, 0) as locked_quantity,
+ 0 as qualifiedLockedQuantity,
+ COALESCE(su.locked_quantity, 0) as unQualifiedLockedQuantity,
+ su.product_model_id,
+ su.create_time,
+ su.update_time,
+ 0 as warn_num,
+ su.version,
+ (su.qualitity - COALESCE(su.locked_quantity, 0)) as un_locked_quantity,
+ pm.model,
+ su.remark,
+ pm.unit,
+ p.product_name,
+ p.id as product_id,
+ 0 as qualifiedPendingOut,
+ (
+ select IFNULL(SUM(sor.stock_out_num), 0)
+ from stock_out_record sor
+ where sor.product_model_id = su.product_model_id
+ and (
+ (su.batch_no is null and sor.batch_no is null)
+ or su.batch_no = sor.batch_no
+ )
+ and sor.type = '1'
+ and sor.approval_status = 0
+ ) as unQualifiedPendingOut
+ from stock_uninventory su
+ left join product_model pm on su.product_model_id = pm.id
+ left join product p on pm.product_id = p.id
) as combined
<where>
<if test="ew.productName != null and ew.productName !=''">
@@ -196,14 +202,20 @@
select distinct p.product_name
from product p
left join product_model pm on p.id = pm.product_id
- where p.product_name like concat('%',#{ew.productName},'%') or pm.model like concat('%',#{ew.productName},'%')
+ where p.product_name like concat('%',#{ew.productName},'%')
+ or pm.model like concat('%',#{ew.productName},'%')
)
</if>
<if test="ew.topParentProductId != null and ew.topParentProductId > 0">
and combined.product_id in (select id from product_tree)
</if>
</where>
- group by batch_no, product_model_id, model, unit, product_name, product_id
+ group by
+ product_model_id,
+ model,
+ unit,
+ product_name,
+ product_id
</select>
<select id="listStockInventoryExportData" resultType="com.ruoyi.stock.execl.StockInventoryExportData">
@@ -476,4 +488,138 @@
where si.product_model_id = #{productModelId}
</select>
+ <select id="getBatchNoQty" resultType="com.ruoyi.stock.dto.StockInventoryDto">
+ select
+ batch_no,
+ MAX(qualifiedId) as qualifiedId,
+ MAX(unQualifiedId) as unQualifiedId,
+
+ SUM(qualifiedQuantity) as qualifiedQuantity,
+ SUM(unQualifiedQuantity) as unQualifiedQuantity,
+
+ SUM(qualifiedLockedQuantity) as qualifiedLockedQuantity,
+ SUM(unQualifiedLockedQuantity) as unQualifiedLockedQuantity,
+
+ SUM(IFNULL(qualifiedPendingOut, 0)) as qualifiedPendingOutQuantity,
+ SUM(IFNULL(unQualifiedPendingOut, 0)) as unQualifiedPendingOutQuantity,
+
+ SUM(qualifiedQuantity - qualifiedLockedQuantity - IFNULL(qualifiedPendingOut, 0)) as qualifiedUnLockedQuantity,
+ SUM(unQualifiedQuantity - unQualifiedLockedQuantity - IFNULL(unQualifiedPendingOut, 0)) as unQualifiedUnLockedQuantity,
+
+ product_model_id,
+ model,
+ unit,
+ product_name,
+ product_id,
+
+ MAX(create_time) as create_time,
+ MAX(update_time) as update_time,
+ MAX(warn_num) as warn_num,
+ MAX(version) as version,
+ MAX(remark) as remark,
+
+ 'combined' as stockType
+ from (
+ select
+ si.batch_no,
+ si.id as qualifiedId,
+ null as unQualifiedId,
+
+ si.qualitity as qualifiedQuantity,
+ 0 as unQualifiedQuantity,
+
+ COALESCE(si.locked_quantity, 0) as qualifiedLockedQuantity,
+ 0 as unQualifiedLockedQuantity,
+
+ si.product_model_id,
+ pm.model,
+ pm.unit,
+ p.product_name,
+ p.id as product_id,
+
+ si.create_time,
+ si.update_time,
+ COALESCE(si.warn_num, 0) as warn_num,
+ si.version,
+ si.remark,
+
+ (
+ select IFNULL(SUM(sor.stock_out_num), 0)
+ from stock_out_record sor
+ where sor.product_model_id = si.product_model_id
+ and (
+ (si.batch_no is null and sor.batch_no is null)
+ or si.batch_no = sor.batch_no
+ )
+ and sor.type = '0'
+ and sor.approval_status = 0
+ ) as qualifiedPendingOut,
+
+ 0 as unQualifiedPendingOut
+ from stock_inventory si
+ left join product_model pm on si.product_model_id = pm.id
+ left join product p on pm.product_id = p.id
+
+ union all
+
+ select
+ su.batch_no,
+ null as qualifiedId,
+ su.id as unQualifiedId,
+
+ 0 as qualifiedQuantity,
+ su.qualitity as unQualifiedQuantity,
+
+ 0 as qualifiedLockedQuantity,
+ COALESCE(su.locked_quantity, 0) as unQualifiedLockedQuantity,
+
+ su.product_model_id,
+ pm.model,
+ pm.unit,
+ p.product_name,
+ p.id as product_id,
+
+ su.create_time,
+ su.update_time,
+ 0 as warn_num,
+ su.version,
+ su.remark,
+
+ 0 as qualifiedPendingOut,
+
+ (
+ select IFNULL(SUM(sor.stock_out_num), 0)
+ from stock_out_record sor
+ where sor.product_model_id = su.product_model_id
+ and (
+ (su.batch_no is null and sor.batch_no is null)
+ or su.batch_no = sor.batch_no
+ )
+ and sor.type = '1'
+ and sor.approval_status = 0
+ ) as unQualifiedPendingOut
+ from stock_uninventory su
+ left join product_model pm on su.product_model_id = pm.id
+ left join product p on pm.product_id = p.id
+ ) as combined
+ <where>
+ <if test="ew.productModelId != null and ew.productModelId > 0">
+ and combined.product_model_id = #{ew.productModelId}
+ </if>
+
+ <if test="ew.productId != null and ew.productId > 0">
+ and combined.product_id = #{ew.productId}
+ </if>
+ </where>
+ group by
+ batch_no,
+ product_model_id,
+ model,
+ unit,
+ product_name,
+ product_id
+ order by
+ batch_no
+ </select>
+
</mapper>
--
Gitblit v1.9.3