From 13afb7eafeffac6ecccc7c66d36974c54c5172d4 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期四, 28 五月 2026 15:13:37 +0800
Subject: [PATCH] 库存管理增加库存类型,并返回相关数据显示
---
src/main/java/com/ruoyi/stock/enums/StockInventorySourceEnum.java | 48 ++++++++++++++++
src/main/java/com/ruoyi/stock/pojo/StockInventory.java | 2
src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java | 12 ++++
src/main/java/com/ruoyi/stock/pojo/StockInRecord.java | 3 +
src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java | 1
src/main/resources/mapper/stock/StockInventoryMapper.xml | 18 +++++
doc/万通新型建材.sql | 9 ++-
src/main/java/com/ruoyi/stock/pojo/StockUninventory.java | 3 +
src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java | 22 +++++--
src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java | 47 +++++++++++++++
10 files changed, 153 insertions(+), 12 deletions(-)
diff --git "a/doc/\344\270\207\351\200\232\346\226\260\345\236\213\345\273\272\346\235\220.sql" "b/doc/\344\270\207\351\200\232\346\226\260\345\236\213\345\273\272\346\235\220.sql"
index 15db290..c5ebe9d 100644
--- "a/doc/\344\270\207\351\200\232\346\226\260\345\236\213\345\273\272\346\235\220.sql"
+++ "b/doc/\344\270\207\351\200\232\346\226\260\345\236\213\345\273\272\346\235\220.sql"
@@ -42,8 +42,11 @@
);
alter table stock_inventory
- add manufacturer_id bigint not null default 0 comment '鍘傚id';
+ add manufacturer_id bigint not null default 0 comment '鍘傚id',
+ add source varchar(255) not null default '' comment '鏉ユ簮';
alter table stock_in_record
- add manufacturer_id bigint not null default 0 comment '鍘傚id';
+ add manufacturer_id bigint not null default 0 comment '鍘傚id',
+ add source varchar(255) not null default '' comment '鏉ユ簮';
alter table stock_uninventory
- add manufacturer_id bigint not null default 0 comment '鍘傚id';
+ add manufacturer_id bigint not null default 0 comment '鍘傚id',
+ add source varchar(255) not null default '' comment '鏉ユ簮';
diff --git a/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java b/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
index 33b7599..9ed2bcb 100644
--- a/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
+++ b/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
@@ -80,4 +80,16 @@
@Schema(description = "浜у搧id")
private Long productId;
+
+ @Schema(description = "鍚堟牸搴撳瓨鏉ユ簮")
+ private String qualifiedSource;
+
+ @Schema(description = "鍚堟牸搴撳瓨鏉ユ簮鏂囨湰")
+ private String qualifiedSourceText;
+
+ @Schema(description = "涓嶅悎鏍煎簱瀛樻潵婧�")
+ private String unQualifiedSource;
+
+ @Schema(description = "涓嶅悎鏍煎簱瀛樻潵婧愭枃鏈�")
+ private String unQualifiedSourceText;
}
diff --git a/src/main/java/com/ruoyi/stock/enums/StockInventorySourceEnum.java b/src/main/java/com/ruoyi/stock/enums/StockInventorySourceEnum.java
new file mode 100644
index 0000000..bdfe97f
--- /dev/null
+++ b/src/main/java/com/ruoyi/stock/enums/StockInventorySourceEnum.java
@@ -0,0 +1,48 @@
+package com.ruoyi.stock.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.ruoyi.common.enums.BaseEnum;
+import lombok.Getter;
+
+import java.io.Serializable;
+
+/**
+ * @author buhuazhen
+ * @date 2026/3/9
+ * @email 3038525872@qq.com
+ */
+@Getter
+public enum StockInventorySourceEnum implements BaseEnum<String>, Serializable {
+ PURCHASE_RECEIPT("purchaseReceipt", "閲囪喘鍏ュ簱"),
+ PRODUCTION_RECEIPT("productionReceipt", "鐢熶骇鍏ュ簱"),
+ OUTSOURCED_RECEIPT("outsourcedReceipt", "澶栧崗鍏ュ簱"),
+ REPAIR_RECEIPT("repairReceipt", "淇鍏ュ簱"),
+ PROD_GENERATED("prodGenerated", "鐢熶骇浜х敓"),
+ TRANS_GENERATED("transGenerated", "杩愯緭浜х敓"),
+ CUTTING_GENERATED("cuttingGenerated", "瑁佸壀浜х敓"),
+ CUSTOM("custom", "鑷畾涔�");
+
+ @EnumValue
+ private final String code;
+
+ private final String value;
+
+ StockInventorySourceEnum(String code, String value) {
+ this.code = code;
+ this.value = value;
+ }
+
+ @JsonCreator
+ public static StockInventorySourceEnum fromCode(String code) {
+ if (code == null) {
+ return null;
+ }
+ for (StockInventorySourceEnum e : StockInventorySourceEnum.values()) {
+ if (e.getCode().equals(code)) {
+ return e;
+ }
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/com/ruoyi/stock/pojo/StockInRecord.java b/src/main/java/com/ruoyi/stock/pojo/StockInRecord.java
index 4362083..2a7d06d 100644
--- a/src/main/java/com/ruoyi/stock/pojo/StockInRecord.java
+++ b/src/main/java/com/ruoyi/stock/pojo/StockInRecord.java
@@ -76,4 +76,7 @@
@Schema(description = "鍘傚ID")
private Long manufacturerId;
+
+ @Schema(description = "鏉ユ簮")
+ private String source;
}
diff --git a/src/main/java/com/ruoyi/stock/pojo/StockInventory.java b/src/main/java/com/ruoyi/stock/pojo/StockInventory.java
index fde3329..d04af80 100644
--- a/src/main/java/com/ruoyi/stock/pojo/StockInventory.java
+++ b/src/main/java/com/ruoyi/stock/pojo/StockInventory.java
@@ -75,4 +75,6 @@
@Schema(description = "鍘傚晢id")
private Long manufacturerId;
+ @Schema(description = "鏉ユ簮")
+ private String source;
}
diff --git a/src/main/java/com/ruoyi/stock/pojo/StockUninventory.java b/src/main/java/com/ruoyi/stock/pojo/StockUninventory.java
index 5f506f4..f854574 100644
--- a/src/main/java/com/ruoyi/stock/pojo/StockUninventory.java
+++ b/src/main/java/com/ruoyi/stock/pojo/StockUninventory.java
@@ -70,4 +70,7 @@
@Schema(description = "鍘傚ID")
private Long manufacturerId;
+
+ @Schema(description = "鏉ユ簮")
+ private String source;
}
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
index c19df49..7facfcf 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -30,6 +30,7 @@
import com.ruoyi.stock.service.StockInRecordService;
import jakarta.servlet.http.HttpServletResponse;
import lombok.AllArgsConstructor;
+import org.jspecify.annotations.NonNull;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
@@ -235,12 +236,7 @@
if ("0".equals(stockInRecord.getType())) {
// 鍚堟牸鍏ュ簱 -> 鍏堟煡搴撳瓨锛屽瓨鍦ㄥ垯鏇存柊锛屼笉瀛樺湪鍒欐柊澧�
StockInventory stockInventory = getStockInventory(stockInRecord.getProductModelId(), stockInRecord.getBatchNo());
- StockInventoryDto stockInventoryDto = new StockInventoryDto();
- stockInventoryDto.setProductModelId(stockInRecord.getProductModelId());
- stockInventoryDto.setBatchNo(stockInRecord.getBatchNo());
- stockInventoryDto.setQualitity(stockInRecord.getStockInNum());
- stockInventoryDto.setRemark(stockInRecord.getRemark());
- stockInventoryDto.setManufacturerId(stockInRecord.getManufacturerId());
+ StockInventoryDto stockInventoryDto = getStockInventoryDto(stockInRecord);
if (stockInventory == null) {
stockInventoryMapper.insert(new StockInventory() {{
setProductModelId(stockInRecord.getProductModelId());
@@ -249,6 +245,7 @@
setRemark(stockInRecord.getRemark());
setWarnNum(stockInRecord.getWarnNum());
setManufacturerId(stockInRecord.getManufacturerId());
+ setSource(stockInRecord.getSource());
setVersion(1);
}});
} else {
@@ -263,6 +260,7 @@
stockUninventoryDto.setQualitity(stockInRecord.getStockInNum());
stockUninventoryDto.setRemark(stockInRecord.getRemark());
stockUninventoryDto.setManufacturerId(stockInRecord.getManufacturerId());
+ stockUninventoryDto.setSource(stockInRecord.getSource());
if (stockUninventory == null) {
stockUninventoryMapper.insert(new StockUninventory() {{
setProductModelId(stockInRecord.getProductModelId());
@@ -270,6 +268,7 @@
setBatchNo(stockInRecord.getBatchNo());
setRemark(stockInRecord.getRemark());
setManufacturerId(stockInRecord.getManufacturerId());
+ setSource(stockInRecord.getSource());
setVersion(1);
}});
} else {
@@ -281,6 +280,17 @@
return ids.size();
}
+ private static @NonNull StockInventoryDto getStockInventoryDto(StockInRecord stockInRecord) {
+ StockInventoryDto stockInventoryDto = new StockInventoryDto();
+ stockInventoryDto.setProductModelId(stockInRecord.getProductModelId());
+ stockInventoryDto.setBatchNo(stockInRecord.getBatchNo());
+ stockInventoryDto.setQualitity(stockInRecord.getStockInNum());
+ stockInventoryDto.setRemark(stockInRecord.getRemark());
+ stockInventoryDto.setManufacturerId(stockInRecord.getManufacturerId());
+ stockInventoryDto.setSource(stockInRecord.getSource());
+ return stockInventoryDto;
+ }
+
@Override
@Transactional(rollbackFor = Exception.class)
public int batchReAudit(List<Long> ids) {
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 1cbdc47..687837e 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
@@ -11,6 +11,7 @@
import com.ruoyi.basic.pojo.ProductModel;
import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.stock.enums.StockInventorySourceEnum;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.web.domain.R;
@@ -68,7 +69,25 @@
@Override
public IPage<StockInventoryDto> pageListCombinedStockInventory(Page page, StockInventoryDto stockInventoryDto) {
- return stockInventoryMapper.pageListCombinedStockInventory(page, stockInventoryDto);
+ IPage<StockInventoryDto> result = stockInventoryMapper.pageListCombinedStockInventory(page, stockInventoryDto);
+ // 杞崲鏉ユ簮缂栫爜涓烘潵婧愬悕绉�
+ for (StockInventoryDto dto : result.getRecords()) {
+ // 鍚堟牸搴撳瓨鏉ユ簮
+ if (StringUtils.isNotBlank(dto.getQualifiedSource())) {
+ StockInventorySourceEnum qualifiedSourceEnum = StockInventorySourceEnum.fromCode(dto.getQualifiedSource());
+ if (qualifiedSourceEnum != null) {
+ dto.setQualifiedSourceText(qualifiedSourceEnum.getValue());
+ }
+ }
+ // 涓嶅悎鏍煎簱瀛樻潵婧�
+ if (StringUtils.isNotBlank(dto.getUnQualifiedSource())) {
+ StockInventorySourceEnum unQualifiedSourceEnum = StockInventorySourceEnum.fromCode(dto.getUnQualifiedSource());
+ if (unQualifiedSourceEnum != null) {
+ dto.setUnQualifiedSourceText(unQualifiedSourceEnum.getValue());
+ }
+ }
+ }
+ return result;
}
//鍏ュ簱璋冪敤
@@ -170,6 +189,7 @@
stockInRecordDto.setRemark(stockInventoryDto.getRemark());
stockInRecordDto.setWarnNum(stockInventoryDto.getWarnNum());
stockInRecordDto.setManufacturerId(stockInventoryDto.getManufacturerId());
+ stockInRecordDto.setSource(stockInventoryDto.getSource());
stockInRecordService.add(stockInRecordDto);
return true;
}
@@ -439,6 +459,29 @@
@Override
public IPage<StockInventoryDto> getBatchNoQty(Page page, StockInventoryDto stockInventoryDto) {
- return stockInventoryMapper.getBatchNoQty(page, stockInventoryDto);
+ IPage<StockInventoryDto> resultPage = stockInventoryMapper.getBatchNoQty(page, stockInventoryDto);
+
+ // 閬嶅巻缁撴灉锛岃缃潵婧愪腑鏂囧悕
+ resultPage.getRecords().forEach(dto -> {
+ // 璁剧疆鍚堟牸搴撳瓨鏉ユ簮涓枃鍚�
+ if (StringUtils.isNotEmpty(dto.getQualifiedSource())) {
+ System.out.println("鍚堟牸搴撳瓨鏉ユ簮锛�" + dto.getQualifiedSource());
+ StockInventorySourceEnum qualifiedSourceEnum = StockInventorySourceEnum.fromCode(dto.getQualifiedSource());
+ if (qualifiedSourceEnum != null) {
+ dto.setQualifiedSourceText(qualifiedSourceEnum.getValue());
+ System.out.println("鍚堟牸搴撳瓨鏉ユ簮鍊硷細" + qualifiedSourceEnum.getValue());
+ }
+ }
+
+ // 璁剧疆涓嶅悎鏍煎簱瀛樻潵婧愪腑鏂囧悕
+ if (StringUtils.isNotEmpty(dto.getUnQualifiedSource())) {
+ StockInventorySourceEnum unQualifiedSourceEnum = StockInventorySourceEnum.fromCode(dto.getUnQualifiedSource());
+ if (unQualifiedSourceEnum != null) {
+ dto.setUnQualifiedSourceText(unQualifiedSourceEnum.getValue());
+ }
+ }
+ });
+
+ return resultPage;
}
}
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
index 670aa3a..530289b 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
@@ -80,6 +80,7 @@
stockInRecordDto.setProductModelId(stockUninventoryDto.getProductModelId());
stockInRecordDto.setType("1");
stockInRecordDto.setManufacturerId(stockUninventoryDto.getManufacturerId());
+ stockInRecordDto.setSource(stockUninventoryDto.getSource());
stockInRecordService.add(stockInRecordDto);
//瀹℃壒鍐嶆坊鍔�
return 1;
diff --git a/src/main/resources/mapper/stock/StockInventoryMapper.xml b/src/main/resources/mapper/stock/StockInventoryMapper.xml
index ed780a7..723541b 100644
--- a/src/main/resources/mapper/stock/StockInventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockInventoryMapper.xml
@@ -562,6 +562,10 @@
unit,
product_name,
product_id,
+ MAX(manufacturer_id) as manufacturer_id,
+ MAX(manufacturer_name) as manufacturerName,
+ MAX(qualifiedSource) as qualifiedSource,
+ MAX(unQualifiedSource) as unQualifiedSource,
MAX(create_time) as create_time,
MAX(update_time) as update_time,
@@ -587,6 +591,10 @@
pm.unit,
p.product_name,
p.id as product_id,
+ si.manufacturer_id,
+ m.name as manufacturer_name,
+ si.source as qualifiedSource,
+ null as unQualifiedSource,
si.create_time,
si.update_time,
@@ -610,6 +618,7 @@
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
+ left join manufacturer m on si.manufacturer_id = m.id
union all
@@ -629,6 +638,10 @@
pm.unit,
p.product_name,
p.id as product_id,
+ su.manufacturer_id,
+ m.name as manufacturer_name,
+ null as qualifiedSource,
+ su.source as unQualifiedSource,
su.create_time,
su.update_time,
@@ -652,6 +665,7 @@
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
+ left join manufacturer m on su.manufacturer_id = m.id
) as combined
<where>
<if test="ew.productModelId != null and ew.productModelId > 0">
@@ -668,7 +682,9 @@
model,
unit,
product_name,
- product_id
+ product_id,
+ manufacturer_id,
+ manufacturer_name
order by
batch_no
</select>
--
Gitblit v1.9.3