From 39e8f88af6d3c07c183cda4e7c1d1b1c850209f5 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期四, 18 六月 2026 15:58:59 +0800
Subject: [PATCH] 生产报废、废品发货退货后、不合格处理报废的产品都要进到废品库
---
src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 51 insertions(+), 5 deletions(-)
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 e0aa340..6c7722e 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -13,6 +13,7 @@
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.stock.enums.StockInventorySourceEnum;
import java.time.LocalDateTime;
import com.ruoyi.stock.dto.StockInRecordDto;
@@ -43,6 +44,9 @@
@AllArgsConstructor
public class StockInRecordServiceImpl extends ServiceImpl<StockInRecordMapper, StockInRecord> implements StockInRecordService {
+ private static final String UNQUALIFIED_TYPE = "unqualified";
+ private static final String WASTE_TYPE = "waste";
+
private StockInRecordMapper stockInRecordMapper;
private StockInventoryMapper stockInventoryMapper;
private StockUninventoryMapper stockUninventoryMapper;
@@ -57,6 +61,9 @@
@Override
@Transactional(rollbackFor = Exception.class)
public int add(StockInRecordDto stockInRecordDto) {
+ if (stockInRecordDto.getCreateTime() == null) {
+ stockInRecordDto.setCreateTime(LocalDateTime.now());
+ }
String no = OrderUtils.countTodayByCreateTime(stockInRecordMapper, "RK","inbound_batches", stockInRecordDto.getCreateTime() != null ? stockInRecordDto.getCreateTime() : LocalDateTime.now());
stockInRecordDto.setInboundBatches(no);
StockInRecord stockInRecord = new StockInRecord();
@@ -101,9 +108,11 @@
stockInRecordDto.setQualitity(stockInRecord.getStockInNum());
stockInventoryMapper.updateSubtractStockInventory(stockInRecordDto);
}
- }else if (stockInRecord.getType().equals("1")) {
+ }else if (stockInRecord.getType().equals("1") || stockInRecord.getType().equals("2")) {
+ String uninventoryType = resolveUninventoryTypeByInRecordType(stockInRecord.getType());
LambdaQueryWrapper<StockUninventory> eq = new LambdaQueryWrapper<StockUninventory>()
- .eq(StockUninventory::getProductModelId, stockInRecord.getProductModelId());
+ .eq(StockUninventory::getProductModelId, stockInRecord.getProductModelId())
+ .eq(StockUninventory::getType, uninventoryType);
if (StringUtils.isEmpty(stockInRecord.getBatchNo())) {
eq.isNull(StockUninventory::getBatchNo);
} else {
@@ -117,6 +126,7 @@
stockUninventoryDto.setProductModelId(stockUninventory.getProductModelId());
stockUninventoryDto.setBatchNo(stockUninventory.getBatchNo());
stockUninventoryDto.setQualitity(stockInRecord.getStockInNum());
+ stockUninventoryDto.setType(uninventoryType);
stockUninventoryMapper.updateSubtractStockUnInventory(stockUninventoryDto);
}
}
@@ -149,9 +159,12 @@
return stockInventoryMapper.selectOne(eq);
}
- private StockUninventory getStockUninventory(Long productModelId, String batchNo) {
+ private StockUninventory getStockUninventory(Long productModelId, String batchNo, String uninventoryType) {
LambdaQueryWrapper<StockUninventory> eq = new LambdaQueryWrapper<>();
eq.eq(StockUninventory::getProductModelId, productModelId);
+ if (StringUtils.isNotEmpty(uninventoryType)) {
+ eq.eq(StockUninventory::getType, uninventoryType);
+ }
if (StringUtils.isEmpty(batchNo)) {
eq.isNull(StockUninventory::getBatchNo);
} else {
@@ -228,6 +241,12 @@
throw new BaseException("鍙湁寰呭鎵圭姸鎬佺殑璁板綍鎵嶈兘瀹℃壒,鍏ュ簱鎵规:" + stockInRecord.getInboundBatches());
}
+ // 鍏煎鍘嗗彶鏁版嵁鎴栦笂娓告紡浼犲満鏅紝瀹℃壒鏃惰ˉ榻愭潵婧愶紝閬垮厤搴熷搧搴撳瓨鍙拌处鏉ユ簮涓虹┖
+ String resolvedSource = resolveStockSource(stockInRecord);
+ if (StringUtils.isNotEmpty(resolvedSource)) {
+ stockInRecord.setSource(resolvedSource);
+ }
+
// 鑾峰彇瀹℃壒鏃朵慨鏀圭殑鍏ュ簱鏁伴噺锛屽鏋滄病鏈変慨鏀瑰垯浣跨敤鍘熸暟閲�
final BigDecimal finalStockInNum;
if (item.getStockInNum() != null && item.getStockInNum().compareTo(BigDecimal.ZERO) > 0) {
@@ -269,9 +288,10 @@
} else {
stockInventoryMapper.updateAddStockInventory(stockInventoryDto);
}
- } else if ("1".equals(stockInRecord.getType())) {
+ } else if ("1".equals(stockInRecord.getType()) || "2".equals(stockInRecord.getType())) {
// 涓嶅悎鏍煎叆搴� -> 鍏堟煡搴撳瓨锛屽瓨鍦ㄥ垯鏇存柊锛屼笉瀛樺湪鍒欐柊澧�
- StockUninventory stockUninventory = getStockUninventory(stockInRecord.getProductModelId(), stockInRecord.getBatchNo());
+ String uninventoryType = resolveUninventoryTypeByInRecordType(stockInRecord.getType());
+ StockUninventory stockUninventory = getStockUninventory(stockInRecord.getProductModelId(), stockInRecord.getBatchNo(), uninventoryType);
StockUninventoryDto stockUninventoryDto = new StockUninventoryDto();
stockUninventoryDto.setProductModelId(stockInRecord.getProductModelId());
stockUninventoryDto.setBatchNo(stockInRecord.getBatchNo());
@@ -279,11 +299,13 @@
stockUninventoryDto.setRemark(stockInRecord.getRemark());
stockUninventoryDto.setManufacturerId(stockInRecord.getManufacturerId());
stockUninventoryDto.setSource(stockInRecord.getSource());
+ stockUninventoryDto.setType(uninventoryType);
if (stockUninventory == null) {
stockUninventoryMapper.insert(new StockUninventory() {{
setProductModelId(stockInRecord.getProductModelId());
setQualitity(finalStockInNum);
setBatchNo(stockInRecord.getBatchNo());
+ setType(uninventoryType);
setRemark(stockInRecord.getRemark());
setManufacturerId(stockInRecord.getManufacturerId());
setSource(stockInRecord.getSource());
@@ -296,6 +318,13 @@
}
}
return items.size();
+ }
+
+ private String resolveUninventoryTypeByInRecordType(String stockInType) {
+ if ("2".equals(stockInType)) {
+ return WASTE_TYPE;
+ }
+ return UNQUALIFIED_TYPE;
}
private void adjustPurchaseInboundAuditFields(StockInRecord stockInRecord, BigDecimal finalStockInNum) {
@@ -331,6 +360,23 @@
return stockInventoryDto;
}
+ private String resolveStockSource(StockInRecord stockInRecord) {
+ if (stockInRecord == null || StringUtils.isNotEmpty(stockInRecord.getSource())) {
+ return stockInRecord == null ? null : stockInRecord.getSource();
+ }
+ if (StockInQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode().equals(stockInRecord.getRecordType())
+ || StockInQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode().equals(stockInRecord.getRecordType())) {
+ if (StockInQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode().equals(stockInRecord.getRecordType())) {
+ return StockInventorySourceEnum.DEFECTIVE_SCRAP.getCode();
+ }
+ return StockInventorySourceEnum.PROD_GENERATED.getCode();
+ }
+ if (StockInQualifiedRecordTypeEnum.RETURN_WASTE_IN.getCode().equals(stockInRecord.getRecordType())) {
+ return StockInventorySourceEnum.RETURN_GENERATED.getCode();
+ }
+ return stockInRecord.getSource();
+ }
+
@Override
@Transactional(rollbackFor = Exception.class)
public int batchReAudit(List<Long> ids) {
--
Gitblit v1.9.3